This week's Java roundup for September 25th, 2023, features news from OpenJDK, JDK 22, Eclipse GlassFish 7.0.9, Build 21-jextract+1-2, Spring Cloud 2023.0.0-M2, Helidon 4.0.0-RC1, Open Liberty 23.0.0.10-beta, Apache Camel 4.0.1 and 3.21.1, JHipster Lite 0.43.0, JDKMon 17.0.77 and 17.0.75, JobRunr 6.3.2, Yupiik Fusion 1.0.8 and Gradle 8.4.0-RC3.
OpenJDK
JEP 457, Class-File API (Preview), has been promoted from its Draft 8280389 to Candidate status. This JEP proposes to provide an API for parsing, generating, and transforming Java class files. This will initially serve as an internal replacement for ASM, the Java bytecode manipulation and analysis framework, in the JDK with plans to have it opened as a public API. Brian Goetz, Java language architect at Oracle, characterized ASM as "an old codebase with plenty of legacy baggage" and provided background information on how this draft will evolve and ultimately replace ASM.
JEP 456, Unnamed Variables and Patterns, has been promoted from its Draft 8311828 to Candidate status to finalize this feature from its previous round of preview: JEP 443, Unnamed Patterns and Variables (Preview), delivered in JDK 21. This JEP proposes to "enhance the language with unnamed patterns, which match a record component without stating the component's name or type, and unnamed variables, which can be initialized but not used." Both of these are denoted by the underscore character as in r instanceof _(int x, int y)
and r instanceof _
.
JEP 455, Primitive types in Patterns, instanceof, and switch (Preview), has been promoted from its Draft 8288476 to Candidate status. This JEP proposes to "enhance pattern matching by allowing primitive type patterns to be used in all pattern contexts, align the semantics of primitive type patterns with instanceof, and extend switch to allow primitive constants as case labels."
Jim Laskey, software development director at Oracle Corporation, has submitted JEP Draft 8314219, String Templates, to finalize this feature from its previous round of preview, JEP 430, String Templates (Preview), delivered in JDK 21. This JEP enhances the Java programming language with string templates, string literals containing embedded expressions, that are interpreted at runtime where the embedded expressions are evaluated and verified. More details on JEP 430 may be found in this InfoQ news story.
JDK 22
Build 17 of the JDK 22 early-access builds was made available this past week featuring updates from Build 16 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 22, developers are encouraged to report bugs via the Java Bug Database.
Eclipse GlassFish
Eclipse GlassFish 7.0.9, the ninth maintenance release, features component updates and notable fixes such as: an IllegalArgumentException
attempting to deploy an application with an EJB remote interfaces to Embedded GlassFish; the contextInitialized()
method defined in the ServletContextListener
interface is invoked multiple times when deployed; and the stop-local-instance
command line parameter doesn't stop the instance of the server. More details on this release may be found in the release notes.
Ondro Mihályi, director at OmniFish, has been working on virtual thread support for GlassFish and has provided this working example.
Project Jextract
Build 21-jextract+1-2 of the Project Jextract early-access builds was made available to the Java community and is based on JDK 21. With this build, developers running on MacOS Catalina or higher will be required to remove the quarantine attribute from the bits before using the jextract
binaries.
With most of the features under the Project Panama early-access builds having moved over to incubating JEPs, jextract
, a tool that mechanically generates Java bindings from a native library headers, remains the only feature and will therefore be maintained in its own project.
Spring Framework
The second milestone release of Spring Cloud 2023.0.0, codenamed Leyton, ships with: a migration of all Spring Cloud project documentation to Antora, a multi-repository documentation site generator; and milestone upgrades to sub-projects such as Spring Cloud Commons 4.1.0-M2, Spring Cloud Starter Build 2023.0.0-M2 and Spring Cloud Kubernetes 3.1.0-M2. Further details on this release may be found in the release notes.
Helidon
The first release candidate of Helidon 4.0.0 delivers bug fixes, dependency upgrades and notable changes such as: a major refactoring and stabilization of APIs; support for HTTP/2; and the WebServer and WebClient components having been declared as feature-complete. More details on this release may be found in the release notes.
Open Liberty
IBM has released version 23.0.0.10-beta of Open Liberty featuring: support for JDK 21 and the upcoming release of MicroProfile 6.1; improved startup times of of Spring Boot applications using Spring Boot 3.0 and InstantOn with Coordinated Restore at Checkpoint (CRaC); a beta 3 implementation of the Jakarta Data specification; and automatic generation and rotation of Lightweight Third Party Authentication (LTPA) keys without disruption to the application’s user experience.
Apache Software Foundation
Versions 4.0.1 and 3.21.1 of Apache Camel both provide notable improvements such as: provide a tracing strategy to trace each processor for OpenTelemetry; environment variables with the name 'secret' are now masked in logs; and prevent the usage of proxy protocol in producer endpoint. Further details on these releases may be found in the release notes for version 4.0.1 and version 3.21.1.
JHipster
Version 0.43.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features/enhancements such as: Split the original LogsSpy
class into LogsSpy
and LogsSpyExtension
classes to follow single-responsibility principle and avoid exposing JUnit5 related methods; and replace the use of the Sinon JavaScript framework with Vitest. More details on this release may be found in the release notes.
JDKMon
Versions 17.0.77 and 17.0.75 of JDKMon, a tool that monitors and updates installed JDKs, has been made available this past week. Created by Gerrit Grunwald, principal engineer at Azul, these new versions provide: updated documentation for the latest updates; and a link to the GitHub releases added to the About dialog box.
JobRunr
Version 6.3.2 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released featuring bug fixes, dependency upgrades and a new feature that adds support for GraalVM Native executable in Quarkus. Further details on this release may be found in the release notes.
Yupiik
The release of Yupiik Fusion 1.0.8 provides new features such as: ensure span tags are only strings since it would otherwise require a mapping step; support for enum
types; improved template handling; and new classes, RateLimiter
and RateLimitedClient
, to support limiting rates. More details on this release may be found in the release notes.
Gradle
The third release candidate of Gradle 8.4 delivers: initial support for JDK 21 only to compile, test, and run Gradle projects since Kotlin does not yet support JDK 21; improved compilation on Windows OS; a simplified way to create role-focused instances of the Configuration
interface using the ConfigurationContainer
interface; and improved support for the Kotlin DSL. Further details on this release may be found in the release notes.