6 powodów, dla których Twój Biznes powinien przejść na Kotlina

W obliczu ostatnich wydarzeń związanych z Kotlinem, pomyślałem że dobrze będzie napisać artykuł o jego największych zaletach. W końcu języków dla JVM jest mnóstwo, ale jakoś tylko Kotlin (prócz Javy) zyskał miano bycia „oficjalnie wspieranym językiem” przez Google dla Androida.

Chciałbym się z Wami podzielić moimi obserwacjami, jako developera z kilkuletnim stażem w Kotlinie, przez niektórych nazywanym nawet „ewangelizatorem” Kotlina 😉

Zapraszam do lektury!

Wstęp – Motywacja

Prowadziłem niedawno prelekcję pt. „Introduction to Kotlin”, w której omawiałem zalety Kotlina, skupiając się na stronie technicznej – typowo dla programistów.

W tym artykule chcę podejść do tematu bardziej od strony biznesowej (ale nie tylko), bo to ona często decyduje o tym, jakie technologie zostaną użyte w projekcie. Jakie zalety ma Kotlin, że warto w nim pisać aplikacje komercyjne? Jakie problemy rozwiązuje? Czy przyspiesza development? Jakie daje perspektywy dla mojego biznesu? I – nie zapominajmy o najważniejszym – czy Team Developerski będzie z niego zadowolony?

Więc, jeśli jesteś developerem, to zapraszam Cię do obejrzenia wykładu – link tutaj – będzie on dla Ciebie świetnym uzupełnieniem niniejszego artykułu. Jeśli nie – lepiej zostań tutaj 😉

Zaczynamy odliczanie!

1. Java + Kotlin = ❤️

Pierwsza i najważniejsza zaleta, to świetna współpraca Kotlina z istniejącym ekosystemem Javy. Przez „ekosystem” rozumiem tutaj zarówno istniejący kod napisany w Javie, jak i cały build system (Maven, Gradle), biblioteki, narzędzia itd.

Kotlin kompiluje się do bytecodu Javy 6.0, więc możemy z niego korzystać nawet w bardzo starych (ang. legacy) systemach, oraz – przede wszystkim – w Androidzie. Możemy swobodnie łączyć kod Kotlinowy z kodem Javowym. Klasy napisane w Kotlinie mogą się odwoływać do tych napisanych w Javie, i vice versa; mogą po sobie dziedziczyć itp. Skutek tego jest taki, że możemy wdrażać Kotlina stopniowo – klasa po klasie – bez konieczności przepisywania całego projektu od nowa.

Co więcej, dzięki zastosowaniu Rozszerzeń, większość typów standardowych jest wspólna. Co to dla nas oznacza? To że jeśli napiszemy w Kotlinie funkcję zwracającą np. kotlin.collections.List, to wołając ją w Javie otrzymamy java.util.List. Nie potrzeba żadnej konwersji – to po prostu działa! A ponieważ nie ma konwersji – nie ma również żadnego wpływu na wydajność aplikacji (inaczej to wygląda np. w Scali).

2. Świetne narzędzia (ang. Toolkit)

Niewątpliwie na sukces Kotlina ma wpływ fakt, że od samego początku wraz z językiem było rozwijane również jego wsparcie w IDE, którym jest IntelliJ. Oczywiście to dlatego, że twórcy Kotlina i twórcy IntelliJ to te same osoby – firma JetBrains.

Działa tutaj po prostu wszystko: refaktoring, generowanie i podpowiadanie kodu, analiza statyczna, debugging, konwersja kodu Javy do Kotlina, i wiele więcej…

Sytuacja jest tu zupełnie odwrotna niż w przypadku Swift+XCode, gdzie język istnieje od lat, a IDE chyba po dziś dzień nie posiada jego pełnego wsparcia 😉

Aha, istnieją również wtyczki Kotlina dla środowisk NetBeans i Eclipse – rozwijane przez samych JetBrainsów – więc nie jesteśmy uwiązani do jednego konkretnego IDE.

3. Zwiększona niezawodność aplikacji

Kolejna rzecz bardzo istotna z punktu widzenia biznesowego to zwiększona niezawodność (bezawaryjność) aplikacji pisanych w Kotlinie. Jest to osiągnięte m.in. świetnie przemyślanym, i bardzo spójnym, systemem typów. W skrócie, jego podstawowe założenia to:

  1. Wszystkie typy są domyślnie nie-nullowalne – nie mamy prawa przypisać do nich wartości null
  2. Jeśli coś może być null‚em, to do jego elementów składowych mamy dostęp dopiero po upewnieniu się, że tym null‚em nie jest

Efekt jest jeden: NullPointerException nie jest już wyjątkiem czasu wykonania, a jedynie prostym błędem wychwytywanym już na etapie kompilacji – czyli przed wdrożeniem aplikacji na produkcję 😀

Podejrzewam że ta jedna rzecz wyeliminowuje jakieś 50% błędów krytycznych w typowej aplikacji Javowej.

4. Zwięzłość i czytelność kodu

Jest taka teoria, która mówi, że ewolucja języków programowania posuwa się przede wszystkim w kierunku uczynienia kodu bardziej czytelnym dla programisty. Wynika to z faktu, że kod o wiele częściej czytamy, niż piszemy.

Kotlin jest świetnym przykładem tego trendu. Właściwie wszystkie elementy języka zostały tak pomyślane, żeby wykonywać konkretne zadania jak najmniejszą ilością kodu, przy jednoczesnym zachowaniu (lub nawet zwiększeniu) jego czytelności. Oczywiście dążenie do skracania kodu wynika z faktu, iż Java jest (słusznie) uważana za królową nadmiarowego kodu. Z drugiej strony, nacisk na zachowanie czytelności chroni nas przed hieroglifami znanymi np. ze Scali.

Przykładów takiego podejścia jest wiele: data-klasy (ang. data class), które pozwalają zastąpić dziesiątki linii kodu Javy, jednym słówkiem data w Kotlinie; właściwości, które eliminują potrzebę pisania domyślnych getterów i setterów; czy choćby banalne tworzenie singletonów za pomocą „deklaracji obiektów„. I wiele innych…

5. Mnogość nowoczesnych funkcji

I tu dochodzimy do tematu możliwości technicznych Kotlina. A są one ogromne. Z racji tego, że ten artykuł nie jest czysto techniczny, nie będę za bardzo wchodził w szczegóły. Poniżej umieszczam wymowny slajd z mojej prezentacji:

W skrócie, wystarczy powiedzieć, że Kotlin ma właściwie każdy przydatny „ficzer”, jaki powstał w przeciągu ostatnich lat. Są tu rozszerzenia, właściwości, typy funkcyjne, wnioskowanie typów, pattern matching, przeciążanie operatorów, korutyny, delegacja, ulepszone typy generyczne… Słowem – wszystko czego nie ma Java 😀

Z biznesowego punktu widzenia – im język jest nowocześniejszy i ma więcej możliwości, tym jest bardziej uniwersalny i da się w nim zrobić więcej, szybciej, łatwiej itd. A do tego programiści są bardziej zadowoleni – a nie ma nic gorszego niż smutny developer 😉

6. Ciągły rozwój + kompatybilność wsteczna

Ostatnia rzeczą jaką chciałbym poruszyć jest intensywny rozwój języka, przy jednoczesnym zachowaniu kompatybilności wstecznej. Istotne jest, że te dwa warunki muszą zachodzić jednocześnie – a tak właśnie jest w przypadku Kotlina. Uważam to za bardzo ważny argument z punktu biznesowego.

Jeśli język jest rozwijany bez zachowania kompatybilności wstecz, to mamy sytuację taką jak ze Swiftem, gdzie każda kolejna wersja języka jest totalną rewolucją, i cały istniejący kod trzeba przepisywać. Brzmi to zupełnie irracjonalnie, ale tak było.

Natomiast jeżeli nadrzędnym celem jest utrzymanie kompatybilności ze starym kodem, a rozwój języka schodzi na dalszy plan, to prędzej czy później dochodzimy do stanu, w którym jest Java… #JavaIsDead

Na szczęście Kotlin jest idealnym przykładem połączenia tych dwóch rzeczy. Rozwój jest prężny i stabilny, a od wersji 1.0 (do której dojście trwało 6 lat!) mamy obietnicę kompatybilności wstecznej. Czyli wszystko jest OK 😉

Podsumowanie

Kotlin jest bardzo dobrze przemyślanym, pragmatycznym, bezpiecznym i nowoczesnym językiem. Te cechy przekładają się wprost na wzrost produktywności, oraz zwiększenie niezawodności pisanych aplikacji. Takie podejście zostało entuzjastycznie przyjęte przez społeczność programistów, skutkiem czego jest niedawne oficjalne wsparcie najpotężniejszej firmy w branży IT – Google.

Jeśli Ty, lub Twoja firma, mieliście do tej pory wątpliwości, czy „zaryzykować” pisanie projektów w Kotlinie, to teraz powinny one zniknąć. Kotlin na przed sobą świetlaną przyszłość, a wraz z nim my – programiści, i cała branża IT.

Zakończę ten wywód cytatem, który stanowił tytuł jednej z prezentacji wygłoszonej na obecnej konferencji Google I/O, a który świetnie obrazuje obecną sytuację:

„Life is great and everything will be OK. Kotlin is here”

 

Nie przegap kolejnych wpisów - subskrybuj!

Dodaj komentarz