Jak powszechnie wiadomo, świat IT nie znosi próżni. Co chwila powstają nowe języki, technologie, koncepty. Inne zaś, wracają jak bumerang pod trochę innymi nazwami. Środowisko JVMa (Java Virtual Machine) również podąża za tym trendem. Kotlin to język programowania relatywnie młody, ale już nie aż tak hipsterski. Coraz mocniej, szybciej i śmielej przenika do świata „produkcyjnego”. Czy jest to jednak język, od którego młody adept programowania powinien zacząć swoją przygodę z IT? Jakie są jego zalety i skąd czerpać wiedzę?
O zdanie zapytaliśmy Wojciecha Franczyka, Software Developera, który na co dzień pracuje w obszarze IoT, a który swoją przygodę z Comarchem rozpoczął ponad 7 lat temu.
W 2017 roku podczas konferencji Google I/O, Google ogłosiło wsparcie dla Kotlina przy tworzeniu aplikacji na Androida. Od tego czasu wzrost popularności Kotlina nabrał niesamowitego tempa. Co spowodowało, że ten język tak nagle znalazł tak duże grono zwolenników?
Ciągle powstają nowe języki programowania i wiele z nich próbuje wypełnić jakąś lukę lub usprawnić wybrane elementy w pisaniu kodu. Firmy boją się jednak inwestować swój czas i pieniądze w technologie, które nie mają wystarczającego udziału w rynku. Może się okazać, że z powodu braku zainteresowania rozwój nowego języka zostanie porzucony, a firma będzie zmuszona szukać specjalistów w wąskim gronie lub przeprowadzić kosztowną zmianę technologii.
Kotlin dopiero w 2016 roku został wydany w stabilnej wersji i choć już było o nim dość głośno, to dopiero wsparcie takiego giganta jak Google dało pewien rodzaj gwarancji na to, że język będzie wspierany i rozwijany. W 2019 Google ogłosiło, że Kotlin będzie od tego czasu oficjalnym językiem do rozwijania aplikacji dla Androida, co było ostatecznym dowodem na to, że technologia się „przyjęła”.
W takim razie, jak są zalety Kotlina?
Kotlin to przede wszystkim język, który powstał na bazie wielu lat doświadczeń programistów języka Java i najczęściej jest przedstawiany jako jego zamiennik. Autorzy zwracali szczególną uwagę na aspekty Javy, które były uciążliwe dla programistów, nie pomagały w pisaniu poprawnego i bezpiecznego kodu, czy sprawiały, że Java była widziana jako przestarzały język.
Kod pisany w Kotlinie jest bardziej zwięzły, ale jednocześnie lepiej komunikuje intencje programisty, który za pomocą wygodnych mechanizmów musi jasno deklarować, co chce zrobić. Język posiada też konstrukcje, które pomagają unikać pomyłek logicznych oraz poprawiają czytelność kodu.
Dowiedzieliśmy się już, że Kotlin nie jest taki zły. Wiem jednak, że niektórzy czują obawy przed pisaniem w nim, ponieważ jest dość młodym językiem. Czy w taki wypadku warto zaryzykować?
Projektanci języka jasno zadeklarowali, czym jest, a czym nie jest Kotlin. W swojej podstawowej formie, czyli w formie języka opartego na JVM - Kotlin można kompilować także do JavaScriptu oraz kodu natywnego - ma być on pełnym zastępnikiem Javy. Oznacza to, że choć język jest stosunkowo młody, to funkcjonalnie nie różni się znacznie od Javy w wersji 8. Wszystkie podstawowe koncepcje oraz paradygmaty są w obu językach bardzo podobne, ale Kotlin znacząco ułatwia wykorzystywanie ich w poprawny sposób.
Większość programistów Java jest w stanie zacząć pracować w Kotlinie w mniej niż tydzień. Języki są ze sobą w pełni kompatybilne i mogą wykorzystywać wzajemnie swój kod. Istnieją generatory tłumaczące kod w obie strony, co nawet w przypadku porażki zapewni szybki powrót do Javy.
Próg wejścia w Kotlina jest bardzo niski, a zalet jest mnóstwo. Przy obecnym stanie języka – o ile tylko mamy taką możliwość – nie ma powodu, aby nie spróbować.
Kotlin to chyba jednak, pomimo wielu głosów, nie tylko Android. Gdzie możemy go jeszcze wykorzystać?
Zanim pojawiła się na Androidzie, Java była głównie wykorzystywana w programowaniu systemów backendowych. Dalej pozostaje w tej kategorii jednym z najczęstszych wyborów. Z naszego doświadczenia wynika, że wszędzie tam, gdzie można użyć Javy, można także wykorzystać język Kotlin i w pełni korzystać z jego zalet. Nasze zespół z pełnym sukcesem używa go w jednym z takich projektów, co m.in. pozwoliło na zmniejszenie ilości kodu o ponad połowę na przestrzeni około 15 mikroserwisów.
Kotlin to najwyższej klasy język do tworzenia aplikacji na Androida i już wyprzedził Javę w tym zakresie. Uważasz, że to koniec, czy raczej początek dużej zmiany?
Samo zdobycie dużej części rynku i stworzenie realnej alternatywy dla Javy i innych języków JVM było wielkim sukcesem. Myślę, że to raczej koniec dużej zmiany i jest to moim zdaniem świetna wiadomość dla samego języka, który jest teraz w pełni dojrzały, funkcjonalny, stabilny i z ugruntowanym przeznaczeniem.
Projektanci Kotlina są bardzo ostrożni w kwestii dodawania nowych możliwości, zwłaszcza takich, które dotykają bardziej niszowych problemów. Nie chcą niepotrzebnie komplikować języka, co jasno podkreśla dokonane już przejście przez okres stabilizacji.
Dużo mówiliśmy już o zaletach Kotlina. Co wybrać w takim razie na początek przygody z programowaniem? Mówi się, że Kotlin nie jest dobrym językiem na "start". Dlaczego?
Jeśli planujemy karierę w rodzinie języków JVM, powinniśmy być świadomi tego, co dzieje się pod spodem naszej implementacji. Niezależnie od tego, czy docelowo chcemy pracować w Javie, Kotlinie, Scali, Groovym czy jeszcze innym języku JVM, zauważymy, że pewne koncepcje są takie same, narzucone przez to, jak pracuje maszyna wirtualna. Java nie jest językiem, w którym pracuje się najwygodniej, ale dzięki znajomości tego języka, na późniejszym etapie, wszystkie mechanizmy będą znane programiście i świadomie przez niego używane. Inne języki ukrywają wiele z tych mechanizmów np. pod słowami kluczowymi.
Pomimo tego nie uważam, że Kotlin to zły wybór na początek, o ile nie zaniedbujemy chęci poznania języka „w głąb”. Pozwala on na szybkie rozpoczęcie pracy i szybkie osiągnięcie rezultatów, głównie dzięki dostępności materiałów szkoleniowych i przykładów dla Androida – o ile w tym obszarze chcemy zacząć naszą karierę. W przeciwnym wypadku sugerowałbym jednak zacząć od Javy, gdyż poza technologiami mobilnymi zdecydowanie częściej mamy do czynienia z niżej poziomowym programowaniem.
Jeżeli jednak umiem już programować w Javie, to czy warto zagłębiać się w tematykę Kotlina?
Jak już wspomniałem wcześniej, Kotlin potrafi robić dokładnie to samo co Java, a jednocześnie pracuje się z nim wygodniej. Im bardziej jesteśmy zaawansowani w języku Java, tym łatwiej będzie nam docenić korzyści płynące z nowych mechanizmów.
Co polecasz do nauki i treningu osobom, które chcą rozwijać się w obszarze Kotlina?
Niezależnie od stopnia naszego zaawansowania w innych językach, zdecydowanie polecam oficjalną dokumentację, tj. Language Guide oraz Tutorials. Kiedy już zapoznamy się z podstawami języka, Kotlin Koans to świetne narzędzie, aby sprawdzić naszą wiedzę i rozumienie koncepcji języka. Nie jestem zwolennikiem wszelkiego rodzaju „kursów”. Zdecydowanie bardziej polecam uczenie się na własnych projektach lub przykładach większych projektów.