Jetpack Compose for Desktop legger til Swing-lag og Apple Silicon-støtte

JetBrains har gitt ut en ny versjon av Jetpack Compose for Desktop, en åpen kildekode for utvikling av grensesnitt på tvers av plattformer.

Hvis du gjør noe form for utviklingsarbeid, har du sikkert hørt om JetBrains. De er selskapet bak den enorme pakken med IDE-er som inkluderer IntelliJ (basen for Android Studio), CLion, PhpStorm og mange andre. Det er også de som har laget Kotlin, det enormt populære programmeringsspråket på tvers av plattformer.

Og JetBrains er tilbake på det igjen. For litt over et år siden introduserte Google en ny layoutmotor for Android kalt Jetpack Compose. Det har gått gjennom ganske mange store endringer siden den gang, men det er blitt et kompetent (om enn fortsatt noe ustabilt) alternativ til Androids klassiske XML-oppsett.

Hva har Jetpack Compose med JetBrains å gjøre? Vel, for det første er det skrevet i Kotlin. Men JetBrains har også i det stille jobbet med å portere Compose til skrivebordsplassen. Den har vært offentlig som en tidlig forhåndsvisning av utviklere, og nå er JetBrains klar til å offisielt kunngjøre at den eksisterer.

Hva er Jetpack Compose?

Jeg snakket litt om det i innledningen, men jeg synes det fortjener litt mer forklaring. Hvis du har utviklet på Android før, er du sannsynligvis vant til hvordan oppsett fungerer. Først designer du layouten din i en XML-fil, og deretter samhandler du med den layouten fra Java eller Kotlin. Selv om den er funksjonell, er den litt utdatert, og det kan være vanskelig å ha oppsettene dine delt på tvers av språk.

Som et alternativ til dette begynte Google å utvikle Jetpack Compose. Compose er en layoutmotor for Android bygget på toppen av Kotlin. All layout og logikkkode er på ett sted, noe som gjør interaktivitet mye enklere. Det er også deklarativt, i stedet for den imperative stilen til XML-oppsett.

Det kan ta litt tid å venne seg til en deklarativ layoutmotor fra et imperativ, men Compose er definitivt en forbedring i forhold til XML, selv om det fortsatt er i de tidlige stadiene.

Jetpack Compose for skrivebord

Så Compose er et fint layoutalternativ for native Android-apper. Men det er (normalt) ikke på tvers av plattformer. Det er her JetBrains kommer inn. Selskapet har portert Jetpack Compose til skrivebordsplassen, med støtte for Windows, Linux og macOS (både Intel og ARM).

Selv om det finnes andre layoutmotorer for skrivebord, som Electron, JavaFX og UWP, er det litt rot akkurat nå. Noen er ikke på tvers av plattformer, så de fungerer bare på ett spesifikt operativsystem. Andre er teknisk tverrplattformer, men krever mye arbeid å distribuere. Og fortsatt er andre bare en smerte å jobbe med, som JavaFX.

Jetpack Compose for Desktop er derimot relativt enkel å bruke, støtter skjermskalering, har innebygd styling og er (nesten) fullstendig på tvers av plattformer. Selv om du ennå ikke kan kompilere for alle distribusjoner fra ett operativsystem, er selve koden fullstendig bærbar. Akkurat som med Android, er en pakket app basert på Java, selv om brukere ikke trenger en JDK installert for å bruke den.

Krysskompatibilitet

Siden Compose for Desktop fortsatt er nytt, mangler den noen funksjoner. For å hjelpe utviklere med å omgå disse begrensningene, er Compose for Desktop interoperabel med to av de mer populære Java-layoutmotorene, JavaFX og Swing. Hvis du har en skrivebordsapp utviklet i en (eller begge) av disse motorene, kan du begynne å gå over til Compose mens du opprettholder din nåværende kodebase.

Android + skrivebord

Hva om du vil ta med Compose Android-appen til skrivebordet? Vel, du kan også (på en måte) gjøre det. Brukergrensesnittelementene i appen din kan enkelt deles mellom Android og skrivebord. Du vil ikke kunne dele alt, men det gjør utviklingen lettere.

Apple Silicon Support

Jeg nevnte dette ovenfor, men jeg kommer til å nevne det igjen. De nye Apple Silicon Mac-er er ganske fantastiske, men prosessorene er basert på ARM CPU-arkitekturen, noe som betyr at mange macOS-apper for tiden kjører gjennom Rosetta 2 x86-oversetteren. Selv om Apple gjorde en ganske god jobb med den oversettelsen, vil innfødte ARM-programmer fortsatt fungere bedre.

Vel, Jetpack Compose for Desktop støtter Apple Silicon naturlig. Det betyr at du ikke trenger å bekymre deg for ytelsesfall fra oversettelse eller for fremtidig støtte når Apple slutter med den.

Funksjonalitet

Så det er vel og bra at JetBrains har laget en ny layoutmotor for skrivebordet, men hvem kan si at den er bedre enn den vi har nå?

Meg.

Jeg brukte den siste tilgjengelige versjonen da jeg skrev dette (0.2.0-build132) for å lage en enkel app for tillatelser for SystemUI Tuner. Siden jeg ikke er så kjent med Compose og deklarativ design, var det litt vanskeligere for meg enn en XML-layout-app, men jeg klarte det. Og det er mye enklere å bruke enn JavaFX.

Mens temastøtte (dvs. mørk modus) fortsatt er litt usikker, er det ganske enkelt å bygge et interaktivt oppsett, og bortsett fra noen få flimmer når du endrer størrelsen på vinduet, fungerer alt bra.

Hvis du vil sjekke appen, er kildekoden tilgjengelig på GitHub. Bare importer den med IntelliJ eller Android Studio, og den skal være klar til å kjøre.


Personlig er jeg ganske begeistret for Jetpack Compose for Desktop. Jeg visste ikke engang at det eksisterte før, men det er allerede min foretrukne layoutmotor for skrivebordet. Du kan lære mer på Jetpack Compose for Desktop-nettstedet eller på GitHub.

Hva synes du om det? Er det verdt å sjekke ut og kanskje til og med bruke i stedet for andre tilgjengelige rammer? Gi meg beskjed!

Utvalgte bildekreditter: JetBrains på GitHub