Jest już wydanie Kotlina 1.5

Kotlin 1.5.0 to najnowsza aktualizacja języka od JetBrains, która jest obecnie dostępna jako wydanie produkcyjne. Do najważniejszych rzeczy, które pojawiły się w tym wydaniu należy stabilna obsługa rekordów JVM oraz interfejsów zapieczętowanych. Dokonano również wielu zmian, jeśli chodzi o Kotlin/JVM oraz pisany kod. W tym artykule dokładnie przyjrzymy się tym najważniejszym.
Nowości w Kotlinie
Poniżej dokładniej przyjrzymy się wszystkim ważniejszym funkcjom oraz zmianom w najnowszej funkcji, dotyczącym zmian w kodzie i nie tylko.
Obsługa klas rekordów z Javy
Twórcy Kotlina twierdzą, że Java bardzo szybko się rozwija. Wprowadzenie obsługi funkcji rekordów ma więc zapewnić, że Kotlin pozostanie interoperacyjny z wcześniej wspomnianą Javą. Sama obsługa polega zaś na tym, że w kodzie Kotlina będzie można korzystać z klas rekordów w taki sam sposób, w jaki korzysta się z typowych klas z właściwościami. Klasę Kotlina można zamienić w rekord, gdy użyjemy klasy data i oznaczymy ją adnotacją @JvmRecord. Oto przykład kodu pochodzący ze strony opisującej funkcję:
@JvmRecord
data class User(val name: String, val age: Int)
Zapieczętowane interfejsy
Interfejsy w Kotlinie posiadają teraz modyfikator sealed
, który z interfejsami działa w taki sam sposób, jak z klasami. Poniżej przykład kodu, który wykorzystuje zapieczętowane interfejsy do stworzenia wyczerpującego wyrażenia when
:
fun draw(polygon: Polygon) = when (polygon) {
is Rectangle -> // ...
is Triangle -> // …
// else is not needed - all possible implementations are covered
}
Hierarchie klas
Klasy zapieczętowane mogą mieć teraz podklasy we wszystkich plikach tej samej jednostki kompilacyjnej oraz tego samego pakietu. Poprzednio wszystkie podklasy musiały pojawić się w tym samym pliku.
Bezpośrednie podklasy mogą być na najwyższym poziomie w hierarchii lub znajdować się w jakiejkolwiek liczbie innych nazwanych klas, interfejsów lub obiektów. Podklasy danej klasy zapieczętowanej muszą mieć odpowiednio kwalifikowaną nazwę - nie mogą być obiektami lokalnymi ani anonimowymi.
Kotlin/JVM
Kotlin JVM również otrzymał szereg usprawnień, zarówno jeśli chodzi o zmiany wewnątrz, jak i te, które dotyczą użytkowników. Najważniejsze z nich, to stabilny bakcend JVM IR, 1.8 jako nowy domyślny target dla JVM, eksperymentalna obsługa kompilacji lambdy z Kotlina do invokedynamic
.
Kotlin wspiera teraz adnotacje Javy dotyczące obsługi null za pomocą nowej adnotacji. Nowa wersja wprowadza szereg ulepszeń tej funkcji, m.in. odczytywanie adnotacji, które są nullami, w argumentach typu i w skompilowanych bibliotekach Javy, z których korzystamy jako zależności.
Inne zmiany
Jeśli zaś chodzi o inne usprawnienia, które posiada teraz Kotlin, to mamy bardziej stabilny Kotlin/Native, gdzie wprowadzono usprawnienia dotyczące wydajności oraz dezaktywowano memory leak checker. Jeśli chodzi natomiast o zmiany w Kotlin/JS to mamy tutaj aktualizację webpack do wersji 5 oraz nowe frameworki i biblioteki dla kompilatora IR.
W nowym Kotlinie wprowadzono również nowości w bibliotece kotlin-test. Są to m.in. uproszczone korzystanie z zależności testowych oraz automatyczny wybór frameworku testowego dla zestawów źródłowych Kotlin/JVM.
Pełna lista zmian wraz z ich opisem znajduje się tutaj. Nową wersję Kotlina możesz natomiast pobrać stąd.