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:
- JEP 430: String Templates (Preview)
- JEP 431: Sequenced Collections
- JEP 439: Generational ZGC
- JEP 440: Record Patterns
- JEP 441: Pattern Matching for switch
- JEP 442: Foreign Function & Memory API (Third Preview)
- JEP 443: Unnamed Patterns and Variables (Preview)
- JEP 444: Virtual Threads
- JEP 445: Unnamed Classes and Instance Main Methods (Preview)
- JEP 446: Scoped Values (Preview)
- JEP 448: Vector API (Sixth Incubator)
- JEP 449: Deprecate the Windows 32-bit x86 Port for Removal
- JEP 451: Prepare to Disallow the Dynamic Loading of Agents
- JEP 452: Key Encapsulation Mechanism API
- JEP 453: Structured Concurrency (Preview)
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, which 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.