Java News Roundup: Single Query Loading, GraalVM, GlassFish, JReleaser, Quarkus, Micronaut
MMS • Michael Redlich
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.
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.
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.
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.
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.
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.
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.
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.
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
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 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
SQLServerParameters classes. Further details on this release may be found in the release notes.
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.
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.
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.