Jetpack Compose: Řekneme XML konečně sbohem?
V rámci firemního vzdělávání si náš Android tým uspořádal workshop na téma Jetpack Compose. Tím, že Google vypustil beta verzi knihovny Compose, ve které stabilizoval API a nebude v něm tedy provádět zásadní změny, je ideální čas na to, aby se s tím naši vývojáři seznámili. Co to vlastně ten Compose je a co to pro nás znamená?
Jetpack Compose: nová knihovna pro tvorbu UI
Jetpack Compose je knihovna, která slouží jako kompletní náhrada tradiční tvorby UI v Android aplikacích. Tradiční způsob má několik hlavních nevýhod:
- UI se tvoří převážně v jazyce XML, ale v mnoha případech je třeba UI upravovat či definovat i v hlavním kódu aplikace (v Javě/Kotlinu). Definice UI je tedy roztroušena na více místech a to má za následek, že kód je méně přehledný a více náchylný na chyby.
- Výsledný vzhled obrazovky vznikne po úpravě vlastností (barva, viditelnost, velikost, …) UI elementů, které jsou pro danou obrazovku vydefinovány v XML, na základě dat, která se mají zobrazit. XML soubory jsou tedy často velké a nepřehledné.
- UI je závislé na verzi Androidu, ve které aplikace běží. Vývojáři tedy často musí řešit problémy, které se vyskytují např. pouze v jedné verzi systému.
- Tradiční systém pro tvorbu UI je v podstatě nezměněný od té doby, co Android vznikl, a nese si s sebou velkou zátěž, kterou se začínající vývojáři musí naučit a znát všechna jeho úskalí.
Podívejme se, jak Jetpack Compose hodlá vyřešit všechny tyto neduhy:
- UI se definuje pouze v Kotlinu. Žádný další jazyk se nevyužívá, máte tedy přístup k celé síle jazyka. Tento přístup v Ackee aplikujeme již několik let skrz knihovnu Anko, více zde.
- S Compose se UI definuje deklarativně. Nemodifikují se vlastnosti elementů na základě dat, ale UI se vytvoří znovu a odpovídá přesně stavu dat v daný moment.
- Compose je kompletně nezávislý na verzi Androidu a je vyvíjen jako samostatná knihovna. Je dokonce tvořen tak, že jej lze využít také pro vývoj desktop aplikací či webů (oboje je pouze v experimentální fázi).
- Tím, že Compose vzniká od nuly, má možnost se vyvarovat z chyb a nešťastných řešení. Compose tým vydal první verzi v alpha preview na Google IO 2019 a od té doby spolu s komunitou ladí veřejné API knihovny, aby bylo co nejpřívětivější pro vývojáře.
Deklarativní UI však není v dnešní době žádnou novinkou. Na podobném principu funguje již několik let React, Flutter či v poslední době Swift UI. Compose tým tedy má více zdrojů, kde se inspirovat a navrhnout nejlepší možné API pro Android platformu.
Jetpack Compose: konec tradiční tvorby UI?
Co to pro nás tedy v Ackee nyní znamená? Začneme nové aplikace psát v Compose?
Odpověď je: bohužel nikoliv. I když je technologie po více než 4 letech vývoje (prý na první verzi Google začal pracovat v 2017) již v beta fázi, stále ještě není na takové úrovni, aby se dala použít v produkčních aplikacích. Kromě toho, že samotný Compose trpí neduhy jako nižší výkon na slabších zařízeních či absence některých UI prvků, tak také Android Studio, které se pro vývoj využívá, není plně spolehlivé. Náhled UI často nefunguje, nenapovídá kód či vypisuje nesrozumitelné chybové hlášky.
Nicméně i přesto pro nás byl workshop přínosný — vývojáři si osahali tuto novinku, dokáží si lépe představit mentální model, který přechod na Compose přinese, a v neposlední řadě to bylo příjemné zpestření dnes tak monotónních dní.