This week's Java roundup for February 26th, 2024, features news highlighting: JEP 468, Derived Record Creation (Preview); JEP 467, Markdown Documentation Comments; a new Spring Functions Catalog; end-of-life planned for the Spring Framework 6.0 and 5.3 release trains; and point releases for Apache Kafka, Quarkus and JReleaser.
OpenJDK
JEP 468, Derived Record Creation (Preview), has been promoted from its JDK Draft 8321133 to Candidate status. This JEP proposes to enhance the Java language with derived creation for records. Since records are immutable objects, developers frequently create new records from old records to model new data. Derived creation streamlines code by deriving a new record from an existing record, specifying only the components that are different.
JEP 467, Markdown Documentation Comments, has been promoted from its JDK Draft 8316039 to Candidate status. This feature proposes to enable JavaDoc documentation comments to be written in Markdown rather than a mix of HTML and JavaDoc @
tags. This will allow for documentation comments that are easier to write and easier to read in source form.
Paul Sandoz, Java Architect at Oracle, has submitted JEP Draft 8326878, Vector API (Incubator). After seven rounds of incubation that were integrated from JDK 16 through JDK 22, this JEP proposes to re-incubate the API in JDK 23 with no API changes and no substantial implementation changes relative to JDK 22. This feature will introduce an API to "express vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures, thus achieving performance superior to equivalent scalar computations."
JDK 23
Build 12 of the JDK 23 early-access builds was made available this past week featuring updates from Build 11 that include fixes for various issues. More details on this release may be found in the release notes.
JDK 22
Build 36 remains the current build in the JDK 22 early-access builds. Further details on this build may be found in the release notes.
For JDK 23 and JDK 22, developers are encouraged to report bugs via the Java Bug Database.
GlassFish
GlassFish 7.0.13, the thirteenth maintenance release in the 7.0 release train, provides bug fixes, dependency upgrades and a new feature in which the Admin Console was improved to: always load the console upon server startup, i.e., eager loading; load the console only after the first access to it by default; and never implement a loading option that disables the console. More details on this release may be found in the release notes.
TornadoVM
TornadoVM 1.0.2, the second maintenance release, delivers bug fixes and improvements to the TornadoExecutionPlan
class with new methods: withMemoryLimit()
that provides the means to execute an instance of a TaskGraph
class only if specific memory constraints have been fulfilled; withThreadInfo()
to print the thread deployment to complement the same action as --threadInfo
from the command line; and withPrintKernel()
to dump the generated kernel to complement the same action as the --printKernel
from the command line. Further details on this release may be found in the release notes.
Spring Framework
Version 3.2.2 and 3.1.9 of Spring Shell have been released with notable changes such as: a fix in the ScriptShellRunner
class to ensure that the @
character must be first character in a first argument; use the CommandContext
interface as a method parameter so that it gets resolved and won't cause it to appear as an option; and a more user-friendly ViewComponent
API. These versions build on Spring Boot 3.2.3 and 3.1.9, respectively. More details on these releases may be found in the release notes for version 3.2.2 and version 3.1.9.
The Spring Cloud Data Flow team has introduced the first milestone release of Spring Functions Catalog 5.0.0, a rebranding, and next generation, of the functions
sub-module of Stream Applications project. This catalog provides a set of standalone Java functions that can be useful in the end-user applications as-is. Version 5.0.0 was chosen for this new catalog to maintain alignment with functions from the Stream Applications project.
With the anticipated release of Spring Framework 6.2 in November 2024, the team has announced that the final point releases in the version 6.0 and 5.3 release trains will be published sometime in August 2024, but official open-source support will end on August 31, 2024. These versions will, however, receive commercial support for "another couple of years." This same adjustment will be made on the Spring Security 5.8 release train.
Quarkus
Quarkus 3.8, the new LTS release, delivers dependency upgrades and notable changes such as: a resolution to a warning issued from the EndpointIndexer
class when using a custom header in a REST client together with a method containing a parameter annotated with the @NotBody
annotation; a more robust VertxGrpcExporter
class that introduces a retry upon network-related errors; and a resolution to a NullPointerException
thrown from the OidcProvider
class when a certificate chain is configured with an OIDC server that doesn't provides JWK keys at startup. Further details on this release may be found in the release notes.
Micronaut
The Micronaut Foundation has released version 4.3.4 of the Micronaut Framework featuring Micronaut Core 4.3.9, bug fixes, improvements in documentation, and updates to modules: Micronaut Security and Micronaut AWS. More details on this release may be found in the release notes.
Open Liberty
IBM has released version 24.0.0.2 of Open Liberty featuring new capabilities in the MicroProfile Reactive Messaging and MicroProfile Reactive Streams Operators specifications that include support for negative acknowledgment, emitters and backpressure. A new Open Liberty guide entitled, Building true-to-production integration tests with Testcontainers, was also added with this release.
WildFly
WildFly 31.0.1, the first maintenance release, provides bug fixes, dependency upgrades and an enhancement in which a SHA-1 digest was added to the WildFly distribution module ZIP file.
Hibernate
The release of Hibernate Search 7.1.0.Final features: improved entity registration in the standalone POJO mapper via the new @SearchEntity
annotation; a new query string predicate, queryString
, that matches documents according to a structured query, provided as a string, to allow building more advanced query strings; and a new knn query
, introduced in Elasticsearch 8.12, to remove some of the limitations on vector search capabilities.
Apache Software Foundation
The sixth alpha release of Apache Groovy 5.0.0 delivers new features/improvements such as: new left/right shift operators for the BitSet
class; and an optimization in the generated next()
and previous()
methods in enumerations. Further details on this release may be found in the release notes.
Next, the release of Groovy 4.0.19 also provides the aforementioned optimization in the generated next()
and previous()
methods in enumerations. There is a request from the Java community for the prettyPrint()
method defined in the JsonOutput
class to always print escape characters. However, this isn't possible because of the final constructor and the class uses a default generator. More details on this release may be found in the release notes.
And finally, the release of Groovy 3.0.21 ships with an improvement in which generics information can be improved for Default Groovy Methods methods that accept some of the collect
variants. Further details on this release may be found in the release notes.
All three Groovy releases mentioned above also deliver bug fixes and dependency upgrades.
The release of Apache Kafka 3.7.0 provides many bug fixes and new features/improvements such as: an implementation of the Exponential Backoff for Kafka Clients; a new Docker Image for Apache Kafka and Kafka Connect; and a new BooleanConverter
class to Kafka Connect to convert to/from a Type.BOOLEAN
enumeration defined in the Schema
interface. More details on this release may be found in the release notes.
Maintaining alignment with Quarkus, version 3.8.0 of Camel Quarkus has been released featuring resolutions to notable issues such as: an intermittent AssertionError
failure from using an instance of the SimpleDataSet
class inside the DataSetTest
class; a failure with a Health example with non existent bootstrap properties; and extended test coverage for the Splunk HEC component; this LTS version aligns with the Camel 4.4.x LTS and Quarkus 3.8.x LTS releases. Further details on this release may be found in the release notes.
JReleaser
Version 1.11.0 of JReleaser, a Java utility that streamlines creating project releases, has been released to deliver bug fixes, improvements in documentation, dependency upgrades and notable changes such as: Nexus2 improvements to allow staged deployments and display failed messages; add an outputFilename
option to allow defining explicit filenames for downloaded packages; and support for dependencies in WindowsOS winget installers. More details on this release may be found in the release notes.
JHipster
Version 1.5.0 of JHipster Lite has been released to deliver bug fixes, dependency upgrades and new features/enhancements such as: improved error messaging thrown by the StringTooLongException
, StringTooShortException
, NotAfterTimeException
and NotBeforeTimeException
classes by explicitly including the actual value; a removal of unused imports in the application generated by the CucumberRestTestContext
class; and the ability to handle different startup commands for Maven and Gradle. Further details on this release may be found in the release notes.
JKube
The release of Eclipse JKube 1.16.1 provides notable changes: a move of the PortMapping
class from the org.eclipse.jkube.kit.build.api.model
package to the org.eclipse.jkube.kit.common
package; and a resolution for Helm Lint not working on version 1.16.0. More details on this release may be found in the release notes.
MicroStream
The release of MicroStream 8.1.2 ships with a resolution to avoid possible VM crashes due to a removed check in G1 in JDK 21.0.2 that was adjusted in code cleanup for direct byte buffers. Further details on this release may be found in the release notes.
Gradle
The second release candidate of Gradle 8.7 provides continuous improvement in: support for Java 22 for compiling, testing, and running JVM-based projects; build cache improvements for Groovy DSL script compilation; and improvements to lazy configuration, error and warning messages, the configuration cache, and the Kotlin DSL. More details on this release may be found in the release notes.