JetBrains heeft een nieuwe versie uitgebracht van Jetpack Compose for Desktop, een open-source platformonafhankelijk UI-ontwikkelingsframework.
Als je enige vorm van ontwikkelingswerk doet, heb je waarschijnlijk wel eens van JetBrains gehoord. Zij zijn het bedrijf achter het enorme pakket IDE's, waaronder IntelliJ (de basis voor Android Studio), CLion, PhpStorm en vele anderen. Zij zijn ook degenen die het gemaakt hebben Kotlin, de enorm populaire platformonafhankelijke programmeertaal.
En JetBrains is er weer mee bezig. Iets meer dan een jaar geleden introduceerde Google een nieuwe layout-engine voor Android genaamd Jetpack Compose. Het is voorbij sindsdien nogal wat grote veranderingen, maar het is veranderd in een competent (zij het nog steeds enigszins onstabiel) alternatief voor de klassieke XML-lay-outs van Android.
Wat heeft Jetpack Compose met JetBrains te maken? Ten eerste is het in Kotlin geschreven. Maar ook JetBrains heeft in stilte gewerkt aan het porten van Compose naar de desktopruimte. Het is openbaar geweest als een vroege preview voor ontwikkelaars, en nu is JetBrains klaar om officieel aan te kondigen dat het bestaat.
Wat is Jetpack Compose?
Ik heb er in de inleiding al een beetje over gesproken, maar ik denk dat het wat meer uitleg verdient. Als u eerder op Android heeft ontwikkeld, bent u waarschijnlijk gewend aan de manier waarop lay-outs werken. Eerst ontwerpt u uw lay-out in een XML-bestand en vervolgens werkt u met die lay-out vanuit Java of Kotlin. Hoewel het functioneel is, is het een beetje verouderd, en het kan lastig zijn om je lay-outs over verschillende talen te verdelen.
Als alternatief hiervoor is Google Jetpack Compose gaan ontwikkelen. Compose is een layout-engine voor Android gebouwd bovenop Kotlin. Al uw lay-out- en logische code bevindt zich op één plek, wat interactiviteit een stuk eenvoudiger maakt. Het is ook declaratief, in plaats van de imperatieve stijl van XML-lay-outs.
Het kan even wennen zijn om van een imperatieve engine over te stappen op een declaratieve layout-engine, maar Compose is zeker een verbetering ten opzichte van XML, ook al bevindt het zich nog in de beginfase.
Jetpack Compose voor desktop
Compose is dus een mooi lay-outalternatief voor native Android-apps. Maar het is (normaal gesproken) niet platformonafhankelijk. Dat is waar JetBrains in beeld komt. Het bedrijf heeft Jetpack Compose geporteerd naar de desktopruimte, met ondersteuning voor Windows, Linux en macOS (zowel Intel als ARM).
Hoewel er andere layout-engines voor desktop bestaan, zoals Electron, JavaFX en UWP, is het momenteel een beetje een puinhoop. Sommige zijn niet platformonafhankelijk en werken dus alleen op één specifiek besturingssysteem. Anderen zijn technisch gezien platformonafhankelijk, maar vergen veel werk om te distribueren. En toch zijn andere gewoon lastig om mee te werken, zoals JavaFX.
Jetpack Compose for Desktop daarentegen is relatief eenvoudig te gebruiken, ondersteunt schermschaling, heeft een ingebouwde stijl en is (bijna) volledig platformonafhankelijk. Hoewel je nog niet voor alle distributies vanuit één besturingssysteem kunt compileren, is de code zelf volledig overdraagbaar. Net als bij Android is een verpakte app gebaseerd op Java, hoewel gebruikers geen JDK hoeven te installeren om deze te kunnen gebruiken.
Cross-compatibiliteit
Omdat Compose voor Desktop nog nieuw is, ontbreken er enkele functies. Om ontwikkelaars te helpen deze beperkingen te omzeilen, is Compose for Desktop interoperabel met twee van de meer populaire Java-layout-engines, JavaFX en Swing. Als u een desktop-app heeft ontwikkeld in een (of beide) van deze engine, kunt u beginnen met de overstap naar Compose terwijl u uw huidige codebase behoudt.
Android + bureaublad
Wat als u uw Compose Android-app naar de desktop wilt brengen? Nou ja, dat kun je ook (soort van) doen. De UI-elementen van uw app kunnen eenvoudig worden gedeeld tussen Android en desktop. Je kunt niet alles delen, maar het maakt de ontwikkeling zeker gemakkelijker.
Apple Silicon-ondersteuning
Ik heb het hierboven al gezegd, maar ik ga het nog een keer noemen. De nieuwe Apple Silicon Mac's zijn behoorlijk verbazingwekkend, maar de processors zijn gebaseerd op de ARM CPU-architectuur, wat betekent dat veel macOS-apps momenteel via de Rosetta 2 x86-vertaler draaien. Hoewel Apple behoorlijk goed werk heeft geleverd met die vertaling, zullen native ARM-programma's nog steeds beter werken.
Welnu, Jetpack Compose for Desktop ondersteunt native Apple Silicon. Dat betekent dat u zich geen zorgen hoeft te maken over prestatieverlies als gevolg van vertalingen of over toekomstige ondersteuning als Apple ermee stopt.
Functionaliteit
Het is dus allemaal goed en wel dat JetBrains een nieuwe layout-engine voor desktop heeft gemaakt, maar wie zal zeggen dat deze beter is dan wat we nu hebben?
Mij.
Ik heb de nieuwste beschikbare build gebruikt op het moment dat ik dit schreef (0.2.0-build132) om een eenvoudige app voor het verlenen van machtigingen voor SystemUI Tuner te maken. Omdat ik niet zo bekend ben met Compose en declaratief ontwerp, was het voor mij iets moeilijker dan een XML-layout-app, maar het is me gelukt. En het is een stuk eenvoudiger te gebruiken dan JavaFX.
Hoewel thema-ondersteuning (dat wil zeggen de donkere modus) nog steeds een beetje twijfelachtig is, is het vrij eenvoudig om een interactieve lay-out te bouwen, en afgezien van een paar flikkeringen bij het wijzigen van de grootte van het venster, werkt alles prima.
Als je de app wilt bekijken, is de broncode beschikbaar op GitHub. Importeer het gewoon met IntelliJ of Android Studio en het zou klaar moeten zijn om te worden uitgevoerd.
Persoonlijk ben ik behoorlijk enthousiast over Jetpack Compose voor Desktop. Ik wist niet eens dat het bestond, maar het is nu al mijn favoriete desktoplay-outengine. U kunt meer te weten komen op de Jetpack Compose voor desktop-website of op GitHub.
Wat denk jij ervan? Is het de moeite waard om te bekijken en misschien zelfs te gebruiken in plaats van andere beschikbare raamwerken? Laat het me weten!
Uitgelichte afbeeldingscredits: JetBrains op GitHub