Author: Michael Redlich
Java News Roundup: JCP 25th Anniversary, Foreign Function & Memory API, Eclipse Epicyro

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 11th, 2023 features news from OpenJDK, JCP, JDK 22, JDK 21, Payara Platform, Eclipse Epicyro, Grails Plugin Portal and milestone and point releases for: Spring Framework, Spring Data, Spring Tools, Quarkus, Micronaut, Helidon, MicroProfile Telemetry, Groovy, Camel Quarkus, Micrometer Metrics and Tracing, Piranha, JobRunr, JHipster Lite and Project Reactor.
OpenJDK
JEP 454, Foreign Function & Memory API, has been promoted from its JEP Draft 8310626 to Candidate status this past week. This JEP proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming GA release of JDK 21. Improvements since the last release include: a new Enable-Native-Access
manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access
flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.
Java Community Process
At a special event hosted by the New York Java Special Interest Group and Garden State Java User Group on September 13, 2023 at the Bank of New York Mellon in New York City, industry experts from the Java Community Process (JCP) Executive Committee (EC) participated in a panel discussion to reveal their favorite JCP EC memory and their favorite features from the upcoming GA release of JDK 21. Included in the festivities was a JDK 21 presentation by Dmitry Chuyko, Performance Architect at Bellsoft, and a 25th anniversary celebration of the JCP. More details on this event may be found in this InfoQ news story.
JDK 21
Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.
JDK 22
Build 15 of the JDK 22 early-access builds was made available this past week featuring updates from Build 14 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
Spring Framework
After two quiet previous weeks over at Spring, the team has provided point and milestone releases for Spring Framework, Spring Data and Spring Tools.
The fifth milestone release of Spring Framework 6.1.0 ships with bug fixes, dependency upgrades and a host of new features such as: instrument the new RestClient
interface for observability; reinstate support for the legacy @ManagedBean
annotation defined in JSR-250, Common Annotations for the Java Platform, and the @Named
annotation defined in JSR 330, Dependency Injection for Java, to complement their Jakarta Annotations versions for improved migration of projects to Spring 6.0 and beyond; and a revision of the method signatures defined in the JdbcTestUtils
class to accept instances of the JdbcOperations
interface instead of the JdbcTemplate
class. Further details on this release may be found in the release notes.
Similarly, versions 6.0.12 and 5.3.30 and of Spring Framework have been released featuring bug fixes, dependency upgrades and new features such as: an optimization of the getMostSpecificMethod()
method defined in the ClassUtils
class; an optimization of whitespace checks in the StringUtils
class; and an elimination of redundant lookups of classes and annotation causing performance bottlenecks while creating instances of scoped beans. More details on these releases may be found in the release notes for version 6.0.12 and version 5.3.30.
The third milestone release of Spring Data 2023.1.0, codenamed Vaughn, delivers notable changes such as: support for JDK 21; use of virtual threads via configuration of the Java Executor
interface; support for Kotlin value classes; and single query loading for Spring Data JDBC. Further details on this release may be found in the release notes.
Similarly, versions 2023.0.4, 2022.0.10 and 2021.2.16, all service releases of Spring Data, feature bug fixes and dependency upgrades to sub-projects such as: Spring Data Commons 3.1.4, 3.0.10 and 2.7.14; Spring Data MongoDB 4.1.4, 4.0.10 and 3.4.16; Spring Data Elasticsearch 5.1.4, 5.0.10 and 4.4.16; and Spring Data Neo4j 7.1.4, 7.0.10 and 6.3.16.
The release of Spring Tools 4.20.0 for Eclipse, Visual Studio Code and Theia ships with: a number of bug fixes; support for Eclipse IDE 2023-09; and improved Java reconciling support to show Spring-specific validations, re-built from the ground up, tuned for high performance to work seamlessly in large code bases. More details on this release may be found in the release notes.
Payara
Payara has released their September 2023 edition of the Payara Platform that includes Community Edition 6.2023.9, Enterprise Edition 6.6.0 and Enterprise Edition 5.55.0 featuring security fixes to address: CVE-2017-12617, a vulnerability in various Apache Tomcat versions with HTTP PUT
enabled, where an attacker could upload a specially-crafted requested JSP file to the server such that any code it contained would be executed by the server; and CVE-2023-1370, a vulnerability in Json-smart where parsing too many nested JSON structured arrays and objects, due to no defined limit, could cause a stack overflow and crash the software. Improvements included: a removal of the obsolete methods, getEnvironment()
, getCallerIdentity()
and isCallerInRole(Identity)
from the Jakarta EJB EJBContext
interface, that were implemented in the Payara EJBContextImpl
class; and improved functionality with the Hazelcast CP Subsystem. Further details on these versions may be found in the release notes for Community Edition 6.2023.9, Enterprise Edition 6.6.0 and Enterprise Edition 5.55.0.
Quarkus
Red Hat has released versions 3.3.3, 3.2.6 and 2.6.11.Final of Quarkus to address CVE-2023-4853, a vulnerability by which an attacker can bypass the HTTP security policies due to those security policies not correctly sanitizing certain character permutations when accepting requests, resulting in an incorrect evaluation of permissions. This could provide unauthorized endpoint access and a possible denial of service. More details on these releases may be found in the changelogs for version 3.3.3, version 3.2.6 and version 2.16.11.
Micronaut
The Micronaut Foundation has released version 4.1.1 of the Micronaut featuring Micronaut Core 4.1.5 and updates to modules: Micronaut Oracle Cloud, Micronaut AOT, Micronaut Data, Micronaut Kafka, Micronaut Kotlin Integrations, Micronaut Test, Micronaut Validation and Micronaut Multitenancy. Further details on this release may be found in the release notes.
Helidon
Helidon 2.6.3, a bug fix release, provides notable changes such as: replace the use of the deprecated socket()
method with the namedSocket()
method defined in the ServerConfiguration
interface; update the requestedUri()
method defined in the ServerRequest
interface to correctly handle the IPv6 address format; and change the access specifier from private
to public
in the beforeEach()
method defined in the OciMetricsDataTest
class due to the documentation in the JUnit @BeforeEach
annotation explicitly stating the methods must not be private or static. More details on this release may be found in the release notes.
MicroProfile
On the road to MicroProfile 6.1, version 1.1-RC3 of the MicroProfile Telemetry specification ships with a fix for a deployment issue in the JaxRsServerAsyncTestEndpoint
TCK test class. Further details on this release may be found in the release notes.
Eclipse Foundation
OmniFishEE has introduced a new Eclipse EE4J project, Epicyro, that will serve as a compatible implementation of the Jakarta Authentication specification. This new project will define a general low-level SPI for authentication mechanisms, controllers that interact with a caller and a container’s environment to obtain the caller’s credentials. These will be validated and pass an authenticated identity (such as name and groups) to a container. Currently a milestone release, Epicyro will start with version 3.0.0 to align with Jakarta Authentication 3.0.0.
Apache Software Foundation
The second alpha release of Apache Groovy 5.0.0 delivers bug fixes, dependency upgrades and improvement such as: remove the use of the MagicAccessorImpl
class that was once defined in the sun.reflect
package; the JsonOutput
class should handle Java records like Plain Old Groovy Objects (POGOs); and mark the main/run methods in Groovy scripts as generated by the compiler with the @Generated
annotation. More details on this release may be found in the release notes.
Similarly, Apache Groovy 4.0.15 has been released with bug fixes, dependency upgrades and an improvement with the JsonOutput
class that should handle Java records like POGOs. Further details on this release may be found in the release notes.
To maintain alignment with Quarkus, Camel Quarkus 3.2.0 has been released with notable resolutions to issues such as: a failed compilation for gRPC applications in dev
mode; an expansion of tests covering Splunk, Saxonica and the gRPC extension; and an InvocationTargetException
upon executing sanity checks with the LDAP Realm extension. More details on this release may be found in the release notes.
Grails
The Grails Foundation has introduced a redesigned Grails Plugin Portal featuring: improved search functionality; a paginated list of all plugins; a list of top-rated plugins; and the latest plugin releases. The previous version of the portal was plagued by frequent downtime, high resource utilization and slow performance.
Micrometer
Versions 1.12.0-M3, 1.11.4, 1.10.11 and 1.9.15 of Micrometer Metrics all deliver dependency upgrades and a bug fix to ensure the LongTaskTimer
and FunctionTimer
interfaces produce consistent data. Version 1.12.0-M3 provides new features such as: a variant of the hasAnObservationWithAKeyValue()
method for use in testing with the KeyValue
interface; provide a way to make decisions on use of the /actuator
endpoint in Spring Security based on the parent in the ObservationPredicate
interface, namely the Java BiPredicate
interface; and add a timestamp to the nested Event
interface defined in the Observation
interface. Further details on these releases may be found in the release notes for version 1.12.0-M3, version 1.11.4, version 1.10.11 and version 1.9.15.
Similarly, versions 1.2.0-M3, 1.1.5 and 1.0.10 of Micrometer Tracing all deliver dependency upgrades and bug fixes such as: the ObservationAwareSpanThreadLocalAccessor
class does not release an instance of the nested SpanAction
class when the thread has completed its task; and add the ThreadLocalAccessor
interface to propagate an instance of the Baggage
interface with Reactor. A new feature in version 1.2.0-M3 is to allow setting of a timestamp of an event on a span. More details on these releases may be found in the release notes for version 1.2.0-M3, version 1.1.5 and version 1.0.10.
Piranha
The release of Piranha 23.9.0 delivers notable changes such as: a new PidFeature
class for improved handling of process IDs; fix a testing issue with SonarCloud; and a new IsolatedWebAppFeature
class for improved handling of web applications. Further details on this release may be found in their documentation and issue tracker.
JobRunr
Version 6.3.1 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released featuring notable changes: a NullPointerException
in a Quarkus extension if the quarkus.jobrunr.job-scheduler.enabled
property is set to false
; and add missing Spring AOT hints that caused exceptions for applications using JobRunr 6.3.0 and Spring Boot 3.1.3; and the @Job
annotation is not registering instances of a JobFilter
interface after upgrading to Spring Boot 3.1.2 and JobRunr 6.3.0. More details on this release may be found in the release notes.
JHipster
Version 0.42.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features/enhancements such as: a new StatisticsCriteria
class to add criteria to the /stats
endpoint; the removal of an unnecessary TestNG dependency; and a new checkstyle module to check for unused imports during build. Further details on this release may be found in the release notes.
Project Reactor
The third milestone release of Project Reactor 2023.0.0 provides dependency upgrades to reactor-core 3.6.0-M3
, reactor-pool 1.0.2
, reactor-netty 1.1.11
and reactor-kafka 1.3.21
. There was also a realignment to version 2023.0.0-M3 with the reactor-addons 3.5.1
and reactor-kotlin-extensions 1.2.2
artifacts that remain unchanged. More details on this release may be found in the changelog.
Similarly, Project Reactor 2022.0.11, the eleventh maintenance release, provides dependency upgrades to reactor-core 3.5.10
, reactor-netty 1.1.11
, reactor-kafka 1.3.21
and reactor-pool 1.0.2
. There was also a realignment to version 2022.0.11 with the reactor-addons 3.5.1
and reactor-kotlin-extensions 1.2.2
artifacts that remain unchanged. Further details on this release may be found in the changelog.
Java News Roundup: JDK 22 Release Schedule, Project Babylon, Helidon 4.0-RC2, MicroProfile 6.1-RC1

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for September 4th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Native Build Tools 0.9.26, Quarkus 3.3.2, MicroProfile 6.1-RC1, MicroProfile Config 3.1-RC2, Helidon 4.0.0-M2, Open Liberty 23.0.0.9-beta, Hibernate Search 7.0.0.Beta1, Infinispan 14.0.17.Final, Eclipse Mojarra 4.0.4, JDKMon 17.0.71, JHipster 8.0.0-beta.3 and 7.9.4 and JavaZone 2023 Conference.
OpenJDK
Paul Sandoz, Java architect at Oracle, has initiated a proposal to start a new Java project named Babylon. The primary goal will be to “extend the reach of Java to foreign programming models such as SQL, differentiable programming, machine learning models, and GPUs.” Babylon can achieve Java’s reach to foreign programming models with code reflection, an enhancement to reflective programming in Java, to enable standard access, analysis, and transformation of Java code in a suitable form. Support for a foreign programming model can then be more easily implemented as a Java library.
Sandoz has offered to lead this new project with an initial reviewer list to include Maurizio Cimadamore, software architect at Oracle and Project Panama lead, Gary Frost, software architect at Oracle, and Sandhya Viswanathan, principal software engineer at Intel. Developers can learn more by watching this YouTube video from the recent JVM Language Summit.
Sandoz also introduced JEP Draft 8315945, Vector API (Seventh Incubator) this past week. This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous six rounds of incubation: JEP 448, Vector API (Sixth Incubator), to be delivered in the upcoming GA release of JDK 21; JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. The most significant change from JEP 448 includes an enhancement to the JVM Compiler Interface (JVMCI) to support Vector API values.
JDK 21
Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.
JDK 22
Build 14 of the JDK 22 early-access builds was made available this past week featuring updates from Build 13 that include fixes to various issues. More details on this build may be found in the release notes.
Mark Reinhold, chief architect, Java Platform Group at Oracle, formally proposed the release schedule for JDK 22 as follows:
- Rampdown Phase One (fork from main line): December 7, 2023
- Rampdown Phase Two: January 18, 2024
- Initial Release Candidate: February 8, 2024
- Final Release Candidate: February 22, 2024
- General Availability: March 19, 2024
Comments on this proposal from JDK committers and reviewers are open for discussion until September 15, 2023 at 23:00 UTC. If there are no objections at that time, then as per the JEP 2.0 process proposal, this will be the schedule for JDK 22.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GraalVM
On the road to version 1.0, Oracle Labs has released version 0.9.26 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides notable changes such as: use of the AttributeProvider API to fix compatibility with Gradle 8.3; explicitly declare the dependencies for the Plexus-Xml and Plexus-Utils libraries to fix compatibility with Maven 3.9.x; and prepare Native Build Tools for the upcoming release of GraalVM for JDK 21. Further details on this release may be found in the changelog.
Spring Framework
In terms of releases, things have been quiet over at Spring these past two weeks, but that hasn’t stopped Josh Long, Spring developer advocate at VMware. Along with his weekly “This Week in Spring” blog posts, Long has published: a personal recap of SpringOne 2023; his latest blog post on how Spring Boot 3.2, GraalVM native images, Java 21 and virtual threads with Project Loom all work together; and “Bootiful” podcasts with Rob Winch, Spring Security lead at VMware, Daniel Garnier-Moiroux, senior member of technical staff, Spring Engineering at VMware, and Chris Richardson, founder and CEO at Eventuate and president at Chris Richardson Consulting.
Quarkus
The release of Quarkus 3.3.2 ships with dependency upgrades and notable changes such as: improvements to the OIDC Auth0 in the Dev UI; a removal of the imagePushSecret()
method from the BuildConfig
class that has been deemed invalid when using the internal registry; and a fix for a Quarkus build using the quarkus.container-image.builder=jib
property that does not consider the auth.json
file from Podman. More details on this release may be found in the changelog.
MicroProfile
The MicroProfile Working Group has provided the first release candidate of MicroProfile 6.1 featuring updates to the MicroProfile Config, MicroProfile Metrics and MicroProfile Telemetry specifications. Therefore, the final feature set of MicroProfile 6.1, scheduled for a GA release in early October, will include:
- Jakarta EE 10 Core Profile
- MicroProfile Config 3.1
- MicroProfile Fault Tolerance 4.0
- MicroProfile Metrics 5.1
- MicroProfile Health 4.0
- MicroProfile Telemetry 1.1
- MicroProfile OpenAPI 3.1
- MicroProfile JWT Authentication 2.1
- MicroProfile Rest Client 3.0
It is important to note that four of the seven specifications contained within the Jakarta EE 10 Core Profile, namely: Jakarta Contexts and Dependency Injection (CDI) 4.0; Jakarta RESTful Web Services 3.1; Jakarta JSON Processing 2.1; and Jakarta JSON Binding 3.0, are the evolved JSR specifications from Java EE 7 and Java EE 8 from the early days of MicroProfile.
The second release candidate of MicroProfile Config 3.1 delivers notable changes such as: an update to the TCK to align with breaking changes in CDI 4.0 that include an empty beans.xml
file and change in bean discovery mode from all
to annotated
; and the MissingValueOnObserverMethodInjectionTest
class, that asserts a DeploymentException
, fails a different reason due to the the ConfigObserver
bean being defined as @ApplicationScoped
(proxyable) and final
(not proxyable). Further details on this release may be found in the list of issues.
Helidon
The second release candidate of Helidon 4.0.0 delivers: a baseline of JDK 21; full integration of the Helidon Níma web server; significantly refactored Helidon SE APIs to optimize imperative/blocking use cases; and numerous enhancements to the Web Server and Web Client components to achieve feature parity with Helidon 3.0. More details on this release may be found in the changelog.
Open Liberty
IBM has released version 23.0.0.9-beta of Open Liberty to provide continuous improvement: for Liberty Spring Boot Support 3.0 with capability to “thin” an application when they are created in containers; and the early preview of the Jakarta Data specification.
Hibernate
The first beta release of Hibernate Search 7.0.0 delivers a number of dependency upgrades, namely: JDK 11 as a baseline, a migration to Jakarta EE, Hibernate ORM 6.3.0.Final, Lucene 9.7.0, Elasticsearch 8.9.0 and OpenSearch 2.9.0.
Infinispan
Version 14.0.17.Final of Infinispan has been released featuring notable fixes such as: the cache created by ServerEventLogger
class blocks the cache join with the potential for a deadlock; the DefaultExecutorFactory
class creating unnecessary multiple instances of a Java ThreadGroup
; and add missing cross-site metrics for the implementation of the RpcManager
interface. Further details on this release may be found in the list of issues.
Eclipse Mojarra
The release of Eclipse Mojarra 4.0.4 delivers notable changes such as: a fix for Mojarra failing to initialize when the Bean Deployment Archive in Weld is empty; a more robust implementation of the RetargetedAjaxBehavior
class; and return a static empty data model from the UIData
class if its current value is null
. More details on this release may be found in the release notes.
JDKMon
Version 17.0.71 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 provides additional information about the remaining days to the GA release of JDK 21 and the next OpenJDK update.
JHipster
The third beta release of JHipster release 8.0.0 with enhancements such as: support for JDK 20 and JDK 21; a cleanup of the JHipster Domain Language (JDL) to move file manipulation, configuration and validation to the JDL generator; and a fix for the H2 console not loading due to an incorrect path setting. Further details on this release may be found in the release notes.
Similarly, the release of JHipster 7.9.4 features bug fixes and support for Node.js 18. More details on this release may be found in the release notes.
JavaZone Conference
The JavaZone conference was held at the Oslo Spektrum in Oslo, Norway this past week featuring speakers from the Java community who presented talks and workshops on topics such as: garbage collection, quantum computing, Haskell, Kubernetes, application monitoring, micro frontends, JavaScript and Quarkus.
Java News Roundup: Single Query Loading, GraalVM, GlassFish, JReleaser, Quarkus, Micronaut

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 28th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Native Build Tools 0.9.25, Single Query Loading in Spring JDBC, Quarkus 3.3.1, 3.2.5.Final and 2.16.10.Final, Micronaut 4.1.0 and 4.0.6, Wildfly 29.0.1, Hibernate ORM 6.3.0 and 6.2.8, Hibernate Reactive 2.0.5, GlassFish 7.0.8, Eclipse Vert.x 4.4.5, JKube 1.14.0, JReleaser 1.8.0 and OpenXava 7.1.5.
OpenJDK
The Java Community Process (JCP) Executive Committee has voted to approve JSR 396, Java SE 21 Platform, to move forward with its final GA release scheduled for September 19, 2023.
JEP 442, Foreign Function & Memory API (Third Preview), delivered in the upcoming release of JDK 21, and JEP Draft 8310626, Foreign Function & Memory API, expected to be delivered in JDK 22, is one of the main features of Project Panama, a project that connects the JVM with well-defined, but “foreign” (non-Java) APIs that include many interfaces commonly used by C programmers.
Per-Åke Minborg, consulting member of technical staff at Oracle, has published this blog post in which he discussed the performance benefits of the Foreign Function & Memory API. Minborg provided a benchmark on string conversion using this API for JDK 21 and JDK 22 compared to using the old Java Native Interface (JNI) calls.
JDK 21
Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.
JDK 22
Build 13 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 12 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GraalVM
On the road to version 1.0, Oracle Labs has released version 0.9.25 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides a dependency upgrade to GraalVM Reachability Metadata Repository 0.3.4. More details on this release may be found in the changelog.
Spring Framework
In their quest to solve the N+1 problem, the Spring Data team has introduced Single Query Loading, a technique designed to load arbitrary aggregates with a single SELECT
statement. Available with the release of Spring Data JDBC 3.2.0-M2, the team claims this new technique is the “beginning of the end for the N+1 problem.” A new method, setSingleQueryLoadingEnabled(true)
, has been added to the RelationalMappingContext
class to enable Single Query Loading. At this time, this only works for simple aggregates, consisting of an aggregate root and a single collection of other entities, but the team promises that future releases will improve on this limitation.
Quarkus
Red Hat has released version 3.3.1 of Quarkus that ships with dependency upgrades and notable changes such as: a fix for a potential NullPointerException
in the MicrometerRecorder
class; a new counter, rejected
, added to the VertxPoolMetrics
class to count rejected requests; and a fix in which the VertxHttpExporter
class incorrectly parses the /v1/traces
endpoint. Further details on this release may be found in the changelog.
Similarly, Quarkus 3.2.5.Final has been released with notable changes such as: a fix for a potential NullPointerException
in the Cross-Site Request Forgery extension when the CsrfRequestResponseReactiveFilter
class is checking the media type; a disabling of the testMoreRepositoryFunctionalities()
method in the ReactiveMongodbPanacheResourceTest
class as it has been characterized as “flaky” according to the string passed-in to the @Disabled
annotation; and a fix for a deadlock upon calling a write-locked method of a bean in multiple threads in which this method calls another write-locked method within the same bean. More details on this release may be found in the changelog.
And finally, the release of Quarkus 2.16.10.Final provides a dependency upgrade of Snappy Java from version 1.1.8.4 to version 1.1.10.1. Further details on this release may be found in the changelog.
Micronaut
The Micronaut Foundation has released version 4.1.0 of the Micronaut Framework delivering Micronaut Core 4.1.3 and new features such as: Bean Mappers to automatically create a mapping between one type and another; an Introspection Builder that utilizes the builder member of the @Introspected
annotation to generate a dynamic builder if a type can only be constructed via a builder pattern; and improvements for developers using Kotlin Symbol Processing (KSP) to build Micronaut applications. More details on this release may be found in the release notes.
Micronaut Framework 4.0.6, the sixth maintenance release provides updates to modules: Micronaut for Spring, Micronaut JAX-RS, Micronaut Servlet, Micronaut Validation, Micronaut Redis, Micronaut Tracing, Micronaut AWS and Micronaut Kafka. Further details on this release may be found in the release notes.
WildFly
The release of WildFly 29.0.1 ships with component upgrades, a migration of Quickstarts 29.x to BOMs and WildFly Server 29.0.1.Final, and notable bug fixes such as: WildFly 29.0.0 not starting on Eclipse Temurin 17.0.8 due to a new org.jboss.jts to jdk.jconsole
dependency; an upgrade to Square Okio 3.4.0 to resolve CVE-2023-3635, a vulnerability that may lead to a denial of service of the Okio client when handling a crafted GZIP archive via the GzipSource
class; and issues with the MicroProfile RestClient and Jakarta CDI specifications after upgrading to WildFly 29.0.0. More details on this release may be found in the release notes.
Hibernate
Versions 6.3.0 and 6.2.8 of Hibernate ORM have been released delivering notable changes such as: initial support for the Jakarta Persistence 3.2 specification for Jakarta EE 11 that includes clarification of numeric literal types in HQL/JPQL queries; a new introductory Hibernate 6 Guide; a new syntax and feature guide for the Hibernate Query Language; the ability to generate DAO-style methods for named queries as part of its JPA static metamodel generator; and the ability for arbitrary methods to be processed by the generator to create finder methods similar to query methods using the new @Find
annotation.
The release of Hibernate Reactive 2.0.5.Final ships with compatibility with Hibernate ORM 6.2.8.Final and Vert.x SQL driver 4.4.5. Notable changes include: a change of the return type from Uni
to Uni
of the generate()
method defined in the MutinyGenerator
class; the addition of tests for the @TimeZoneStorage
annotation; and a new ParametersProcessorTest
class to fix escaping issues that were present in processing parameters for the OracleParameters
, PostgresParameters
and SQLServerParameters
classes. Further details on this release may be found in the release notes.
Eclipse Foundation
Eclipse GlassFish 7.0.8, the eighth maintenance release, features initial support for JDK 21 and an optimization of CDI extensions to reduce the number of unnecessary handler calls to the ProcessAnnotatedType
interface. Notable bug fixes include: a JDK 11 compatibility issue in RWLockDataStructureTest
class; a multi-jar compatibility issue; and Admin Console behavior when an admin user changes password to be empty. More details on this release may be found in the release notes
The release of Eclipse Vert.x 4.4.5 delivers dependency upgrades and notable changes such as: improvements to the ForwardedParser
class to support IPV6 addresses when they are not enclosed within square brackets; a decouple of the frame aggregator from the frame handler upon implementing the WebSocketBase
interface; and a fix for HTTP/2 throwing an HttpClosedException
instead of TimeoutException
when a defined timeout has been exceeded. Further details on this release may be found in the release notes and deprecations and breaking changes.
Version 1.14.0 of Eclipse JKube, a Java tools and plugins utility for Kubernetes and OpenShift, has been released featuring bug fixes, improvements and support for Gradle 8, Helidon, the Spring Boot Layered Jar and Helm push charts for OCI registries. More details on this release may be found in the release notes.
JReleaser
Version 1.8.0 of JReleaser, a Java utility that streamlines creating project releases, has been released to deliver improvements in documentation, dependency upgrades and notable changes such as: the creation of default templates for missing announcers; an update to the latest SDKMan endpoints; and improved error handling for GitHub 422 error responses. Further details on this release may be found in the release notes.
It is important to note that the Supply Chain Levels for Software Artifacts (SLSA) has announced a partnership with JReleaser, Maven and Gradle with the release of SLSA 1.0. This validates the design of the Bring Your Own Builder (BYOB) framework and demonstrates its flexibility.
OpenXava
The release of OpenXava 7.1.5 ships with notable changes such as: a new CompositeFilter
class that sums two instances of the IFilter
interfaces to set with the setFilter()
method defined in the Tab
class or as base for an IFilter
for a @Tab
annotation; a new environment variable, XAVA_CALENDAR_VIEWEVENT_ACTION
, to define the action on click in a calendar event; and a fix for passing-in the string, “ValidValuesRadioButton,” in the @Editor
annotation for an enumeration that produced an IndexOutOfBoundsException
in the log. More details on this release may be found in the release notes.

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

JDK 21, the next Long-Term Support (LTS) release since JDK 17, has reached its initial release candidate phase as declared by Mark Reinhold, chief architect, Java Platform Group at Oracle. The main-line source repository, forked to the JDK stabilization repository in early-June 2023 (Rampdown Phase One), defines the feature set for JDK 21. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process. As per the release schedule, JDK 21 will be formally released on September 19, 2023.
The final set of 15 new features, in the form of JEPs, can be separated into four (4) categories: Core Java Library, Java Language Specification, HotSpot and Security Library.
Six (6) of these new features are categorized under Core Java Library:
Five (5) of these new features are categorized under Java Language Specification:
Three (3) of these new features are categorized under HotSpot:
And finally, one (1) of these new features is categorized under Security Library:
It is important to note that JEP 404, Generational Shenandoah (Experimental), originally targeted for JDK 21, was officially removed from the final feature set in JDK 21. This was due to the “risks identified during the review process and the lack of time available to perform the thorough review that such a large contribution of code requires.” The Shenandoah team has decided to “deliver the best Generational Shenandoah that they can” and will seek to target JDK 22.
We examine some of these new features and include where they fall under the auspices of the four major Java projects – Amber, Loom, Panama and Valhalla – designed to incubate a series of components for eventual inclusion in the JDK through a curated merge.
Project Amber
JEP 445, Unnamed Classes and Instance Main Methods (Preview), formerly known as Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), proposes to “evolve the Java language so that students can write their first programs without needing to understand language features designed for large programs.” This JEP moves forward the September 2022 blog post, Paving the on-ramp, by Brian Goetz, Java language architect at Oracle. Gavin Bierman, consulting member of technical staff at Oracle, has published the first draft of the specification document for review by the Java community. More details on JEP 445 may be found in this InfoQ news story.
JEP 440, Record Patterns, finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch
case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for
statement. Further details on JEP 440 may be found in this InfoQ news story.
JEP 430, String Templates (Preview), proposes to enhance 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.
Project Loom
JEP 453, Structured Concurrency (Preview), incorporates enhancements in response to feedback from the previous two rounds of incubation: JEP 428, Structured Concurrency (Incubator), delivered in JDK 19; and JEP 437, Structured Concurrency (Second Incubator), delivered in JDK 20. Recent significant changes include: the TaskHandle
interface has been renamed to Subtask
a fix to correct the generic signature of the handleComplete()
method; a change to the states and behavior of subtasks on cancellation; a new currentThreadEnclosingScopes()
method defined in the Threads
class that returns a string with the description of the current structured context; and the fork()
method, defined in the StructuredTaskScope
class, returns an instance of Subtask
(formerly known as TaskHandle
) rather than a Future
since the get()
method in the old TaskHandle
interface was restructured to behave the same as the resultNow()
method in the Future
interface. Further details on JEP 453 may be found in this InfoQ news story.
JEP 446, Scoped Values (Preview), formerly known as Extent-Local Variables (Incubator), this JEP is now a preview feature following JEP 429, Scoped Values (Incubator), delivered in JDK 20. This JEP proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads.
JEP 444, Virtual Threads, proposes to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. More details on JEP 444 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.
Project Panama
JEP 448, Vector API (Sixth Incubator), incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment
as defined by the Foreign Function & Memory API.
JEP 442, Foreign Function & Memory API (Third Preview), 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.
Developers may be interested in learning about the performance benefits of the Foreign Function & Memory API that is planned to be a final feature in JDK 22. Per-Åke Minborg, consulting member of technical staff at Oracle, has published this blog post in which he provided a benchmark on string conversion using this API for JDK 21 (JEP 442) and JDK 22 (JEP Draft 8310626) compared to using the old Java Native Interface (JNI) calls.
HotSpot
JEP 439, Generational ZGC, proposes to “improve application performance by extending the Z Garbage Collector (ZGC) to maintain separate generations for young and old objects. This will allow ZGC to collect young objects, which tend to die young, more frequently.” Further details on JEP 439 may be found in this InfoQ news story.
JDK 22
Scheduled for a GA release in March 2024, there are no targeted JEPs for JDK 22 at this time. However, based on a number of JEP candidates and drafts, especially those that have been submitted, we can surmise which additional JEPs have the potential to be included in JDK 22.
JEP 447, Statements before super(), under the auspices of Project Amber, proposes to: allow statements that do not reference an instance being created to appear before the this()
or super()
calls in a constructor; and preserve existing safety and initialization guarantees for constructors. Gavin Bierman, consulting member of technical staff at Oracle, has provided an initial specification of this JEP for the Java community to review and provide feedback.
JEP 435, Asynchronous Stack Trace VM API, a feature JEP type, proposes to define an efficient API for obtaining asynchronous call traces for profiling from a signal handler with information on Java and native frames.
JEP 401, Null-Restricted Value Object Storage (Preview), formerly known as Primitive Classes (Preview), under the auspices of Project Valhalla, introduces developer-declared primitive classes – special kinds of value classes as defined by the Value Objects API – that define new primitive types.
JEP Draft 8307341, Prepare to Restrict The Use of JNI, proposes to restrict the use of the inherently unsafe Java Native Interface (JNI) in conjunction with the use of restricted methods in the Foreign Function & Memory (FFM) API that is expected to become a final feature in JDK 22. The alignment strategy, starting in JDK 22, will have the Java runtime display warnings about the use of JNI unless an FFM user enables unsafe native access on the command line. It is anticipated that in release after JDK 22, using JNI will throw exceptions instead of warnings.
JEP Draft 8310626, Foreign Function & Memory API, proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming release of JDK 21. Improvements since the last release include: a new Enable-Native-Access
manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access
flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.
JEP Draft 8288476, Primitive types in patterns, instanceof, and switch (Preview), 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.”
JEP Draft 8277163, Value Objects (Preview), a feature JEP under the auspices of Project Valhalla, proposes the creation of value objects – identity-free value classes that specify the behavior of their instances. This draft is related to JEP 401, Primitive Classes (Preview), which is still in Candidate status.
JEP Draft 8313278, Ahead of Time Compilation for the Java Virtual Machine, proposes to “enhance the Java Virtual Machine with the ability to load Java applications and libraries compiled to native code for faster startup and baseline execution.”
JEP Draft 8312611, Computed Constants, introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final
fields, while offering greater flexibility as to the timing of initialization. This feature will debut as a preview API.
JEP Draft 8283227, JDK Source Structure, an informational JEP type, describes the overall layout and structure of the JDK source code and related files in the JDK repository. This JEP proposes to help developers adapt to the source code structure as described in JEP 201, Modular Source Code, delivered in JDK 9.
JEP Draft 8280389, ClassFile API, proposes to provide an API for parsing, generating, and transforming Java class files. This JEP 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 Draft 8278252, JDK Packaging and Installation Guidelines, an informational JEP, proposed to provide guidelines for creating JDK installers on macOS, Linux and Windows to reduce the risks of collisions among JDK installations by different JDK providers. The intent is to promote a better experience when installing update releases of the JDK by formalizing installation directory names, package names, and other elements of installers that may lead to conflicts.
We anticipate that Oracle will start targeting JEPs for JDK 22 very soon.

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 21st, 2023 features news from OpenJDK, JDK 22, JDK 21, Jakarta EE, BellSoft, Spring Modulith 1.0, Spring Boot, Spring Authorization Server, Spring Batch, Spring AI, Testcontainers, Open Liberty, Quarkus, MicroProfile Metrics and Telemetry, Micronaut, Groovy, Tomcat, Grails, JHipster Lite, Vert.x Pinot Client, Yupiik Fusion and SpringOne conference.
OpenJDK
Ron Pressler, architect and technical lead for Project Loom at Oracle, has introduced JEP Draft 8307341, Prepare to Restrict The Use of JNI, proposes to restrict the use of the inherently unsafe Java Native Interface (JNI) in conjunction with the use of restricted methods in the Foreign Function & Memory (FFM) API that is expected to become a final feature in JDK 22. The alignment strategy, starting in JDK 22, will have the Java runtime display warnings about the use of JNI unless an FFM user enables unsafe native access on the command line. It is anticipated that in release after JDK 22, using JNI will throw exceptions instead of warnings.
Version 7.3.1 of the Regression Test Harness for the JDK, jtreg
, has been released and ready for integration in the JDK that fixes a regression introduced in jtreg
7.3 that prevented correctly setting up the default environment variables on Windows. More details on this release may be found in the release notes.
JDK 21
Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.
JDK 22
Build 12 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 11 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
Jakarta EE
In his weekly Hashtag Jakarta EE blog, Ivar Grimstad, Jakarta EE developer advocate at the Eclipse Foundation, has provided the voting results on the motions to add the Jakarta Data, Jakarta MVC and Jakarta NoSQL specifications to the Jakarta EE 11 Platform. Only one of these specifications, Jakarta Data, has passed.
Some comments from those who voted against or abstained from including Jakarta MVC:
This is a mature spec with some adoption at the moment, but before making this mandatory, there should be more adoption from the vendor side. As mentioned before by others, it could be added on every Profile as standalone spec, so nobody is blocked in using it right now and create more demand to add it in a future version (or give a reason for an update on the next versions Release Plan).
I encourage this work and hope it will continue forward. I look forward to eventual adoption by the platform.
I think it’s an interesting addition to the platform, and we have already added it to GlassFish where it can be used out of the box. We however have several concerns. Among them is the fact that Jakarta MVC is based on Jakarta REST, while the existing MVC framework in Jakarta EE is based on Jakarta Servlet. Basing new APIs on REST makes it even more confusing which “HTTP handling API” in Jakarta EE is the core one. We’d love to see a common base being established between Jakarta Servlet and Jakarta REST first, before accepting anything into the platform that builds on Jakarta REST.
Some comments from those who voted against or abstained from including Jakarta NoSQL:
The current architectural design seems to have more frequent updates required than is planned to have for Jakarta Platform releases – this gives a strong argument to keep it outside the Platform now. Another requirement might be to have Jakarta Data and Jakarta Config added first. In general having support for NoSQL is a good idea – so this may change in the future.
It is useful and should be included in the near future. But, the specification is not ready for now, and the maturity is not clear in EE 11 timeframe.
No real feature compared to vendor API/runtime and even the opposite: you can’t use your NoSQL backend without using proprietary API so misses the goal IMHO. Only gain is what can be done in 10-15LoC so not enough to justify the maintenance burden IMHO.
BellSoft
BellSoft has provided patch releases of their Liberica JDK 17 and 11 downstream distributions of OpenJDK that include a critical bug fix as described by JDK-8313765, Invalid CEN header (invalid zip64 extra data field size), a regression in which a ZipException
is thrown when opening APK, ZIP or JAR files with several third-party tools. This issue emerged when JDK-8302483, Improved ZIP64 Extra Field Validation, provided additional validation of ZIP64 extra fields when opening a ZIP file.
BellSoft has also introduced Alpaquita Containers for Spring Boot Applications, based on Alpaquita Linux, an operating system based on Alpine Linux tailored for the Java programming language, and Liberica JDK. The former was first introduced in September 2022. Inspiration was based on the discovery that small containers with Spring Boot applications can save cloud resources.
Spring Framework
The second milestone release of Spring Boot 3.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: use of jOOQ functionality to determine the SQL dialect; a new ThreadPoolTaskSchedulerBuilder
class as a replacement for the deprecated TaskSchedulerBuilder
class; and a new SimpleAsyncTaskExecutorBuilder
class to build instances of the SimpleAsyncTaskExecutor
class; More details on this release may be found in the release notes.
Versions 3.1.3, 3.0.10 and 2.7.15 of Spring Boot all feature improvements in documentation, dependency upgrades and notable bug fixes such as: logging configuration URLs with query parameters that are not detected in XML format; an instance of the JobLauncherApplicationRunner
class returning a success exit code even when no jobs have been executed; and the addition of a missing test for RabbitMQ smoke tests. Further details on these releases may be found in the release notes for version 3.1.3, version 3.0.10 and version 2.7.15.
The release of Spring Modulith 1.0 features: a removal of the experimental declaration from the Scenario
class; a removal of Spring Modulith Events parent POM from BOM; and upgrades to Spring Asciidoctor Backends 0.0.7 and jMolecules 2023.1.0. More details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.
The release of Spring Authorization Server 1.1.2 delivers dependency upgrades and notable bug fixes such as: add length validation to prevent an HTTP 500 Internal Server Error due to invalid usercode; the demo-authorizationserver
samples test suite not being executed as part of build process; and an instance of the custom form login class, DefaultErrorController
, that throws a NullPointerException
with a missing error message attribute. Further details on this release may be found in the release notes.
Versions 5.1.0-M2, 5.0.3 and 4.3.9 of Spring Batch have been released that ship with bug fixes, improvements in documentation and enhancements such as: the addition of the Java ConcurrentHashMap
and Date
classes to the trusted list of classes in the Jackson2ExecutionContextStringSerializer
class; and auto-detection of classes/interfaces to be mocked by replacing the mock(Class classToMock)
method with the mock()
method. New features in version 5.1.0-M2 include: support for bulk inserts and new accessors in the MongoItemWriter
class to facilitate extensions. More details on these releases may be found in the release notes for version 5.1.0-M2, version 5.0.3 and version 4.3.9.
Spring AI, a “Spring-friendly API and abstractions for developing AI applications” was introduced at the SpringOne conference this past week. Developers can learn more by watching this YouTube video featuring Josh Long, Spring Developer Advocate at VMware, and Mark Pollack, Senior Staff Engineer at VMware, and this ACME Fitness Store application. InfoQ will follow up with a more detailed news story.
AtomicJar
AtomicJar, makers of Testcontainers, an “open source framework for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container,” has introduced a new Testcontainers Desktop application that is free to the Java community. This release includes features that allow developers to set fixed ports for improved debugging and connecting to running containers and the ability to freeze containers to prevent their shutdown while debugging. This application also allows developers to easily switch their local container runtime that eliminates the need to manipulate the testcontainers.properties
file when using Testcontainers with OrbStack/Colima/Rancher Desktop or Podman. InfoQ will follow up with a more detailed news story.
Testcontainers for Java 1.19.0 was also released this past week with notable changes such as: a new forListeningPort(port)
convenience method in the Wait
class to check on a specific port; use of the SelinuxContext.SHARED
enumeration by default; and a new implementation of the ClickHouseContainer
class that support the withUsername()
, withPassword()
, withDatabaseName()
and withUrlParam()
methods.
Open Liberty
IBM has released version 23.0.0.8 of Open Liberty featuring: support for Proof Key for Code Exchange (PKCE) for OpenID Connect clients that prevents authorization code interception attacks; a fix for CVE-2023-38737, a vulnerability in which an attacker can send a specially-crafted request in Open Liberty versions 22.0.0.13 through 23.0.0.7 causing the server to consume memory resources and lead to a denial of service; and ensure that sufficient amount of features are installed when using the featureUtility installFeature
command that formerly didn’t guarantee the feature would work correctly.
Quarkus
Red Hat has released version 3.3.0 of Quarkus with notable changes such as: improvements to the OpenTelemetry extension; a new SmallRye Reactive Messaging Pulsar extension; and the ability to customize the Jackson ObjectMapper
class in REST Client Reactive extension. It is important to note that, starting with this release, the .Final
suffix in version names will be dropped due to the use of such versioning that is now outdated. Further details on this release may be found in the changelog.
MicroProfile
On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of the MicroProfile Metrics 5.1 specification featuring notable changes such as: an introduction of MicroProfile Config properties that customize how Histogram and Timer metrics track and output statistics for percentiles and histogram buckets; the @RegistryScope
annotation is now a qualifier; and a new mp.metrics.defaultAppName
property as a requirement for consistent tag sets that previously caused problems in multi-app application server implementations. More details on this release may be found in the changelog.
Similarly, the second release candidate of the MicroProfile Telemetry 1.1 specification has also been released featuring an dependency upgrade to OpenTelemetry Java 1.29.0; a clarification of the behavior of Span
and Baggage
beans when the current span or baggage changes; and an implementation of tests in such a way that is not timestamp dependent. Further details on this release may be found in the release notes.
Micronaut
The Micronaut Foundation has provided Micronaut Framework 4.0.5, the fifth maintenance release with updates to modules: Micronaut Cassandra, Micronaut MicroStream, Micronaut Security, Micronaut Liquibase, Micronaut Flyway, Micronaut GCP, Micronaut AWS and Micronaut Servlet. More details on this release may be found in the release notes.
Version 2.0.0 of Micronaut Blueprint for JHipster was also released this past week. Based on JHipster 7.9.3, the latest stable version, this blueprint generates a back-end server based on Micronaut Framework 3.10.1 for either monolith- or microservice-style JHipster applications.
Apache Software Foundation
The first alpha release of Apache Groovy 5.0.0 delivers many bug fixes, dependency upgrades, improvements and new features such as: a new asChecked()
method in the DefaultGroovyMethods
class for improved support for the checkedCollection()
, checkedList()
, checkedMap()
, etc. defined in the Java Collections
class; a new @OperatorRename
annotation for improved AST transformations; and initial support for JEP 445, Unnamed Classes and Instance Main Methods (Preview). Further details on this release may be found in the changelog.
Similarly, versions 4.0.14 and 3.0.19 of Apache Groovy provide bug fixes, dependency upgrades and improvements such as support for: a null parameter in the collectEntries()
method defined in the DefaultGroovyMethods
class; and closure parameter type inference for tuples when static type checking. More details on these releases may be found in the release notes for version 4.0.14 and version 3.0.19.
Lastly, the release of Apache Groovy 2.5.23 delivers two bug fixes: improved behavior of variable resolution within the Closure
class; and a NoSuchMethodError
thrown when executing a Groovy script. Further details on this release may be found in the changelog.
Versions 11.0.0-M11, 10.1.13, 9.0.80 and 8.5.93 of Apache Tomcat were released this past week with all four versions providing notable changes such as: a fix for CVE-2023-41080, a URL redirection to an untrusted site vulnerability in the FORM authentication feature in Apache Tomcat; and use of the provided error code during error page processing rather than assuming an HTTP 500 Internal Server Error if an application or library sets both a non-HTTP 500 Internal Server Error and the jakarta.servlet.error.exception
request attribute. Version 11.0.0-M11 also includes an update to the HTTP parameter handling to align with the changes in the Jakarta Servlet 6.1 API for the methods defined in the ServletRequest
interface. More details on these releases may be found in the release notes for version 11.0.0-M11, version 10.1.13, version 9.0.80 and version 8.5.93.
Grails
The Grails Foundation has introduced version 6.0.0 of the Grails Spring Security Core Plugin featuring elevated security, support for Spring Security 5.8.6, compatibility with Grails 6.0.0, an enhanced command line interface, dependency upgrades and improved navigation of documentation.
JHipster
Version 0.41.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and improvements such as: a replacement on the use of the Java @Generated
annotation with the JHipster @ExcludeFromGeneratedCodeCoverage
annotation; a removal of the password()
method from the OAuth2Configuration
class; and an execution of integration tests with a configuration derived from an application configuration file. Further details on this release may be found in the release notes.
Eclipse Vert.x
The Eclipse Vert.x team has introduced a new Pinot Client for Apache Pinot, a realtime distributed datastore for analytical workloads, as a replacement for the Apache Pinot Java Client. This new client exposes a convenient API for Eclipse Vert.x applications to query Apache Pinot servers.
Yupiik
Version 1.0.6 of Yupiik Fusion has been released with notable changes such as support for: embeddable nested tables for cases with more than 255 columns; the ability of the PartialResponse
class to customize the RESPONSE_HEADERS
field in the JsonRpcHandler
class; and the OffsetDateTime
, ZoneOffset
and LocalDate as root parameters on a JSON-RPC endpoint. More details on this release may be found in the release notes.
SpringOne
The SpringOne and VMware Explore conference was held at the Venetian Convention and Expo Center in Las Vegas, Nevada this past week featuring sessions designed for Application Developers, Platform Operators/DevOps/SREs and Application Architects. Spring Technologies included: Platforms and Tooling for Spring Applications; Spring Framework; Spring Boot; Spring Security; Spring Cloud; Spring Data/Stream; and the Spring Community.
Java News Roundup: JDK 21 RC1, Apache Camel 4.0, Payara Platform, Apache Tomcat, Micronaut

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 14th, 2023 features news from OpenJDK, JDK 22, JDK 21, Apache Camel 4.0.0, Payara Platform and point and milestone releases of: Spring Framework, Spring Data, Spring Modulith, Apache Tomcat, Micronaut, Micrometer Metrics and Tracing, Project Reactor, Hibernate Search, Infinispan, JHipster React Native, JBang, Piranha, Byte Buddy, JobRunr, Arquillian and Gradle.
OpenJDK
Daniel Smith, Programming Language Designer at Oracle, has updated JEP 401, Null-Restricted Value Object Storage (Preview), to align with Oracle’s “latest design ideas for expressing flattenability in the language and in class files.” Originally named Primitive Classes (Preview), this JEP supports null-restricted storage of value objects, as specified in JEP Draft 8277163, Value Objects (Preview), in fields and array components that are initialized to an initial instance of the class and reject attempts to write a null value.
JDK 21
As per the JDK 21 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, formally declared that JDK 21 has entered its first release candidate as there are no unresolved P1 bugs in Build 35. The anticipated GA release is scheduled for September 19, 2023.
The final set of 15 features in JDK 21 will include:
Build 35 remains the current build in the JDK 21 early-access builds. Further details on this build may be found in the release notes.
JDK 22
Build 11 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 10 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
Spring Framework
The fourth milestone release of Spring Framework 6.1 delivers dependency upgrades and notable changes such as: support for resource patterns in the @TestPropertySource
annotation; support for class-based mapping in the DatabaseClient
interface; and a new RowMapper
interface that provides automatic binding to database fields. Further details on this release may be found in the list of issues.
The second milestone release of Spring Data 2023.1.0, codenamed Vaughn, delivers: compatibility with JDK 21; support for Kotlin value classes; the use of virtual threads through the Executor
interface; and an exploration for optimizations using Coordinated Restore at Checkpoint (CRaC). More details on this release may be found in the release notes.
Similarly, versions 2023.0.3, 2022.0.9 and 2021.2.15, service releases of Spring Data, ship with bug fixes and respective dependency upgrades to sub-projects such as: Spring Data MongoDB 4.1.3, 4.0.9 and 3.4.15; Spring Data Elasticsearch 5.1.3, 5.0.9, and 4.4.15; and Spring Data Neo4j 7.1.3, 7.0.9 and 6.3.15.
The second release candidate of Spring Modulith 1.0 ships with notable changes such as: consistent use of event_publication
as a table name for the relational stores and as a collection name for MongoDB in the Event Publication Registry; a rename of the actuator to modulith
that eliminates the previous use of dashes in actuator names; and explicit declaration of @ApplicationModule(allowedDependencies = {})
should disallow any outgoing dependencies. Further details on this release may be found in the release notes.
Apache Software Foundation
The release of Apache Camel 4.0.0 provides many bug fixes, dependency upgrades, improvements and new features such as support for: Spring Boot 3 AOT native compile with GraalVM; Micrometer Observation; and pagination in Camel JPA. More details on this release may be found in the release notes. InfoQ will follow up with a more detailed news story.
Versions 11.0.0-M10, 10.1.12, 9.0.79 and 8.5.92 of Apache Tomcat were released this past week with all four versions providing bug fixes and improvements such as: a refactor of the HTTP/2 implementation to reduce pinning when using virtual threads; the addition of pass-through ciphers referring to an OpenSSL profile, such as PROFILE=SYSTEM
, instead of producing an error trying to parse it; and a dependency upgrade to Tomcat Native 2.0.5. Further details on these releases may be found in the release notes for version 11.0.0-M10, version 10.1.12, version 9.0.79 and version 8.5.92.
Payara
Payara has released their August 2023 edition of the Payara Platform that includes Community Edition 6.2023.8, Enterprise Edition 6.5.0 and Enterprise Edition 5.54.0 featuring notable bug fixes such as: the inability to instantiate the LdapCtxFactory
class with JDK 17; cannot start Payara Server on JDK 11.0.20 or JDK 17.0.8 due to an error in the libpam4j-repackaged.jar
dependency; and an exception when using the getConnection()
method defined in the DataSource
interface due to transactions displaying the wrong status. More details on these versions may be found in the release notes for Community Edition 6.2023.8 and Enterprise Edition 6.5.0.
Micronaut
The Micronaut Foundation has released versions 4.0.4, 3.10.1 and 3.9.6 of the Micronaut Framework. Version 4.0.4 provides updates to modules: Micronaut GraphQL, Micronaut Neo4J, Micronaut Reactor, Micronaut Servlet, Micronaut Cache and Micronaut CRaC modules. Versions 3.10.1 and 3.9.6 deliver a change in the SDKMan Gradle task in which the sdkMajorRelease
property was replaced by sdkMinorRelease
consisting of a combined release and announcement. Further details on these releases may be found in the release notes for version 4.0.4, version 3.10.1 and version 3.9.6.
Hibernate
The release of Hibernate Search 6.2.1.Final ships with notable changes such as: the ability to read Jandex indexes of repackaged Spring applications assuming the application runs on JDK 13 or greater; search queries with partial failures can now trigger an exception if the configuration property, hibernate.search.backend.query.shard_failure.ignore
, is set to false
; dependency upgrades to Hibernate ORM 6.2.7.Final and Elasticsearch client 8.9.0; and compatibility with OpenSearch 2.9.0.
Micrometer
Versions 1.12.0-M2, 1.11.3, 1.10.10 and 1.9.14 of Micrometer Metrics have been released featuring bug fixes, improvements in documentation, dependency upgrades and new features such as: removal of the requirement to set an instance of the ObservationRegistry
interface on the ObservationThreadLocalAccessor
class; and a new JmsInstrumentation
class that instruments instances of a Jakarta Messaging Session
interface with the Observation API. More details on these releases may be found in the release notes for version 1.12.0-M2, version 1.11.3, version 1.10.10 and version 1.9.14.
Similarly, versions 1.2.0-M2, 1.1.4 and 1.0.9 of Micrometer Tracing have been released featuring dependency upgrades and implementing the use of the CurrentTraceContext
interface for the OpenTelemetry Tracer
interface for more efficient use of merging scopes, baggages and checking for no-ops. Further details on these releases may be found in the release notes for version 1.2.0-M2, version 1.1.4 and version 1.0.9.
Infinispan
The release of Infinispan 14.0.14 provides notable changes such as: remove of any use of Hibernate Search 5 annotations in Infinispan tests; dependency upgrades to Netty 4.1.94.Final and Jackson 2.15.2 to address CVEs; and the ability for the InvalidatedNearRemoteCache
to persist stale values in case of of concurrent access. More details on this release may be found in the changelog.
JHipster
Version 4.4.0 of JHipster React Native has been released featuring: an upgrade to Expo 49 SDK with React Native 0.72.3; update notice and license information in the LICENSE
file; and update copyright headers. Further details on this release may be found in the changelog.
JBang
The release of JBang 0.110.1 ships with bug fixes: a NullPointerException
when running in a container; and the use of the -g
flag in the getCompileOptions()
method defined in the JavaSource
class to replace using the JAVAC_OPTIONS
and COMPILE_OPTIONS
environmental variables.
Piranha
The release of Piranha 23.8.0 delivers notable changes such as: the use of the PiranhaConfiguration
interface for distributions; a new ExitOnStopFeature
class that exits the JVM after all features have been requested to be stopped; and a new WebAppFeature
class that provides the capability to host a single web application. More details on this release may be found in their documentation and issue tracker.
Project Reactor
The second milestone release of Project Reactor 2023.0.0 provides dependency upgrades to reactor-core 3.6.0-M2
, reactor-netty 1.1.10
and reactor-kafka 1.3.20
. There was also a realignment to version 2023.0.0-M2 with the reactor-pool 1.0.1
, reactor-addons 3.5.1
and reactor-kotlin-extensions 1.2.2
artifacts that remain unchanged. Further details on this release may be found in the changelog.
Similarly, Project Reactor 2022.0.10, the tenth maintenance release, provides dependency upgrades to reactor-core 3.5.9
, reactor-netty 1.1.10
and reactor-kafka 1.3.20
. There was also a realignment to version 2022.0.10 with the reactor-pool 1.0.1
, reactor-addons 3.5.1
and reactor-kotlin-extensions 1.2.2
artifacts that remain unchanged. More details on this release may be found in the changelog.
Byte Buddy
The release of Byte Buddy 1.14.6 delivers notable changes such as: the addition of a SUBSTITUTE
enum in the AgentBuilder.PatchMode
enum and a Substitutable
subinterface in the ResettableClassFileTransformer
interface for in-order patching; allow for explicit specification of a differential matcher when patching an AgentBuilder
interface; and create JAR
files for Android read-only as newer versions require it. Further details on this release may be found in the release notes.
JobRunr
Version 6.3.0 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released that ships with bug fixes and new features such as: support for Micronaut 4.0 and Kotlin 1.9; performance improvements in the JobRunr dashboard resulting in less calls to the JobRunr REST API; stability improvements to minimize instances of a SevereJobRunrException
class being thrown; and a new timeout to automatically interrupt an instance of a Job
class, if necessary. More details on this release may be found in the release notes.
Arquillian
The release of Arquillian 1.7.1.Final provides: a fix for an artifact in arquillian-bom-1.7.0.Final
throwing a checksum validation error when using Maven 3.6.3; and a dependency upgrade to RESTEasy 6.2.4.Final. Further details on this release may be found in the changelog.
Gradle
The release of Gradle 8.3 delivers: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. More details on this release may be found in the release notes.
Java News Roundup: Payara Cloud, MicroProfile Telemetry, Foojay.io Calendar, JVM Language Summit

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for August 7th, 2023 features news from JDK 22, JDK 21, GraalVM Native Build Tools 0.9.24, Spring Cloud 2023.0.0-M1, Spring Modulith 1.0-RC1, Payara Cloud, Quarkus 3.2.4, MicroProfile Telemetry 1.1, OpenXava 7.1.4, Foojay.io calendar and JVM Language Summit 2023.
JDK 21
Build 35 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 34 that include fixes to various issues. Further details on this build may be found in the release notes.
JDK 22
Build 10 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 9 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GraalVM
On the road to version 1.0, Oracle Labs has released version 0.9.24 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides notable changes such as: support for Profile-Guided Optimization (PGO); migrate away from using ImageClassLoader
in favor of ClassLoader
for discovery of tests by JUnitPlatformFeature
to eliminate the eager class initialization error during native image building time; and improved GraalVM installation instructions. Further details on this release may be found in the changelog.
Spring Framework
The first milestone release of Spring Cloud 2023.0.0-M1, codenamed Leyton, ships with: an implementation of Spring MVC and Jakarta Servlet; support for the Java HttpClient
class; and milestone upgrades to sub-projects such as Spring Cloud Commons 4.1.0-M1 and Spring Cloud Task 3.1.0-M1. More details on this release may be found in the release notes.
The first release candidate of Spring Modulith 1.0.0 provides bug fixes, dependency upgrades and new features such as: avoid premature initialization of the SpringModulithRuntimeAutoConfiguration
class to avoid a proxy warning; improve database interaction to mark event publications as completed; and allow the ApplicationModulesExporter
class to write output to a file. Further details on this release may be found in the release notes. The GA release is scheduled to be announced at SpringOne at VMware Explore conference in late August 2023 and InfoQ will follow up with a more detailed news story.
Payara Cloud
Payara has announced a new 15-day free trial of their Payara Cloud cloud native runtime service for organizations considering their options for these kinds of services. Payara claims that use of Payara Cloud will shorten development cycles, improve operational efficiency and save money training developers in Kubernetes since Payara Cloud handles Kubernetes in the background.
Quarkus
Red Hat has released version 3.2.4.Final of Quarkus with notable changes such as: documentation of Maven configuration options that may be relevant when running tests; a fix for the @RouteFilter
annotation that stopped working with WebSocket requests using Quarkus 3.2.0.Final; and a fix for the OpenTelemetry (OTEL) SDK autoconfiguration ignores the OTEL service name in favor of the Quarkus application name. More details on this release may be found in the changelog.
MicroProfile
On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of the MicroProfile Telemetry 1.1 specification featuring notable changes such as: a clarification of which API classes must be available to users; an implementation of tests that is not timestamp dependent; and a clarification of the behavior of the Span
and Baggage
beans when the current span or baggage changes. Further details on this release may be found in the list of issues.
OpenXava
The release of OpenXava 7.1.4 features dependency upgrades and notable fixes such as: use of the @DisplaySize
annotation with a value greater than 50 is ignored when used with @Column(length=255)
; files lost when uploading several files at same time on creating a new entity; and moving columns to customize a list does not work if the application name contains underscores. More details on this release may be found in the release notes.
Foojay.io
The Foojay.io community calendar now has the ability to automatically import individual Meetup pages maintained by Java Users Groups. This eliminates the need for JUGs to manually enter their Meetup events on the Foojay.io calendar. To get started, JUG leaders would need to register on the Foojay.io Slack channel and specify either daily or weekly basis for automatic updates.
JVM Language Summit
Sharat Chander, senior director, Java and Container Native Product Management and Developer Relations at Oracle, provided InfoQ with a summary of the 2023 JVM Language Summit that featured this agenda and OpenJDK Committers’ Workshop.
Last week represented the 15th edition of the JVM Language Summit. Taking place in Santa Clara, California, this three day summit hosted by Oracle’s Java language and JVM teams offered an open technical collaboration among language designers, compiler writers, tool builders, runtime engineers, and VM architects.
The summit welcomed the creators of both the JVM and programming languages for the JVM to share their experiences. It also included non-JVM developers of similar technologies to attend or speak on their runtime, VM, or language of choice. The attendee mix comprised participants from 15 companies, 30 countries, as well as 11 members of the Java Champions luminary program and 16 Java User Group leaders and organizers.
From sessions exploring dimensions from Project Leyden, Loom, Panama and Valhalla, the summit also offered insight into areas such as Generational ZGC, the Class-File API preview feature, and more.
Chander stated that “session recordings will be made available soon so keep an eye out for an update!”
Java News Roundup: Liberica JDK Performance Edition, GraalVM JDK 21 Builds, Open Liberty, Quarkus

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 31st, 2023 features news from OpenJDK, JDK 22, JDK 21, GlassFish 7.0.7, GraalVM JDK 21 Developer Builds, Liberica JDK Performance Edition, JNoSQL 1.0.1, Spring Tools 4.19.1, Open Liberty 23.0.0.8-beta and 23.0.0.7, Micronaut 4.0.3, Quarkus 3.2.3 and 2.16.9, Apache Camel 4.0.0-RC2, JHipster Lite 0.40, Ktor 2.3.3, Maven 3.9.4 and Gradle 8.3-RC3.
OpenJDK
David Delabassee, director of Java developer relations at Oracle, has announced a change in annotation processing. The OpenJDK team is considering disabling default implicit annotation processing in a future release of OpenJDK. This is due to implicit annotation proceeding when there are no annotation processing configuration options. As of JDK 21 Build 29 and JDK 22 Build 4, the javac
utility will print a note (as shown below) if implicit annotation processing is being used.
Annotation processing is enabled because one or more processors were found on the class path. A future release of javac may disable annotation processing unless at least one processor is specified by name (-processor
), or a search path is specified (--processor-path
,--processor-module-path
), or annotation processing is enabled explicitly (-proc:only
,-proc:full
). Use-Xlint:-options
to suppress this message. Use-proc:none
to disable annotation processing.
JDK 21
Build 34 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 33 that include fixes to various issues. Further details on this build may be found in the release notes.
JDK 22
Build 9 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 8 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GlassFish
GlassFish 7.0.7, the seventh maintenance release, delivers refactoring and maintenance, component upgrades and notable bug fixes such as: creation of a new Admin Object Resource in the Admin Console; generation of Web Services Description Language (WSDL) for use with JDK 21; and a remote EJB access issue in the glassfish-naming package by updating the osgi.bundle
files. More details on this release may be found in the release notes.
GraalVM
The GraalVM JDK 21 Developer Builds for GraalVM 23.1.0 Community Edition have been made available to the Java community. These builds include the JVM and developer tools for generating native images from Java applications. More details on this release may be found in the release notes.
BellSoft
BellSoft has introduced the Liberica JDK Performance Edition that delivers the performance of JDK 17 to enterprise workloads running on JDK 11 without the need to worry about migration to newer versions of the JDK. BellSoft claims that companies will “notice the instant performance boost up to 10–15% with little to no code adjustments.” Enhancements include: improved garbage collection using Shenandoah, ZGC and G1GC; and several runtime improvements. More details on the Liberica JDK Performance Edition may be found in the user’s guide.
JNoSQL
The release of JNoSQL 1.0.1 delivers notable fixes such as: logic in the getConstructors()
method defined in the Reflections
class to detect constructors with parameters annotated with @Id
or @Column
; lazy loading metadata in the EntityMetadata
interface; and a redesign of the ParameterMedataData
interface to not throw a NullPointException
when it’s implementation with a JDK Parameter
class that does not use the of the @Id
or @Column
annotations. More details on this release may be found in the release notes.
Spring Framework
Spring Tools 4.19.1 has been released featuring early-access builds for Eclipse 2023-09 IDE milestones and notable bug fixes such as: experimental validation support for Spring Modulith; Spring Boot language server interfering with the automatic project synchronization of Eclipse Gradle Buildship; and no classpath update after source code has been saved. More details on this release may be found in the release notes.
Open Liberty
IBM has released version 23.0.0.8-beta of Open Liberty that ships with: support for running a Spring Boot 3.0 application on Open Liberty; and a continued early preview support of Jakarta Data, a new specification that will officially be included in the upcoming release of Jakarta EE 11.
Similarly, Open Liberty 23.0.0.7 has been released featuring API and SPI Javadocs now available in the reference section of the Open Liberty documentation and notable changes such as: add missing public methods in the GlobalOpenTelemetry
class; fix concurrency errors when using same JWT access token for inbound propagation; and a dependency upgrades to Apache MyFaces 4.0.1.
Micronaut
Micronaut 4.0.3, the third maintenance release, delivers a patch update to the Micronaut Core project and updates to modules: Micronaut Maven Plugin, Micronaut Data, Micronaut Multitenancy, Micronaut GCP, Micronaut RabbitMQ, and Micronaut Security.
The release of Micronaut Core 4.1.0 provides new features and improvements such as: support for Kotlin default parameters; replacement of the HttpStreamsHandler
and HandlerPublisher
for the client in favor of directly handling the incoming instances of the HttpRequest
and HttpContent
interfaces and transformed to the required types; a new builder()
method in the BeanIntrospector
interface to deal with all the different cases of instantiation.
Quarkus
Red Hat has released version 3.2.3.Final of Quarkus featuring notable changes such as: support for user methods with the @Transactional
annotation in REST Data with the Panache ORM; the addition of a clear error message when Reactive REST Client used outside of Quarkus; and properly resolve use of the @TestProfile
annotation with nested tests in base classes. More details on this release may be found in the changelog.
Similarly, Quarkus 2.16.9.Final has also been released providing notable changes such as: prevention of a ContextNotActiveException
with an invalid configuration validation if the RESTEasy Reactive module is present; a fix for addressing CVE-2023-1428 and CVE-2023-32731, two gRPC Protocol Buffers-related CVEs; and a dependency upgrade to gRPC 1.53.0. More details on this release may be found in the changelog.
Apache Software Foundation
The second release candidate of Apache Camel 4.0.0 delivers bug fixes, dependency upgrades and new features such as: support for Kubernetes in Camel JBang; a new standalone Web Console available for all Camel applications; and limit the auto-conversion of all body types when stream caching is enabled due to issues when the body type is not a stream. More details on this release may be found in the release notes.
JHipster
Version 0.40.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and new features such as: add the AddDirectJavaDependency
record for use in the Gradle dependency; change the logger in the CorsFilterConfiguration
class to static; and an implementation of keyboard navigation for the Landscape screen. More details on this release may be found in the release notes.
JetBrains
JetBrains has released Ktor 2.3.3 that ships with notable changes such as: support for YAML configuration; a fix for Kotlin’s IllegalArgumentException
upon using the UTF-8 charset after migrating from Xcode 14 to XCode 15; and a fix for a DataFormatException
when WebSocket compression is enabled by default. More details on this release may be found in the what’s new page.
Maven
The release of Maven 3.9.4 features dependency upgrades and a fix for an endless loop in the getMessage()
method defined in the DefaultExceptionHandler
class.
Gradle
The third release candidate of Gradle 8.3 delivers continued improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.
Java News Roundup: Grails 6.0, PrimeFaces 13.0, JUnit 5.10, GraalVM, TornadoVM, New JEP Drafts

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 24th, 2023 features news from OpenJDK, JDK 22, JDK 21, GraalVM Community Components 23.0.1, Spring Cloud 2022.0.4, Spring Security and Spring Shell point releases, Grails 6.0, TornadoVM 0.15.2, Liberica NIK 23.0.1, PrimeFaces 13.0, Quarkus 3.2.2, Hibernate Reactive 2.0.4, Micronaut 4.0.2, JBang 0.110, JHipster Lite 0.39, JUnit 5.10 and Gradle 8.3-RC2.
OpenJDK
Maurizio Cimadamore, software architect at Oracle, has submitted JEP Draft 8310626, Foreign Function & Memory API. This JEP proposes to finalize this feature after two rounds of incubation and three rounds of preview: JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17; JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19; JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; and JEP 442, Foreign Function & Memory API (Third Preview), to be delivered in the upcoming release of JDK 21. Improvements since the last release include: a new Enable-Native-Access
manifest attribute that allows code in executable JARs to call restricted methods without the use of the --enable-native-access
flag; allow clients to programmatically build C function descriptors, avoiding platform-specific constants; improved support for variable-length arrays in native memory; and support for multiple charsets in native strings.
Cimadamore and Per-Åke Minborg, consulting member of technical staff at Oracle, have submitted JEP Draft 8312611, Computed Constants. This JEP introduces the concept of computed constants, defined as immutable value holders that are initialized at most once. This offers the performance and safety benefits of final
fields, while offering greater flexibility as to the timing of initialization. This feature will debut as a preview API.
Julian Waters, OpenJDK development team at Oracle, has submitted JEP Draft 8313278, Ahead of Time Compilation for the Java Virtual Machine. This JEP proposes to “enhance the Java Virtual Machine with the ability to load Java applications and libraries compiled to native code for faster startup and baseline execution.”
Version 7.3 of the Regression Test Harness for the JDK, jtreg
, has been released and ready for integration in the JDK. Notable changes include: an updated set of default environment variables (DBUS_SESSION_BUS_ADDRESS
, WAYLAND_DISPLAY
, and XDG-*
) set for tests on Unix-like platforms; a fix for a race-condition when running tests with a multi-module setup; and a fix in the log()
method defined in the AgentServer
class that did not flush the output. More details on this release may be found in the release notes.
JDK 21
Build 33 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 32 that include fixes to various issues. Further details on this build may be found in the release notes.
JDK 22
Build 8 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 7 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
GraalVM
The release of GraalVM Community Components 23.0.1, comprised of GraalVM for JDK 20 Community 20.0.2 and GraalVM for JDK 17 Community 17.0.8, provides these Native Image fixes: jvmstat
performance data initialization; JDK Flight Recorder (JFR) events constant pool IDs; user experience issues; and analysis results in build reports. There was also an update to the strip mining optimization for counted loops feature in which mine overflow loops are defined as “do not strip” in the Graal compiler. These new versions are built upon JDK versions 20.0.2+9 and 17.0.8+7, respectively. Further details on these releases may be found in the release notes for version 20.0.2 and version 17.0.8.
Similarly, GraalVM Community Edition 22.3.3 was also released to align with the April 2023 Critical Patch Update (CPU) for GraalVM Community Edition. This version is built upon JDK versions 17.0.7 and 11.0.19. More details on this release may be found in the release notes.
Further details on the latest release of GraalVM may be found in this detailed news story featuring Q&A with Alina Yurenko, developer advocate for GraalVM at Oracle Labs.
Spring Framework
The release of Spring Cloud 2022.0.4, codenamed Kilburn, delivers notable changes such as: support for retry-aware load-balancing for delegates of the ServiceInstanceListSupplier
interface in Spring Cloud Commons; improved exception handling for loading shared beans in Spring Cloud Stream; and dependency upgrades to Feign 12.4 and Eureka 2.0.1 for Spring Cloud OpenFeign and Spring Cloud Netflix, respectively. This latest version builds upon Spring Boot 3.0.9. It is important to note that subprojects: Spring Cloud CLI, Spring Cloud for Cloud Foundry and Spring Cloud Sleuth, have been removed from the release train. More details on this release may be found in the release notes.
Versions 6.1.2, 6.0.5, 5.8.5, 5.7.10 and 5.6.12 of Spring Security have been released to address two Common Vulnerabilities and Exposures: CVE-2023-34034, WebFlux Security Bypass With Un-Prefixed Double Wildcard Pattern, is a vulnerability in which using the double wildcard (**
) as a pattern in Spring Security configuration for Spring WebFlux creates a mismatch in pattern matching that may result in a security bypass; and CVE-2023-34035, Authorization Rules Can Be Misconfigured When Using Multiple Servlets, a vulnerability in which using the requestMatchers(String)
method and multiple servlets, one of them being the Spring MVC DispatcherServlet
class, may lead to an authorization rule misconfiguration. Further details on these releases may be found in the release notes for version 6.1.2, version 6.0.5, version 5.8.5, version 5.7.10, and version 5.6.12.
Versions 3.1.3, 3.0.7 and 2.1.12 of Spring Shell have been released featuring the addition of a complete()
method in the CompletionProposal
class to allow for completing a single argument with multiple tab clicks, such as file paths. These versions build upon Spring Boot versions 3.1.2, 3.0.9 and 2.7.14, respectively. More details on these releases may be found in the release notes for version 3.1.3, version 3.0.7 and version 2.1.12.
Grails
The Grails Foundation has released version 6.0 of Grails delivering: a minimal JDK 11 version; support for Spring Framework 5.3.28, Spring Boot 2.7.12 and Gradle 7.6.1; the debut of Grails Forge UI, a starter project similar to Spring Initializr and others; and enhanced integration of the Micronaut Framework. Further details on this release may be found in the release notes and InfoQ will follow up with a more detailed news story.
TornadoVM
TornadoVM, an open-source software technology company, has released version 0.15.2 of their virtual machine that ships with bug fixes and notable improvement such as: initial support for Multi-Tasks on Multiple Devices that enables the execution of multiple independent tasks on more than one hardware accelerator; support for trigonometric radian
, cospi
and sinpi
functions for the OpenCL/PTX and SPIR-V backends; and initial integration with ComputeAorta (part of the Codeplay’s oneAPI construction kit for RISC-V) to run on RISC-V with vector instructions in emulation mode. More details on this release may be found in the release notes.
Juan Fumero, research associate, Advanced Processor Technologies Research Group at The University of Manchester, introduced TornadoVM at QCon London in March 2020 and has since contributed this more recent InfoQ technical article.
LibericaJDK
BellSoft has released version 23.0.1 of their Liberica Native Image Kit (NIK) for JDK 17.0.8 and 20.0.2 as part of Critical Patch Update (CPU) release cycle featuring: experimental support for ParallelGC on the Windows OS; a fix for the compilation of JavaFX FXML applications; and fixes for the following Common Vulnerabilities and Exposures: CVE-2023-22043; CVE-2023-22041; CVE-2023-25193; CVE-2023-22044; CVE-2023-22045; CVE-2023-22049; CVE-2023-22036; and CVE-2023-22006.
PrimeFaces
Version 13.0.0 of PrimeFaces has been released with bugs fixes, dependency upgrades and new features such as: support for columns and footer facet in the SelectCheckboxMenu
class; the addition of selectOnFocus()
and caretPositionOnFocus()
methods in the InputNumber
class; and the addition of a cache attribute in the OverlayPanel
class. It is important to note that there are breaking changes. Further details on this release may be found in the release notes.
Quarkus
Red Hat has released version 3.2.2.Final of Quarkus to address two regressions from version 3.2.1 and improvements in documentation. Notable changes include: revert back to the openjdk-17-runtime:1.16
images due to the development branch having the version number bumped to 1.17 in anticipation of the next release scheduled for release in August 2023; remove the false positive warning about the quarkus.launch.rebuild
property; and allow reauthentication if the OIDC state cookie is not matched. More details on this release may be found in the changelog.
Hibernate
The release of Hibernate Reactive 2.0.4.Final features: a dependency upgrade to Hibernate ORM 6.2.7.Final; start the Docker container only as requested to confirm that a remote database already started before executing the full build; and a fix for which the @SQLSelect
annotation did not work on a primary entity. Further details on this release may be found in the release notes.
Micronaut
Micronaut Framework 4.0.2, the second maintenance release, provides bug fixes, improvements in documentation, dependency upgrades and improvements such as: add version number check to the BuildTestVerifier
interface; and move Async validation to a processor module due to the AsyncTypeElementVisitor
class defined as a compileOnly
dependency. More details on this release may be found in the release notes.
The Micronaut Foundation has moved their chat community from Gitter to Discord effective immediately. The foundation states that Discord provides an improved desktop application experience, better-structured conversations and enhanced notifications. Developers on Gitter are encouraged to move to Discord, however the foundation will continue to monitor conversations on Gitter and provide links to Discord.
JBang
The release of JBang 0.110.0 ships with a change in its Maven Central ID from mavencentral
to central
for fetching dependencies to allow for better sharing of downloads between Maven- and JBang-based builds. There was also a fix for a regression in which Maven artifacts containing capital letters failed to download.
JHipster
Version 0.39.0 of JHipster Lite has been released featuring bug fixes, dependency upgrades and improvements such as: enhancements to the Logback dependency with improved configuration and the elimination of having to explicitly define the shutdown hook; add a getInstantOrDefault()
method to the JHipsterModuleProperties
class; and a switch to a non-parallel stream in REST pagination mapping to ensure sequential processing of the stream. Further details on this release may be found in the release notes.
JUnit
JUnit 5.10.0 has been released with new features such as: experimental APIs, such as ModuleSelector
, EngineDiscoveryListener
, EngineDiscoveryRequestResolver
, LauncherSession
and @Suite
, have been promoted to stable; new selectors in the @SelectMethod
annotation; and a new LauncherInterceptor
interface for intercepting the creation of instances of the Launcher
and LauncherSessionListener
interfaces. More details on this release may be found in the release notes.
Gradle
The second release candidate of Gradle 8.3 delivers continued improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.
Java News Roundup: WildFly 29, JDK 21 in RDP2, Helidon 4.0-M1, Oracle Critical Patch Updates

MMS • Michael Redlich
Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for July 17th, 2023 features news from JDK 22, JDK 21, JDK 20, BellSoft, releases of: Spring Boot; Spring Framework; Spring for GraphQL; Spring Session; Spring Integration and Spring HATEOAS; WildFly 29, Quarkus 3.2.1, Helidon 4.0-M1, Micronaut 4.0.1, Hibernate 6.3-CR1, MicroProfile Config 3.1, Infinispan 14.0.13, PrimeFaces 12.0.5, OpenXava 7.1.3 and Gradle 8.3-RC1.
JDK 20
JDK 20.0.2, the second maintenance release of JDK 20, along with security updates for JDK 17.0.8, JDK 11.0.20 and JDK 8u381, were made available as part of Oracle’s Releases Critical Patch Update for July 2023.
JDK 21
As per the JDK 20 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, formally declared that JDK 21 has entered Rampdown Phase Two to signal continued stabilization for the GA release in September 2023. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process.
The final set of 15 features in JDK 21 will include:
Build 32 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 31 that include fixes to various issues. Further details on this build may be found in the release notes.
JDK 22
Build 7 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 6 that include fixes to various issues. More details on this build may be found in the release notes.
For JDK 22 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.
BellSoft
Also concurrent with Oracle’s Critical Patch Update (CPU) for July 2023, BellSoft has released CPU patches for versions 17.0.7.0.1, 11.0.19.0.1 and 8u381 of Liberica JDK, their downstream distribution of OpenJDK. In addition, Patch Set Update (PSU) versions 20.0.2, 17.0.8, 11.0.20 and 8u382, containing CPU and non-critical fixes, have also been released.
Spring Framework
The first milestone release of Spring Boot 3.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: support for the JDK HttpClient
class and Jetty in the ClientHttpRequestFactories
class; allow key password to be set for an instance of the PemSslStoreBundle
class; and deprecation of the DelegatingApplicationContextInitializer
and DelegatingApplicationListener
classes in favor of registering each delegate programmatically or in the spring.factories
property. Further details on this release may be found in the release notes.
Versions 3.1.2, 3.0.9 and 2.7.14 of Spring Boot have also been released with dependency upgrades, improvements in documentation and notable bug fixes such as: the ImportsContextCustomizer
test class does not support the @AliasFor
annotation; the equals()
method defined in the ConfigurationPropertyName
class is not symmetric when the element contains trailing dashes; and an auto-configuration failure with a NoSuchMethodError
exception due to the removal of Oracle-related methods from the Flyway FluentConfiguration
class. More details on these releases may be found in the release notes for version 3.1.2, version 3.0.9 and version 2.7.14.
The third milestone release of Spring Framework 6.1 delivers new features such as: new configuration options for virtual threads on JDK 21 with a dedicated VirtualThreadTaskExecutor
class and a new setVirtualThreads()
method added to the SimpleAsyncTaskExecutor
class; Spring MVC now throws NoHandlerFoundException
or NoResourceFoundException
exceptions to allow for consistent handling of HTTP 404 errors that includes the RFC 7807, Problem Details for HTTP APIs, error response; and support for the BeanPropertyRowMapper
and DataClassRowMapper
classes in the R2DBC project. Further details on this release may be found in the what’s new page.
The release of Spring for GraphQL 1.2.2 released delivers bug fixes, improvements in documentation, dependency upgrades and these new features support for: Kotlin coroutines in the @GraphQlExceptionHandler
annotation; and the ValueExtractor
interface for the ArgumentValue
class for improved bean validation. More details on this release may be found in the release notes.
The first milestone release of Spring Session 3.2.0 provides dependency upgrades and these new features: a new SessionIdGenerationStrategy
interface that specifies a strategy for generating session identifiers; and eliminating multiple calls to the commitSession()
method in the private SessionRepositoryRequestWrapper
class defined in the SessionRepositoryFilter
class upon calling the include()
method defined in the RequestDispatcher
interface. Further details on this release may be found in the release notes.
The first milestone release of Spring Integration 6.2 ships with notable changes such as: removal of the unused JDK ThreadLocal
class from the RedisStoreMSource
class; an optimization of the maybeIndex()
method in the JsonPropertyAccessor
class; and the addition of the @LogLevels
annotation for the SftpRemoteFileTemplateTests
class for tracing diagnostics. More details on this release may be found in the release notes.
Versions 2.2.0-M2, 2.1.2 and 2.0.6 of Spring HATEOAS have been released that feature a fix for a regression in the AOT reflection metadata generation so that applications building native images continue to work on the upcoming releases of Spring Boot. Further details on these releases may be found in the release notes for version 2.2-M2, version 2.1.2 and version 2.0.6.
WildFly
Red Hat has released version 29 of WildFly featuring bug fixes, internal housekeeping from the migration to Jakarta EE 10 and new features such as: the ability to secure the management console with WildFly’s native support for OpenID Connect; a new Keycloak SAML Adapter feature pack that uses Galleon Provisioning to add Keycloak’s SAML adapter to an installation of WildFly; and support for MyFaces 4.0, a compatible implementation of Jakarta Faces specification, using the new WildFly MyFaces 1.0.0.Beta1 feature pack.
Quarkus
Red Hat has also released version 3.2.1.Final of Quarkus featuring the addition of the OpenAPI schema and UI to be published when the management interface is enabled along with the ability to configure using the quarkus.smallrye-openapi.management.enabled
property. Other notable changes include: support for serialization of class fields with Jackson in native mode; avoiding a race condition on adding a content-length
header if it already exists resulting in the response never being sent; and the removal of a default token customizer from an OIDC Microsoft provider that breaks signature verification. More details on this release may be found in the release notes.
Helidon
The first milestone release of Helidon 4.0.0 delivers notable changes: removal of the Helidon Reactive WebServer and WebClient that were based on Netty as Helidon fully commits to Project Níma with new implementations based on virtual threads that have a blocking style API; conversion of other modules with reactive APIs to blocking style APIs; the introduction of Helidon Injection, a deterministic, source-code-first, compile time injection framework; support for MicroProfile 6 and Jakarta 10 Core Profile running on the Níma WebServer; and initial adoption of Helidon Builders, a builder code generation framework. It is important to note that this is a preview release and the new features are a work-in-progress. Further details on this release may be found in the release notes.
Micronaut
The Micronaut Foundation has provided version 4.0.1 of Micronaut Framework, the first maintenance release since the release of Micronaut 4.0, featuring: dependency upgrades; improvements in documentation; a fix for a constructor copy; and the addition of a propagated context to the reactive controller methods in the ReactorPropagation
class. More details on this release may be found in the release notes.
Hibernate
Versions 6.3.0-CR1 and 6.2.7 of Hibernate ORM have been released that ships with: new documentation that adds an introductory Hibernate 6 guide and the Hibernate Query Language syntax and feature guide; the ability to generate DAO-style methods for named queries as part of the JPA static metamodel generator; and a new @Find
annotation for which arbitrary methods may now be processed by the generator to create finder methods similar to query methods.
MicroProfile
On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of MicroProfile Config 3.1 featuring notable changes such as: the MissingValueOnObserverMethodInjectionTest
class fails due to the ConfigObserver
bean, defined as @ApplicationScoped
and final
, which is beyond the scope of the DeploymentException
the test was designed to throw; failing TCK tests due to empty beans being declared as all
when they should be declared as annotated
; and an upgrade of all tests to be compatible with Jakarta Contexts and Dependency Injection 4.0. Further details on this release may be found in the list of issues.
Infinispan
Versions 14.0.13 and 14.0.12 of Infinispan have been released with notable changes such as: a fix for the SearchException
while rebuilding an index; filter out illegal characters found in memory pool names; and a fix for the RemoteStore
class leaking Netty event loop client threads. More details on these releases may be found in the release notes for version 14.0.13 and 14.0.12.
PrimeFaces
Versions 12.0.5, 11.0.11, 10.0.18 and 8.0.23 of PrimeFaces have been released with notable fixes such as: the FullAjaxExceptionHandler
class does not display an error page when an exception is thrown during an AJAX request; a NullPointerException
from the encodeScript()
method defined in the InputTextRenderer
class due to an empty counter bypassing the conditional that checks for null
; and fixes for the user interface. Further details on these releases may be found in the changelogs for version 12.0.5, version 11.0.11, version 10.0.18 and version 8.0.23.
OpenXava
The release of OpenXava 7.1.3 features dependency upgrades and notable fixes such as: one security vulnerability in the dependencies; the project does not start if the workspace is in a path with special characters or accents; and use of the @OnChange
annotation on the first property of a collection view in an @OneToMany
annotation with no cascade displays an error. More details on this release may be found in the release notes.
Gradle
The first release candidate of Gradle 8.3 delivers improvements such as: support for JDK 20; faster Java compilation using worker processes to run the Java compiler as a compiler daemon; the ability to experiment with the Kotlin K2 compiler; and improved output from the CodeNarc plugin. Further details on this release may be found in the release notes.