Od wczesnej wersji alfa obserwuję rozwój nowego projektu firmy Jetbrains
języka opartego o wirtualną maszynę Java: Kotlin.

Przez kilkanaście lat programowania poznałem już kilka języków, ale w każdym z nich brakowało mi czegoś z innych. Java najbardziej przypadła mi do gustu za jej wieloplatformowość – więc na tym języku oparłem swoją pracę zawodową.

Kilkanaście miesięcy temu skierowałem oczy ku Scala – poczytałem, trochę poprogramowałem – i nic… jakoś nie pasuje. Jeden z głównych feature języka Scala wogóle do mnie nie przemawia (możliwość kompilacji kodu pod JVM albo .NET). Skoro mogę kompilować pod JVM w Windows to na co mi .NET?
Może ktoś zna jakieś zastosowanie tego pomysłu, ja nie. Ale nie to jest głównym problemem – Scala jest językiem dość trudnym, w wielu miejscach niekonsekwentnym i czas kompilacji jest dość wydłużony do kodu w java.

Kotlin Jest językiem z założenia czytelniejszym niż Scala, ma też cechy, które jak najbardziej mi pasują:

  1. Kompilacja do kodu jvm lub do javascript – widzę tu lepsze zastosowanie nić Scala – zwłaszcza przy aplikacjach webowych – „one language to rule them all!” :)
  2. Null Safety – w Kotlin nie ma NullPointerException ponieważ składnia języka nie pozwala na niespodziewane pojawienie się null. Null jest tylko tam gdzie na to pozwolimy a kompilator nam to wszystko podpowie.
  3. Bez typów prostych – wszystko jest obiektem – strasznie lubię to w ruby.
  4. podobnie jak Dopełnienia,
  5. Properties – no more getters and setters if no needed
  6. Typy generyczne – potężna broń w językach typowanych statycznie, (Wspomniałem, że Kotlin jest typowany statycznie?)
  7. Funkcje wewnętrzne – czyli metody wewnątrz metod – o wiele czytelniejesze niż klasy wewnętrzne,
  8. Funkcje rozszerzające – można dopisać metody do klasy Integer albo String
  9. metody bez nawiasów – wywoływanie metod nie musi być zakończone nawiasami. To i poprzednie daje duże możliwości przy budowaniu DSL
  10. Szybka kompilacja

    oraz

  11. Wsparcie Jetbrains – potężna korporacja, która skutecznie realizuje wszystkie swoje pomysły.

Kilka dni temu została opublikowana werjsa Milestone 3 i niedługo będziemy świadkami pierwszej wersji w pełni stabilnej, więc już teraz polecam przejrzeniu się temu językowi.

Kilka linków do głębszej analizy:

.