Proposal: Support Wayland and add KEM APIs

Iris Clark iris.clark at oracle.com
Tue Apr 16 15:00:31 UTC 2024


In November 2023, Red Hat announced [0] their intent to remove the Xorg server
from RHEL 10; therefore, only Wayland will be supported in RHEL 10 and
subsequent releases.  Other Linux distributions may choose a similar path.

This will be an issue for Java SE 8, 11, and 17 as they only support the Xorg
server.

  - (JSRs 337, 384, 392) The Java SE 8, 11, and 17 specifications of
    java.awt.Robot make several assumptions about programmatic access to the
    desktop and related behaviours which may not be valid due to restrictions
    in underlying environments such as Wayland.  In Java SE 21, the
    specification was amended to allow operations to degrade or fail.  This
    specification change alone is sufficient to allow for variances in desktop
    behaviour. [1]

We would also like to add support in Java SE 17 for functionality required by
some Post-Quantum Cryptographic (PQC) algorithms.  The following new APIs are
necessary to support all of the candidate algorithms currently identified by
the U.S. National Institute of Standards and Technology (NIST) for PQC
standardization.  This will be an issue as:

  - (JSR 392) KEM APIs were added to Java SE 21 with JEP 452 (Key
    Encapsulation Mechanism (KEM) API) [2].  They support secure encryption
    techniques to derive symmetric keys using public key cryptography.  None
    of the existing cryptographic APIs in the Java Platform are capable of
    representing KEMs in a natural way. [3]

Finally, we would like to add the system property
"java.specification.maintenance.version" to Java SE 17, thus aligning it with
Java SE 8, Java SE 11, and releases Java SE 19 and beyond.  The issue is:

  - (JSR 392) The Java SE 17 Specification does not have a programmatic means
    to identify whether a JDK is implementing an original, or maintenance
    release of the Java SE specification.  The system property
    "java.specification.maintenance.version" was added in Java SE 19 and
    subsequently backported to Java SE 8 via MR 4 and Java SE 11 via MR 2. [4]

To resolve these issues for future JDK updates, I'll shortly propose
Maintenance Releases of the Java SE 8 [5], the Java SE 11 [6], and Java SE 17
[7] Platform JSRs in the JCP.  For Java SE 8 and Java SE 11, this will require
updates to the Specification only; for Java SE 17 this will require updates to
the Specification, the Reference Implementation (RI), and the TCK.  These will
be provided by me and my Oracle colleagues.  I expect the Maintenance Release
process to complete by July 2024, in time for these changes to be merged into
the October security releases of JDK 8, JDK 11, and JDK 17.

Following the standard practice, we will base the open-source RI on the most
recent RI for the release, rather than the most recent JDK Updates release.
We propose to label the RI build as "17.0.0.1" in order to convey that it is
outside the contemporary train of update releases.  It is neither meant for
production use, nor will it be updated with security fixes.

If it's not too much work, we'll also contribute the changes required by these
MRs to the next appropriate JDK 8, 11, and 17 Updates releases (most likely
8u432, 11.0.25, and 17.0.13 respectively).  We do not plan to backport the
DH-Based KEM implementation that was included in JEP 452.

Comments?

Iris

[0]: https://www.redhat.com/en/blog/rhel-10-plans-wayland-and-xorg-server
[1]: https://bugs.openjdk.org/browse/JDK-8308012 [Robot]
[2]: https://openjdk.org/jeps/452
[3]: https://bugs.openjdk.org/browse/JDK-8305384 [KEM]
[4]: https://bugs.openjdk.org/browse/JDK-8285764 [sys prop]
[5]: https://jcp.org/en/jsr/detail?id=337
[6]: https://jcp.org/en/jsr/detail?id=384
[7]: https://jcp.org/en/jsr/detail?id=392


More information about the jdk8u-dev mailing list