Краткая история языков. Язык Java начал разрабатываться в 1990 году, а первая версия выпущена 21 января 1996 года. Разработчик языка Sun Microsystems и Oracle. Язык Kotlin разрабатывается с 2010 года, первая версия появилась 15 февраля 2016 года. Разработчиком языка является компания JetBrains. Цель создания языка – это сделать более лаконичный и типобезопасный, чем Java, и более простой, чем Scala. На данный момент последняя версия Java SE 11, дата релиза – 25 сентября 2018 года. Последняя версия Kotlin 1.3.61 (27 ноября 2019).
Рисунок 1. Логотип Java
Java активно используется в мобильной разработке под ОС Android. Но в мае 2017 года Google объявила, что инструменты языка Kotlin по стандарту включены в Android Studio. А в мае 2019 на Google I/O стало известно, что язык Kotlin стал более приоритетным для разработки под Android, чем Java.
Рисунок 2. Логотип Kotlin
Таблица 1.
Сравнение синтаксиса Kotlin и Java
Параметры сравнения |
Пример кода на Kotlin |
Пример кода на Java |
Объявление функции |
fun sum (a: Int, b: Int) = a + b |
int sum (int a, int b) { return a + b; } |
Определение внутренних переменных |
val a = 1 //неизменяемая переменная, тип Int определяется автоматически var b: Int = 2 //изменяемая переменная, тип Int указан явно |
final int a = 1; //неизменяемая переменная int b = 2; //изменяемая переменная |
Использование строковых шаблонов |
val a = 25 print(«Значение a = $a.») |
int a = 25; print(«Значение a = » + a + «.») |
Использование условных выражений |
fun max (a: Int, b: Int) = if (a > b) a else b |
int max (int a, int b) { if (a > b) return a; else return b; } |
Nullable-значения |
Ссылка должна быть явно объявлена как nullable (символ ?) когда она может принимать значение null var a: String = «abc» a = null // ошибка var b: String? = «abc» b = null // может быть null |
Возможен NullPointerException, если не сделать проверку на null String s = null; |
Цикл for |
for (i in 0..4) { } |
for (int i = 0; i < 5; i++) { } |
Выражение when (Kotlin), switch (Java) |
when (x) { 1 -> print(«x == 1») 2 -> print(«x == 2») else -> { print(«x is neither 1 nor 2») } } |
switch (x) { case 1: print(«x == 1»); return; case 2: print(«x == 1»); return; default: print(«x is neither 1 nor 2»); return; } |
Создание базовых классов и их экземпляров |
val note = Note() // не требуется ключевое слово new |
Note note = new Note(); |
Kotlin полностью совместим с Java, что позволяет программистам, знающим Java, без труда освоить новый язык.
Основные возможности и преимущества Kotlin:
- компилируется в байткод JVM или в JavaScript;
- программы могут использовать все существующие Java-фреймворки и библиотеки. Kotlin можно интегрировать с Maven, Gradle и другими системами сборки;
- язык очень прост для изучения;
- исходный код открыт;
- в IntelliJ и Android Studio доступна автоматическая конвертация Java-кода в Kotlin и наоборот;
- язык null-безопасен – в отличие от Java с NullPointerException;
- легко читаемый синтаксис.
В языке Kotlin не нужно ставить точку с запятой после каждой строчки. В Kotlin существует модификатор поздней инициализации lateinit var, он нужен для того, чтобы избежать лишних проверок на null свойств, объявленные non-null типом.
Чаще всего в программе создаются классы только для хранения данных. Для этих целей в Kotlin есть специальный data class. Компилятор автоматически создает члены данного класса из свойств, объявленных в конструкторе: equals(), hashCode(), toString(), copy(). Например, data class User(val name: String, val age: Int). Это все занимает одну строчку, в Java это займет куда большее место.
В Kotlin существует очень полезная вещь как расширения (extensions). Расширения позволяют расширять класс путем добавления новых функций, не наследуясь от какого-либо класса. Для примера, нужно установить подсказку для кнопки, функция setTooltipText() доступна только для версии Android 8.0 и выше. Для работы на более старых версиях Android можно использовать показ уведомления Toast, путем установки через долгий клик setOnLongClickListener. Для этого расширяем класс View функцией setTooltip(), которая установит обычную подсказку методом setTooltipText(), если версия Android 8.0 и выше или установит Toast по долгому нажатию.
fun View.setTooltip(@StringRes tooltip: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
tooltipText = context.getText(tooltip)
} else {
setOnLongClickListener {
Toast.makeText(context, tooltip, Toast.LENGTH_SHORT).show()
true
}
}
}
Язык Kotlin молодой, но уже составляет конкуренцию старому и проверенному Java. Уже сейчас можно переходить на новый язык, не боясь испортить важный проект. Тем более этот язык считается приоритетным для разработки под систему Android. Он прост в изучении и можно в одном проекте использовать сразу оба языка. По сравнению с Java у Kotlin много преимуществ и не все они рассматривались в данной статье. У Kotlin большое будущее, а я буду дальше углубляться в изучении этого языка программирования.
Использованные источники:
- Java. Материал из Википедии — свободной энциклопедии [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Java (дата обращения: 30.01.2020).
- Материал из Википедии — свободной энциклопедии [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Kotlin (дата обращения: 30.01.2020).
- Руководство по языку Kotlin. [Электронный ресурс]. URL: https://kotlinlang.ru/ (дата обращения: 30.01.2020).