Java News Roundup: JDK 21 Updates, Spring Data 2023.0, JobRunr 6.2, Micronaut 4.0 Milestones

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for May 8th, 2023 features news from OpenJDK, JDK 21, GraalVM Native Build Tools 0.9.22, Spring Framework, Spring Data and Spring Shell releases, Micronaut 4.0-M3, Quarkus 3.0.3, Eclipse Vert.x releases, Micrometer Metrics and Tracing releases, Groovy 4.0.12, Tomcat releases, Maven 3.9.2, Piranha 23.5.0, Reactor 2022.0.7, JobRunr 6.2, JDKMon releases and Devoxx UK.

OpenJDK

JEP 448, Vector API (Sixth Incubator), has been promoted from Proposed to Target to Targeted for JDK 21. This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview).

JEP 441, Pattern Matching for switch, has been promoted from Proposed to Target to Targeted for JDK 21. This JEP finalizes this feature and incorporates enhancements in response to feedback from the previous four rounds of preview: JEP 433, Pattern Matching for switch (Fourth Preview), delivered in JDK 20; JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. This feature enhances the language with pattern matching for switch expressions and statements. InfoQ will follow up with a more detailed news story.

JEP 440, Record Patterns, has been promoted from Proposed to Target to Targeted for JDK 21. This JEP also finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for statement. InfoQ will follow up with a more detailed news story.

JEP 439, Generational ZGC, has been promoted from Proposed to Target to Targeted for JDK 21. This JEP proposes to “improve application performance by extending the Z Garbage Collector (ZGC) to maintain separate generations for young and old objects. This will allow ZGC to collect young objects, which tend to die young, more frequently.” InfoQ will follow up with a more detailed news story.

JEP 449, Deprecate the Windows 32-bit x86 Port for Removal, has been promoted from Candidate to Proposed to Target for JDK 21. This feature JEP, introduced by George Adams, senior program manager at Microsoft, proposes to deprecate the Windows x86-32 port with the intent to remove it in a future release. With no intent to implement JEP 436, Virtual Threads (Second Preview), in 32-bit platforms, removing support for this port will enable OpenJDK developers to accelerate development of new features. The review is expected to conclude on May 18, 2023.

JEP 443, Unnamed Patterns and Variables (Preview), has been promoted from Candidate to Proposed to Target for JDK 21. This preview JEP proposes to “enhance the language with unnamed patterns, which match a record component without stating the component’s name or type, and unnamed variables, which can be initialized but not used.” Both of these are denoted by the underscore character as in r instanceof _(int x, int y) and r instanceof _. The review is expected to conclude on May 15, 2023.

JEP 453, Structured Concurrency (Preview), has been promoted from its JEP Draft 8306641 to Candidate status. Formerly a incubating API, this initial preview incorporates enhancements in response to feedback from the previous two rounds of incubation: JEP 428, Structured Concurrency (Incubator), delivered in JDK 19; and JEP 437, Structured Concurrency (Second Incubator), delivered in JDK 20. The only significant change features the fork() method defined in the StructuredTaskScope class returns an instance of TaskHandle rather than a Future since the get() method in the TaskHandle interface was restructured to behave the same as the resultNow() method in the Future interface.

JEP 452, Key Encapsulation Mechanism API, has been promoted from its JEP Draft 8301034 to Candidate status. This feature JEP type proposes to: satisfy implementations of standard Key Encapsulation Mechanism (KEM) algorithms; satisfy use cases of KEM by higher level security protocols; and allow service providers to plug-in Java or native implementations of KEM algorithms. This draft was recently updated to include a major change that eliminates the DerivedKeyParameterSpec class in favor of placing fields in the argument list of the encapsulate(int from, int to, String algorithm) method.

JEP 451, Prepare to Disallow the Dynamic Loading of Agents, has been promoted from its JEP Draft 8306275 to Candidate status. Originally known as Disallow the Dynamic Loading of Agents by Default, and following the approach of JEP Draft 8305968, Integrity and Strong Encapsulation, this JEP has evolved from its original intent to disallow the dynamic loading of agents into a running JVM by default to issue warnings when agents are dynamically loaded into a running JVM. Goals of this JEP include: reassess the balance between serviceability and integrity; and ensure that a majority of tools, which do not need to dynamically load agents, are unaffected.

The joint draft specification for JEP 440, Record Patterns, and JEP 441, Pattern matching for switch, has been updated by Gavin Bierman, consulting member of technical staff at Oracle, for review by the Java community. Significant changes include: an update of the specification of type inference for record patterns; and removal of the non-denotable “any”‘ patterns and the process of resolving patterns in favor of a compile-time notion of a type pattern being “null-matching” or not.

John Rose, JVM architect at Oracle, has published a whitepaper that outlines his concerns on how Project Lilliput, with a goal to reduce the object header to 64 bits, could affect development in Project Valhalla.

JDK 21

Build 22 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 21 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM Native Build Tools

On the road to version 1.0, Oracle Labs has released version 0.9.22 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 fix for the URL lookup of the GraalVM Reachability Metadata Repository; add support for the default-for attribute; and a dependency upgrade to Metadata 0.3.0. More details on this release may be found in the changelog.

Fabio Niephaus, principal researcher on the GraalVM team at Oracle Labs, has announced improvements to GraalVM memory usage in native image builds. In particular: it only uses available memory, uses less overall memory, and faster builds of large applications after raising the memory limit to 32GB.

Spring Framework

The release of Spring Framework 6.0.9 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: consistent support for the MultiValueMap interface and common Map implementations in the CollectionFactory class; introduce internal constants for implicit bounds in the TypeUtils class; and a new matchesProfiles() method in the Environment interface for profile expressions. More details on this release may be found in the release notes.

Spring Data 2023.0.0, codenamed Ullman, has been released featuring: new keyset-based scrolling for Spring Data MongoDB, Spring Data Neo4j and Spring Data JPA; improved support for AOT processing with Querydsl and Kotlin; and upgrades to the Spring Data sub-projects. More details on this release may be found in the release notes.

Versions 2022.0.6 and 2021.2.12, both service releases of Spring Data, ship with bug fixes and dependency upgrades to sub-projects such as: Spring Data Commons 3.0.6 and 2.7.12; Spring Data MongoDB 4.0.6 and 3.4.12; Spring Data Elasticsearch 5.0.6 and 4.4.12; and Spring Data Neo4j 7.0.6 and 6.3.12.

Versions 3.1.0-RC1, 3.0.3 and 2.1.9 of Spring Shell have been released featuring: a migration of documentation to Asciidoctor Spring Backends; a dependency upgrade to JLine 3.23.0; and a backport of bug fixes. These versions build upon Spring Boot versions 3.1.0-RC2, 3.0.6 and 2.7.11, respectively. More details on these releases may be found in the release notes for version 3.1.0-RC1, version 3.0.3 and version 2.1.9.

Micronaut

The Micronaut Foundation has provided the second and third milestone releases of Micronaut Framework 4.0.0 featuring bug fixes, improvements and new features such as: new interfaces, MessageBodyWriter and MessageBodyReader, that can be used on both the client and the server as a single place to add custom writing and reading responses; support for annotation-based CORS configuration; additional configuration to endpoints for the service-http-client.enabled property with a default set to false; and support for compilation-time checked expressions in Micronaut annotations. More details on these releases may be found in the release notes for version 4.0.0-M2 and version 4.0.0-M3.

Quarkus

Quarkus 3.0.3.Final, the third maintenance release, delivers notable changes such as: a fix for an exception thrown due to null parameter in the SimpleResourceInfo interface in a response filter; improved container runtime detection; a workaround for unnecessary information logs in Hibernate ORM; and a resolution for unexpected behavior in reactive native mode with Quarkus 3.0.1. More details on this release may be found in the changelog.

WildFly

The WildFly team has published the 2023-2024 release plan that includes beta and final releases of WildFly 29 through WildFly 34. Releases were temporarily moved to a feature-boxed approach during the transition to Jakarta EE 10. This new release schedule is a return to the previously-used time-boxed approach.

Eclipse Vert.x

Eclipse Vert.x 4.4.2 has been released with dependency upgrades and notable changes such as: a new messageHandler() method in the GraphQLWSHandler class to intercept messages; a resolution for erratic behavior using concurrent access in the SchemaRepository interface; and an improved toObservable() method in the SQLRowStream class that eliminates a potential NullPointerException. More details on this release may be found in the release notes and deprecations and breaking changes.

Similarly, Eclipse Vert.x 3.9.16 has been released that delivers notable fixes: metrics blocking the event loop after the update to Vert.x 3.9.14; and STOMP server process client frames that initially would not send a connect frame. The 3.9 release train reached end-of-life in 2022, but service releases will be maintained until the end of 2023. More details on this release may be found in the release notes.

Micrometer

Versions 1.11.0, 1.10.7 and 1.9.11 of Micrometer Metrics have been released with new features such as: a reduction of overall memory allocation while exporting metrics using the DynatraceExporterV2 class; compiler parameter metadata in the CountedAspect class is no longer required; and the addition of metrics for the total number of running application threads in the JVM. More details on these releases may be found in the release notes for version 1.11.0, version 1.10.7 and version 1.9.11.

Similarly, versions 1.1.1, 1.1.0, 1.0.6 and 1.0.5 of Micrometer Tracing have been released that provides notable changes that include: a new constructor in the ObservationAwareSpanThreadLocalAccessor class that accepts an instance of the ObservationRegistry interface; align annotations that match changes in Micrometer Metrics; no-op implementations for the Propagator, Propagator.Getter and Propagator.Setter interfaces; and an improved getBaggage() method in the BaggageManager interface that consistently returns an instance of the Baggage interface if baggage doesn’t exist. More details on these releases may be found in the release notes for version 1.1.1, version 1.1.0, version 1.0.6 and version 1.0.5.

Apache Software Foundation

The release of Apache Groovy 4.0.12 features bug fixes, dependency upgrades and improvements: a more detailed error message when applying an instance of the ClassNode class using generics in Abstract Syntax Tree (AST) Transformations; support for virtual threads in the Groovy-Integrated Query (GINQ); and bytecode optimizations for generated methods using Java records. More details on this release may be found in the release notes.

Versions 11.0.0-M6 and 9.0.75 of Apache Tomcat ship with notable changes such as: improvements to the JsonAccessLogValve class to support more patterns for headers and attributes; improvements to the AccessLogValue class to change output of vertical tab from v to u000b and escape the timestamp output if an instance of the SimpleDateFormat class is used containing verbatim characters. Support for the HTTP connector settings, rejectIllegalHeader and allowHostHeaderMismatch, were deprecated in version 9.0.75 and removed in version 11.0.0-M6 and are now hard-coded to the previous default values. More details on these releases may be found in the release notes for version 11.0.0-M6 and version 9.0.75.

Apache Maven 3.9.2 has been released with improvements such as: issue a warning if a plugin depends on Maven Compat; print suppressed exceptions when a Maven Mojo fails; an improvement and extension of plugin validation; and display additional information when using -Dmaven.repo.local.recordReverseTree=true command line argument. More details on this release may be found in the release notes.

Piranha

The release of Piranha 23.5.0 provides notable changes such as: an update of external components; ensure JDK 18+ modules are released when executing the release with JDK 20; and change --ssl-keystore-file to --https-keystore-file. Also, the MimeTypeManager and LoggingManager interfaces, TEMPDIR extension and Piranha Naming modules were all deprecated. More details on this release may be found in their documentation and issue tracker.

Project Reactor

Project Reactor 2022.0.7, the seventh maintenance release, provides dependency upgrades to reactor-core 3.5.6, reactor-netty 1.1.7 and reactor-kafka 1.3.18. There was also a realignment to version 2022.0.7 with the reactor-pool 1.0.0, 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.

JobRunr

The release of JobRunr and JobRunr Pro 6.2.0 delivers: an important bugfix for JobRunr on the Windows platform; improved performance; and dependency upgrades to support Spring Boot 3.0 and Quarkus 3.0. More details on this release may be found in the release notes.

JDKMon

Versions 17.0.57, 17.0.55 and 17.0.53 of JDKMon, a tool that monitors and updates installed JDKs, has been made available this past week. Created by Gerrit Grunwald, principal engineer at Azul, these new versions provide changes such as: CVE detection now supports CVSS 2 and CVSS 3; download dialog for builds of OpenJDK now supports the standard C library (libc) selection, e.g., musl libc; a fix for the Linux script to build the application installer; and the addition of a Linux RPM build for the AArch64 architecture.

Devoxx United Kingdom

Devoxx United Kingdom was held at the Business Design Centre in London, England this past week featuring speakers from the Java community who delivered talks on topics such as: Java, Cloud, Data, AI, Machine Learning, Robotics, Programming Languages, Security, Architecture, Developer Practices and Culture.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JEPs for JDK 21, Spring Cloud AWS 3.0, OptaPlanner to Timefold

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for May 1st, 2023 features news from OpenJDK, JDK 21, Spring Boot 3.1.0-RC2, Spring Modulith 0.6, Spring Cloud for Amazon Web Services 3.0.0, Spring Cloud Data Flow 2.10.3, Spring Tools 4.18.2, Infinispan 14.0.9.Final, Open Liberty 23.0.0.4, Quarkus 3.0.2 and 2.16.7, Helidon 3.2.1, Apache Camel 4.0.0-M3, Arquillian 1.7.0 and OptaPlanner transitions to Timefold.

OpenJDK

JEP 448, Vector API (Sixth Incubator), has been promoted from Candidate to Proposed to Target for JDK 21. This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview). The review is expected to conclude on May 9, 2023.

JEP 445, Unnamed Classes and Instance Main Methods (Preview), has been promoted from Candidate to Proposed to Target status for JDK 21. This feature JEP, formerly known as Flexible Main Methods and Anonymous Main Classes (Preview) and Implicit Classes and Enhanced Main Methods (Preview), 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. Gavin Bierman, consulting member of technical staff at Oracle, has published the first draft of the specification document for review by the Java community. The review is expected to conclude on May 12, 2023. InfoQ will follow up with a more detailed news story.

JEP 441, Pattern Matching for switch, has been promoted from Candidate to Proposed to Target for JDK 21. This JEP also finalizes this feature and incorporates enhancements in response to feedback from the previous four rounds of preview: JEP 433, Pattern Matching for switch (Fourth Preview), delivered in JDK 20; JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. This feature enhances the language with pattern matching for switch expressions and statements. The review is expected to conclude on May 11, 2023. InfoQ will follow up with a more detailed news story.

JEP 440, Record Patterns, has been promoted from Candidate to Proposed to Target for JDK 21. This JEP finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for statement. The review is expected to conclude on May 11, 2023. InfoQ will follow up with a more detailed news story.

JEP 439, Generational ZGC, has been promoted from Candidate to Proposed to Target for JDK 21. This JEP proposes to “improve application performance by extending the Z Garbage Collector (ZGC) to maintain separate generations for young and old objects. This will allow ZGC to collect young objects, which tend to die young, more frequently.” The review is expected to conclude on May 10, 2023. InfoQ will follow up with a more detailed news story.

JEP 404, Generational Shenandoah (Experimental), has been promoted from Candidate to Proposed to Target status for JDK 21. This JEP proposes to “enhance the Shenandoah garbage collector with generational collection capabilities to improve sustainable throughput, load-spike resilience, and memory utilization.” Compared to other garbage collectors, such as G1, CMS and Parallel, Shenandoah currently requires additional heap headroom and has a more difficult time recovering space occupied by unreachable objects. The review is expected to conclude on May 12, 2023. InfoQ will follow up with a more detailed news story.

JEP 450, Compact Object Headers (Experimental), has been promoted from its JEP Draft 8294992 to Candidate status. Under the auspices of Project Lilliput, the JEP draft proposes to reduce the size of Java object headers from 96 or 128 bits to 64 bits. Project Lilliput, created by Roman Kennke, principal engineer at Amazon Web Services, marked a milestone 1 in May 2022 by achieving 64-bit headers.

Daniel Smith, Programming Language Designer at Oracle, has announced that JEP 401, formerly known as Null-Restricted Value Object Store (Preview) and Primitive Classes (Preview), has been renamed to Flattened Heap Layouts for Value Objects. Smith has provided an updated specification document for review by the Java community.

JDK 21

Build 21 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 20 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Spring Framework

The second release candidate of Spring Boot 3.1.0 ships with new features such as: change the default shutdown in the DockerComposeProperties class to stop; automatically apply the TestcontainersLifecycleApplicationContextInitializer class for context tests; and the addition of Docker Compose service connection support for the SQL Server, Oracle Database, Liquibase, Flyway and Cassandra databases. There was also a deprecation of the Couchbase SSL keystore properties, spring.couchbase.env.ssl.key-store and spring.couchbase.env.ssl.key-store-password, in favor of SSL bundle support in Couchbase. More details on this release may be found in the release notes.

The release of Spring Modulith 0.6 delivers bug fixes, dependency upgrades and notable new features such as: auto-configuration for MongoDB transactions if the event publication registry is used; the event publication registry now enables asynchronous processing and shutdown behavior; the @EnableScenario annotation for using the Scenario Testing API with @SpringBootTest integration tests; and support for jMolecules architecture stereotypes in the Application Module Canvas. The Spring Modulith team has also decided to elevate this project into a top-level, non-experimental Spring project. The plan is to release a 1.0-M1 version after the GA release of Spring Boot 3.1. Further details on this release may be found in the release notes.

Version 3.0.0 of Spring Cloud for Amazon Web Services has been released with new features: compatibility with Spring Boot 3.0; built on the top of AWS SDK V2 for Java; a completely re-written SQS integration module; and a new integration of DynamoDB. More details on this release may be found in the release notes.

The release of Spring Cloud Data Flow 2.10.3 primarily addresses security issues in transitive dependencies such as: spring-security-oauth2-client-5.4.2; spring-expression-5.2.11; spring-webmvc-5.3.25; json-smart-2.3; and jettison-1.51. There were also dependency upgrades to Spring Boot 2.7.11 and Spring Cloud sub-projects. Further details on this release may be found in the release notes.

Spring Tools 4.18.1 has been released featuring enhancements such as: support for navigating to a Spring property file when inspecting on an @Value annotation; support for the @ConditionalOnProperty annotation in property navigation; and early access to Eclipse 2023-06 milestone builds. The Spring Tools team anticipates version 4.19.0 to be released in late June 2023. More details on this release may be found in the release notes.

Infinispan

Infinispan 14.0.9.Final has been released with notable changes such as: fix the failure of Infinispan third party integration tests with JDK17; document how to monitor cross-site replication; remove the dependency Jaeger test containers; and fix the port number in the properties file. Further details on this release may be found in the changelog.

Open Liberty

IBM has released Open Liberty 23.0.0.4 featuring: container images for the ARM64 architecture along with the existing AMD64, PPC64LE and S390X architectures; and a resolution for CVE-2023-24998, a vulnerability in Apache Commons FileUpload such that an attacker can trigger a denial-of-service with malicious uploads due to the number of processed request parts is not limited.

Quarkus

Quarkus 3.0.2.Final, the second maintenance release, ships with notable changes such as: rename the server-list file to hosts in the Infinispan Dev Services guide; Dev UI2 displaying the wrong Java version; the k3s flavor name is not properly documented in the Kubernetes Dev Services guide; and RESTEasy Reactive streaming resource methods leads to NoSuchMethodException exception in native mode. More details on this release may be found in the release notes.

Quarkus 2.16.7.Final has also been released featuring: a fix for the algorithm comparison bug in OIDC code loading the token decryption key; a minor update to the OIDC UserInfo class throwing NullPointerException if a string or boolean property with a given name does not exist; Quarkus dev mode not working with a certain type of project directory tree when using the @ApplicationScoped annotation; and throw an exception if the OIDC client fails to acquire a token. Further details on this release may be found in the release notes.

Helidon

Oracle has released Helidon 3.2.1 with new features such as: an enabled flag to the JpaExtension class to permit subsequent refactoring and replacement; integration changes with the MicroProfile Rest Client and Fault Tolerance specifications to handle async calls due to an issue with the default invocation context in the Weld specification; and support for different propagators with integration of Jaeger OpenTelemetry. More details on this release may be found in the release notes.

Apache Software Foundation

The third milestone release of Apache Camel 4.0.0 features bug fixes, dependency upgrades and improvements such as: change the default Micrometer meter names to follow the Micrometer naming conventions; support for Micrometer Observation; directly use the HTTP server in the implementation of Spring Boot; and add a listener for added/removed HTTP endpoints that make it easier for runtimes, such as Spring Boot, to use platform-http with Camel and its own HTTP server. Further details on this release may be found in the release notes.

Arquillian

Arquillian 1.7.0.Final has been released featuring: support for Jakarta Servlet 6.0; support for HTTPS in URLs injected with the @ArquillianResource annotation; and a fix for a NoClassDefFoundError exception from the LoggerFactory class when using TestNG 7.5+. More details on this release may be found in the changelog.

OptaPlanner Transitions to Timefold

OptaPlanner, an open source AI constraint solver for software developers, will transition to Timefold, a new planning optimization company created by Maarten Vandenbroucke, co-founder and CEO, and Geoffrey De Smet, co-founder and CTO. Created by De Smet while working at Red Hat as a senior principal software engineer, OptaPlanner has matured under the auspices of Red Hat by providing their own build of OptaPlanner. InfoQ will follow up with a more detailed news story.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: Quarkus 3.0, MicroStream 8.0, JEP 442, GraalVM, Infinispan

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for April 24th, 2023 features news from OpenJDK, JDK 21, GlassFish 7.0.4, GraalVM 22.3.2, Microsoft OpenJDK, Spring releases. Quarkus 3.0.0, MicroStream 8.0.0, Micronaut 3.9.1, Hibernate ORM 6.2.2, Hibernate Reactive 2.0.0.CR1, Infinispan 15.0.0.Dev01, Apache Camel 3.20.4, Camel Quarkus 2.13.3, JUnit 5.9.3, JReleaser 1.6.0, JobRunr 6.1.4, JDKMon 17.0.49 and Foojay.io.

OpenJDK

JEP 442, Foreign Function & Memory API (Third Preview), has been promoted from Proposed to Target to Targeted status for JDK 21. This JEP incorporate refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList class.

JDK 21

Build 20 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 19 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GlassFish

The release of GlassFish 7.0.4 ships with dependency upgrades and bug fixes such as: redirections from the Admin Console that result in a blank page upon deployment/undeployment of an application; a potential leak when a resource is loaded from a class within an EAR/JAR file that is invoked from a dynamically loaded class by a custom class loader; and an empty list for configuration templates from the Admin Console upon creating new configuration. The one new feature in this new version is the ability to add methods to build classpath of the ScatteredArchive class from the current classpath. More details on this release may be found in the release notes.

GraalVM

Oracle Labs has released the Community Edition of GraalVM 22.3.2 that aligns with the April 2023 edition of the Oracle Critical Patch Update Advisory. This release includes the updated versions of OpenJDK 17.0.7 and 11.0.19, and Node.js 16.19.1. Further details on this release may be found in the release notes.

Microsoft Build of OpenJDK

Also concurrent with Oracle’s Critical Patch Update for April 2023, Microsoft has released their patch and security update of Microsoft Build of OpenJDK featuring numerous patch releases of their downstream distributions of OpenJDK 17 and OpenJDK 11. This release also included: improvements to their experimental Escape Analysis feature, enabling the Class Data Sharing (CDS) archives in the MIcrosoft Build of OpenJDK 17 binaries; and a non-root user in the container images for developers interested in enhanced security at the container level. More details on this release and the Escape Analysis feature may be found in the release notes and this detailed InfoQ news story.

Spring Framework

Spring Cloud 2021.0.7, codenamed Jubilee, has been released featuring updates to sub-projects such as: Spring Cloud Gateway 3.1.7, Spring Cloud Config 3.1.7, Spring Cloud Kubernetes 2.1.7 and Spring Cloud Sleuth 3.1.8. Further details on this release may be found in the release notes.

The first milestone release of Spring Security Kerberos 2.0.0 was made available this past week featuring support for Spring Boot 3.0 and Spring Security 6.0. This new version also includes: an upgrade to Gradle 8.0, a migration of the documentation to Antora, and a reboot of the project with Spring Boot 3.0. More details on this release may be found in the release notes.

Quarkus

After six alpha releases, one beta release and two release candidates, the much anticipated GA release of Quarkus 3.0 was made available by Red Hat this past week. New features include: support for Jakarta EE 10, MicroProfile 6.0, Hibernate ORM 6.0 and Hibernate Reactive 2.0; a more extensible and easier-to-use Dev UI with a new-and-improved look-and-feel; and an upgrade to SmallRye Mutiny 2.0.0 that uses the Java Flow API instead of Reactive Streams. Further details on this release may be found in the release notes for version 3.0.1 and version 3.0.0. InfoQ will follow up with a more detailed news story.

MicroStream

MicroStream released version 8.0 of their Java-native persistence layer product that delivers: a minimal version of JDK 11; full implementation of their Lazy Collections; improvements in the JDK 17 binary type handler; a more secure SBOM; support for multiple implementations of the StorageManager interface within Spring Boot 2.x; integration with Quarkus; and an updated integration of the Jakarta EE Contexts and Dependency Injection (CDI) specification. More details on this release may be found in the release notes and InfoQ will follow up with a more detailed news story.

Micronaut

The Micronaut Foundation has released Micronaut Framework 3.9.1 featuring bug fixes and updates to modules: Micronaut AWS and Micronaut Kafka. There was also a dependency upgrade to GraalVM 22.3.2. Further details on this release may be found in the release notes.

Hibernate

Hibernate ORM 6.2.2.Final has been released with bug fixes and improvements such as: improved performance of batch fetch loading, via the @BatchSize annotation, for enhanced caching of SQL AST; and the ability to utilize a SQL ARRAY valued parameter to pass all IDs at once when loading entities or collections by multiple keys. This is implemented for all multi-key loads via batch fetching and the byMultipleIds() and byMultipleNaturalId() methods defined in the Session interface.

The first release candidate of Hibernate Reactive 2.0.0 delivers compatibility with Hibernate ORM 6.2 and Vert.x 4.4. Other notable changes include: improved scalability of the BlockingIdentifierGenerator class; allow use of SQL Server Dialect 11+; a resolution for a ClassCastException in Db2; and a fix for saving a one-to-many relationship that was broken in Hibernate Reactive 2.0.0.Beta1. More details on this release may be found in the list of issues.

Infinispan

The first development build of Infinispan 15.0.0 ships with support for: Jakarta EE; a JDK 17 baseline; JDK 21 and virtual threads; Quarkus 3.0; Spring Framework 6.0; and Spring Boot 3.0. Support for JCache will be limited as any components requiring Java EE will be removed.

Apache Software Foundation

The release of Apache Camel 3.20.4 provides bug fixes, dependency upgrades and improvement such as: a default REST DSL type in the camel-jbang generator; add functions to the Simple Expression Language to create an empty Map, List, String or JSON file; and include the jackson-jq module within the camel-jq module that developers may find useful in their JQ expressions. Further details on this release may be found in the release notes.

To maintain alignment with Quarkus 2.13.3, Camel Quarkus 2.13.3 has been released to primarily address bug fixes. More details on this release may be found in the release notes.

JUnit

JUnit 5.9.3 has been released featuring notable bug fixes such as: exceptions thrown for files that cannot be deleted when cleaning up a temporary directory created via the @TempDir annotation now include the root cause; parameter types for local @MethodSource factory method names are now validated; and lifecycle methods are once-again allowed to be declared as private to maintain backwards compatibility for now. However, developers are strongly discouraged from using private visibility for lifecycle methods and doing so will be disallowed in a future release.

JReleaser

Version 1.6.0 of JReleaser, a Java utility that streamlines creating project releases, has been released delivering new features such as support for: OpenCollective as an announcer; CycloneDX as a cataloger; Apache NetBeans modules; enable finer control when evaluating Maven Central rules; Jib as a packager; and additional Disco API package parameters. Further details on this release may be found in the release notes.

JobRunr

JobRunr 6.1.4 has been released providing notable bug fixes: the recurringJobExists() method in the StorageProvider interface returns different results depending on the database; using multiple data sources in Spring Boot not working; and DocumentDB not working due to an incompatible index. There was also improved documentation for the StorageProvider API.

JDKMon

Versions 17.0.49 and 17.0.47 of JDKMon, a tool that monitors and updates installed JDKs, has been made available this past week. Created by Gerrit Grunwald, principal engineer at Azul, this new version fixes an issue related to updating the CVE database, provides dependency upgrades and moves to Gradle 8.0.2 as the build tool.

Foojay.io

Foojay.io, the Friends of OpenJDK resource for Java developers, have provided their Java community calendar for developers to view and add events such as conferences and Java User Group meetups. The calendar is open for adding content without the need for a special account and the content is moderated.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: New OpenJDK JEPs, Payara Platform, Spring and Tomcat Updates, WildFly 28

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for April 17th, 2023 features news from OpenJDK, JDK 21, JMC 8.3.1, BellSoft, Spring Boot, Spring Security, Spring Session, Spring Authorization Server, Spring Integration, Spring for GraphQL and Spring Shell, WildFly 28, Payara Platform, Open Liberty 23.0.0.4-beta, Micronaut 3.9, Apache Tomcat updates, Ktor 2.3, JHipster Lite 0.32, JBang 0.106.3 and Gradle 8.1.1.

OpenJDK

JEP 446, Scoped Values (Preview), has been promoted from its JEP Draft 8304357 to Candidate status. Formerly known as Extent-Local Variables (Incubator), this JEP is now a preview feature following JEP 429, Scoped Values (Incubator), delivered in JDK 20. This JEP proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads.

JEP 447, Statements before super(), has been promoted from its JEP Draft 8300786 to Candidate status. This JEP, under the auspices of Project Amber, proposes to: allow statements that do not reference an instance being created to appear before the this() or super() calls in a constructor; and preserve existing safety and initialization guarantees for constructors. Gavin Bierman, consulting member of technical staff at Oracle, has provided an initial specification of this JEP for the Java community to review and provide feedback.

JEP 448, Vector API (Sixth Incubator), has been promoted from its JEP Draft 8305868 to Candidate status. This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview).

JEP 449, Deprecate the Windows 32-bit x86 Port for Removal, has been promoted from its JEP Draft 8303167 to Candidate status. This feature JEP, introduced by George Adams, Senior Program Manager at Microsoft, proposes to deprecate the Windows x86-32 port with the intent to remove it in a future release. With no intent to implement JEP 436, Virtual Threads (Second Preview), in 32-bit platforms, removing support for this port will enable OpenJDK developers to accelerate development of new features.

JEP Draft 8305968, Integrity and Strong Encapsulation, and JEP Draft 8306275, Disallow the Dynamic Loading of Agents by Default, have been submitted by Ron Pressler, architect and technical lead for Project Loom at Oracle.

Integrity and Strong Encapsulation proposes to assure the integrity of code and data with a variety of features, such as strong encapsulation, that are enabled by default. Goals of this draft include: allow the Java platform to robustly maintain invariants required for maintainability, security and performance; and differentiate use cases where breaking encapsulation is convenient from use cases where disabling encapsulation is essential.

Disallow the Dynamic Loading of Agents by Default, following the approach of Integrity and Strong Encapsulation, proposes to disallow the dynamic loading of agents into a running JVM by default. Goals of this draft include: reassess the balance between serviceability and integrity; and ensure that a majority of tools, which do not need to dynamically load agents, are unaffected.

JDK Mission Control (JMC) 8.3.1 has been released with notable fixes such as: unable to open JMX Console after installing plugins in macOS and Linux; unable to edit Eclipse project run configurations after installing JMC plugins on Linux; and unable to perform flight recording on jLinked applications; More details on this release may be found in the release notes.

JDK 21

Build 19 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 18 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

JDK 20

JDK 20.0.1, the first maintenance release of JDK 20, along with security updates for JDK 17.0.7, JDK 11.0.19 and JDK 8u371 were made available as part of Oracle’s Releases Critical Patch Update for April 2023.

BellSoft

Also concurrent with Oracle’s Critical Patch Update (CPU) for April 2023, BellSoft has released CPU patches for versions 17.0.6.0.1, 11.0.18.0.1 and 8u371 of Liberica JDK, their downstream distribution of OpenJDK. In addition, Patch Set Update (PSU) versions 20.0.1, 17.0.7, 11.0.19 and 8u372, containing CPU and non-critical fixes, have also been released.

Spring Framework

The first release candidate of Spring Boot 3.1.0 delivers notable new features: improved Testcontainers support including support at development time; support for Docker Compose; enhancements to SSL configuration; and improvements for building Docker images. More details on this release may be found in the release notes.

The release of Spring Boot 3.0.6 primarily addresses CVE-2023-20873, Security Bypass With Wildcard Pattern Matching on Cloud Foundry, a vulnerability in which an application that is deployed to Spring Cloud for Cloud Foundry could be susceptible to a security bypass. Along with improvements in documentation and dependency upgrades, this release also provides notable bug fixes such as: integration of Spring Cloud for Cloud Foundry does not use endpoint path mappings; the ApplicationAvailability bean is auto-configured even if a custom one already exists; and default configuration substitutions in Apache Cassandra don’t resolve against configuration derived from the spring.data.cassandra properties file. More details on this release may be found in the release notes.

Similarly, the release of Spring Boot 2.7.11 also addresses the aforementioned CVE-2023-20873 and provides improvements in documentation, dependency upgrades and the same bug fixes as Spring Boot 3.0.6. More details on this release may be found in the release notes.

Versions 6.1.0-RC1, 6.0.3, 5.8.3 and 5.7.8 of Spring Security have been released to primarily address CVE-2023-20862, Empty SecurityContext Is Not Properly Saved Upon Logout, a vulnerability in which serialized versions of logout does not: properly clean the security context; and unable to explicitly save an empty security context to the HttpSessionSecurityContextRepository class. This results in users still being authenticated even after logout. More details on these releases may be found in the release notes for version 6.1.0-RC1, version 6.0.3, version 5.8.3 and version 5.7.8.

The first release candidate of Spring Session 3.1.0 delivers dependency upgrades and a new feature in which an instance of the StringRedisSerializer class is reused to eliminate the need to instantiate additional serializer instances. More details on this release may be found in the release notes.

The first release candidate of Spring Authorization Server 1.1.0 provides dependency upgrades and new features such as: support for device code and user code in the JdbcOAuth2AuthorizationService class; improvements in the OAuth 2.0 Device Authorization Grant that include adding tests and reference documentation; and improvements in the OpenID Connect 1.0 logout endpoint. More details on this release may be found in the release notes.

Similarly, versions 1.0.2 and 0.4.2 of Spring Authorization Server have also been released featuring dependency upgrades and notable bug fixes: return of an incorrect INVALID_CLIENT token error code to the correct INVALID_GRANT token error code; a broken support link; the authentication secret should be saved after encoding upon registration of the client; and a consideration that would allow the use of localhost in redirect URIs. More details on these releases may be found in the release notes for version 1.0.2 and version 0.4.2.

Version 6.1.0-RC1 and 6.0.5 of Spring Integration have been released that share notable changes such as: remove a trailing space in the IntegrationWebSocketContainer class; and improvements to the BaseWsInboundGatewaySpec and TailAdapterSpec classes that didn’t override super methods and threw instances of NullPointerException due to target field not populated. More details on these releases may be found in the release notes for version 6.1.0-RC1 and version 6.0.5.

The first release candidate of Spring for GraphQL 1.2.0 delivers new features such as: update the SchemaMappingInspector class to support Connection types; support for pagination with Querydsl and Query By Example; and overall support for pagination and sorting. More details on this release may be found in the release notes.

Versions 3.1.0-M2, 3.0.2 and 2.1.8 of Spring Shell have been released featuring shared notable changes such as: builds upon Spring Boot 3.1.0-M2, 3.0.5 and 2.7.10, respectively; a backport of bug fixes; and a significant fix for custom type handling with positional arguments. More details on these releases may be found in the release notes for version 3.1.0-M2, version 3.0.2 and version 2.1.8.

WildFly

Red Hat has released WildFly 28 that ships with improved support for observability and full support for Jakarta EE 10. WildFly has added support for Micrometer and the MicroProfile Telemetry specification, but has removed support for MicroProfile Metrics. JDK 17 is recommended for production applications, but Red Hat has seen good results on JDK 20. More details on this release may be found in the release notes and InfoQ will follow up with a more detailed news story.

Payara

Payara has released their April 2023 edition of the Payara Platform that includes Community Edition 6.2023.4, Enterprise Edition 6.1.0 and Enterprise Edition 5.50.0.

Community Edition 6.2023.4 delivers:a fix for a Payara 6 deployment error with JDK17 and Records; improvements in the SameSite cookie attributes in the Application Deployment Descriptor and a global HTTP network listener; and dependency upgrades to EclipseLink 4.0.1, EclipseLink ASM 9.4.0, Hazelcast 5.2.2 and ASM 9.4. More details on this release may be found in the release notes.

Similarly, Enterprise Edition 6.1.0 features: a fix for a Payara 6 deployment error with JDK17 and Records; improvements in the SameSite cookie attributes in the Application Deployment Descriptor; and dependency upgrades to EclipseLink 4.0.1, EclipseLink ASM 9.4.0, Hazelcast 5.2.2 and ASM 9.4 More details on this release may be found in the release notes.

Enterprise Edition 5.50.0 ships with: a resolution for CVE-2023-24998, a vulnerability in Apache Commons FileUpload in which an attacker can trigger a denial-of-service with malicious uploads due to the number of processed request parts is not limited; a fix for a Hazelcast NoDataMemberInClusterException; an improvement in the SameSite cookie attribute in the Application Deployment Descriptor; and a dependency upgrade to Hazelcast 5.2.2. More details on this release may be found in the release notes.

Open Liberty

IBM has released Open Liberty 23.0.0.4-beta featuring updated support for the Jakarta Data specification such that developers may now combine multiple ways of specifying ordering and sorting, defining a precedence. Sorting that is defined by the @OrderBy annotation or a query-by-method keyword is applied first, followed by the parameters from the Sort record on the method or the Pageable interface.

Micronaut

The Micronaut Foundation has released Micronaut Framework 3.9.0 that delivers new features such as: the ability to customize a package to write introspection with the targetPackage field of the @Introspected annotation; the ability to enable Cross Origin Resource Sharing (CORS) configuration via the @CrossOrigin annotation; a breaking change in which the configuration property, micronaut.server.cors.*.configurations.allowed-origins, does not support regular expressions to prevent an accidental exposure of a user’s API; and updates to modules such as: Micronaut Kubernetes, Micronaut Security, Micronaut CRaC, Micronaut Maven and Micronaut Launch. More details on this release may be found in the release notes.

Apache Software Foundation

The Apache Tomcat team has provided point releases for versions 11.0.0-M5, 10.1.8, 9.0.74 and 8.5.88. All four versions share notable changes such as: reduce the default value of maxParameterCount from 10000 to 1000; correct a regression in the fix for bug 66442 that meant that streams without a response body did not decrement the active stream count when completing, leading to an ERR_HTTP2_SERVER_REFUSED_STREAM for some connections; implementation of RFC 9239, Updates to ECMAScript Media Types, in which the MIME types for JavaScript has changed to text/javascript. More details on these releases may be found in the release notes for version 11.0.0-M5, version 10.1.8, version 9.0.74 and version 8.5.88.

Ktor

JetBrains has released version 2.3.0 of Ktor, the asynchronous framework for creating microservices and web applications, that include improvements and fixes such as: support for regular expressions when defining routes; drop support for the legacy JS compiler that will be removed in the upcoming release of Kotlin 1.9.0; support for Apache 5 and Jetty 11; and support for Structured Concurrency for Sockets. More details on this release may be found in the release notes.

JHipster

The JHipster team has released version 0.32.0 of JHipster Lite with many dependency upgrades and notable changes such as: support for Hibernate second-level cache by setting the spring.jpa.properties.hibernate.cache.use_second_level_cache property to true; remove an unnecessary warning upon executing the npm run lint command; and remove an unnecessary stack trace upon running the npm t command. More details on this release may be found in the release notes.

JBang

The release of JBang 0.106.3 fixes formatting for an issue where ChatGPT errors on bad keys or usage limits.

Gradle

Gradle 8.1.1 has been released that ships with bug fixes: a MethodTooLargeException when instrumenting a class with significant number of lambdas for the configuration cache; the Kotlin DSL precompiled script plugins built with Gradle 8.1 cannot be used with other versions of Gradle; and Gradle 8.1 configuration of the freeCompilerArgs method for Kotlin in buildSrc breaks a build with errors that are not useful. More details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JEPs for JDK 21, MicroStream to Eclipse, Helidon, Piranha, Gradle 8.1

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for April 10th, 2023 features news from OpenJDK, JDK 21, Spring Framework and Spring Data updates, GraalVM Build Tools 0.9.21, MicroStream becomes an Eclipse Project, Micronaut 3.8.9, Helidon 4.0.0.Alpha6, Hibernate ORM 6.2.1, Micrometer Metrics 1.11.0-RC1, 1.10.6 and 1.9.10, Micrometer Tracing 1.1.0-RC1 and 1.0.4, Piranha 23.4.0, Project Reactor 2022.0.6 and Gradle 8.1.

OpenJDK

After its review had concluded, JEP 444, Virtual Threads, has been promoted from Proposed to Target to Targeted status for JDK 21. This JEP proposes to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. More details on JEP 425 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.

Similarly, JEP 430, String Templates (Preview), has been promoted from Proposed to Target to Targeted status for JDK 21. This preview JEP, under the auspices of Project Amber, 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.

JEP 442, Foreign Function & Memory API (Third Preview), has been promoted from Candidate to Proposed to Target for JDK 21. This JEP incorporate refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList class. The review is expected to conclude on April 21, 2023.

JEP 445, Flexible Main Methods and Anonymous Main Classes (Preview), has been promoted from its JEP Draft 8302326 to Candidate status. This feature JEP, formerly entitled Implicit Classes and Enhanced Main Methods (Preview), 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.

Paul Sandoz, Java architect at Oracle has submitted JEP Draft 8305868, Vector API (Sixth Incubator). This JEP, under the auspices of Project Panama, incorporates enhancements in response to feedback from the previous five rounds of incubation: JEP 438, Vector API (Fifth Incubator), delivered in JDK 20; JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview).

JDK 21

Build 18 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 17 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Spring Framework

Versions 6.0.8, 5.3.27 and 5.2.24.RELEASE of Spring Framework have been released to primarily address CVE-2023-20863, Spring Expression DoS Vulnerability, a vulnerability in which an attacker to provide a specially crafted Spring Expression Language expression that may cause a denial-of-service (DoS) condition. Other new features include: a new overloaded truncate() method defined in the StringUtils class to serve as centralized, consistent way for truncating strings; a new nullSafeConciseToString() method defined in the ObjectUtils class to generate a more “concise” null-safe toString() representation of various objects that does not include an entire object graph; and replace the use of the unmodifiableList() method defined in the Collections class with the copyOf() method defined in the List interface which results in Spring application code that more readable, prevents unexpected bugs and easier to maintain. More details on these releases may be found in the release notes for version 6.0.8, version 5.3.27 and version 5.2.24.RELEASE.

Spring Data 2023.0-RC1, 2022.0.5 and 2021.2.11 have been released this past week. Version 2023.0-RC1 features: the reinstatement of MariaDB support for Spring Data R2DBC; a new @Hint annotation in Spring Data MongoDB with support for reactive bulk operations; and many enhancements to the Spring Data JPA Hibernate and JPQL parsers to better support aliases and other aspects of query parsing for @Query annotated queries. Versions 2022.0.5 and 2021.2.11 are service releases that ship with improvements and bug fixes for regressions. These versions may be consumed with the upcoming releases of Spring Boot 3.0.6 and 2.7.11, respectively.

GraalVM Native Build Tools

On the road to version 1.0, Oracle Labs has released version 0.9.21 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 fix to ensure compatibility with Gradle’s configuration cache; deprecate the requiredVersion property in favor of using a version string; and a new write-args-file Maven goal that writes an arguments file such that other plugins downstream in the life cycle may use it. More details on this release may be found in the changelog.

MicroStream

MicroStream has announced that their Java-native persistence layer will become an Eclipse Project. The MicroStream Serializer product will be renamed to Eclipse Serializer and the MicroStream Persistence product will be renamed to EclipseStore. MicroStream also plans to launch an EclipseStore Working Group as a standard for the Jakarta Persistence specification in which EclipseStore will become a compatible implementation.

Micronaut

The Micronaut Foundation has released Micronaut Framework 3.8.9 featuring bug fixes, support for JDK 20 in annotation processors and updates to modules: Micronaut AWS and Micronaut Kafka. There was also a dependency upgrade to Netty 4.1.91. More details on this release may be found in the release notes.

The fourth milestone release of Micronaut 4.0.0 was also made available this past week featuring support for: annotation-based CORS configuration; compilation time expressions in annotations; the ability to disable streaming HTTP request processing; and conditional routing.

Helidon

The sixth alpha release of Helidon 4.0.0 features notable changes such as: support for JDK 20; completion of the shortcut methods for all HTTP methods in the WebServer and WebClient components; and a rename of the receive() method to onMessage() for consistency with other methods in the WebSocket component. More details on this release may be found in the release notes.

Hibernate

The release of Hibernate ORM 6.2.1.Final ships with notable fixes such as: improved sub-queries using aliases and left joins; generic associations being ignored when dirty checking and bytecode enhancement were enabled; part of a composite @IdClass primary key not being returned when querying; and Internal nullness marking and checking.

Micrometer

Versions 1.11.0-RC1, 1.10.6 and 1.9.10 of Micrometer Metrics have been released. New features in version 1.11.0-RC1 include: a new Supplier variant of the getOrDefault() method defined in the Context inner class of the Observation interface; metrics support for Netty allocators and event executors; and more efficient cumulative count computations in the takeCountSnapshot() method defined in the AbstractTimeWindowHistogram class. Version 1.10.6 and 1.9.10 primarily provide bug fixes and dependency upgrades.

Similarly, versions 1.1.0-RC1 and 1.0.4 of Micrometer Tracing deliver bug fixes, dependency upgrades to Micrometer 1.11.0-RC1 and 1.10.6, respectively, and new features: allow propagation of spans via ThreadLocalAccessor interface; alignment with annotations changes in Micrometer; and support for creating spans with links.

Piranha

Piranha 23.4.0 has been released. Dubbed the “Update Components” edition for April 2023, this new release includes: updates to various compatible implementations of Jakarta EE components to their latest versions; update running automated tests in the release workflow to use JDK 19; and basic code cleanup. More details on this release may be found in their documentation and issue tracker.

Reactor

Project Reactor 2022.0.6, the sixth maintenance release, provides dependency upgrades to reactor-core 3.5.5, reactor-addons 3.5.1, reactor-netty 1.1.6, reactor-kafka 1.3.17 and reactor-kotlin-extensions 1.2.2. More details on this release may be found in the changelog.

Gradle

The release of Gradle 8.1 features: a stable version of the configuration cache; support for dependency verification; improved error reporting for Groovy closures; support for Java lambdas; improved memory management; and support for building projects with JDK 20. More details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: String Templates, Quarkus, Open Liberty, PrimeFaces, JobRunr, Devnexus 2023

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for April 3rd, 2023 features news from OpenJDK, JDK 21, Quarkus 3.0.0.CR2 and 2.16.6.Final, Open Liberty 23.0.0.3, Apache Camel 3.18.6, PrimeFaces 12.0.4, JHipster Lite 0.31.0, JobRunr 6.1.3, Gradle 8.1-RC3 and Devnexus 2023.

OpenJDK

JEP 430, String Templates (Preview), has been promoted from Candidate to Proposed to Target status for JDK 21. This preview JEP, under the auspices of Project Amber, 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. The review is expected to conclude on April 13, 2023.

Gavin Bierman, consulting member of technical staff at Oracle, has published the first draft of the joint specification change document for JEP 440, Record Patterns, and JEP 441, Pattern Matching for switch, for review by the Java community.

JDK 21

Build 17 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 16 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Quarkus

The second release candidate of Quarkus 3.0.0 delivers new features: a quarkusUpdate Gradle task for updating Quarkus to a new version; Dev UI 2 is now default via the /q/dev or /q/dev-ui endpoints (Dev UI 1 is accessible via the /q/dev-v1 endpoint); and a new HTTP security policy mapping between roles and permissions. More details on this release may be found in the changelog.

Quarkus 2.16.6.Final, the sixth maintenance release, provides notable changes such as: a removal of the session cookie if ID token verification has failed; allow the use of null in the REST Client request body; support for repeatable @Incoming annotations in reactive messaging; and dependency upgrades to GraphQL Java 19.4, Wildfly Elytron 1.20.3.Final and Keycloak 21.0.1. Further details on this release may be found in the changelog.

Open Liberty

IBM has released Open Liberty 23.0.0.3 featuring bug fixes and support for: JDK 20; the Jakarta EE 10 Platform, Web and Core profiles; and the core MicroProfile 6.0 specifications.

Apache Camel

The release of Apache Camel 3.18.6 delivers big fixes, dependency upgrades and improvements such as: allow HTTP response headers with empty values to be returned to support applications that require this; improved handling of allowing or disallowing an HTTP request body; and a fix for the potential to block the Vert.x event loop if the route processing coming after the vertx-websocket consumer executes blocking operations. More details on this release may be found in the release notes.

PrimeFaces

The release of PrimeFaces 12.0.4 ships with bug fixes and new features: a restoration of the getExcelPattern() and validate() methods defined in the CurrencyValidator class;

Further details on this release may be found in the list of issues.

JHipster

The JHipster team has released version 0.31.0 of JHipster Lite with many dependency upgrades and notable changes such as: a fix for generating the same customConversions beans for use in MongoDB and Redis; a fix for the Apache Kafka producer and consumer; and a removal of the Jest testing framework dependency as it was only used for the optional-typescript module. More details on this release may be found in the release notes.

JobRunr

JobRunr 6.1.3 has been released to deliver a fix for the high number of calls to jobrunr_job_stats view that allows developers to disable Java Management Extensions (JMX) for the JobStats class.

Gradle

The third release candidate of Gradle 8.1 features: continued improvements to the configuration cache; support for dependency verification; improved error reporting for Groovy closures; support for Java lambdas; and support for building projects with JDK 20. Further details on this release may be found in the release notes.

Devnexus

Devnexus 2023 was held at the Georgia World Congress Center in Atlanta, Georgia this past week featuring speakers from the Java community who delivered workshops and talks on topics such as: Jakarta EE, Java Platform, Core Java, Architecture, Cloud Infrastructure and Security.

Devnexus, hosted by the Atlanta Java Users Group (AJUG), has a history that dates back to 2004 when the conference was originally called DevCon. The Devnexus name was introduced in 2010.

Developers can learn more about Devnexus and AJUG from this Foojay.io podcast hosted by Frank Delporte, senior technical writer at Azul, who interviewed Pratik Patel, Vice President of Developer Advocacy at Azul and AJUG president, and Vince Mayers, developer relations at Gradle and AJUG treasurer.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JDK 21 Release Schedule, Payara Platform, JBang, JHipster, WildFly

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for March 27th, 2023 features news from OpenJDK, JDK 21, GlassFish 7.0.3, Spring point and milestone releases, Payara Platform, Quarkus 3.0.CR1, Micronaut 3.8.8, WildFly 28 Beta1, Hibernate ORM 6.2, Groovy 4.0.11, Camel 3.20.3, James 3.7.4, Eclipse Vert.x 4.4.1, JHipster Quarkus Blueprint 2.0, JHipster Lite 0.30, JBang 0.106, Gradle 8.1-CR2 and new Foojay.io calendar.

OpenJDK

The results of the 2023 Governing Board Election show that Andrew Haley, technical lead, Open Source Java at Red Hat, and Phil Race, consulting member of technical staff at Oracle, have been elected to the board to fill the two At-Large member seats. They will serve a term of one calendar year effective April 1, 2023. InfoQ will follow up with a more detailed news story.

JEP 444, Virtual Threads, was promoted from its JEP Draft 8303683 to Candidate status, then quickly promoted from Candidate to Proposed to Target status for JDK 21. This JEP proposes to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. More details on JEP 425 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle. The review is expected to conclude on April 7, 2023.

Version 7.2 of the Regression Test Harness for the JDK, jtreg, has been released and ready for integration in the JDK. The most significant new feature is the ability to run tests using virtual threads. Further details on this release may be found in the release notes.

JDK 21

Build 16 of the JDK 21 early-access builds was made available this past week featuring updates from Build 15 that include fixes to various issues. More details on this build may be found in the release notes.

Mark Reinhold, chief architect, Java Platform Group at Oracle, formally proposed the release schedule for JDK 21 as follows:

  • Rampdown Phase One (fork from main line): June 8, 2023
  • Rampdown Phase Two: July 20, 2023
  • Initial Release Candidate: August 10, 2023
  • Final Release Candidate: August 24, 2023
  • General Availability: September 19, 2023

For JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GlassFish

The release of GlassFish 7.0.3 ships with bug fixes, improvements in documentation and dependency upgrades such as: Mojarra 4.0.2, EclipseLink 4.0.1, Helidon Config 3.2.0 and ASM 9.5. Further details on this release may be found in the release notes.

Spring Framework

The Spring Integration team has announced that the Spring Integration Extension for Amazon Web Services (AWS), version 3.0.0-M2, and Spring Cloud Stream Binder for AWS Kinesis, version 4.0.0-M1, projects have been moved to the AWS Java SDK. Notable changes in each of these milestone releases include: AWS Java SDK 2.20.32, the latest version; a dependency upgrade to Spring Cloud AWS 3.0.0 with the new SQS listener API; a DynamoDbLockRegistry class, an implementation of the ExpirableLockRegistry and RenewableLockRegistry interfaces, to provide proper TTL support; and removal of XML configuration.

Spring Cloud 2022.0.2, codenamed Kilburn, has been released featuring updates to sub-projects such as: Spring Cloud Vault 4.0.1, Spring Cloud Kubernetes 3.0.2, Spring Cloud OpenFeign 4.0.2 and Spring Cloud Config 4.0.2. There are, however, breaking changes with the removal of sub-projects: Spring Cloud CLI, Spring Cloud for Cloud Foundry and Spring Cloud Sleuth. More details on this release may be found in the release notes.

The first release candidate of Spring Web Flow 3.0.0 delivers new features: a migration of Spring Faces to Spring Framework 6, Jakarta EE, and JSF 4; and an update of the JSF samples to Jakarta EE. Further details on this release may be found in the release notes.

Payara

Payara has released their March 2023 edition of the Payara Platform that includes Community Edition 6.2023.3, Enterprise Edition 5.49.0 and the formal release of Payara Enterprise 6.0. All of these editions now support Jakarta EE 10 and MicroProfile 6.0. It is important to note that a known issue is currently being investigated: when deploying an application that contains a Java Record, a warning is logged in the server logs about Records not being supported. The Payara team assures that an application will still deploy and operate as expected.

Community Edition 6.2023.3 delivers bug fixes, component upgrades and improvements such as: an update to the REST SSL alias extension for Payara 6; upgrade the cacerts.jks and keystore.jks certificates to PKCS#12; and configure all SameSite cookie attributes for an HTTP network listener. More details on this release may be found in the release notes.

Enterprise Edition 5.49.0 also ships with bug fixes, component upgrades and the same SameSite cookie improvement as noted in the Community Edition. Further details on this release may be found in the release notes.

The Payara team has also published CVE-2023-28462, a vulnerability affecting server environments running on JDK 8 on updates lower than version 1.8u191. This vulnerability allows a remote attacker to load malicious code into a public-facing Payara Server installation using remote JNDI access via unsecured object request broker (ORB) listeners. Developers are encouraged to install a version of JDK 8 higher than 1.8u191.

Quarkus

After six alpha releases and one beta release, the first release candidate of Quarkus 3.0.0 was made available to the Java community this past week. New features include: introduce an initial version of the non-application root path, /q/info, endpoint; use SmallRye BeanBag to initialize the Maven RepositorySystem interface for compatibility with Maven 3.9; and a new plugin mechanism for the Quarkus CLI. More details on this release may be found in the release notes.

Micronaut

The Micronaut Foundation has released Micronaut Framework 3.8.8 featuring bug fixes and updates to modules: Micronaut Data, Micronaut Views, Micronaut OpenAPI, Micronaut Security and Micronaut Maven Plugin. There was also a dependency upgrade to Netty 4.1.90. Further details on this release may be found in the release notes.

WildFly

The first beta release of WildFly 28 delivers new features such as: support for Micrometer that includes integration of Micrometer with their implementation of MicroProfile Fault Tolerance specification; and support for the MicroProfile Telemetry and MicroProfile Long Running Actions (LRA) specifications. There was also a removal of support for the MicroProfile Metrics and MicroProfile OpenTracing specifications. More details on this release may be found in the release notes.

Hibernate

After four release candidates, the formal release of Hibernate ORM 6.2 delivers support for: structured SQL types; Java records; unified generated persisted values; database partitions; proprietary SQL types; and the ability to use the SQL MERGE command to handle updates against optional tables.

Apache Software Foundation

Paul King, principal software engineer at Object Computing, Inc., director at ASERT and vice president at Apache Groovy, has announced three point releases of Apache Groovy as described below. Developers should expect fewer point releases in the 3.0 and 2.0 release trains as the team will be focusing on Groovy 5.0.

Version 4.0.11 delivers bug fixes and new features such as: new methods, asReversed() and reverseEach(), that will map directly to the descendingSet() and descendingIterator() methods, respectively, defined in the NavigableSet interface; a dependency upgrade to ASM 9.5; and a new constant for JDK 21. Further details on this release may be found in the changelog.

Version 3.0.17 features bug fixes, improvements in documentation and a dependency upgrade to ASM 9.5. More details on this release may be found in the changelog.

Similarly, version 2.5.22 features bug fixes, improvements in documentation and a dependency upgrade to ASM 9.5. Further details on this release may be found in the changelog.

The release of Apache Camel 3.20.3 provides bug fixes, dependency upgrades and new features/improvements such as: add health checks for components that have an extension for connectivity verification (camel-health); a user configuration file in the camel-jbang component; and favor instances of the CompositeMeterRegistry class in the Camel Registry API. More details on this release may be found in the release notes.

The release of Apache James 3.7.4 addresses CVE-2023-26269, Privilege Escalation through Unauthenticated JMX, a vulnerability in which versions of Apache James Server 3.7.3 and earlier provides a JMX management service without authentication by default that would allow an attacker to have access to privilege escalation. Further details on this release may be found in the release notes.

Eclipse Vert.x

Eclipse Vert.x 4.4.1 has been released with bug fixes and dependency upgrades to GraphQL-Java 20.1, Netty 4.1.90, SnakeYAML 2.0, Micrometer 1.10.5 and Apache Qpid Proton-J 0.34.1. More details on this release may be found in the release notes and deprecations and breaking changes.

JHipster

The JHipster team has released version 2.0.0 of the JHipster Quarkus Blueprint with notable changes such as: fix OIDC settings for the production profile; update the blueprint dependencies and Quarkus to 2.16.2; fix Keycloak authorization and Cypress tests; and a fix for the SQL Docker images. Further details on this release may be found in the release notes.

The JHipster team has also released JHipster Lite 0.30.0 features bug fixes, dependency upgrades and enhancements such as: remove a duplicated JSON Web Token dependency; a new getUsername() method to the ApplicationAuthorizations class; and a fix for the Angular OAuth2 with Keycloak. More details on this release may be found in the release notes.

JBang

Version 0.106.0 and 0.106.1 of JBang introduces support for the use of GPT in the jbang init command by calling the ChatGPT API to initialize and create a jbang script that attempts to execute the string that is expressed on the command line. Further details on this new feature may be found in this YouTube video and InfoQ will follow up with a more detailed news story.

Gradle

The second release candidate of Gradle 8.1 provides: continued improvements to the configuration cache; support for dependency verification; improved error reporting for Groovy closures; support for Java lambdas; and support for building projects with JDK 20. More details on this release may be found in the release notes.

Foojay.io

Foojay.io, the Friends of OpenJDK resource for Java developers, have provided their Java community calendar for developers to view and add events. The calendar is open for adding content without the need for a special account and the content is moderated.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: JDK 20 Released, Spring Releases, Quarkus, Helidon, Micronaut, Open Liberty

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for March 20th, 2023 features news from OpenJDK, JDK 20, JDK 21, Amazon Corretto 20, BellSoft Liberica JDK 20, multiple Spring milestone and point releases, Quarkus 3.0.0.Beta1 and 2.16.5, Helidon 3.2.0, Open Liberty 23.0.0.3-beta, Micronaut 4.0.0-M1, Camel Quarkus 3.0.0-M1, JBang 0.105.1, Failsafe 3.3.1, Maven 3.9.1 and Gradle 8.1-RC1.

OpenJDK

JEP 431, Sequenced Collections, has been promoted from Proposed to Target to Targeted status for JDK 21. This JEP proposes to introduce “a new family of interfaces that represent the concept of a collection whose elements are arranged in a well-defined sequence or ordering, as a structural property of the collection.” Motivation was due to a lack of a well-defined ordering and uniform set of operations within the Collections Framework. More details on JEP 431 may be found in this InfoQ news story.

JEP 443, Unnamed Patterns and Variables (Preview), was promoted from JEP Draft 8294349 to Candidate status this past week. This preview JEP proposes to “enhance the language with unnamed patterns, which match a record component without stating the component’s name or type, and unnamed variables, which can be initialized but not used.” Both of these are denoted by the underscore character as in r instanceof _(int x, int y) and r instanceof _.

JDK 20

Oracle has released version 20 of the Java programming language and virtual machine, which ships with a final feature set of seven JEPs. More details may be found in this InfoQ news story.

JDK 21

Build 15 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 14 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 20 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

Amazon Corretto

Amazon has released Amazon Corretto 20, their downstream distribution of OpenJDK 20, which is available on Linux, Windows, and macOS. Developers may download this latest version from this site.

Liberica JDK

Similarly, BellSoft has released Liberica JDK 20, their downstream distribution of OpenJDK 20. Developers may download this latest version from this site.

Spring Framework

It was a very busy week over at Spring as the project teams delivered milestone and point releases of Spring Boot, Spring Framework, Spring Data, Spring Integration, Spring Vault, Spring for GraphQL, Spring Authorization Server, Spring HATEOAS and Spring Modulith. Some of these release address these Common Vulnerabilities and Exposures (CVEs):

The release of Spring Boot 3.0.5 delivers improvements in documentation, dependency upgrades and notable bug fixes such as: the EmbeddedWebServerFactoryCustomizerAutoConfiguration class should not be invoked when the embedded web server is not configured; the @ConfigurationProperties annotation no longer works on mutable Kotlin data classes; and the use of the @EntityScan annotation causes an AOT instance supplier code generation error. More details on this release may be found in the release notes.

Similarly, the release of Spring Boot 2.7.10 ships with improvements in documentation, dependency upgrades and notable bug fixes such as: loading an application.yml file fails with a NoSuchMethodError exception when using SnakeYAML 2.0; an instance of the StandardConfigDataResource class can import the same file twice if the classpath includes the ‘.‘ character; and a Maven plugin uses a timezone-local timestamps when the project.build.outputTimestamp property is used. Further details on this release may be found in the release notes.

The second release candidate of Spring Boot 3.1.0 provides new features such as: a new method, withSanitizedValue(), in the SanitizableData class that returns a new instance with a sanitized value; support for auto-configuration of GraphQL pagination and sorting; and support for Spring Authorization Server. More details on this release may be found in the release notes.

Versions 6.0.7 and 5.3.26 of Spring Framework have been released to primarily address the aforementioned CVE-2023-20860 and CVE-2023-20861 vulnerabilities. Both versions also deliver new features such as: improved diagnostics in SpEL for the matches operator and repeated text; updates to the HandlerMappingIntrospector class; and allow SnakeYaml 2.0 runtime compatibility. Further details on these releases may be found in the release notes for version 6.0.7 and version 5.3.26.

The release of Spring Framework 5.2.23 also addresses the CVE-2023-20861 vulnerability and provides the same new SpEL features as Spring Framework 5.3.26. More details on this release may be found in the release notes.

Versions 2023.0-M1, codenamed Ullman, 2022.0.4 and 2021.2.10 of Spring Data have been released this past week. The service releases include bug fixes and improvements in documentation, and may be consumed in Spring Boot 3.0.5 and 2.7.10, respectively. New features in the milestone release include: a new scroll API to support offset and key-based pagination; improvements in JPA query parsing for HQL and JPQL; support for explicit field level encryption in MongoDB; and aggregate reference request parameters in Spring Data REST. Further details on the milestone release may be found in the release notes.

Versions 6.1.0-M2, 6.0.4 and 5.5.17 of Spring Integration have been released featuring notable changes such as: improvements in the LockRegistryLeaderInitiator class such calling a target lock provider is delayed if the current thread has been interrupted; improvements to the AbstractRemoteFileStreamingMessageSource class for remote calls; and fix the relationship between the code coverage tools, Sonar and JaCoCo. More details on these releases may be found in the release notes for version 6.1.0-M2, version 6.0.4 and version 5.5.17.

Versions 3.0.2 and 2.3.3 of Spring Vault have been released to address the aforementioned CVE-2023-20859 vulnerability and new features such as: refine logging after token revocation failure; allow reuse of library-specific configuration code in the ClientHttpRequestFactoryFactory and ClientHttpConnectorFactory classes; and add AWS IAM Authentication to the EnvironmentVaultConfiguration class. Further details on these releases may be found in the release notes for version 3.0.2 and version 2.3.3.

The first milestone release of Spring for GraphQL 1.2.0 that delivers new features such as: support for pagination return values and pagination requests in methods defined in the @SchemaMapping annotation; support for custom instances of the HandlerMethodArgumentResolver interface; and a dependency upgrade to GraphQL Java 20.0. More details on this release may be found in the release notes.

Versions 1.1.3 and 1.0.4 of Spring for GraphQL have been released with new features: access request attributes and cookies in the WebGraphQlInterceptor interface; a fix in which an instance of the ContextDataFetcherDecorator class ignores subscriptions when their name has changed. These releases will also be consumed in Spring Boot 3.0.5 and 2.7.10, respectively. Further details on these releases may be found in the release notes for version 1.1.3 and version 1.0.4.

The second milestone release of Spring Authorization Server 1.1.0 ships with bug fixes, dependency upgrades and new features: an implementation of RFC 8628, OAuth 2.0 Device Authorization Grant; and enable the upgradeEncoding() method defined in the PasswordEncoder interface for OAuth2 client secrets. More details on this release may be found in the release notes.

Versions 2.1-M1, 2.0.3 and 1.5.4 of Spring HATEOAS have been released this past week. The service releases include improvements in documentation and dependency upgrades. The milestone release features: support for property metadata on forms using the @Size annotation as defined in JSR-303, Bean Validation; and a new SlicedModel class, a simplified version of PagedModel class, to navigate slices, but not calculate a total. Further details on these releases may be found in the release notes for version 2.1-M1, version 2.0.3 and version 1.5.4.

The release of Spring Modulith 0.5.1 provides a significant bug fix in which the spring-modulith-runtime module accidentally contained a Logback configuration file that was only intended for test usage. There was also a dependency upgrade to Spring Boot 3.0.5. More details on this release may be found in the release notes.

The Spring Data JPA team has introduced HQL and JPQL query parsers for developers to more easily customize queries in Spring Data JPA applications in conjunction with the @Query annotation.

Quarkus

The first beta release of Quarkus 3.0.0 features support for a management interface that exposes selected routes, i.e., management routes, to a different HTTP server that avoids exposing these routes on the main HTTP server, which could lead to leaks and undesired access to these endpoints. Further details on this release may be found in the changelog.

Quarkus 2.16.5.Final, the fifth maintenance release with notable changes such as: filter out a RESTEasy-related warning from executing the test class, ProviderConfigInjectionWarningsTest; a fix for the NullPointerException upon loading workspace modules; and prevent server-side events from the MessageBodyWriter potentially writing an accumulation of headers. More details on this release may be found in the changelog.

Helidon

Oracle has released Helidon 3.2.0 that shis with changes such as: a fix on the overloaded create() methods defined in the WriteableMultiPart class; a fix for erroneous behavior closing a database connection within the JtaConnection class; an a dependency upgrade to SnakeYAML 2.0. It is important to note that there are breaking changes in SnakeYAML 2.0. A Helidon application may be impacted if SnakeYAML is used directly. It is still possible, however, that an application may still be upgraded to Helidon 3.2.0 with a downgraded SnakeYAML 1.3.2. Further details on this release may be found in the release notes.

Open Liberty

IBM has released Open Liberty 23.0.0.3-beta featuring support for JDK 20, Jakarta EE 10 Platform and MicroProfile 6.0.

Micronaut

The Micronaut foundation has provided the first milestone release Micronaut Framework 4.0.0 featuring: experimental support for Kotlin Symbol Processing; support for virtual threads; improved error messages for missing beans; and support for filter methods.

Apache Software Foundation

As disclosed by the Apache Tomcat team, CVE-2023-28708, a vulnerability in which using the RemoteIpFilter class, with requests received from a reverse proxy via HTTP that include the X-Forwarded-Proto header set to HTTPS, session cookies created by Tomcat did not include the secure attribute. This vulnerability could result in an attacker transmitting a session cookie over an insecure channel. Tomcat versions affected by this vulnerability include: 11.0.0-M1 to 11.0.0-M2; 10.1.0-M1 to 10.1.5; 9.0.0-M1 to 9.0.71; and 8.5.0 to 8.5.85.

The first milestone release of Camel Quarkus 3.0.0, containing Quarkus 3.0.0.Alpha5 and Camel 4.0.0-M2, is the first Camel Quarkus release featuring a baseline of JDK 17 and Jakarta EE 10. Other notable changes include: deprecation of the ReflectiveClassBuildItem class; a fix for the exception thrown using the PerfRegressionIT class while testing with Camel 4 and Quarkus 3; and a split of Infinispan testing into separate modules for the Quarkus- and Camel-managed clients. More details on this release may be found in the release notes.

JBang

Versions 0.105.1 and 0.105.2 of JBang deliver notable changes such as: an improved jbang edit command in which it assumes one of the supported JBang IDE plugins is installed; continued improvements using modulepath over classpath; The jbang export jlink command is now an option that allows developers to export a JBang application or script with an embedded Java runtime; and a fix for the Apple Silicon VSCodium download.

Failsafe

Failsafe, a lightweight, zero-dependency library for handling failures in Java 8+, has released version 3.3.1 featuring API changes such as: the addition of full Java module descriptors to the Failsafe JARs; and the release of execution references inside instances of the CompletableFuture class provided by Failsafe. Further details on this release may be found in the changelog.

Maven

Maven 3.9.1 has been released with improvements such as: an improved “missing dependency” error message; performance enhancement by replacing any non regular expression patterns in the replaceAll() method with the replace() method or use precompiled patterns; and deprecate the Mojo plugin parameter expression, ${localRepository}, because an instance of the ArtifactFactory interface injected by ${localRepository} is not compatible with the Maven Resolver interface, LocalRepositoryManager, due lack of context.

Gradle

The first release candidate of Gradle 8.1 delivers: continued improvements in the configuration cache, now considered stable; continued improvements in the Kotlin DSL, an alternative to the Groovy DSL, that includes an experimental simple property assignment in Kotlin DSL scripts; and support for JDK 20. More details on this release may be found in the release notes.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java 20 Delivers Features for Projects Amber, Loom and Panama

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

Oracle has released version 20 of the Java programming language and virtual machine. The seven (7) JEPs in this final feature set include:

The feature cadence for Java 20 is similar to that of the seven (7) new features in JDK 19 and nine (9) new features in JDK 18. However, this is lower than some of the more recent pre-JDK 18 releases: 14 features in JDK 17; 17 features in JDK16; 14 features in JDK 15; and 16 features in JDK 14.

This release features JEPs that provide continued contribution toward Project Amber, Project Loom and Project Panama along with new rounds of preview and incubation. We examine a few of these new features here. It is worth noting that there were no JEPs representing Project Valhalla in JDK 20.

Project Panama

JEP 434 and JEP 438 fall under the auspices of Project Panama, a project designed to improve and enrich interoperability between the JVM and well-defined “foreign,” i.e., non-Java, APIs that will most-likely include interfaces commonly used within C libraries.

JEP 434, Foreign Function & Memory API (Second Preview), incorporate refinements based on feedback and to provide a second preview from JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 424 include: the MemorySegment and MemoryAddress interfaces are now unified, i.e., memory addresses are modeled by zero-length memory segments; and the sealed MemoryLayout interface has been enhanced to facilitate usage with JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19.

JEP 438, Vector API (Fifth Incubator), incorporates enhancements in response to feedback from the previous four rounds of incubation: JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview).

A working application on how to implement the Foreign Function & Memory API may be found in this GitHub repository by Carl Dea, senior developer advocate at Azul.

Project Loom

JEP 429, JEP 436 and JEP 437 fall under the auspices of Project Loom, a project designed to explore, incubate and deliver Java VM features and APIs built for the purpose of supporting easy-to-use, high-throughput lightweight concurrency and new programming models. This would be accomplished via virtual threads, delimited continuations and tail calls.

JEP 429, Scoped Values (Incubator), an incubating JEP formerly known as Extent-Local Variables (Incubator), proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads.

JEP 436, Virtual Threads (Second Preview), proposes a second preview from JEP 425, Virtual Threads (Preview), delivered in JDK 19, to allow time for additional feedback and experience for this feature to progress. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. It is important to note that no changes are within this preview except for a small number of APIs from JEP 425 that were made permanent in JDK 19 and, therefore, not proposed in this second preview. More details on JEP 425 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.

JEP 437, Structured Concurrency (Second Incubator), proposes to reincubate this feature from JEP 428, Structured Concurrency (Incubator), delivered in JDK 19, to allow time for additional feedback and experience. The intent of this feature is to simplify multithreaded programming by introducing a library to treat multiple tasks running in different threads as a single unit of work. This can streamline error handling and cancellation, improve reliability, and enhance observability. The only change is an updated StructuredTaskScope class to support the inheritance of scoped values by threads created in a task scope. This streamlines the sharing of immutable data across threads. Further details on JEP 428 may be found in this InfoQ news story.

Working applications on how to implement the Virtual Threads and Structured Concurrency APIs may be found in: this GitHub repository by Nicolai Parlog, Java developer advocate at Oracle; and this GitHub repository by Bazlur Rahman, Senior Software Engineer at Contrast Security.

Project Amber

JEP 432 and JEP 433 fall under the auspices of Project Amber, a project designed to explore and incubate smaller Java language features to improve productivity.

JEP 432, Record Patterns (Second Preview), incorporates enhancements in response to feedback from the previous round of preview, JEP 405, Record Patterns (Preview). This proposes to enhance the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. Changes from JEP 405 include: added support for inference of type arguments of generic record patterns; added support for record patterns to appear in the header of an enhanced for statement; and remove support for named record patterns.

Similarly, JEP 433, Pattern Matching for switch (Fourth Preview), incorporates enhancements in response to feedback from the previous three rounds of preview: JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. Changes from JEP 427 include: a simplified grammar for switch labels; and inference of type arguments for generic type patterns and record patterns is now supported in switch expressions and statements along with the other constructs that support patterns.

A working application on how to implement the Record Patterns and Pattern Matching for switch APIs may be found in this GitHub repository, java-19 folder, by Wesley Egberto, Java technical lead at Global Points.

JDK 21

Only one (1) JEP has been Targeted for inclusion in JDK 21 at this time. JEP 431, Sequenced Collections, has been promoted from Proposed to Target to Targeted status for JDK 21. This JEP proposes to introduce “a new family of interfaces that represent the concept of a collection whose elements are arranged in a well-defined sequence or ordering, as a structural property of the collection.” Motivation was due to a lack of a well-defined ordering and uniform set of operations within the Collections Framework. Further details on JEP 431 may be found in this InfoQ news story.

However, based on recently submitted JEP drafts and JEP candidates that propose finalized features, we have surmised which JEPs have the potential to be included in JDK 21.

JEP 440, Record Patterns, has been promoted from its JEP Draft 8300541 to Candidate status this past week. This JEP finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for statement.

Similarly, JEP 441: Pattern Matching for switch, has been promoted from its JEP Draft 8300542 to Candidate status. This JEP also finalizes this feature and incorporates enhancements in response to feedback from the previous four rounds of preview: JEP 433, Pattern Matching for switch (Fourth Preview), delivered in JDK 20; JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. This feature enhances the language with pattern matching for switch expressions and statements.

JEP 442, Foreign Function & Memory API (Third Preview), has been promoted from its JEP Draft 8301625 to Candidate status. This JEP incorporate refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList class.

JEP Draft 8303683, Virtual Threads, was submitted by Ron Pressler, architect and technical lead for Project Loom at Oracle, and Alan Bateman, architect, Java Platform Group, at Oracle this past week. This JEP proposed to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. Further details on JEP 425 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.

The formal release date for JDK 21 has not yet been announced, but it is expected to be delivered in mid-September 2023 as per the six-month release cadence. Developers can anticipate a feature freeze in mid-June 2023. More details on additional JEP drafts and candidates may be found in this more detailed InfoQ news story.

JDK 20 may now be downloaded from Oracle with binaries from other vendors expected to become available in the coming days.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Java News Roundup: New JEPs, GraalVM 23 Early-Access, Infinispan, Mojarra, Micrometer Metrics

MMS Founder
MMS Michael Redlich

Article originally posted on InfoQ. Visit InfoQ

This week’s Java roundup for March 13th, 2023 features news from OpenJDK, JDK 20, JDK 21, GraalVM 23.0 early-access, Spring Tools 4.18, Quarkus 3.0-Alpha6, Hibernate ORM 6.2 CR4, Micrometer Metrics 1.11, Micrometer Tracing 1.1, Infinispan 14.0.7, Piranha 23.3, Project Reactor 2022.0.5, Eclipse Mojarra 4.0.2, Apache Groovy 4.0.10 and 3.0.16, JHipster Lite 0.29.0, JReleaser 1.5.1 and JobRunr 6.1.2.

OpenJDK

JEP 440, Record Patterns, has been promoted from its JEP Draft 8300541 to Candidate status this past week. This JEP finalizes this feature and incorporates enhancements in response to feedback from the previous two rounds of preview: JEP 432, Record Patterns (Second Preview), delivered in JDK 20; and JEP 405, Record Patterns (Preview), delivered in JDK 19. This feature enhances the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to “enable a powerful, declarative, and composable form of data navigation and processing.” Type patterns were recently extended for use in switch case labels via: JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18, and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. The most significant change from JEP 432 removed support for record patterns appearing in the header of an enhanced for statement.

Similarly, JEP 441: Pattern Matching for switch, has been promoted from its JEP Draft 8300542 to Candidate status. This JEP also finalizes this feature and incorporates enhancements in response to feedback from the previous four rounds of preview: JEP 433, Pattern Matching for switch (Fourth Preview), delivered in JDK 20; JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. This feature enhances the language with pattern matching for switch expressions and statements.

JEP 442, Foreign Function & Memory API (Third Preview), has been promoted from its JEP Draft 8301625 to Candidate status. This JEP incorporate refinements based on feedback and to provide a third preview from: JEP 434, Foreign Function & Memory API (Second Preview), delivered in JDK 20; JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 434 include: centralizing the management of the lifetimes of native segments in the Arena interface; enhanced layout paths with a new element to dereference address layouts; and removal of the VaList class.

JEP Draft 8303683, Virtual Threads, was submitted by Ron Pressler, architect and technical lead for Project Loom at Oracle, and Alan Bateman, architect, Java Platform Group, at Oracle this past week. This JEP proposed to finalize this feature based on feedback from the previous two rounds of preview: JEP 436, Virtual Threads (Second Preview), delivered in JDK 20; and JEP 425, Virtual Threads (Preview), delivered in JDK 19. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. The most significant change from JEP 436 is that virtual threads now fully support thread-local variables by eliminating the option to opt-out of using these variables. More details on JEP 425 may be found in this InfoQ news story and this JEP Café screen cast by José Paumard, Java developer advocate, Java Platform Group at Oracle.

JEP Draft 8304400, Launch Multi-File Source-Code Programs, also submitted by Pressler, proposes to enhance the Java Launcher to execute an application supplied as one or more files of Java source code. This allows a more gradual transition from small applications to larger ones by postponing a full-blown project setup.

JDK 20

JDK 20 remains in its release candidate phase with the anticipated GA release on March 21, 2023. Build 36 remains the current build in the JDK 20 early-access builds. More details on this build may be found in the release notes.

JDK 21

Build 14 of the JDK 21 early-access builds was also made available this past week featuring updates from Build 13 that include fixes to various issues. Further details on this build may be found in the release notes.

For JDK 20 and JDK 21, developers are encouraged to report bugs via the Java Bug Database.

GraalVM

Oracle Labs has published the latest early-access developer builds for GraalVM 23.0.0. New features include: initial support for Native Image Bundles; improved support for AWT on Linux; and native image recommendations. More details on this release may be found in the release notes.

Spring Framework

The release of Spring Tools 4.18.0 ships with: an upgraded Eclipse 2023-03 IDE; new and improved content-assist for Spring Data repository query methods; a fix for an issue that caused regular Java content-assist in VSCode to stop working; and a fix in m2e that caused resource files, such as application.properties, to not be copied into the target folder. More details on this release may be found in the release notes.

Quarkus

The sixth alpha release of Quarkus 3.0.0 provides these two new features: enabling OpenTelemetry for JDBC by setting the quarkus.datasource.jdbc.telemetry property to true; and the CredentialsProviders interface now supports MongoDB connections. There were also dependency upgrades to SnakeYaml 2.0, Maven Compiler Plugin 3.11.0, Maven OpenRewrite Maven Plugin 4.41.0, SmallRye Common 2.1.0 and JBoss Threads 3.5.0.Final. More details on this release may be found in the changelog.

Hibernate

The fourth release candidate of Hibernate ORM 6.2 provides 33 bug fixes and 28 refinements based on Java community feedback. It is expected that this is the last release candidate before the final release.

Micrometer

The second milestone release of Micrometer Metrics 1.11.0 delivers new features such as: a new metric, jvm.threads.started, that reports the total number of active application threads in the JVM; a new Elasticsearch endpoint, _index_template, to create index templates; add the GC name to the jvm.gc.pause metric; and support for micrometer libraries on OSGi-based Java runtimes.

Similarly, the second milestone release of Micrometer Tracing 1.1.0 features: parity with Spring Cloud Sleuth annotations; and dependency upgrades to Micrometer 1.11.0-M2 and OpenTelemetry 1.24.0.

Infinispan

Infinispan 14.0.7.Final has been released featuring support for Spring Framework 6 and Spring Boot 3. Some notable bug fixes include: a NullPointerException in the MetricsCollector class; JSON parser doesn’t correctly report error locations; the Redis Serialization Protocol (RESP) endpoint cannot parse requests larger than the packet size; and concurrent access to Spring Session integrations result in lost session attributes.

Piranha

The release of Piranha 23.3.0 provides notable changes such as: an updated CodeQL workflow; add JUnit tests for the DefaultAnnotationManager class; and a fix for the RuntimeException when the endpoint application is still in the process of being deployed. More details on this release may be found in their documentation and issue tracker.

Project Reactor

Project Reactor 2022.0.5, the fifth maintenance release, provides dependency upgrades to reactor-core 3.5.4, reactor-addons 3.5.1, reactor-netty 1.1.5, reactor-kafka 1.3.17 and reactor-kotlin-extensions 1.2.2.

Eclipse Mojarra

Eclipse Mojarra 4.0.2 has been released with notable changes such as: cleanup of the MockServletContext class to remove unused methods and add the @Override annotation; cleanup of the ParseXMLTestCase class to remove unused methods, variables and commented code; ensure the version() method in the @FacesConfig annotation cannot return null; and a fix for a NumberFormatException upon updating buttons inside a facet header of a data table. More details on this release may be found in the release notes.

Apache Software Foundation

The release of Apache Groovy 4.0.10 delivers notable bug fixes and improvements such as: a confusing error message from the GroovyScriptEngine class; a memory leak where local variable values are not discarded; the @Builder annotation not working on JDK 16; and the MissingPropertyException truncates the name of a nested class name. More details on this release may be found in the release notes.

Similarly, the release of Apache Groovy 3.0.16 ships with notable bug fixes such as: unable to call methods from the BiPredicate interface on closures or lambdas on JRE 16+; the use of the @CompileStatic annotation confuses statically importing instances and methods; and an IllegalAccessException using the default interface methods with JDK 17 and Groovy 3.0.9. This release also supports JDK 16. More details on this release may be found in the release notes.

JHipster

The JHipster team has released JHipster Lite 0.29.0 with new features and enhancements such as: removing dependencies from the JHipsterModulePackageJson class based on user feedback; removing the warning messages when more than four active ApplicationContext sessions within Cassandra database applications are being tested; and a new dependency and configuration for Redis. More details on this release may be found in the release notes.

JReleaser

Version 1.5.1 of JReleaser, a Java utility that streamlines creating project releases, has been released delivering notable fixes such as: add the missing graalVMNativeImage property to the Native Image assembler utility; The Java Archive utility generates the wrong format for the JAVA_OPTS environmental variable; and improved error handling when executing external commands. More details on this release may be found in the release notes.

JobRunr

JobRunr 6.1.2 has been released featuring two bug fixes: a failure to update metadata, with eventual shut down, when using MySQL and the useServerPrepStmts property set to true; and an issue with the JobRunr Quarkus Extension in which the JobRunrDocumentDBStorageProviderProducer class is not using proper configuration.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.