This week's Java roundup for January 8th, 2024 features news highlighting: JEP drafts for final versions of OpenJDK features String Templates and Implicitly Declared Classes and Instance Main Methods; the Payara Platform 2024 roadmap; and a new TornadoVM plugin for IntelliJ IDEA.
OpenJDK
Ron Pressler, Architect and Technical Lead for Project Loom at Oracle, and Jim Laskey, Software Development Director at Oracle, have submitted JEP Draft 8323335, Implicitly Declared Classes and Instance Main Methods (Final) to finalize this feature. Formerly known as Unnamed Classes and Instance Main Methods (Preview), Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), this JEP incorporates enhancements in response to feedback from the two previous rounds of preview, namely JEP 463, Implicit Classes and Instance Main Methods (Second Preview), to be delivered in the upcoming release of JDK 22, and JEP 445, Unnamed Classes and Instance Main Methods (Preview), delivered in JDK 21. This JEP proposes to "evolve the Java language so that students can write their first programs without needing to understand language features designed for large programs." This JEP moves forward the September 2022 blog post, Paving the on-ramp, by Brian Goetz, Java Language Architect at Oracle. The latest draft of the specification document by Gavin Bierman, Consulting Member of Technical Staff at Oracle, is open for review by the Java community. More details on JEP 445 may be found in this InfoQ news story.
Laskey has also submitted JEP Draft 8323333, String Templates (Final), to finalize this feature after two rounds of preview, namely JEP 459, String Templates (Second Preview), to be delivered in the upcoming release of JDK 22, and JEP 430, String Templates (Preview), delivered in JDK 21. This JEP proposes to enhance the Java programming language with string templates, string literals containing embedded expressions, that are interpreted at runtime where the embedded expressions are evaluated and verified. Further details on JEP 430 may be found in this InfoQ news story.
JDK 23
Build 5 of the JDK 23 early-access builds was made available this past week featuring updates from Build 4 that include fixes for various issues. More details on this release may be found in the release notes.
JDK 22
Build 31 of the JDK 22 early-access builds was also made available this past week featuring updates from Build 30 that include fixes to various issues. Further details on this build may be found in the release notes.
For JDK 23 and JDK 22, developers are encouraged to report bugs via the Java Bug Database.
Spring Framework
Versions 6.1.3 and 6.0.16 of Spring Framework have been released featuring bug fixes, improvements in documentation, dependency upgrades and new features such as: exclude full request URIs containing sensitive query parameters from remaining mono checkpoints while using the WebClient
interface; allow the @CrossOrigin
annotation to provide a Access-Control-Allow-Private-Network
header from an application to Google Chrome if the Access-Control-Request-Private-Network
header (Private Network Access) is sent in the preflight request; and avoid early resolution of the getMostSpecificMethod()
method defined in the ClassUtils
class from within the CommonAnnotationBeanPostProcessor
class due to it being called at an outer level before finding an annotation. These versions will be shipped with the upcoming releases of Spring Boot 3.2.2 and 3.1.8. More details on these releases may be found in the release notes for version 6.1.3 and version 6.0.16.
Versions 2023.1.2 and 2023.0.8 of Spring Data have been released providing bug fixes and respective dependency upgrades to sub-projects such as: Spring Data Commons 3.2.2 and 3.1.8; Spring Data MongoDB 4.2.2 and 4.1.8; Spring Data Elasticsearch 5.2.2 and 5.1.8; and Spring Data Neo4j 7.2.2 and 7.1.8. These versions may also be consumed by the upcoming releases of Spring Boot 3.2.2 and 3.1.8, respectively.
The release of Spring Web Services 4.0.10 ships with notable changes such as: support for jar:nested
, a URI scheme for resources within uber JARs as part of a new loader implementation in Spring Boot 3.2, within the SchemaFactoryUtils
class; removal of a duplicate dependency declaration for the Apache HttpComponents HttpClient
interface; and a dependency upgrade to Spring Framework 6.0.16. Further details on this release may be found in the release notes.
The release of Spring Cloud Dataflow 2.11.2 delivers notable changes such as: an upgrade to Logback 1.2.13 to resolve CVE-2023-6378, a serialization vulnerability in the Logback receiver component that allows an attacker to mount a denial-of-service attack by sending poisoned data; update the BatchVersion
enum and the JdbcSearchableJobExecutionDao
class to support use of the JOB_CONFIGURATION_LOCATION
field that was removed in Batch5-based schemas that broke some queries; and a resolution to the getJobExecutionsWithStepCountFilteredByTaskExecutionId()
method in the aforementioned JdbcSearchableJobExecutionDao
class does not support BATCH_
task prefixes. More details on this release may be found in the release notes.
Payara
The Payara team has provided a retrospective on 2023 and a roadmap for the Payara Platform in 2024 and beyond. Highlights in 2023 included: the release of Payara Platform 6; support for JDK 21 and MicroProfile 6.1; and the introduction of Payara Starter. The comprehensive roadmap for 2024 includes: their vision for all Payara products through 2026; detailed individual roadmaps of Payara Server, Payara Micro, Payara Cloud and Payara Developer Tools; and support for Jakarta EE 11, scheduled for a GA release in June/July 2024. More details may be found in Empowering Enterprise Innovation with Jakarta EE, presented at the December 2023 Payara Virtual Conference by Louise Castens, Senior Product Manager at Payara, and Luqman Saeed, Contract Technical Writer at Payara.
TornadoVM
TornadoInsight, an "open-source IntelliJ IDEA plugin for enhancing the developer experience when working with TornadoVM," was introduced by the TornadoVM team this past week. Key features include: an on-the-fly static checker that scans TornadoVM code in real-time and reports any Java features that are not supported by TornadoVM; and a dynamic testing framework to simplify the testing process for individual TornadoVM tasks. InfoQ will follow up with a more detailed news story.
Micrometer
Versions 1.12.2 and 1.11.8 of Micrometer Metrics both deliver dependency upgrades and notable bug fixes such as: add the missing version
declarations in the io.netty:netty-transport-native-epoll
artifact in the POM file that yielded a compile error; a rename of the thread that polls meters in the StepMeterRegistry
class that shared the same name with a publishing thread; and a fix in the unaryRpcAsync()
method defined in the GrpcObservationTest
class for improved concurrency. Further details on these releases may be found in the release notes for version 1.12.2 and version 1.11.8.
Similarly, versions 1.2.2 and 1.1.9 of Micrometer Tracing both provide dependency upgrades and notable bug fixes such as: the SimpleTraceContextBuilder
class not overriding values from an implementation of the TraceContext
interface; and manually created baggage fields do not propagate across threads using the ObservationAwareSpanThreadLocalAccessor
class. More details on these releases may be found in the release notes for version 1.2.2 and version 1.1.9.
Project Reactor
Project Reactor 2023.0.2, the second maintenance release, provides dependency upgrades to reactor-core 3.6.2
, reactor-netty 1.1.15
and reactor-pool 1.0.5
. There was also a realignment to version 2023.0.2 with the reactor-kafka 1.3.22
, 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.15, the fifteenth maintenance release, provides dependency upgrades to reactor-core 3.5.14
, reactor-netty 1.1.15
and reactor-pool 1.0.5
. There was also a realignment to version 2022.0.15 with the reactor-kafka 1.3.22
, 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.40, codenamed Europium-SR40, provides dependency upgrades to reactor-core 3.4.35
and reactor-netty 1.0.41
. There was also a realignment to version 2020.0.40 with the reactor-pool 0.2.12
, reactor-kafka 1.3.22
, 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.
Apache Software Foundation
Versions 11.0.0-M16, 10.1.18, 9.0.85 and 8.5.98 of Apache Tomcat all feature bug fixes and notable changes such as: refactor the VirtualThreadExecutor
class so that it can be used by the NIO2 connector which was using platform threads despite having been configured to use virtual threads; correct a regression in the fix for issue 67675 that broke TLS key file parsing for format keys typically generated by OpenSSL 1.0.2 that do not specify an explicit pseudo-random function and only rely on the default; and allow multiple operations with the same name on introspected MBeans, fixing a regression caused by the introduction of a second addSslHostConfig()
method. More details on these releases may be found in the release notes for version 11.0.0-M16, version 10.1.18, version 9.0.85 and version 8.5.98.
After the release of Apache Cocoon 2.3.0, the team has recently decided to retire the 2.1 and 3.0 branches of Cocoon. The 2.1 branch, initially released more than 20 years ago, is now considered obsolete. The 3.0 branch was an attempt to rewrite Cocoon from scratch, but was never finalized. Apache Cocoon, a Spring-based framework (since version 2.2), is built around the concepts of separation of concerns and component-based development.
Grails
The Grails Foundation has released versions 5.3.6 and 3.3.18 of the Grails Framework with notable changes such as: revert the recent upgrade to SnakeYAML, Micronaut, Spring and Spring Boot because they were not backward compatible; add a workflow to manually trigger a release to SDKMan; and update the NexusPublishing extension to increase the delay of retries from 2000 to 3000 milliseconds. Further details on these releases may be found in the release notes for version 5.3.6 and version 3.3.18.
Piranha Cloud
The release of Piranha 23.12.0 delivers notable changes such as: a resolution to a Windows build failure by downgrading Eclipse WaSP, the compatible implementation for Jakarta Pages and Jakarta Standard Tag Library, from version 3.2.1 to 3.2.0; a new UberPiranha
class and corresponding uber
module to initialize Piranha on the command line; and the ability to set a temporary directory for Piranha Uber. More details on this release may be found in their documentation and issue tracker.
OpenXava
The release of OpenXava 7.2.2 provides dependency upgrades and notable bug fixes such as: multiple @RowStyle
annotations applied to the same row, but only one is considered; the @ListProperties
annotation does not support several properties when used in conjunction with the @Tree
or @Editor("TreeView")
annotations; and database connection leaks when using the calendar list format. Further details on this release may be found in the release notes.
Gradle
The second release candidate of Gradle 8.6 provides continuous improvement in: support for custom encryption keys in the configuration cache via the GRADLE_ENCRYPTION_KEY
environment variable; improvements in error and warning reporting; improvements in the Build Init Plugin to support various types of projects; and enhanced build authoring for plugin authors and build engineers to develop custom build logic. More details on this release may be found in the release notes.