This week's Java roundup for April 24th, 2023, features news from OpenJDK, JDK 21, GlassFish 7.0.4, GraalVM 22.3.2, Microsoft OpenJDK, Spring releases. Quarkus 3.0.0, MicroStream 8.0.0, Micronaut 3.9.1, Hibernate ORM 6.2.2, Hibernate Reactive 2.0.0.CR1, Infinispan 15.0.0.Dev01, Apache Camel 3.20.4, Camel Quarkus 2.13.3, JUnit 5.9.3, JReleaser 1.6.0, JobRunr 6.1.4, JDKMon 17.0.49 and Foojay.io.
OpenJDK
JEP 442, Foreign Function & Memory API (Third Preview), has been promoted from Proposed to Target to Targeted status for JDK 21. This JEP incorporates refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena
interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList
class.
JDK 21
Build 20 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 19 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GlassFish
The release of GlassFish 7.0.4 ships with dependency upgrades and bug fixes such as: redirections from the Admin Console that result in a blank page upon deployment/undeployment of an application; a potential leak when a resource is loaded from a class within an EAR/JAR file that is invoked from a dynamically loaded class by a custom class loader; and an empty list for configuration templates from the Admin Console upon creating new configuration. The one new feature in this new version is the ability to add methods to build classpath of the ScatteredArchive
class from the current classpath. More details on this release may be found in the release notes.
GraalVM
Oracle Labs has released the Community Edition of GraalVM 22.3.2 that aligns with the April 2023 edition of the Oracle Critical Patch Update Advisory. This release includes the updated versions of OpenJDK 17.0.7 and 11.0.19, and Node.js 16.19.1. Further details on this release may be found in the release notes.
Microsoft Build of OpenJDK
Also concurrent with Oracle's Critical Patch Update for April 2023, Microsoft has released their patch and security update of Microsoft Build of OpenJDK featuring numerous patch releases of their downstream distributions of OpenJDK 17 and OpenJDK 11. This release also included: improvements to their experimental Escape Analysis feature, enabling the Class Data Sharing (CDS) archives in the MIcrosoft Build of OpenJDK 17 binaries; and a non-root user in the container images for developers interested in enhanced security at the container level. More details on this release and the Escape Analysis feature may be found in the release notes and this detailed InfoQ news story.
Spring Framework
Spring Cloud 2021.0.7, codenamed Jubilee, has been released featuring updates to sub-projects such as: Spring Cloud Gateway 3.1.7, Spring Cloud Config 3.1.7, Spring Cloud Kubernetes 2.1.7 and Spring Cloud Sleuth 3.1.8. Further details on this release may be found in the release notes.
The first milestone release of Spring Security Kerberos 2.0.0 was made available this past week featuring support for Spring Boot 3.0 and Spring Security 6.0. This new version also includes: an upgrade to Gradle 8.0, a migration of the documentation to Antora, and a reboot of the project with Spring Boot 3.0. More details on this release may be found in the release notes.
Quarkus
After six alpha releases, one beta release and two release candidates, the much anticipated GA release of Quarkus 3.0 was made available by Red Hat this past week. New features include: support for Jakarta EE 10, MicroProfile 6.0, Hibernate ORM 6.0 and Hibernate Reactive 2.0; a more extensible and easier-to-use Dev UI with a new-and-improved look-and-feel; and an upgrade to SmallRye Mutiny 2.0.0 that uses the Java Flow API instead of Reactive Streams. Further details on this release may be found in the release notes for version 3.0.1 and version 3.0.0. InfoQ will follow up with a more detailed news story.
MicroStream
MicroStream released version 8.0 of their Java-native persistence layer product that delivers: a minimal version of JDK 11; full implementation of their Lazy Collections; improvements in the JDK 17 binary type handler; a more secure SBOM; support for multiple implementations of the StorageManager
interface within Spring Boot 2.x; integration with Quarkus; and an updated integration of the Jakarta EE Contexts and Dependency Injection (CDI) specification. More details on this release may be found in the release notes and InfoQ will follow up with a more detailed news story.
Micronaut
The Micronaut Foundation has released Micronaut Framework 3.9.1 featuring bug fixes and updates to modules: Micronaut AWS and Micronaut Kafka. There was also a dependency upgrade to GraalVM 22.3.2. Further details on this release may be found in the release notes.
Hibernate
Hibernate ORM 6.2.2.Final has been released with bug fixes and improvements such as: improved performance of batch fetch loading, via the @BatchSize
annotation, for enhanced caching of SQL AST; and the ability to utilize a SQL ARRAY
valued parameter to pass all IDs at once when loading entities or collections by multiple keys. This is implemented for all multi-key loads via batch fetching and the byMultipleIds()
and byMultipleNaturalId()
methods defined in the Session
interface.
The first release candidate of Hibernate Reactive 2.0.0 delivers compatibility with Hibernate ORM 6.2 and Vert.x 4.4. Other notable changes include: improved scalability of the BlockingIdentifierGenerator
class; allow use of SQL Server Dialect 11+; a resolution for a ClassCastException
in Db2; and a fix for saving a one-to-many relationship that was broken in Hibernate Reactive 2.0.0.Beta1. More details on this release may be found in the list of issues.
Infinispan
The first development build of Infinispan 15.0.0 ships with support for: Jakarta EE; a JDK 17 baseline; JDK 21 and virtual threads; Quarkus 3.0; Spring Framework 6.0; and Spring Boot 3.0. Support for JCache will be limited as any components requiring Java EE will be removed.
Apache Software Foundation
The release of Apache Camel 3.20.4 provides bug fixes, dependency upgrades and improvement such as: a default REST DSL type in the camel-jbang
generator; add functions to the Simple Expression Language to create an empty Map, List, String or JSON file; and include the jackson-jq
module within the camel-jq
module that developers may find useful in their JQ expressions. Further details on this release may be found in the release notes.
To maintain alignment with Quarkus 2.13.3, Camel Quarkus 2.13.3 has been released to primarily address bug fixes. More details on this release may be found in the release notes.
JUnit
JUnit 5.9.3 has been released featuring notable bug fixes such as: exceptions thrown for files that cannot be deleted when cleaning up a temporary directory created via the @TempDir
annotation now include the root cause; parameter types for local @MethodSource
factory method names are now validated; and lifecycle methods are once-again allowed to be declared as private
to maintain backwards compatibility for now. However, developers are strongly discouraged from using private
visibility for lifecycle methods and doing so will be disallowed in a future release.
JReleaser
Version 1.6.0 of JReleaser, a Java utility that streamlines creating project releases, has been released delivering new features such as support for: OpenCollective as an announcer; CycloneDX as a cataloger; Apache NetBeans modules; enable finer control when evaluating Maven Central rules; Jib as a packager; and additional Disco API package parameters. Further details on this release may be found in the release notes.
JobRunr
JobRunr 6.1.4 has been released providing notable bug fixes: the recurringJobExists()
method in the StorageProvider
interface returns different results depending on the database; using multiple data sources in Spring Boot not working; and DocumentDB not working due to an incompatible index. There was also improved documentation for the StorageProvider
API.
JDKMon
Versions 17.0.49 and 17.0.47 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, this new version fixes an issue related to updating the CVE database, provides dependency upgrades and moves to Gradle 8.0.2 as the build tool.
Foojay.io
Foojay.io, the Friends of OpenJDK resource for Java developers, have provided their Java community calendar for developers to view and add events such as conferences and Java User Group meetups. The calendar is open for adding content without the need for a special account and the content is moderated.