JetBrains только что объявила о выпуске Kotlin 1.2, и он уже поддерживается в Android Studio 3. Что нового и чего не хватает?
Kotlin стал важным языком с тех пор, как Google приняла его в качестве альтернативы Java в Android Studio. Это действительно упрощает программирование на Android, уменьшая потребность в длинных кусках шаблонного кода, которые средний программист просто не получает или, возможно, точнее, не утруждает себя пониманием на глубоком уровне. В физике есть старая поговорка, что вы никогда ничего по-настоящему не поймете, вы просто привыкнете к этому. Так же обстоит дело со многими аспектами написания Java. Возможно, вы когда-то и понимали это, но в наши дни вы просто позволяете IDE генерировать это для вас.
В Kotlin 1.2 появилась новая функция, которая в прошлом, возможно, вызвала у вас легкую зевоту. Другой язык, совместимый с Java, расширяет свой охват в областях, которыми не многие собираются пользоваться. Большая разница в том, что с Kotlin в качестве языка Android внезапно стоит рассмотреть его в других средах, хотя бы потому, что ваши навыки передаются.
Новая функция-мультиплатформенные проекты. На данный момент Kotlin поддерживает JVM, JavaScript и машинный код в качестве своих трех целей. В этой новой версии вы можете создавать проекты, которые могут выполняться на JVM или JavaScript. Существуют общие модули, которые работают на любой платформе, а затем модули платформы, которые специфичны для цели.
Это звучит не так уж удивительно, но умная часть заключается в том, что общие модули могут связываться с зависимыми от платформы модулями с помощью «ожидаемых и фактических объявлений». Это позволяет одной и той же внутренней логике получать доступ к одним и тем же данным через разные интерфейсы. Например, если общий модуль имеет:
ожидайте веселья привет(мир: Строка): Строка
затем он может использовать функцию hello, но она будет поставляться одним из модулей платформы, например, на JVM:
фактическое веселье привет(мир: строка)
Это не идеальное решение, но оно прямое и простое для понимания, и JetBrains работает над общими библиотеками, которые можно использовать в общих модулях.
Хорошим улучшением является ускорение компилятора на 25% :
JetBrains обещает больше ускорений в обновлениях с десятичной запятой.
Языковые изменения незначительны на местах, и в основном это хорошо — стабильный язык важен, но списки объявлений:
Более краткий синтаксис для передачи нескольких аргументов в аннотацию (литералы массива);
Поддержка модификатора lateinit для свойств верхнего уровня и локальных переменных, а также проверка инициализации переменной lateinit;
Более умные интеллектуальные приведения и улучшенный вывод типов в некоторых случаях;
Совместимость стандартной библиотеки с ограничениями разделения пакетов, введенными в Java 9;
Новый пакет kotlin.math в стандартной библиотеке;
Новые стандартные библиотечные функции для работы с последовательностями и коллекциями, включая набор функций для разбиения коллекции или последовательности на потенциально перекрывающиеся группы фиксированного размера.
Конечно, все это должно быть обратно совместимо. Некоторые улучшения, которые не были перечислены в объявлении, но о которых стоит знать,:
Теперь вы можете использовать значения по умолчанию для параметров во встроенных функциях.
Теперь вы можете использовать оператор ссылки с методами без необходимости использовать это, т. Е. Вы можете написать ::метод, а не этот::метод.
К сожалению, сопрограммы все еще являются экспериментальными, хотя они были введены в 1.1. Когда эта функция, в комплекте с async и await, войдет в финальную сборку, это будет иметь большое значение — в частности, для программ Android.
Объявление также дает представление о том, насколько хорошо работает Котлин:
Резкий рост произошел, когда Google объявила Kotlin языком Android.
Майк Джеймс является автором Руководства программистов по Kotlin (I/O Press), написанного для Java-программистов, разработчиков Android и программистов, желающих узнать, почему Kotlin лучше программирует на Java и Android в Kotlin: Начиная с приложения (I/O Press).