Kotlin – jest to statycznie typowany język programowania ogólnego przeznaczenia, który stawia na wieloplatformowość. Język jest opracowywany przez firmę JetBrains, a nad znakiem handlowym Kotlina pieczę sprawuje Kotlin Foundation.
Kotlin został zaprojektowany do współdziałania z Javą. Dlatego w ramach jednego projektu opartego na JVM można łączyć te dwa języki.
Inferencja typów (potocznie znana jako wnioskowanie typu na podstawie przypisywanej wartości) w Kotlinie pozwala na bardziej zwięzłą składnię. Kotlin celuje głównie w JVM, ale także można go skompilować do JavaScriptu bądź też kodu natywne binarnego (wykorzystując kompilator LLVM). Co daje możliwość uruchomienia go na urządzeniach wbudowanych lub uniemożliwiających obsługę JVM.
Kotlin a Java
Kotlin jest potężnym, nowoczesnym językiem programowania, który jest bardzo ekspresyjny i znacznie bardziej zwięzły niż Java. Dlatego Java zyskała reputację technologii, przy pomocy której tworzyć możemy solidny i niezawodny multiplatformowy. Jednak każdy kto pracował z Java ten wie, że brakuje jej wielu ficzerów i powoli staje się przestarzała, co sprawia, że Kotlin jest świetnym kandydatem do zastąpienia jej.
Kotlin – podobieństwa do innych języków
Kotlin pod względem swoich pomysłów i celów jest bardzo podobny do języka Apple Swift wykorzystywanego do tworzenia aplikacji na macOS i iOS. Przede wszystkim podobieństwa między tymi dwoma językami pomogą programistom przenosić aplikacje z iOS na Androida, zachowując kluczową wydajność oraz sens kodu.
Podsumowując ten fakt w połączeniu z restrykcyjną polityką wykorzystywania bezpłatnie Javy spowodowały, że community Androida znacznie częściej wybiera Kolina do tworzenia aplikacji.
Zalety języka
Jeśli chodzi o zalety ściśle technologiczne, dostarcza on nam bogate wsparcie do programowania funkcjonalnego. Poza tym firma JetBrains wbudowała zabezpieczenia przed błędami związanymi z null’ami bezpośrednio w system typu. To sprawia, że język ten jest znacznie bardziej odporny na błędy, a tym samym łatwiejszy i tańszy w utrzymaniu. Osobiście uważam, że to jeden z topowych przewag Kotlina nad Javą.
Kotlin – zastosowanie
Oprócz Androida (a ostatnio również iOS), Kotlin jest również świetny do rozwoju kodu JVM, co ułatwia budowanie aplikacji desktopowych, internetowych i backendowych serwerów przy pomocy ogólnie stosowanych frameworków Javy takich jak Hadoop, Spark czy też Spring!
Spring Boot i Kotlin
Podobnie jak z Javą – Spring świetnie integruje się z językiem Kotlin. Tworząc aplikacje w Spring Boot możemy nawet łączyć oba języki do budowy aplikacji.
Na przykład przyjrzyjmy się kontrolerowi, który zwraca imię z licznikiem wywołań:
@RestController class HelloController { val counter = AtomicLong() @GetMapping("/hello") fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) = Hello(counter.incrementAndGet(), "Eluwina, $name") } data class Hello(val id: Long, val message: String)
Data class to klasa modelowa będąca odpowiednikiem Records znanych z Java 14.
Kody źródłowe porównujące ten sam kontroler napisany w Java i Kotlinie znajdziesz na moim GitHubie.
Wnioski
Mimo lekkiego narzutu przy uruchamianiu aplikacji wykonanej w Kotlinie zauważyć możemy, że kod napisany w Javie jest o wiele bardziej złożony składniowo. Podobnie można wysunąć wniosek, że Kotlin ułatwi pracę programistom, którzy chcą pisać złożone oprogramowanie zachowując jak największą czytelność. Musimy też wiedzieć, że język jest w ciąż w fazie intensywnego rozwoju, więc możemy spodziewać się dalszych popraw jego funkcjonowania. Twórcy języka opracowują Kotlin/Native, które kompiluje kod Kotlina do bibliotek natywnych, aby umożliwić kompilację dla platform, na których maszyny wirtualne nie są pożądane lub możliwe, na przykład:
- iOS (arm32, arm64, simulator x86_64)
- macOS (x86_64)
- watchOS (arm32, arm64, x86)
- tvOS (arm64, x86_64)
- Android (arm32, arm64, x86, x86_64)
- Windows (mingw x86_64, x86)
- Linux (x86_64, arm32, arm64, MIPS, MIPS little endian)
- WebAssembly (wasm32)
Jakie są Twoje doświadczenia z Kotlinem? Czy warto się go uczyć?
Źródła:
https://kotlinlang.org
https://www.netguru.com/blog/kotlin-pros-and-cons