Yeah, this is a better place for discussion than JBS.
JavaFX has long lacked a real headless test platform, so it will be cool
to see where this goes.
- Is there a JEP/tutorial for the new mode?
It's probably premature, given the early prototype nature...
-- Kevin
On 1/30/2024 8:14 AM, Andy Goryachev wrote:
Excellent development, Johan, thank you!
I’ve asked a few questions in the ticket
https://bugs.openjdk.org/browse/JDK-8324941
I suppose I should also do it here:
- How do you get information on a (virtual) screen?
- How would one control how many virtual screens are there?
- Would there be any other way of simulating user input apart from Robot?
- Is the graphics still accelerated?
- Are there any functional gaps between Headless and headful modes
(fonts, rendering, etc.)?
Most importantly,
- Is there a JEP/tutorial for the new mode?
Thank you
-andy
*From: *openjfx-dev <openjfx-dev-r...@openjdk.org> on behalf of Johan
Vos <johan....@gluonhq.com>
*Date: *Tuesday, January 30, 2024 at 03:47
*To: *openjfx-dev <openjfx-dev@openjdk.org>
*Subject: *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