This week's Java roundup for February 19th, 2024, features news highlighting: JDK 22 in release candidate 2, the February 2024 edition of the Payara Platform, numerous milestone and point releases in the Spring ecosystem, multiple releases of Apache Tomcat and Log4j and Gradle 8.7-RC1.
OpenJDK
Build 22-jextract+3-13 of the Project Jextract, also known as Project Panama, early-access builds, have been made available to the Java community and are based on the upcoming GA release of JDK 22.
Similarly, Build 23-loom+2-48 of the Project Loom early-access builds have also been made available. These are based on Build 10 of the JDK 23 early-access builds and improves the implementation of Java monitors, i.e., synchronized methods, to work better with virtual threads.
JDK 23
Build 11 of the JDK 23 early-access builds was made available this past week featuring updates from Build 10 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.
Mark Reinhold, Chief Architect, Java Platform Group at Oracle, has announced that JDK 22 has entered its second release candidate due to having fixed a conformance issue in Build 36. The anticipated GA release is scheduled for March 19, 2024.
For JDK 23 and JDK 22, developers are encouraged to report bugs via the Java Bug Database.
GraalVM
Oracle Labs has released version 0.10.1 of Native Build Tools, a GraalVM project consisting of plugins for interoperability with GraalVM Native Image. This latest release provides notable changes such as: a resolution for a FileSystemAlreadyExistsException
from the newFileSystem()
method defined in the FileSystems
class due to a dependency JAR failing if another Maven plugin has already created it; a fix in the Kotlin snippet for disabling the metadata repository within the Gradle build files; and add missing JUnit 5 types for build-time initialization allowing them to become part of the image heap. More details on this release may be found in the changelog.
Spring Framework
The second milestone release of Spring Boot 3.3.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: a new @BatchTransactionManager
annotation for improved configuration of Spring Batch to use a custom transaction manager; use of the Micrometer ObservationRequestEventListener
class for improved tracing support when using Eclipse Jersey; and the addition of a conditional bean for the JooqExceptionTranslator
class to eliminate the exception being translated twice. Further details on this release may be found in the release notes.
The release of Spring Boot 3.2.3 provides improvements in documentation, dependency upgrades and notable fixes such as: a NoSuchMethodError
when using the non-shaded Apache Pulsar ObjectMapperFactory
class and configuring authentications parameters; and remove the use of System.out
from the Jetty GracefulShutdown
class. More details on this release may be found in the release notes.
NOTE: Versions 3.3.0-M2 and 3.2.3 of Spring Boot upgrade to Hibernate 6.4.4.Final. While this version of Hibernate contains a number of valuable bug fixes, it does not work correctly in a native image. For developers using GraalVM, Hibernate should be temporarily downgraded to version 6.4.2.Final via the hibernate.version
property.
Similarly, the release of Spring Boot 3.1.9 ships with improvements in documentation, dependency upgrades and notable fixes such as: Spring WebFlux actuator endpoints respond with a HTTP response code 500 when a parameter is missing; and property placeholders aren't resolved when configuration property binding creates a Map
from a property value using a converter. Further details on this release may be found in the release notes.
NOTE: Spring Boot 3.1.9 upgrades to Hibernate 6.2.22.Final. While this version of Hibernate contains a number of valuable bug fixes, it does not work correctly in a native image. For developers using GraalVM, Hibernate should be temporarily downgraded to version 6.2.20.Final via the hibernate.version
property.
Versions 6.2.2, 6.1.7, and 5.8.10 of Spring Security have been released featuring improvements in documentation, dependency upgrades and notable fixes such as: the OAuth2AuthorizationExchange
class is now serializable since it uses a field from the OAuth2AuthorizationCodeAuthenticationToken
class that implements Serializable
; and a premature initialization of the ReactiveMethodSecurityConfiguration
when the context contains an implementation of the BeanPostProcessor
interface. More details on these releases may be found in the release notes for version 6.2.2, version 6.1.7 and version 5.8.10.
The release of Spring AI 0.8.0, characterized as the first milestone release, provides foundations for creating AI applications with high level features such as: portable API support across AI providers for chat, text-to-image and embedding models; portability across different providers with the Vector Store API; and function calling in AI Models by declaring implementations of the Java Function
interface to OpenAI models for use in their prompt responses. Further details on this release may be found in the list of issues.
The first milestone release of Spring for GraphQL 1.3.0 ships with dependency upgrades and new features such as: optimized implementations of the Spring Framework RequestPredicate
interface for GraphQL endpoints; and a new SyncGraphQlTransport
interface to provide a synchronous version of a GraphQL client without Spring WebFlux. More details on this release may be found in the release notes.
Similarly, the release of Spring for GraphQL 1.2.5 provides bug fixes, dependency upgrades and new features such as: an update to the ScrollSubrange
class for improved scrolling forward from the beginning as well as backward from the end when a position is not specified; and provide access to the SchemaMappingInspector
class from alternative builder implementations. Further details on this release may be found in the release notes.
Versions 1.2.0-M2, 1.1.3 and 1.0.6 of Spring Modulith have been released featuring bug fixes, dependency upgrades and improvements such as: fix the parameter name in the ApplicationModules
class to match that documented in the JavaDoc; and fixes and improvements in the Fundamentals section of the documentation. More details on these releases may be found in the release notes for version 1.2.0-M2, version 1.1.3 and version 1.0.6.
The second milestone release of Spring Authorization Server 1.3.0 delivers a new OAuth2AccessTokenAuthenticationContext
class to provide the ability to customize the access token response. Further details on this release may be found in the release notes.
Similarly, versions 1.2.2 and 1.1.5 of Spring Authorization Server have been released featuring dependency upgrades and an update to the application.yml
file in Getting Started guide so it aligns with use of the Spring Framework @Bean
annotation in the Spring Security UserDetailsService
interface described in the "Defining Required Components" section. More details on these releases may be found in the release notes for version 1.2.2 and version 1.1.5.
Versions 5.1.1 and 5.0.5 of Spring Batch have been released to provide an enhancement in the TaskletStep
class that checks for a dirty flag of step execution context before updating the inner loop. improvements in documentation, dependency upgrades and notable bug fixes such as: an incorrect error message in JobOperatorFactoryBean
class; and an ArrayIndexOutOfBoundsException
from the DefaultJobParametersConverter
class if the input contains an empty string. Further details on these releases may be found in the release notes for version 5.1.1 and version 5.0.5.
Versions 3.2.0-M1, 3.1.2 and 3.0.14 of Spring for Apache Kafka have been released featuring bug fixes, improvements in documentation, dependency upgrades and new features such as: support for the enforceRebalance()
method, defined in the Apache Kafka Consumer interface, as a first-class citizen; and a new method, setRecoveryCallback()
, in the RetryingDeserializer
class to provide a recovery callback to execute when retries have been exhausted. More details on these releases may be found in the release notes for version 3.2.0-M1, version 3.1.2 and version 3.0.14.
The first milestone release of Spring for Apache Pulsar 1.1.0 provides bug fixes, improvements in documentation, dependency upgrades and new features such as: a new @PulsarTypeMapping
annotation which can be used on message classes to specify default topic and/or schema information; and new types, AUTO_CONSUME
and AUTO_PRODUCE
, defined in the Apache Pulsar SchemaType
enumeration for producing raw JSON or Avro payloads with AUTO_SCHEMA
. Further details on this release may be found in the release notes.
Similarly, version 1.0.3 of Spring for Apache Pulsar has been released featuring improvements in documentation, dependency upgrades and resolution to an issue in which an attempt to call a method that does not exist upon using the non-shaded pulsar client that enables the AuthenticationToken
class. More details on this release may be found in the release notes.
Versions 3.2.2 and 3.1.4 of Spring LDAP have been released providing dependency upgrades and a new feature in which logging for LDAP searches may now be performed by the LdapTemplate
class. Further details on these releases may be found in the release notes for version 3.2.2 and version 3.1.4.
Payara
Payara has released their February 2024 edition of the Payara Platform that includes Community Edition 6.2024.2 and Enterprise Edition 6.11.0. Both editions feature bug fixes, dependency upgrades and new features such as: an increase in the length of system properties in the Admin Console from 512 to 4096 characters; an upgrade to Payara Security Connectors Suite 3.2 to expand the functionality of the OIDC Connector by enabling proxy configuration; and an improved fail-safe mechanism in dev-mode
. More details on these releases may be found in the release notes for Community Edition 6.2024.2 and Enterprise Edition 6.11.0.
Quarkus
Quarkus 3.7.4, the fourth maintenance release from Red Hat delivers notable resolutions to issues such as: a decrease in performance with the use of the @VirtualThreadUnit
annotation; the OIDC server is erroneously shown as not available; and an "Unable to find a JDBC driver" message for Hibernate Reactive after updating to version 3.7.1. Further details on this release may be found in the changelog.
Micronaut
The Micronaut Foundation has released version 4.3.3 of the Micronaut Framework featuring Micronaut Core 4.3.8, bug fixes, improvements in documentation, and updates to modules: Micronaut Hibernate Validator Configuration, Micronaut Data, Micronaut GCP and Micronaut Test. Developers who use Gradle are encouraged to update their applications to Micronaut Gradle Plugins 4.3.3. More details on this release may be found in the release notes.
Infinispan
Version 14.0.25.Final of Infinispan delivers dependency upgrades and notable changes such as: a resolution to a NullPointerException
resulting from the assumption that the hard coded getter and setter methods defined in the ResourceDMBean
class are based on MBean
attributes having a getter method; and the computeAsync()
method defined in the RemoteCache
interface can lose the result of remapping processing when executed concurrently against a new entry in the Hot Rod Client. Further details on this release may be found in the release notes.
Apache Software Foundation
The release of Apache Camel 4.4.0 ships with bug fixes, dependency upgrades and new features such as: new plugins for Camel JBang to modularize the capabilities; a new Kotlin API for Apache Camel; and a new Camel WebAssembly component. More details on this release may be found in the release notes.
Versions 9.0.86 and 8.5.99 of Apache Tomcat have been released featuring bug fixes and notable changes: improvements to the CSRF prevention filter including the ability to skip adding nonces for resource name and subtree URL patterns; support for user provided instances of the SSLContext
class configured on the SSLHostConfigCertificate
class; and review usage of debug logging and downgrade trace or data dumping operations from debug level to trace. Further details on these releases may be found in the release notes for version 9.0.86 and version 8.5.99.
Versions 3.0.0-beta2 and 2.23.0 of Apache Log4j have been released providing notable changes such as: support for LMAX Disruptor 4.x; deprecate the RingBufferLogEventHandler
class for removal in version 3.x; and fix a regression in the JdkMapAdapterStringMap
class to improve its performance. More details on these releases may be found in the release notes for version 3.0.0-beta2 and version 2.23.0.
JobRunr
Version 6.3.5 of JobRunr, a library for background processing in Java that is distributed and backed by persistent storage, has been released featuring a bug fix related to an IllegalStateException
from not being able to find "variable 3" in the stack due to the Java SerializedLambda
class returning an unknown value of its implMethodKind
field. Further details on this release may be found in the release notes.
Eclipse Vert.x
Version 4.5.4 of Eclipse Vert.x has been released delivering notable changes such as: an improved implementation of the sendFile()
method defined in the HttpServerResponse
interface that closes the file when an early failure is returned; and a resolution to the load()
method defined in the ClassLoaderUtils
class that didn't resolve all available class loaders causing some classes to not be found. More details on this release may be found in the release notes and list of deprecations and breaking changes.
Testcontainers for Java
The release of Testcontainers for Java 1.19.6 ships with bug fixes, dependency upgrades and new modules to support the Qdrant, Milvus, ChromaDB and Weaviate databases. Further details on this release may be found in the release notes.
Gradle
The first release candidate of Gradle 8.7 provides: 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.