Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

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

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


Ответ

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 в другой это трата денег для заказчика. На данный момент, не вижу смысла, кроме как самообучения.

Комментариев нет:

Отправить комментарий