This week's Java roundup for July 17th, 2023, features news from JDK 22, JDK 21, JDK 20, BellSoft, releases of: Spring Boot; Spring Framework; Spring for GraphQL; Spring Session; Spring Integration and Spring HATEOAS; WildFly 29, Quarkus 3.2.1, Helidon 4.0-M1, Micronaut 4.0.1, Hibernate 6.3-CR1, MicroProfile Config 3.1, Infinispan 14.0.13, PrimeFaces 12.0.5, OpenXava 7.1.3 and Gradle 8.3-RC1.
JDK 20
JDK 20.0.2, the second maintenance release of JDK 20, along with security updates for JDK 17.0.8, JDK 11.0.20 and JDK 8u381, were made available as part of Oracle's Releases Critical Patch Update for July 2023.
JDK 21
As per the JDK 20 release schedule, Mark Reinhold, chief architect, Java Platform Group at Oracle, formally declared that JDK 21 has entered Rampdown Phase Two to signal continued stabilization for the GA release in September 2023. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process.
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 32 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 31 that include fixes to various issues. Further details on this build may be found in the release notes.
JDK 22
Build 7 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 6 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.
BellSoft
Also concurrent with Oracle's Critical Patch Update (CPU) for July 2023, BellSoft has released CPU patches for versions 17.0.7.0.1, 11.0.19.0.1 and 8u381 of Liberica JDK, their downstream distribution of OpenJDK. In addition, Patch Set Update (PSU) versions 20.0.2, 17.0.8, 11.0.20 and 8u382, containing CPU and non-critical fixes, have also been released.
Spring Framework
The first milestone release of Spring Boot 3.2.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: support for the JDK HttpClient
class and Jetty in the ClientHttpRequestFactories
class; allow key password to be set for an instance of the PemSslStoreBundle
class; and deprecation of the DelegatingApplicationContextInitializer
and DelegatingApplicationListener
classes in favor of registering each delegate programmatically or in the spring.factories
property. Further details on this release may be found in the release notes.
Versions 3.1.2, 3.0.9 and 2.7.14 of Spring Boot have also been released with dependency upgrades, improvements in documentation and notable bug fixes such as: the ImportsContextCustomizer
test class does not support the @AliasFor
annotation; the equals()
method defined in the ConfigurationPropertyName
class is not symmetric when the element contains trailing dashes; and an auto-configuration failure with a NoSuchMethodError
exception due to the removal of Oracle-related methods from the Flyway FluentConfiguration
class. More details on these releases may be found in the release notes for version 3.1.2, version 3.0.9 and version 2.7.14.
The third milestone release of Spring Framework 6.1 delivers new features such as: new configuration options for virtual threads on JDK 21 with a dedicated VirtualThreadTaskExecutor
class and a new setVirtualThreads()
method added to the SimpleAsyncTaskExecutor
class; Spring MVC now throws NoHandlerFoundException
or NoResourceFoundException
exceptions to allow for consistent handling of HTTP 404 errors that includes the RFC 7807, Problem Details for HTTP APIs, error response; and support for the BeanPropertyRowMapper
and DataClassRowMapper
classes in the R2DBC project. Further details on this release may be found in the what's new page.
The release of Spring for GraphQL 1.2.2 released delivers bug fixes, improvements in documentation, dependency upgrades and these new features support for: Kotlin coroutines in the @GraphQlExceptionHandler
annotation; and the ValueExtractor
interface for the ArgumentValue
class for improved bean validation. More details on this release may be found in the release notes.
The first milestone release of Spring Session 3.2.0 provides dependency upgrades and these new features: a new SessionIdGenerationStrategy
interface that specifies a strategy for generating session identifiers; and eliminating multiple calls to the commitSession()
method in the private SessionRepositoryRequestWrapper
class defined in the SessionRepositoryFilter
class upon calling the include()
method defined in the RequestDispatcher
interface. Further details on this release may be found in the release notes.
The first milestone release of Spring Integration 6.2 ships with notable changes such as: removal of the unused JDK ThreadLocal
class from the RedisStoreMSource
class; an optimization of the maybeIndex()
method in the JsonPropertyAccessor
class; and the addition of the @LogLevels
annotation for the SftpRemoteFileTemplateTests
class for tracing diagnostics. More details on this release may be found in the release notes.
Versions 2.2.0-M2, 2.1.2 and 2.0.6 of Spring HATEOAS have been released that feature a fix for a regression in the AOT reflection metadata generation so that applications building native images continue to work on the upcoming releases of Spring Boot. Further details on these releases may be found in the release notes for version 2.2-M2, version 2.1.2 and version 2.0.6.
WildFly
Red Hat has released version 29 of WildFly featuring bug fixes, internal housekeeping from the migration to Jakarta EE 10 and new features such as: the ability to secure the management console with WildFly's native support for OpenID Connect; a new Keycloak SAML Adapter feature pack that uses Galleon Provisioning to add Keycloak's SAML adapter to an installation of WildFly; and support for MyFaces 4.0, a compatible implementation of Jakarta Faces specification, using the new WildFly MyFaces 1.0.0.Beta1 feature pack.
Quarkus
Red Hat has also released version 3.2.1.Final of Quarkus featuring the addition of the OpenAPI schema and UI to be published when the management interface is enabled along with the ability to configure using the quarkus.smallrye-openapi.management.enabled
property. Other notable changes include: support for serialization of class fields with Jackson in native mode; avoiding a race condition on adding a content-length
header if it already exists resulting in the response never being sent; and the removal of a default token customizer from an OIDC Microsoft provider that breaks signature verification. More details on this release may be found in the release notes.
Helidon
The first milestone release of Helidon 4.0.0 delivers notable changes: removal of the Helidon Reactive WebServer and WebClient that were based on Netty as Helidon fully commits to Project Níma with new implementations based on virtual threads that have a blocking style API; conversion of other modules with reactive APIs to blocking style APIs; the introduction of Helidon Injection, a deterministic, source-code-first, compile time injection framework; support for MicroProfile 6 and Jakarta 10 Core Profile running on the Níma WebServer; and initial adoption of Helidon Builders, a builder code generation framework. It is important to note that this is a preview release and the new features are a work-in-progress. Further details on this release may be found in the release notes.
Micronaut
The Micronaut Foundation has provided version 4.0.1 of Micronaut Framework, the first maintenance release since the release of Micronaut 4.0, featuring: dependency upgrades; improvements in documentation; a fix for a constructor copy; and the addition of a propagated context to the reactive controller methods in the ReactorPropagation
class. More details on this release may be found in the release notes.
Hibernate
Versions 6.3.0-CR1 and 6.2.7 of Hibernate ORM have been released that ships with: new documentation that adds an introductory Hibernate 6 guide and the Hibernate Query Language syntax and feature guide; the ability to generate DAO-style methods for named queries as part of the JPA static metamodel generator; and a new @Find
annotation for which arbitrary methods may now be processed by the generator to create finder methods similar to query methods.
MicroProfile
On the road to MicroProfile 6.1, the MicroProfile Working Group has provided the first release candidate of MicroProfile Config 3.1 featuring notable changes such as: the MissingValueOnObserverMethodInjectionTest
class fails due to the ConfigObserver
bean, defined as @ApplicationScoped
and final
, which is beyond the scope of the DeploymentException
the test was designed to throw; failing TCK tests due to empty beans being declared as all
when they should be declared as annotated
; and an upgrade of all tests to be compatible with Jakarta Contexts and Dependency Injection 4.0. Further details on this release may be found in the list of issues.
Infinispan
Versions 14.0.13 and 14.0.12 of Infinispan have been released with notable changes such as: a fix for the SearchException
while rebuilding an index; filter out illegal characters found in memory pool names; and a fix for the RemoteStore
class leaking Netty event loop client threads. More details on these releases may be found in the release notes for version 14.0.13 and 14.0.12.
PrimeFaces
Versions 12.0.5, 11.0.11, 10.0.18 and 8.0.23 of PrimeFaces have been released with notable fixes such as: the FullAjaxExceptionHandler
class does not display an error page when an exception is thrown during an AJAX request; a NullPointerException
from the encodeScript()
method defined in the InputTextRenderer
class due to an empty counter bypassing the conditional that checks for null
; and fixes for the user interface. Further details on these releases may be found in the changelogs for version 12.0.5, version 11.0.11, version 10.0.18 and version 8.0.23.
OpenXava
The release of OpenXava 7.1.3 features dependency upgrades and notable fixes such as: one security vulnerability in the dependencies; the project does not start if the workspace is in a path with special characters or accents; and use of the @OnChange
annotation on the first property of a collection view in an @OneToMany
annotation with no cascade displays an error. More details on this release may be found in the release notes.
Gradle
The first release candidate of Gradle 8.3 delivers improvements such as: 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. Further details on this release may be found in the release notes.