Jetpack Compose for Desktop přidává vrstvu Swing a podporu Apple Silicon

JetBrains vydala novou verzi Jetpack Compose for Desktop, open-source multiplatformního vývojového rámce uživatelského rozhraní.

Pokud děláte nějakou vývojovou práci, pravděpodobně jste slyšeli o JetBrains. Jsou to společnost, která stojí za obrovskou sadou IDE, která zahrnuje IntelliJ (základ pro Android Studio), CLion, PhpStorm a mnoho dalších. Jsou to také oni, kdo vytvořili Kotlin, velmi populární multiplatformní programovací jazyk.

A JetBrains se k tomu znovu vrací. Před více než rokem Google představil nový modul rozložení pro Android s názvem Jetpack Compose. Prošlo to od té doby došlo k několika zásadním změnám, ale proměnil se v kompetentní (i když stále poněkud nestabilní) alternativu ke klasickým rozložením XML systému Android.

Co má Jetpack Compose společného s JetBrains? No, za prvé, je to napsané v Kotlinu. JetBrains však také tiše pracuje na přenesení Compose na plochu. Byla zveřejněna jako první vývojářská ukázka a nyní je JetBrains připraven oficiálně oznámit, že existuje.

Co je Jetpack Compose?

Trochu jsem o tom mluvil v úvodu, ale myslím, že by si to zasloužilo více vysvětlení. Pokud jste již vyvíjeli na Androidu, pravděpodobně jste si zvykli, jak rozložení fungují. Nejprve navrhnete rozvržení v souboru XML a poté s tímto rozvržením komunikujete z Java nebo Kotlin. I když je funkční, je trochu zastaralý a rozvržení rozdělené mezi jazyky může být obtížné spravovat.

Jako alternativu k tomu začal Google vyvíjet Jetpack Compose. Compose je modul rozložení pro Android postavený na Kotlinu. Všechny vaše rozvržení a logický kód jsou na jednom místě, což značně usnadňuje interaktivitu. Je také deklarativní, namísto imperativního stylu rozvržení XML.

Přechod na modul deklarativního rozvržení z imperativního může chvíli trvat, než si zvyknete, ale Compose je rozhodně vylepšením XML, i když je stále v raných fázích.

Jetpack Compose for Desktop

Compose je tedy pěknou alternativou rozvržení pro nativní aplikace pro Android. Ale není to (normálně) multiplatformní. To je místo, kde přichází JetBrains. Společnost přenesla Jetpack Compose do desktopového prostoru s podporou pro Windows, Linux a macOS (jak Intel, tak ARM).

I když pro desktop existují další moduly rozložení, jako je Electron, JavaFX a UWP, je to teď trochu nepořádek. Některé nejsou multiplatformní, takže fungují pouze na jednom konkrétním operačním systému. Jiné jsou technicky multiplatformní, ale jejich distribuce vyžaduje hodně práce. A přesto, s jinými je jen obtížné pracovat, jako je JavaFX.

Jetpack Compose for Desktop se naproti tomu používá poměrně snadno, podporuje škálování displeje, má vestavěný styl a je (téměř) plně multiplatformní. Zatímco ještě nemůžete zkompilovat pro všechny distribuce z jednoho operačního systému, samotný kód je zcela přenosný. Stejně jako u Androidu je zabalená aplikace založena na Javě, i když uživatelé k jejímu používání nepotřebují nainstalovaný JDK.

Křížová kompatibilita

Vzhledem k tomu, že Compose for Desktop je stále nový, postrádá některé funkce. Aby vývojáři pomohli obejít tato omezení, Compose for Desktop je kompatibilní se dvěma z populárnějších modulů pro rozvržení Java, JavaFX a Swing. Pokud máte aplikaci pro stolní počítače vyvinutou v jednom (nebo obou) z těchto enginů, můžete začít s přechodem na Compose při zachování stávající kódové základny.

Android + Desktop

Co když chcete aplikaci Compose Android přenést na plochu? No, můžete to také (tak nějak) udělat. Prvky uživatelského rozhraní vaší aplikace lze snadno sdílet mezi Androidem a počítačem. Nebudete moci sdílet vše, ale rozhodně to usnadňuje vývoj.

Podpora Apple Silicon

Zmínil jsem to výše, ale zmíním to znovu. The nové počítače Apple Silicon Mac jsou docela úžasné, ale procesory jsou založeny na architektuře CPU ARM, což znamená, že mnoho aplikací pro macOS aktuálně běží přes překladač Rosetta 2 x86. Zatímco Apple odvedl s tímto překladem docela dobrou práci, nativní programy ARM budou stále fungovat lépe.

Jetpack Compose for Desktop nativně podporuje Apple Silicon. To znamená, že se nebudete muset starat o pokles výkonu z překladu nebo o budoucí podporu, až ji Apple ukončí.

Funkčnost

Je tedy dobře, že JetBrains vytvořil nový modul rozložení pro desktop, ale kdo by řekl, že je lepší než to, co máme nyní?

Mě.

Použil jsem nejnovější dostupnou verzi v době psaní tohoto článku (0.2.0-build132) k vytvoření jednoduché aplikace pro udělování oprávnění pro SystemUI Tuner. Protože nejsem tak obeznámen s Compose a deklarativním designem, bylo to pro mě trochu obtížnější než aplikace pro rozvržení XML, ale zvládl jsem to. A použití je mnohem jednodušší než JavaFX.

Zatímco podpora motivů (tj. tmavý režim) je stále trochu ošemetná, je docela snadné vytvořit interaktivní rozvržení a kromě několika blikání při změně velikosti okna vše funguje dobře.

Pokud si chcete aplikaci vyzkoušet, zdrojový kód je k dispozici na GitHub. Stačí jej importovat pomocí IntelliJ nebo Android Studio a mělo by být připraveno ke spuštění.


Osobně jsem z Jetpack Compose for Desktop docela nadšený. Předtím jsem ani nevěděl, že existuje, ale už je to můj oblíbený nástroj pro rozvržení plochy. Více se můžete dozvědět na Web Jetpack Compose for Desktop nebo na GitHubu.

Co si o tom myslíš? Vyplatí se vyzkoušet a možná i použít místo jiných dostupných frameworků? Dej mi vědět!

Vybrané obrázky: JetBrains na GitHubu