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ą:
- Kompilacja do kodu jvm lub do javascript – widzę tu lepsze zastosowanie nić Scala – zwłaszcza przy aplikacjach webowych – „one language to rule them all!” :)
- 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.
- Bez typów prostych – wszystko jest obiektem – strasznie lubię to w ruby.
- podobnie jak Dopełnienia,
- Properties – no more getters and setters if no needed
- Typy generyczne – potężna broń w językach typowanych statycznie, (Wspomniałem, że Kotlin jest typowany statycznie?)
- Funkcje wewnętrzne – czyli metody wewnątrz metod – o wiele czytelniejesze niż klasy wewnętrzne,
- Funkcje rozszerzające – można dopisać metody do klasy Integer albo String
- 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
- Szybka kompilacja
oraz
-
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: