This week's Java roundup for July 8th, 2024, features news highlighting: JEP 472, Prepare to Restrict the Use of JNI, proposed to be targeted for JDK 24; milestone and point releases for Spring Framework; the monthly Piranha Cloud release; and the releases of Gradle 8.9 and Arquillian 1.9.
OpenJDK
JEP 472, Prepare to Restrict the Use of JNI, has been promoted from its Candidate to Proposed to Target for JDK 24. The JEP 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, delivered in JDK 22. The alignment strategy, starting in the upcoming release of JDK 23, 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 23, using JNI will throw exceptions instead of warnings. The review is expected to conclude on July 15, 2024.
JDK 23
Build 31 of the JDK 23 early-access builds was made available this past week featuring updates from Build 30 that include fixes for various issues. 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 6 of the JDK 24 early-access builds was also made available this past week featuring updates from Build 5 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.
Spring Framework
The fifth milestone release of Spring Framework 6.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: a new SmartHttpMessageConverter
interface that addresses several limitations in the GenericHttpMessageConverter
interface while providing a contract more consistent with the Spring WebFlux Encoder
and Decoder
interfaces; allow custom implementations of the ObjectProvider
interface to declare only a single method for improved unit testing; and a resolution to the SimpleClientHttpResponse
class throwing an IOException
when the response body is empty and status code is >= 400. Further details on this release may be found in the release notes.
Similarly, Spring Framework 6.1.11 has been released with bug fixes, improvements in documentation, dependency upgrades and new features such as: ensure the varargs component type for the Java MethodHandle
class is not null
in the Spring Expression Language ReflectionHelper
class; and the overloaded getTypeForFactoryMethod()
method, defined in the AbstractAutowireCapableBeanFactory
class, should catch a NoClassDefFoundError
and return null
. This version will be included in the upcoming releases of Spring Boot 3.3.2 and 3.2.8. More details on this release may be found in the release notes.
Versions 2024.0.2 and 2023.1.8, both service releases of Spring Data, feature bug fixes and respective dependency upgrades to sub-projects such as: Spring Data Commons 3.3.2 and 3.2.8; Spring Data MongoDB 4.3.2 and 4.2.8; Spring Data Elasticsearch 5.3.2 and 5.2.8; and Spring Data Neo4j 7.3.2 and 7.2.8. These versions can be consumed by the upcoming releases of Spring Boot 3.3.2 and 3.2.8, respectively.
Spring Cloud 2023.0.3, codenamed Leyton, has been released featuring featuring bug fixes and notable updates to sub-projects: Spring Cloud Kubernetes 3.1.3; Spring Cloud Function 4.1.3; Spring Cloud OpenFeign 4.1.3; Spring Cloud Stream 4.1.3; and Spring Cloud Gateway 4.1.5. This release is based on Spring Boot 3.2.7. Further details on this release may be found in the release notes.
The release of Spring HATEOAS 2.3.1 and 2.2.3 feature dependency upgrades and an improved parser for the Internet Engineering Task Force (IETF) RFC-8288 specification, Web Linking, to support advanced link header expressions. More details on these releases may be found in the release notes for version 2.3.1 and version 2.2.3.
Quarkus
Quarkus 3.12.2, the second maintenance release, features resolutions to notable issues such as: a Jakarta CDI ContextNotActiveException
from an implementation of the SecurityIdentityAugmentor
interface since the release of Quarkus 3.10; classes annotated with the Jakarta RESTful Web Services @Provider
annotation not registered for native image when the server part of the Quarkus REST Client extension is not included; and executing the Quarkus CLI to add an extension reorders the properties and adds a timestamp in gradle.properties
file. Further details on this release may be found in the changelog.
Micrometer
The first milestone release of Micrometer Metrics 1.14.0 delivers dependency upgrades and new features such as: support for the @MeterTag
annotation added to the @Counted
annotation to complement the existing support in the @Timed
annotation; allow a custom implementation of the Java ThreadFactory
interface for the OtlpMeterRegistry
class; and the addition of a counter of failed attempts to retrieve a connection from the MongoMetricsConnectionPoolListener
class. More details on this release may be found in the release notes.
Similarly, versions 1.13.2 and 1.12.8 of Micrometer Metrics feature dependency upgrades and notable bug fixes: avoid an unnecessary calling of the convention name on each scrape for each metric to create the Metrics
metadata because the convention name has already been computed; an IllegalArgumentException
due to histogram inconsistency in the PrometheusMeterRegistry
class; and a fix in the log to include the stack trace in the publish()
method, defined in the OtlpMeterRegistry
class, due to the "Failed to publish metrics to OTLP receiver" error message containing no actionable context. Further details on these releases may be found in the release notes for version 1.13.2 and version 1.12.8.
The first milestone release of Micrometer Tracing 1.4.0 provides dependency upgrades and two new features: the Micrometer Metrics @Nullable
annotations added to methods and fields in the micrometer-tracing-bridge
directories and the sampled()
and nextSpan(Span)
methods defined in the TraceContext
and Tracer
interfaces, respectively; and the ability to propagate values from the Context
inner class, defined in the Micrometer Metrics Observation
interface, to the Baggage
interface. More details on this release may be found in the release notes.
Similarly, versions 1.3.2 and 1.2.8 of Micrometer Tracing ship with dependency upgrades to Micrometer Metrics 1.13.2 and 1.12.8, respectively, and OpenTelemetry Semantic Attributes 1.33.4-alpha. Further details on these releases may be found in the release notes for version 1.3.2 and version 1.2.8.
Project Reactor
The fourth milestone release of Project Reactor 2024.0.0 provides dependency upgrades to reactor-core 3.7.0-M4
, reactor-netty 1.2.0-M4
and reactor-pool 1.1.0-M4
. There was also a realignment to version 2024.0.0-M4 with the reactor-kafka 1.4.0-M1
, reactor-addons 3.6.0-M1
and reactor-kotlin-extensions 1.3.0-M1
artifacts that remain unchanged. More details on this release may be found in the changelog.
Next, Project Reactor 2023.0.8, the eighth maintenance release, provides dependency upgrades to reactor-core 3.6.8
, reactor-netty 1.1.21
and reactor-pool 1.0.7
. There was also a realignment to version 2023.0.8 with the reactor-kafka 1.3.23
, 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.
Next, Project Reactor 2022.0.21, the twenty-first maintenance release, provides dependency upgrades to reactor-core 3.5.19
and reactor-netty 1.1.21
and reactor-pool 1.0.7
. There was also a realignment to version 2022.0.21 with the reactor-kafka 1.3.23
, 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.
And finally, the release of Project Reactor 2020.0.46, codenamed Europium-SR46, provides dependency upgrades to reactor-core 3.4.40
and reactor-netty 1.0.47
. There was also a realignment to version 2020.0.46 with the reactor-kafka 1.3.23
, reactor-pool 0.2.12
, reactor-addons 3.4.10
, reactor-kotlin-extensions 1.1.10
and reactor-rabbitmq 1.5.6
artifacts that remain unchanged. Further details on this release may be found in the changelog.
Piranha Cloud
The release of Piranha 24.7.0 delivers bug fixes, dependency upgrades and a move of numerous utilities such as: Eclipse JAXB; OmniFaces JWT Authorization; OmniFish Transact; and Eclipse Parsson; to their own respective Piranha extension. This release also includes a new DefaultPiranhaBuilder
class that implements the PiranhaBuilder
interface. More details on this release may be found in their documentation and issue tracker.
Apache Software Foundation
The release of Apache Tomcat 9.0.91 ships with bug fixes and notable changes such as: ensure that the include directives in a tag file, both absolute and relative, are processed correctly when packaging in a JAR file; and expand the implementation of the filter value of the AuthenticatorBase.AllowCorsPreflight
inner enum class in conjunction with the allowCorsPreflightBypass()
method, defined in the AuthenticatorBase
class, so that it applies to all requests that match the configured URL patterns for the CORS filter, rather than only applying if the CORS filter is mapped to /*
. Further details on this release may be found in the release notes.
The release of Apache Camel 4.7.0 delivers bug fixes, dependency upgrades and improvements/new features such as: the addition of an endpoint service location to AWS, Azure and Google Cloud Platform components; a new developer console for the RestRegistry
interface where a list of known REST services may be obtained; and a migration of the TransformerKey
and ValidatorKey
classes from implementation to the SPI. More details on this release may be found in the release notes.
Arquillian
Arquillian 1.9.0.Final has been released featuring notable changes such as: disable the Maven MultiThreadedBuilder
class by default such that the build logs are readable on Continuous Integration; and restore use of the JUnit BeforeEachCallback
and AfterEachCallback
listener interfaces as the before()
and after()
methods, defined in the TestRunnerAdaptor
interface, are called within the listeners. More details on this release may be found in the changelog.
Gradle
The release of Gradle 8.9.0 delivers: an improved error and warning reporting for variant issues during dependency resolution; structural details exposed of Java compilation errors for IDE integrators, allowing for easier analysis and resolving issues; and the ability to display more detailed information about JVMs used by Gradle. Further details on this release may be found in the release notes.