JetBrains har släppt en ny version av Jetpack Compose for Desktop, ett ramverk för utveckling av gränssnitt för gränssnitt med öppen källkod.
Om du gör någon form av utvecklingsarbete har du förmodligen hört talas om JetBrains. De är företaget bakom den enorma uppsättningen IDE som inkluderar IntelliJ (basen för Android Studio), CLion, PhpStorm och många andra. Det är också de som gjort Kotlin, det enormt populära plattformsoberoende programmeringsspråket.
Och JetBrains är tillbaka på det igen. För lite över ett år sedan introducerade Google en ny layoutmotor för Android som heter Jetpack Compose. Det har gått igenom en hel del stora förändringar sedan dess, men det har förvandlats till ett kompetent (om än fortfarande något instabilt) alternativ till Androids klassiska XML-layouter.
Vad har Jetpack Compose med JetBrains att göra? Tja, för en, det är skrivet i Kotlin. Men JetBrains har också under tystnad arbetat med att portera Compose till skrivbordsutrymmet. Den har varit offentlig som en tidig förhandsvisning av utvecklare, och nu är JetBrains redo att officiellt meddela att den finns.
Vad är Jetpack Compose?
Jag pratade om det lite i inledningen, men jag tycker att det förtjänar lite mer förklaring. Om du har utvecklat på Android tidigare är du förmodligen van vid hur layouter fungerar. Först designar du din layout i en XML-fil och sedan interagerar du med den layouten från Java eller Kotlin. Även om det är funktionellt, är det lite föråldrat, och att ha dina layouter uppdelade på olika språk kan vara svårt att hantera.
Som ett alternativ till detta började Google utveckla Jetpack Compose. Compose är en layoutmotor för Android byggd ovanpå Kotlin. All din layout och logikkod finns på ett ställe, vilket gör interaktivitet mycket enklare. Det är också deklarativt, istället för den imperativa stilen i XML-layouter.
Att flytta till en deklarativ layoutmotor från ett imperativ kan ta lite tid att vänja sig vid, men Compose är definitivt en förbättring jämfört med XML, även om det fortfarande är i ett tidigt skede.
Jetpack Compose för skrivbordet
Så, Compose är ett trevligt layoutalternativ för inbyggda Android-appar. Men det är inte (normalt) plattformsoberoende. Det är där JetBrains kommer in. Företaget har portat Jetpack Compose till skrivbordsutrymmet, med stöd för Windows, Linux och macOS (både Intel och ARM).
Även om det finns andra layoutmotorer som finns för stationära datorer, som Electron, JavaFX och UWP, är det lite av en röra just nu. Vissa är inte plattformsoberoende, så de fungerar bara på ett specifikt operativsystem. Andra är tekniskt plattformsoberoende, men kräver mycket arbete att distribuera. Och fortfarande är andra bara jobbiga att arbeta med, som JavaFX.
Jetpack Compose for Desktop är å andra sidan relativt lätt att använda, stöder displayskalning, har inbyggd styling och är (nästan) helt plattformsoberoende. Även om du ännu inte kan kompilera för alla distributioner från ett operativsystem, är själva koden helt portabel. Precis som med Android är en paketerad app baserad på Java, även om användare inte behöver en JDK installerad för att använda den.
Korskompatibilitet
Eftersom Compose for Desktop fortfarande är nytt saknas det några funktioner. För att hjälpa utvecklare att komma runt dessa begränsningar är Compose for Desktop interoperabel med två av de mer populära Java-layoutmotorerna, JavaFX och Swing. Om du har en stationär app utvecklad i en (eller båda) av dessa motorer kan du börja gå över till Compose samtidigt som du behåller din nuvarande kodbas.
Android + Desktop
Vad händer om du vill ta med din Compose Android-app till skrivbordet? Tja, du kan också (typ) göra det. Användargränssnittselementen i din app kan enkelt delas mellan Android och desktop. Du kommer inte att kunna dela allt, men det underlättar verkligen utvecklingen.
Apple Silicon Support
Jag nämnde detta ovan, men jag tänker nämna det igen. De nya Apple Silicon Macs är ganska fantastiska, men processorerna är baserade på ARM CPU-arkitekturen, vilket innebär att många macOS-appar för närvarande körs genom Rosetta 2 x86-översättaren. Även om Apple gjorde ett ganska bra jobb med den översättningen, kommer inbyggda ARM-program fortfarande att fungera bättre.
Jo, Jetpack Compose for Desktop stöder Apple Silicon inbyggt. Det betyder att du inte behöver oroa dig för prestandasänkningar från översättning eller för framtida support när Apple upphör med det.
Funktionalitet
Så det är bra att JetBrains skapade en ny layoutmotor för stationära datorer, men vem kan säga att den är bättre än vad vi har nu?
Mig.
Jag använde den senaste tillgängliga versionen när jag skrev detta (0.2.0-build132) för att skapa en enkel app för beviljande av behörigheter för SystemUI Tuner. Eftersom jag inte är så bekant med Compose och deklarativ design var det lite svårare för mig än en XML-layout-app, men jag gjorde det. Och det är mycket enklare att använda än JavaFX.
Även om temastöd (dvs mörkt läge) fortfarande är lite osäkert, är det ganska enkelt att bygga en interaktiv layout, och bortsett från några flimmer när du ändrar storlek på fönstret, fungerar allt bra.
Om du vill kolla in appen finns källkoden tillgänglig på GitHub. Importera bara den med IntelliJ eller Android Studio så ska den vara redo att köras.
Personligen är jag ganska exalterad över Jetpack Compose for Desktop. Jag visste inte ens att det fanns tidigare, men det är redan min favoritmotor för skrivbordslayout. Du kan lära dig mer om Jetpack Compose för skrivbordswebbplats eller på GitHub.
Vad tycker du om det? Är det värt att kolla in och kanske till och med använda istället för andra tillgängliga ramverk? Låt mig veta!
Utvalda bildkrediter: JetBrains på GitHub