Обновление 3. KOTLIN ТЕПЕРЬ ОФИЦИАЛЬНО ПОДДЕРЖИВАЕТСЯ ДЛЯ РАЗРАБОТКИ ANDROID . ПО GOOGLE. УААААААААС!
Обновление 2 : похоже, что JetBrains действительно привержена поддержке Kotlin для Android в долгосрочной перспективе . Я счастливый пользователь котлина :).
Обновление : Хади Харири из JetBrains упомянул, что они собираются выпустить некоторую информацию по этой теме . Я обновлю этот пост, как только они это сделают.
=== УСТАРЕВШИЕ МАТЕРИАЛЫ СЛЕДУЮЩИЕ ===
Google только что выпустил предварительную версию предстоящего Android N с некоторыми интересными функциями, наиболее заметной из которых является частичная поддержка языка Java 8 . Это возможно благодаря новой цепочке инструментов Jack, над которой работает Google.
Текущая цепочка инструментов с использованием javac или kotlinc :
javac ( .java
-> .class
) -> dx ( .class
-> .dex
)
kotlinc ( .kt
-> .class
) -> dx ( .class
-> .dex
)
Новый набор инструментов Джека:
Джек ( .java
-> .jack
-> .dex
)
Я предполагаю, что Google будет стремиться сделать Джека инструментом по умолчанию для разработки под Android. Обновление: теперь Джек устарел . Яс.
У меня вопрос, как этот новый набор инструментов повлияет на меня в будущем, как на пользователя kotlin для разработки под Android? Я застряну в прошлом?
источник
Ответы:
отказ от ответственности: я работаю над Джеком
Это не повлияет на вас. Компилятор Kotlin создает байт-код Java 6, который Джек / Джилл может легко импортировать.
источник
@Pavel Dudka
Джек - компилятор. Похож на javac, но делает немного другое:
Как видите, Джек компилирует исходный код Java прямо в файл Dex! У нас больше нет промежуточных файлов * .class, поэтому инструмент dx не нужен!
Но ждать! Что, если я включу в свой проект стороннюю библиотеку (которая поставляется в виде коллекции файлов .class)?
И тогда в игру вступает Джилл:
Джилл может обрабатывать файлы классов и преобразовывать их в специальный формат Jayce, который можно использовать в качестве входных данных для компилятора Jack.
Итак, теперь давайте на секунду отойдем в сторону и подумаем ... Что будет со всеми этими классными плагинами, от которых мы так пристрастились? Всем им нужны файлы .class, а у компилятора Джека их больше нет ...
К счастью, Джек предоставляет некоторые из этих важных для нас функций прямо из коробки:
Преимущества:
Джек поддерживает язык программирования Java 1.7 и включает дополнительные функции, описанные ниже.
Predexing
При создании файла библиотеки JACK создается .dex библиотеки и сохраняется внутри файла библиотеки .jack в качестве префикса. При компиляции JACK повторно использует префикс из каждой библиотеки. Все библиотеки предварительно настроены.
Инкрементальная компиляция
Инкрементальная компиляция означает, что перекомпилируются только те компоненты, которые были затронуты с момента последней компиляции, и их зависимости. Инкрементная компиляция может быть значительно быстрее, чем полная компиляция, когда изменения ограничиваются только ограниченным набором компонентов.
Переупаковка
JACK использует файлы конфигурации jarjar для переупаковки.
Поддержка Multidex
Поскольку файлы dex ограничены 65K методами, приложения с более чем 65K методами должны быть разделены на несколько файлов dex. (См. «Создание приложений с использованием более 65K методов» для получения дополнительной информации о multidex.)
Недостатки:
источник
Google не собирается продвигать Джека в качестве инструмента по умолчанию, но
Jack and Jill
.Компиляция файлов .class в dex с помощью Jill никуда не денется. В противном случае вы можете попрощаться с библиотеками jar / aar.
Будет ли Джек или Джилл медленнее, все еще обсуждается. Команда Android надеется, что jack будет быстрее, чем текущий процесс сборки, но сейчас это не так.
Кроме того, Джек и Декс доступны в открытом доступе, ничто не мешает команде kotlin написать инструмент, генерирующий файлы .jack или .dex из исходного кода kotlin.
источник
ОБНОВЛЕНИЕ (16.03.2017)
К счастью, Джек мертв, поэтому разработчиков Kotlin это не коснется.
Если будущее - за Джеком, то с Котлином вы застрянете в прошлом. В настоящее время Джек не поддерживает плагины, которые могут компилировать исходный текст, отличный от Java, в байт-код Dalvik. И даже если бы это произошло, JetBrains необходимо было бы добавить новый бэкэнд в компилятор Kotlin, что является нетривиальной задачей. Таким образом, вам придется использовать Kotlin с Джилл, и это будет что-то очень похожее на ту цепочку инструментов, которую вы используете сейчас.
Как вы можете видеть на изображении ниже, даже если невозможно явно отключить Джека, вы все равно сможете преобразовать проект в проект библиотеки для использования Джилл. И проект приложения будет просто ссылаться на этот проект библиотеки.
Единственный способ, которым я вижу, как Kotlin может работать с Джеком, что, вероятно, не будет реализовано, - это добавить серверную часть Java в компилятор Kotlin, то есть бэкэнд, который генерирует код Java, такой как Xtend. . В этом случае код, сгенерированный компилятором Kotlin, может обрабатываться Джеком как любой другой код Java.
Но на данный момент мы не знаем точно, что Джек поддержит, когда он выйдет. Возможно, что-то кардинально изменится и станет возможным добавление поддержки Kotlin к Джеку.
источник
Как сказано в опубликованном сегодня сообщении блога ( Kotlin's Android Roadmap ):
Так что Kotlin в конечном итоге поддержит Jack & Jill и получит от этого выгоду.
источник
Согласно последнему объявлению Google -
Так что нам не нужно беспокоиться о том, что набор инструментов jack станет набором инструментов по умолчанию для разработки под Android. Вы можете продолжать использовать kotlin или использовать обычный набор инструментов javac / dx.
Источник: Будущее поддержки языковых функций Java 8 на Android
источник
Я уже нашел это сообщение в официальном блоге Kotlin :: Дорожная карта Android Kotlin
Там вы найдете часть, в которой говорится:
Итак, как сказал @LukasBergstrom, не будет никаких проблем с «застреванием в прошлом» ;-)
Вы также можете проверить
Reddit
обсуждение, связанное с этой темой: Каков статус Котлина с Джеком и Джилл?Удачного кодирования.
источник
Согласно блогу Kotlin , в разделе новых функций выпуска 1.1-beta2:
источник