Hi Johan,

As you advised in another thread, I've tested the headless glass platform
and find it to be an excellent solution. My particular use case is to
provide an alternative terminal interface (using Lanterna) for a JavaFX
application without needing to rewrite a great deal of the logic. For this
purpose, the headless glass platform works very well as a replacement to
Monocle.

I encountered only one problem - calling Platform.exit() did not terminate
the application after it had been packaged with jpackage. This did not
occur with the same code using the JavaFX18 Monocle libraries on Linux
amd64. The JavaFX application thread was the only non-daemon thread at this
point. I solved this fairly simply by calling System.exit(0) after
Platform.exit().

As an aside, I was impressed by how simple it was to build JavaFX. I was
surprised though that javafx.graphics.jar did not contain the native
libraries, and I had to repackage the jar to include them manually. There
are probably good reasons for this, but it wasn't obvious.

It would be really good to see the headless glass platform merged into
JavaFX proper, and would allow me to move beyond JavaFX 18, the last
version to have Monocle support for Linux amd64.

Craig

On Fri, Feb 2, 2024 at 10:50 AM Marius Hanl <mariush...@web.de> wrote:

> I agree that this a nice feature, especially for headless tests as you
> also mentioned.
> Really looking forward to this feature.
>
> - Marius
>
> *Gesendet:* Dienstag, 30. Januar 2024 um 12:46 Uhr
> *Von:* "Johan Vos" <johan....@gluonhq.com>
> *An:* "openjfx-dev" <openjfx-dev@openjdk.org>
> *Betreff:* Headless glass platform
> Hi,
>
> I created a branch in the jfx-sandbox repository for experimenting with a
> headless glass platform:
> https://github.com/openjdk/jfx-sandbox/tree/johanvos-headless
>
> This addresses https://bugs.openjdk.org/browse/JDK-8324941 where I
> suggest a POC for a Headless platform.
>
> There are a number of usecases for this, including:
> 1. applications that require JavaFX rendering without presenting this to a
> window (and instead send it to a printer for example)
> 2. running tests without requiring a window manager.
>
> Regarding the second usecase, we already did some basic experiments using
> a modified version of TestFX where instead of the Monocle Headless
> subplatform, the POC Headless platform is used.
>
> By using a first-class Headless glass platform instead of a Monocle
> subplatform, it should be easier to use by developers.
> The monocle code contains very platform/os specific parts, which often
> don't make sense outside the target platform. This is very valuable, but it
> is also a very different usecase than a headless platform and it requires a
> much more complex build procedure.
>
> I added an initial, limited HeadlessRobot to do some basic tests. That
> code is mainly taken from the existing Monocle implementation, but I want
> to be careful to avoid anything that is not applicable to the headless
> scenarios.
>
> - Johan
>
>

Reply via email to