Jetpack Compose para escritorio agrega la capa Swing y compatibilidad con Apple Silicon

click fraud protection

JetBrains ha lanzado una nueva versión de Jetpack Compose para escritorio, un marco de desarrollo de interfaz de usuario multiplataforma de código abierto.

Si realiza algún tipo de trabajo de desarrollo, probablemente haya oído hablar de JetBrains. Son la empresa detrás del enorme conjunto de IDE que incluye IntelliJ (la base de Android Studio), CLion, PhpStorm y muchos otros. Ellos también son los que hicieron Kotlin, el lenguaje de programación multiplataforma enormemente popular.

Y JetBrains ha vuelto a hacerlo. Hace poco más de un año, Google presentó un nuevo motor de diseño para Android llamado Jetpack Compose. ya pasó bastantes cambios importantes desde entonces, pero se ha convertido en una alternativa competente (aunque todavía algo inestable) a los diseños XML clásicos de Android.

¿Qué tiene que ver Jetpack Compose con JetBrains? Bueno, por un lado, está escrito en Kotlin. Pero también, JetBrains ha estado trabajando silenciosamente para trasladar Compose al espacio del escritorio. Se hizo público como una vista previa para desarrolladores y ahora JetBrains está listo para anunciar oficialmente que existe.

¿Qué es Jetpack Compose?

Hablé un poco de ello en la introducción, pero creo que merece más explicación. Si ya has desarrollado en Android, probablemente estés acostumbrado a cómo funcionan los diseños. Primero, diseña su diseño en un archivo XML y luego interactúa con ese diseño desde Java o Kotlin. Si bien es funcional, está un poco desactualizado y tener los diseños divididos en distintos idiomas puede ser difícil de administrar.

Como alternativa a esto, Google empezó a desarrollar Jetpack Compose. Compose es un motor de diseño para Android construido sobre Kotlin. Todo el diseño y el código lógico están en un solo lugar, lo que facilita mucho la interactividad. También es declarativo, en lugar del estilo imperativo de los diseños XML.

Pasar a un motor de diseño declarativo desde uno imperativo puede llevar algo de tiempo acostumbrarse, pero Compose es definitivamente una mejora con respecto a XML, aunque todavía se encuentra en sus primeras etapas.

Jetpack Compose para escritorio

Entonces, Compose es una buena alternativa de diseño para aplicaciones nativas de Android. Pero (normalmente) no es multiplataforma. Ahí es donde entra JetBrains. La compañía ha portado Jetpack Compose al espacio de escritorio, con soporte para Windows, Linux y macOS (tanto Intel como ARM).

Si bien existen otros motores de diseño para escritorio, como Electron, JavaFX y UWP, es un poco complicado en este momento. Algunos no son multiplataforma, por lo que sólo funcionan en un sistema operativo específico. Otros son técnicamente multiplataforma, pero requieren mucho trabajo para distribuirlos. Y aún así, es complicado trabajar con otros, como JavaFX.

Jetpack Compose for Desktop, por otro lado, es relativamente fácil de usar, admite escalado de pantalla, tiene estilo incorporado y es (casi) completamente multiplataforma. Si bien todavía no puedes compilar para todas las distribuciones desde un sistema operativo, el código en sí es completamente portátil. Al igual que con Android, una aplicación empaquetada se basa en Java, aunque los usuarios no necesitan tener instalado un JDK para usarla.

Compatibilidad cruzada

Dado que Compose for Desktop aún es nuevo, le faltan algunas funciones. Para ayudar a los desarrolladores a solucionar estas limitaciones, Compose for Desktop es interoperable con dos de los motores de diseño Java más populares, JavaFX y Swing. Si tiene una aplicación de escritorio desarrollada en uno (o ambos) de estos motores, puede comenzar la transición a Compose mientras mantiene su código base actual.

Android + Escritorio

¿Qué sucede si desea llevar su aplicación Compose de Android al escritorio? Bueno, también puedes (más o menos) hacer eso. Los elementos de la interfaz de usuario de su aplicación se pueden compartir fácilmente entre Android y el escritorio. No podrás compartirlo todo, pero ciertamente facilita el desarrollo.

Soporte de silicona de Apple

Mencioné esto arriba, pero lo voy a mencionar nuevamente. El Nuevas Apple Silicon Macs son bastante sorprendentes, pero los procesadores se basan en la arquitectura de CPU ARM, lo que significa que muchas aplicaciones de macOS se ejecutan actualmente a través del traductor Rosetta 2 x86. Si bien Apple hizo un buen trabajo con esa traducción, los programas ARM nativos seguirán funcionando mejor.

Bueno, Jetpack Compose para escritorio es compatible con Apple Silicon de forma nativa. Eso significa que no tendrá que preocuparse por las caídas de rendimiento de la traducción o por el soporte futuro cuando Apple lo suspenda.

Funcionalidad

Entonces, está muy bien que JetBrains haya creado un nuevo motor de diseño para escritorio, pero ¿quién puede decir que es mejor que lo que tenemos ahora?

A mí.

Utilicé la última versión disponible al momento de escribir esto (0.2.0-build132) para crear una aplicación simple para otorgar permisos para SystemUI Tuner. Como no estoy muy familiarizado con Compose y el diseño declarativo, fue un poco más difícil para mí que una aplicación de diseño XML, pero lo hice. Y es mucho más fácil de usar que JavaFX.

Si bien la compatibilidad con temas (es decir, el modo oscuro) todavía es un poco dudosa, es bastante fácil crear un diseño interactivo y, aparte de algunos parpadeos al cambiar el tamaño de la ventana, todo funciona bien.

Si desea probar la aplicación, el código fuente está disponible en GitHub. Simplemente impórtelo con IntelliJ o Android Studio y debería estar listo para ejecutarse.


Personalmente, estoy muy entusiasmado con Jetpack Compose para escritorio. Ni siquiera sabía que existía antes, pero ya es mi motor de diseño de escritorio preferido. Puedes aprender más en el Sitio web de Jetpack Compose para escritorio o en GitHub.

¿Qué piensa usted al respecto? ¿Vale la pena comprobarlo y tal vez incluso usarlo en lugar de otros marcos disponibles? ¡Hágamelo saber!

Créditos de las imágenes destacadas: JetBrains en GitHub