Hardware-accelerated, DRM-based rendering with JavaFX on the Raspberry Pi


A key advantage of JavaFX is that it allows Java developers to write client applications, including a user interface, in a platform-independent way. The same JavaFX code that is written for desktop platforms also works on mobile and embedded devices. In order to achieve this, the JavaFX implementation itself needs to bridge the gap between the platform-independent Java code and the platform-specific low-level drivers dealing with rendering, and leveraging hardware acceleration.

The embedded market is very interesting for JavaFX, with target areas like automotive, medical systems, kiosk applications and much more. This market contains a large variety of devices, CPU’s and GPU’s and drivers. To better support this market, Gluon has recently enhanced JavaFX by adding a native EGL-based abstraction layer in OpenJFX. Using this abstraction layer, Gluon now provides a number of native libraries that link this abstraction to specific configurations. As a consequence, Gluon is now positioned to offer a variety of JavaFX bundles for very specific devices, by bundling the JavaFX modules with a device-specific library.

Today, we are happy to announce the Gluon JavaFX bundle for the Raspberry Pi 4. Using this bundle, developers have two ways of running JavaFX applications: they can use the existing (X11-based) window system on the Pi, or they can render the user interface directly to the framebuffer, using the DRM subsystem in the linux kernel. The X11-based rendering can be used with the standard OpenJFX libraries. For the DRM-based rendering, a Gluon commercial extension library is needed. This library is bundled in the release bundle, and it can be used without limitations for non-commercial applications. This allow developers to experiment with it, and use it in production for non-commercial usages. For commercial applications, users are asked to contact us for licensing information.

The bundle for the Raspberry Pi 4 is just a first bundle for embedded devices. There are a wide variety of possible devices that can benefit from JavaFX and our ability to now offer optimized hardware-accelerated rendering. We are happy to provide specific bundles for customer-specific cases.