JetBrains añade soporte de Wayland a IntelliJ
Hace pocos días, JetBrains dio a conocer mediante una publicación de blog que se encuentra realizando los cambios pertinentes para implementar el soporte para el protocolo Wayland en su plataforma «IntelliJ» y entornos de desarrollo integrados construidos sobre su base.
JetBrains menciona en su publicación que «esta actualización traerá una serie de beneficios» y es que dentro de los cambios que presume de añadir el soporte de Wayland a IntelliJ, está la solución de escalamiento fraccional, mejoras de integración con WSLg, entre otras.
Si bien el soporte de Wayland está lejos de ser completo, las características ya existentes nos permiten ejecutar algunas aplicaciones Java Swing y AWT en Wayland. En esta publicación de blog, profundizaremos en estos avances y exploraremos algunos desafíos técnicos que plantea este novedoso enfoque para el servidor de visualización.
Ademas de ello, se destaca que el soporte Wayland traerá consigo una serie de cambios en el desarrollo, los cuales serán relevantes para todos los desarrolladores de aplicaciones gráficas Java, ya que se menciona que estos cubrirán la adición de soporte Wayland a OpenJDK.
Se menciona que una vez que los cambios preparados se incluyan en una versión futura de OpenJDK, los programas Java podrán ejecutarse directamente en entornos basados en Wayland sin utilizar la capa XWayland. Ya está disponible para pruebas JetBrainsRuntime 21, una bifurcación de OpenJDK 21 con soporte Wayland integrado que se utiliza en los productos JetBrains.
Hacer que Java Wayland sea nativo es más fácil decirlo que hacerlo. En términos de JDK, esto equivale a crear un nuevo Toolkit , que es la cuna de prácticamente todo lo relacionado con GUI. Esto incluye gráficos, manejo del puntero del mouse, traducción de pulsaciones de teclas, visualización de pantalla de presentación y provisión de métodos de entrada; todo esto debe implementarse desde cero. Por ejemplo, el kit de herramientas X11 tiene alrededor de 50.000 líneas de Java y 20.000 líneas de código nativo, de las cuales sólo una fracción es reutilizable en Wayland.
Desde un punto de vista de muy alto nivel, la tarea es bastante sencilla: una API, Wayland, debe traducirse a otra, Java, y viceversa.
Entre las ventajas del soporte total para Wayland en IntelliJ IDE se mencionan: resolver problemas de larga data con XWayland relacionados con el texto borroso cuando la escala fraccionaria está habilitada, deshacerse de los problemas de seguridad inherentes a X11 (por ejemplo, el protocolo X11 proporciona acceso a todos los eventos de entrada y permite la sustitución de pulsaciones de teclas ficticias), integración total con el entorno WSL (Subsistema de Windows para Linux) utilizando Wayland, la capacidad de lograr un mayor rendimiento de renderizado y capacidad de respuesta de la interfaz de usuario.
El proyecto Wakefield está trabajando para agregar soporte de Wayland a OpenJDK en conjunto con ingenieros de Oracle y bajo los auspicios de la comunidad OpenJDK. En la etapa actual de desarrollo, el conjunto de herramientas desarrollado admite renderizado de software, decoración mínima de ventanas, cambio de tamaño, apertura, minimización y movimiento de ventanas, apertura a pantalla completa, ventanas emergentes (utilizadas en menús), niveles de zoom separados para cada monitor, trabajo en pantallas HiDPI, navegación mediante entrada de mouse y teclado.
El proyecto aún no ha salido de la etapa de desarrollo, pero se observa que la funcionalidad implementada es suficiente para ejecutar algunas aplicaciones Java utilizando los marcos Swing y AWT (Abstract Window Toolkit) en el entorno basado en Wayland.
El rendimiento del renderizado del software existente cuando se usa Wayland es comparable al rendimiento cuando se ejecuta la versión X11 de IntelliJ. De las tareas prioritarias que se planea implementar en los próximos meses, se nombran las siguientes: renderizado acelerado por hardware con soporte para la API de gráficos Vulkan; soporte para métodos de entrada, portapapeles y manipulaciones en modo arrastrar y soltar; la capacidad de mostrar un protector de pantalla; medios para navegar entre ventanas usando atajos de teclado.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.