Kotlin: джависты, завидуйте

Около года назад, в подкасте радио-т я впервые услышал о инициативе JetBrains, новом языке программирования kotlin. С тех пор внимательно слежу за его развитием.
Они позиционируют котлин как “better java” и, надо сказать, у это получается. Это статический типизированный, язык со вшитой nullable-проверкой Так же он поддерживает функции высшего порядка(замыкания), extension functions и trait. Может немного напоминать scala – но, достаточно далеко от неё.


Впринципе, языков, в том числе и jvm-based достаточно много, но я обратил внимание именно на kotlin, потому что:

  • java – слишком проста. Как ассемблер. Её скудность синтаксиса вгоняет меня в уныние. Я хочу решать конкретные задачи, а не писать километры кода.
  • scala – слишком сложна. Она не только вносит свою систему типов, но и вводит непонятки в стиль написания кода. Те, кто пробовал её знают, что можно писать на скале как scala-style так и java-style.
  • scala – оооочень долго собирается. Не может язык, который призван решать практические задачи столько компилироваться. Или ради этого нужно поднимать свой кластер? Есть даже шутка: “Почему скала так долго собирается? В это время Одерский майнит биткоины” :D
  • groovy – классный, но медленный. И динамически типизированный. И почти не работает под андроидом
  • kotlin не тащит за собой всю систему типов – их небольшой рантайм расширяет стандартные коллекции и классы.

Код!

Пока мне больше видится использование kotlin на android (далее все примеры из мира андроид разработки). Всякие aop, groovy упрощяют жизнь в java-мире на серверах.

Доступ к компонентам интерфейса

При обращении к свойству происходит вычисление значения функции


class RiddleActivity: FragmentActivity() {
val answer: TextView? get() = findView(R.id.riddleAnswer)
val question: TextView? get() = findView(R.id.riddleQuestion)
val nextQuestion: Button? get() = findView