С 2010 года компания JetBrains разрабатывает еще один jvm язык программирования kotlin. Прочитав первые страницы документации, какие-то отзывы и блоги о нем, я решил попробовать его в действии. Утверждается, что kotlin полностью совместим с java в обе стороны. Это значит, что проект может состоять вперемешку из java и kotlin кода, что важно для плавной миграции или частичного внедрения. В качестве упражнения для себя я решил перевести один небольшой проект на kotlin и тут делюсь впечатлениями.
На официальном сайте проекта есть возможность обратиться к отличной документации, попробовать kotlin online, посмотреть актуальную версию. На момент написания статьи это 0.13.1514 (основного релиза еще не было).
В двух словах можно сказать, что это удобный современный язык, полностью совместимый с java, с автоматическим выводом типов, лямда выражениями, встроенной защитой от NPE и многими решениями для уменьшения количества кода. Очень понравилось впечатление от языка, что если правильно писать код, то потом при просмотре замечаешь, что в коде прописана только нужная информация без излишеств. Некоторые классы вообще пишутся в одну строку.
Облегчает переход поддержка IDE (Idea от JetBrains), которая умеет сама конвертировать java в kotlin. Можно нажать на кнопку и конвертировать весь проект (но это страшно), а можно просто скопировать java код, вставить в kotlin код и произойдет автоматическая конвертация. Остается только слегка "причесать" код. Также, благодаря поддержке IDE довольно легко писать код с нуля, часть правил синтаксиса я узнал прямо от компилятора.
Главным сюрпризом может стать факт, что все классы и методы в kotlin по умолчанию являются финальными. Если в java "финальность" надо включать ключевым словом final, то в kotlin ее надо выключать ключевым словом open. Несколько часов я пытался понять, почему неправильно работает один класс, пока не обнаружил что аспект смотрит на его метод, который, конечно, как open я не пометил.
Поскольку язык официально еще не выпущен, не обошлось и без багов. Например, такой, всеми известный код, не запускается:
Вообще, в 13ой версии это должны были поправить, но я не заметил. В issue указано как обойти эту проблему, так что для меня обошлось без последствий. Но надо понимать, что пока не произошел первый релиз, возможны различные ошибки и нужно быть на чеку особенно с серьезными боевыми проектами.
Чтобы добавить kotlin в проект, нужно сделать всего 3 коротких шага:
1)Добавить зависимость от kotlin. У меня gradle, добавляю в build.gradle
2)Скачать plugin kotlin. В Idea это делается через File->Settings->Plugins
3)Создать папку src/main/kotlin куда будет помещаться kotlin код.
На официальном сайте проекта есть возможность обратиться к отличной документации, попробовать kotlin online, посмотреть актуальную версию. На момент написания статьи это 0.13.1514 (основного релиза еще не было).
В двух словах можно сказать, что это удобный современный язык, полностью совместимый с java, с автоматическим выводом типов, лямда выражениями, встроенной защитой от NPE и многими решениями для уменьшения количества кода. Очень понравилось впечатление от языка, что если правильно писать код, то потом при просмотре замечаешь, что в коде прописана только нужная информация без излишеств. Некоторые классы вообще пишутся в одну строку.
Облегчает переход поддержка IDE (Idea от JetBrains), которая умеет сама конвертировать java в kotlin. Можно нажать на кнопку и конвертировать весь проект (но это страшно), а можно просто скопировать java код, вставить в kotlin код и произойдет автоматическая конвертация. Остается только слегка "причесать" код. Также, благодаря поддержке IDE довольно легко писать код с нуля, часть правил синтаксиса я узнал прямо от компилятора.
Главным сюрпризом может стать факт, что все классы и методы в kotlin по умолчанию являются финальными. Если в java "финальность" надо включать ключевым словом final, то в kotlin ее надо выключать ключевым словом open. Несколько часов я пытался понять, почему неправильно работает один класс, пока не обнаружил что аспект смотрит на его метод, который, конечно, как open я не пометил.
Поскольку язык официально еще не выпущен, не обошлось и без багов. Например, такой, всеми известный код, не запускается:
@Rule public var expectedException: ExpectedException = ExpectedException.none()
Вообще, в 13ой версии это должны были поправить, но я не заметил. В issue указано как обойти эту проблему, так что для меня обошлось без последствий. Но надо понимать, что пока не произошел первый релиз, возможны различные ошибки и нужно быть на чеку особенно с серьезными боевыми проектами.
Чтобы добавить kotlin в проект, нужно сделать всего 3 коротких шага:
1)Добавить зависимость от kotlin. У меня gradle, добавляю в build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:0.13.1514") } } apply plugin: 'kotlin' dependencies { compile("org.jetbrains.kotlin:kotlin-stdlib:0.13.1514") }
2)Скачать plugin kotlin. В Idea это делается через File->Settings->Plugins
3)Создать папку src/main/kotlin куда будет помещаться kotlin код.
Комментариев нет :
Отправить комментарий