Java и Kotlin в одном android проекте

151
04 января 2018, 22:51

Есть довольно большой Android проект, целиком написанный на Java. Сейчас мне очень интересен Kotlin, и я хотел бы продолжать проект на нём. Я знаю, что это возможно, что Kotlin, как Java при компиляции компилируется в байткод.

Однако, интересно, с какими "подводными камнями" можно при этом столкнуться. Например, увеличенное время компиляции, может быть повешение сложности поддержки проекта и т.д.

Answer 1

Kotlin (Ко́тлин) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains.

В мае 2017 года на конференции Google I/O команда Android объявила об официальной поддержке языка Kotlin для разработки Android-приложений.

Вы испытаете минимальный дискомфорт, а даже некое удовольствие переписывая проект, потому что ребята очень постарались и знали, что люди будут пробовать "переходить", и внедрили некоторые фишки в саму IDE.

В вашем случае это идеальный вариант, та компания на которой работает AndroidStudio, внедряет язык работающий поверх JVM, который может дергать или быть вызванным из самой Java и это видно до компиляции, из этого все и говорят о полной совместимости. У языков есть свои особенности, если вы их знаете у вас не будет проблем с интеграцией. Если вы все таки хотите использовать 2 языка, то система LLVM позволяет это сделать, от этого в теории увеличится время компиляции, других проблем не должно быть.

Конечно многое зависит от сложности проекта, как, сколько, когда вы добавляете внешние библиотеки, хотите ли вы оба языка использовать в 1 классе. Ну здесь скорей проблемы будут от ваших умений и знаний и на сколько вы хорошо знаете этот проект, чтоб не потерять зависимости или свойства инициализации и тд. Я переписывал небольшой проект (в продакшн) по требования заказчика, как раз почти сразу после анонса оф поддержки, были проблемы с инструментал тестированием под Espresso, с Dagger2, я плевался на Kotlin мол всё работало как так? В итоге обычная проблема multidex с параллельными ссылками, которые сейчас вроде как частично(полностью) решены изменением команд в расширениях скрипта Gradle, да,да именно те команды Impl и annotationProcessor и с языком это не было никак связано. Я доделал проект и он стал другим, не могу сказать что лучше или хуже просто другим. Я нейтрален к другим языкам, хоть постоянно использую их, мне нравится читаймость хорошо написанного куска Java в Android с DI, но мне и нравятся некоторые фишки Kotlin, но одно скажу точно, переводить проект полностью с 1 в другой это трата денег для заказчика. На данный момент, не вижу смысла, кроме как самообучения.

READ ALSO
Конвертировать код с Java на PHP [требует правки]

Конвертировать код с Java на PHP [требует правки]

Помогите плз, ктонибудь может переписать код с Java на PHP?

163
Rx java :Flowable и Obseravble отличия?

Rx java :Flowable и Obseravble отличия?

Добрый деньНачал изучать РП и столкнулся с Flowable и Observable

157
Как программно установить мargin?

Как программно установить мargin?

Как программно в Java установить margin у LinearLayout?

130
WebSocket и VPN

WebSocket и VPN

Сервер написан на Java, клиент JSЯ открываю соединение

165