This week's Java roundup for September 2nd, 2024, features news highlighting: JEP 485, Stream Gatherers, promoted to Candidate; Project Loom Build 24-loom+7-60; Hibernate Validator 9.0.0.Beta3; LangChain4j 0.34.0; and Clojure 1.12.0.
OpenJDK
JEP 485, Stream Gatherers, was promoted from its JEP Draft 8335899 to Candidate status this past week. This JEP proposes to finalize this feature after two rounds of preview, namely: JEP 473: Stream Gatherers (Second Preview), to be delivered in the upcoming release of JDK 23; and JEP 461, Stream Gatherers (Preview), delivered in JDK 22. This feature was designed to enhance the Stream API to support custom intermediate operations that will "allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations." More details on this JEP may be found in the original design document and this InfoQ news story.
Project Loom
Build 24-loom+7-60 of the Project Loom early-access builds was made available to the Java community this past week and is based on Build 13 of the JDK 24 early-access builds. This build improves the implementation of Java monitors, also known as synchronized methods, for enhanced interoperability with virtual threads.
JDK 23
Build 37 remains the current build in the JDK 23 early-access builds. Further details on this release may be found in the release notes and details on the new JDK 23 features may be found in this InfoQ news story.
JDK 24
Build 14 of the JDK 24 early-access builds was made available this past week featuring updates from Build 13 that include fixes for various issues. More details on this release may be found in the release notes.
For JDK 23 and JDK 24, developers are encouraged to report bugs via the Java Bug Database.
TornadoVM
The release of TornadoInsight 1.2.3, an open-source IntelliJ plugin for TornadoVM, features notable changes such as: support for TornadoVM types (e.g., HalfFloat
, CharArray
, Matrix2DFloat
) that were previously not included in TornadoInsight; resolutions to issues with dynamic and static checking; and the addition of try-with-resources to code generated with the transferToDevice()
and transferToHost()
methods, defined in the TornadoVM TaskGraph
class, to ensure data is managed consistently during each task execution. Further details on this release may be found in the release notes.
Helidon
The release of Helidon 4.1.1 provides bug fixes, dependency upgrades and notable changes such as: an implementation of the gRPC MicroProfile Client API; allow the creation of empty SSE events using a new NO_DATA
constant to the SseEvent
class; and a replacement of the deprecated fixedRateBuilder()
method with the preferred fixedRate()
method, defined in the Scheduling
class. More details on this release may be found in the release notes.
Micronaut
The Micronaut Foundation has released version 4.6.1 of the Micronaut Framework 4.6.1 featuring Micronaut Core 4.6.4, bug fixes, improvements in documentation and updates to modules: Micronaut Data and Micronaut Servlet. Further details on this release may be found in the release notes.
Quarkus
Quarkus 3.14.2, first maintenance release (version 3.14.0 was skipped) featuring bug fixes, dependency upgrades, most notably Micrometer Metrics 1.13.0. Other changes include: a resolution to a RuntimeException
using the JaCoCo code coverage library with an application running virtual threads; the addition of the Jackson SerializableString
interface on field names along with support for the @JsonProperty
annotation in the Jackson serializers. More details on this release may be found in the changelog.
Hibernate
The third beta release of Hibernate Validator 9.0.0 features bug fixes and the removal of some APIs that have been deprecated for quite some time. Hibernate Validator has been the compatible implementation of the Jakarta Validation 3.1 specification since version 8.0.1.Final. This release provides continuous improvement for that compatible implementation.
Clojure
The release of Clojure 1.12.0 provides bug fixes, dependency upgrades and new features such as: new functions, add-lib()
, add-libs()
and sync-deps()
, to interactively add libraries without restarting the JVM or losing state; and new functional interfaces that allow Clojure developers to invoke Java methods.
This release also addresses CVE-2024-22871, a vulnerability in which an attacker may use a specially crafted serializable object that when read, may cause an infinite loop resulting in a denial of service.
And finally, this will be the last release that supports JDK 8. Future releases will support a yet-to-be-announced LTS version of Java. Further details on this release may be found in the changelog.
Eclipse Foundation
The release of Eclipse Vert.x 4.5.10 features notable changes such as: a resolution to the copy constructor, defined in the SqlConnectOptions
class, not copying an instance of the the TracingPolicy
enum; and an implementation of the Oracle health check in the OracleJdbcConnection
class.
This release also addresses CVE-2024-8391, a vulnerability in which the gRPC server did not limit the maximum length of message payload resulting in an overconsumption of memory. More details on this release may be found in the release notes along with a list of deprecations and breaking changes.
Apache Software Foundation
The fourth beta release of Apache Maven 4.0.0 provides dependency upgrades and notable changes such as: the ability to manually execute a GitHub action; a resolution to prevent a NullPointerException
with no tags expected in the plugin.xml
file; and a removal of the Java Locale
class from the FileSizeFormat
class that was unused. Further details on this release may be found in the release notes.
LangChain4j
Version 0.34.0 of LangChain for Java (LangChain4j) features new integrations: Google AI Gemini; Oracle Database Embedding Store; Couchbase Embedding Store; and SearchApi. Other notable changes include: a resolution to a failed parsing of an LLM response due to the JSON block from a POJO not having been extracted; and a refactor of the TokenStream
interface and the AiServiceTokenStream
class so that all methods available in the sub-interfaces are represented in TokenStream
; and a new onRetrieved()
method, defined in the TokenStream
interface, used as a callback before invoking a language model in AiServiceTokenStream
class. More details on this release may be found in the release notes.
Jox
The release of Jox 0.3.1, a virtual threads library that implements an efficient Channel
data structure in Java designed to be used with virtual threads, features a short-circuit on execution of the Select
class upon any error with the Channel
class. Further details on this release may be found in the release notes.