Kotlin

Początki programowania na Androida – Java czy Kotlin?

7 minut czytania
Komentarze

Witajcie w kolejnym odcinku. W ramach tej serii nie miałem na celu pisania kolejnego kursu programowania na Androida, lecz przybliżenie Wam, w jaki sposób ten system działa pod spodem. Ponieważ wiele osób pisało w komentarzach lub do mnie osobiście, że zainspirowałem ich do nauki programowania, postanowiłem zrobić mały wyjątek. Dzisiaj chciałbym Wam mniej więcej nakreślić, na czym polegają różnice pomiędzy Javą i Kotlinem, czyli dwoma językami programowania, za których pomocą możemy tworzyć aplikacje na platformę Android.

Trochę historii

O Kotlinie po raz pierwszy mogliśmy usłyszeć w 2011 roku, kiedy został zaprezentowany przez czeską firmę JetBrains. W założeniu miał to być nowoczesny język w pełni kompatybilny z Javą. Na początku większość programistów po usłyszeniu słowa Kotlin myślała raczej o keczupie niż o języku programowania. Z biegiem lat język ten stawał się coraz bardziej popularny, jednak w przypadku Androida, nie mieliśmy jego domyślnego wsparcia, więc trzeba było liczyć się z pewnymi utrudnieniami. Wszystko zmieniło się w 2017 roku podczas konferencji Google I/O. To właśnie wtedy Google ogłosiło wsparcie dla Kotlina przy tworzeniu aplikacji na Androida.

Oglądając ten fragment teraz, jestem nieco zdziwiony słabością aplauzu – możliwe, że mikrofony słabo wyłapały głos publiczności. Oglądałem tę transmisję na żywo razem z kilkudziesięcioma innymi programistami w wielkiej sali i reakcja większości z nich była niesamowita. Każdy cieszył się tą decyzją, ponieważ Kotlin jest językiem, w którym bardzo łatwo można się zakochać.

Od tego czasu wzrost popularności Kotlina nabrał niesamowitego tempa. Obecnie już prawie nikt nie zaczyna pisania nowych projektów w Javie. Fajnie można to zobaczyć na wykresie prezentującym procentową liczbę projektów Kotlinowych (z podziałem na Androida i wszystko inne).

Źródło: https://medium.com/@victoralbertos/kotlin-adoption-on-the-android-open-source-community-fe01d00a8bb3

Dlaczego Kotlin?

Pewnie zastanawiacie się, dlaczego Google zdecydowało się na zastąpienie Javy Kotlinem. Tutaj można wyróżnić dwie główne przyczyny. Pierwszą z nich jest to, że programiści pokochali Kotlina, bo pisze się w nim znacznie przyjemniej niż w wysłużonej już Javie (powiemy sobie o tym więcej za chwilę). Kolejnym ważnym aspektem jest spór prawny pomiędzy Google i Oracle dotyczący wykorzystywanie bibliotek Javy. Mimo pomyślnego wyroku z 2016 roku Google starał się uniezależnić w pewnym stopniu od firmy Oracle. Porzucenie Javy na Kotlina byłoby pod tym względem świetną decyzją. Z perspektywy czasu widzimy, że Google ma się czego obawiać, ponieważ kolejny wyrok nie był już taki przychylny firmie.

Tak więc twórcy Androida mieli wybierać pomiędzy lekko przestarzałym językiem znienawidzonym przez programistów, który dodatkowo może narazić ich na kary finansowe, a nowoczesnym językiem pokochanym przez programistów. Myślę, że wybór był dość prosty ?

Jakie są zalety Kotlina?

Nie chciałbym się tutaj za bardzo rozwodzić nad różnicami w składni, bo artykułów na ten temat jest chyba ponad milion. Bardziej chciałbym skupić się tutaj na odczuciach i spostrzeżeniach po ponad rocznej przygodzie z Kotlinem. Największą różnicą jest zwięzłość napisanego kodu w Kotlinie. Wystarczy napisać kilka klas i już nie mamy ochoty wracać do Javy. Projektanci tego języka podeszli do niego niesamowicie praktycznie. Przykładowo, po co mamy stawiać średniki po każdej linii lub dublować typ zmiennej przy jej deklaracji. Z pozoru są to rzeczy bardzo trywialne, lecz kilka takich malutkich cegiełek potrafi zrobić kolosalną różnicę w przyjemności z pisania.

Kolejną zaletą jest niesamowite tempo rozwoju. Praktycznie każda kolejna wersja Kotlina przynosi ze sobą jakieś nowości znacznie usprawniające tworzenie oprogramowania. W porównaniu do Javy jest tutaj przepaść, ponieważ Java wprowadzała niektóre funkcjonalności dopiero kilka lat po konkurentach. Ciekawskich odsyłam do listy wydań Kotlina, gdzie możecie zobaczyć jakie funkcjonalności zostały wprowadzone w kolejnych wersjach tego języka.

Według mnie ogromnym plusem jest również obecność Kotlin Native (wspominałem o nim w artykule o frameworkach crossplatform). Jest to narzędzie umożliwiające tworzenie aplikacji jednocześnie na Androida i iOSa. Co prawda projekt dopiero raczkuje, jednak zapowiada się bardzo dobrze i być może w przyszłości dzięki znajomości Kotlina będziemy mogli programować też na iOS. 

Co przemawia za pisaniem w Kotlinie?

Dowiedzieliśmy się już, że Kotlin jest taki super. Wiem jednak, że niektórzy czują obawy przed pisaniem w nim, ponieważ jest dość młodym językiem. Mam nadzieję, że ten akapit rozwieje wasze wątpliwości.

W dzisiejszych czasach prawie wszystkie nowe projekty są pisane w Kotlinie. Również te już istniejące są przepisywane z Javy na Kotlina. Tak więc musisz się liczyć z tym, że coraz więcej firm będzie wymagało znajomości tego języka programowania. Kolejnym aspektem są wszelakie poradniki i artykuły branżowe. Obecnie ciężko spotkać artykuł pokazujący jakieś nowości z Androida, posiadający przykłady napisane w Javie. Jeśli nie chcesz pisać w Kotlinie, to i tak musisz znać jego podstawową składnię w celu zrozumienia tego, co ktoś chciał przekazać.

Ostatnim aspektem jest podejście Google. Co prawda firma obiecała, że Java nigdy nie przestanie być wspierana. Jednak słyszeliśmy od nich podobne zapewnienia już kilkukrotnie i przeważnie okazywało się, że takie nieskończone wsparcie trwa maksymalnie kilka lat. Tak więc warto mieć na uwadze, że w przyszłości Kotlin będzie jedynym językiem używanym do tworzenia aplikacji androidowych.

Java czy Kotlin — co wybrać na początek?

Opowiedziałem Wam trochę o zaletach Kotlina, ale nadal nie odpowiedziałem na tytułowe pytanie. Niestety tutaj nie ma prostej odpowiedzi. Wszystko zależy od progu, z jakiego startujesz. Jeśli nigdy nie programowałeś w żadnym języku, możesz zaczynać od razu od nauki Kotlina, ponieważ i tak to wszystko będzie dla ciebie nowe.

Jeśli jednak programowałeś już coś w nieco starszych językach, może prościej będzie dla ciebie nauczyć się programowania na Androida korzystając z Javy, ponieważ z pewnością odnajdziesz w niej podobieństwa do innych języków. Co innego, jeśli jesteś programistą iOS, Swift bowiem jest bardzo podobny do Kotlina, dlatego łatwiej będzie Ci pisać od razu w Kotlinie.

Nie traktujcie moich słów jako wyrocznia. Przed rozpoczęciem nauki przeglądnijcie sobie kilka poradników zarówno do Javy, jak i Kotlina i sami wybierzcie, co Wam bardziej odpowiada. Jednak wybierając Javę, pamiętajcie, że prędzej czy później będziecie się musieli nauczyć także Kotlina.

Dzięki za dzisiaj – mam nadzieję, że odcinek się podobał. Tradycyjnie zachęcam do pisania komentarzy z propozycjami interesujących Was tematów. Na pewno zostaną poruszone w ramach tej serii. Widzimy się za tydzień, gdzie przedstawię Wam główne zasady, których powinien przestrzegać każdy szanujący się programista. Do zobaczenia!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie do kariery programisty — zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów — być może to właśnie tam znajdziesz swoją pierwszą pracę.

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć, jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?
  11. Początki programowania — jaką technologię wybrać?
  12. Cykl życia aplikacji na Androida — co to takiego?
  13. Jak tworzymy interfejs użytkownika w aplikacjach na Androida?
  14. Jak system Android oszczędza energię?
  15. Jak działają i czym są powiadomienia push w Androidzie?
  16. W jaki sposób aplikacje pobierają dane z zewnętrznych serwisów i czym jest API?
  17. Jak działają pozwolenia w systemie Android?
  18. Śledzenie użytkowników — co wiedzą o nas aplikacje?
  19. Dlaczego aplikacje na Androida zajmują coraz więcej miejsca?
  20. Frameworki crossplatform – jak stworzyć aplikację na iOS i Androida jednocześnie?
  21. Jak obsłużyć kilka języków w aplikacji na Androida?
  22. Dodatkowe funkcjonalności Androida, których nikt nie wspiera
  23. Co się dzieje podczas kompilacji aplikacji na Androida?
  24. App Bundle – jak Google rewolucjonizuje Androida?
  25. W jaki sposób testujemy aplikacje na Androida?
  26. Jak zabezpieczamy aplikacje na Androida?

Motyw