27 сент. 2015 г.

Знакомство с kotlin

С 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 я не пометил. 

Поскольку язык официально еще не выпущен, не обошлось и без багов. Например, такой, всеми известный код, не запускается:  
@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 код.

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

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