
Náš Android tech stack pro vývoj mobilních aplikací

23. Feb 2023
AndroidJava nám developerům přinesla mnoho radosti (i smutku) při vývoji aplikací pro Android. Je celosvětově uznávaná nejen v oblasti mobilních zařízení. Kotlin je sice na světě krátce, ale má co nabídnout. Přečtěte si následující srovnání z profesionálního prostředí a utvořte si vlastní názor.
Java je známý objektově orientovaný programovací jazyk. Jazyk je navržený tak, aby měl co nejméně implementačních závislostí. Java byla vydaná v roce 1996 společností Sun Microsystems. Zdrojové kódy Javy jsou navíc veřejně dostupné na GitHubu. Většina mobilních aplikací pro Android, které najdete na Google Play, Amazon Appstore nebo Aptoide, je naprogramovaná v Javě.
Kotlin 1.0 byl vydaný na začátku roku 2016 společností JetBrains. Kotlin je staticky typovaný programovací jazyk. Při kompilaci je přeložen do bytecode Javy, který běží v JVM (Java Virtual Machine). Kotlin není tak oblíbený ani rozšířený jako Java, ale existuje několik známých společností, které tento jazyk používají: Pinterest, Trello, Kickstarter, GoodRequest...
Kotlin byl od začátku navržený tak, aby byl kompatibilní s Javou. Díky tomu mohou vývojáři nejen snadno migrovat projekty do jazyka Kotlin, ale taky používat knihovny naprogramované v Javě. Jazyk je navržený tak, abychom toho zvládli víc za kratší dobu.
V Kotlinu už se nám automaticky generují gettery a settery. Samozřejmě nesmíme zapomenout zmínit i slavnou funkci copy, která je součástí každé datové třídy. Datové třídy jsou neměnné, což nám usnadňuje práci ve vícevláknových programech. Copy nám zkopíruje instanci a vytvoří novou, do které můžeme přesunout další hodnoty.
V Javě je velkou nevýhodou Nullable. Když definujeme řetězcovou proměnnou String name, nemůžeme s jistotou říct, zda v ní name má, nebo nemá hodnotu. Běžně se může stát, že při práci s proměnnou dostaneme výjimku NullPointerException.
V Kotlinu máme možnost rozhodnout, zda proměnnou definujeme jako Nullable (v Kotlinu se nazývá Optional) val name: String?. Tady můžeme s jistotou říct, že proměnná může obsahovat null. Pokud bychom definovali bez otazníku, můžeme s jistotou říct, že proměnná nemůže být nikdy null.
V Javě musíme počítat s tím, že může být null, v Kotlinu jsme schopní to zajistit znakem ?, což nám zajistí, že instrukce v případě null nepokračuje dál.
Dá se říct, že Java a Kotlin mají stejnou rychlost kódování. Kotlin má víc lakonických konstrukcí, které umožňují Android developerovi méně psát. Má to ale jeden háček, hledání řešení úlohy v Kotlinu vyžaduje víc času než v Javě. To znamená, že s Kotlinem je spojená větší kognitivní zátěž než s Javou. Pokud jste geniální abstraktní myslitelé, Kotlin je jasná volba.
Z hlediska rychlosti kompilace je Kotlin o něco pomalejší než Java. V obou případech se instrukce překládají do bytecode Javy. Kotlin má víc vlastností než Java, a proto vidíme rozdíl. Stejně tak je v Javě rychlejší i provedení instrukcí. Musím ale podotknout, že rozdíl je minimální a vzhledem k dnešním strojům zanedbatelný.
Java je tu s námi už několik desetiletí. Od verze 8 mají verze Javy dlouhodobou podporu, když se něco pokazí, zakladatelé jsou schopní to rychle opravit. Kotlin je na světě teprve krátce a stále se vyvíjí. Stále existuje možnost, že některé dnes podporované vlastnosti jazyka už v novějších verzích nebudou, což může způsobit problémy při aktualizacích.
Protože Java je tu s námi už delší dobu, existuje řada knih a návodů nebo dokumentací, ze kterých můžeme čerpat vědomosti a know-how. Kotlin sice má několik kvalitních oficiálních zdrojů, ale to je asi tak všechno.
Kotlin pracuje s bytecodem Javy, tady není žádný problém. Pokud se podíváme na Google trends, je Java na Slovensku stále o dost populárnější než Kotlin. A ve světě to je to samé. Kotlin je nicméně navržený právě pro vývoj mobilních aplikací. JetBrains jsou autory nejen Kotlinu, ale i nejznámějšího rozhraní Android Studio. Naučit se Kotlin může být náročnější, protože si žádá víc kognitivního myšlení. V Javě sice k vyřešení úlohy napíšeme víc kódu, ale máme víc know-how a hotových řešení, ze kterých můžeme čerpat. Není žádný problém naprogramovat aplikaci pro Android čistě v Kotlinu. Bude fungovat stejně dobře jako v Javě.
Osobně dávám přednost Kotlinu před Javou. Skutečnost, že míň kódu nadělá víc muziky, je pro mě důležitým faktorem. V jednoduchosti je krása. Při čtení kódu strávím hledáním v Kotlinu míň času než v Javě. Pochopit základy a skryté triky jazyka bylo obtížné a i po letech stále existují vlastnosti a řešení, na které přicházím postupně. Velké plus představují i statická rozšíření (Kotlin extensions) stávajících tříd.
Pokud jde o práci s více vlákny, máme v Kotlinu nativní podporu Kotlin Coroutines. V Javě si k tomu člověk musí vzít na pomoc RxJava nebo používat callbacky. Coroutiny opět zjednodušují čitelnost našeho kódu, ale vyžadují ještě větší abstraktní představivost. Naopak v Javě je zase u RxJavy nutné déle studovat kód a dokumentaci.
Tohle rozhodnutí je na vás. Myslím, že jednodušší je začít s Javou. Je rozšířenější a existuje mnohem víc návodů a příruček. Pak bych přešel na Kotlin. V Javě rychleji pochopíte soukolí programu a co a proč se kde děje. Kotlin se pak už naučíte snáz. Taky je třeba vzít v úvahu, že Java je multiplatformový jazyk, který je rozšířený nejen při vývoji mobilních aplikací, ale i aplikací pro jiná zařízení, servery nebo operační systémy.
Programování v Kotlinu je zábava, programování v Javě je práce.
Pokud preferujete jednoduchost a přímočarost, zvolte jednoznačně Javu.
Pokud máte rádi výzvy a abstraktnost, pak jednoznačně Kotlin.
Nezapomeňte navštívit naše užitečné #goodroidtips