BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Java News Roundup: New JEP Candidates, Milestone Releases for Spring Projects and Micrometer

Java News Roundup: New JEP Candidates, Milestone Releases for Spring Projects and Micrometer

This week's Java roundup for February 12th, 2024, features news highlighting: new JEP candidates, JEP 465 and JEP 466, milestone and point releases of Spring Framework, Spring Data, Micrometer and Project Reactor, Hibernate Search 7.1.0-RC1 and Infinispan 15.0.0.Dev01.

OpenJDK

JEP 466, Class-File API (Second Preview), has been promoted from its JEP Draft 8324965 to Candidate status. This JEP proposes a second round of preview to obtain feedback from the previous round of preview: JEP 457, Class-File API (Preview), to be delivered in the upcoming release of JDK 22. This feature provides an API for parsing, generating, and transforming Java class files. This will initially serve as an internal replacement for ASM, the Java bytecode manipulation and analysis framework, in the JDK with plans to have it opened as a public API. Goetz has characterized ASM as "an old codebase with plenty of legacy baggage" and provided background information on how this draft will evolve and ultimately replace ASM.

JEP 465, String Templates, has been promoted from its JEP Draft 8323333 to Candidate status. This JEP proposes to finalize this feature after two rounds of preview, namely JEP 459, String Templates (Second Preview), to be delivered in the upcoming release of JDK 22, and JEP 430, String Templates (Preview), delivered in JDK 21. This feature enhances the Java programming language with string templates, string literals containing embedded expressions, that are interpreted at runtime where the embedded expressions are evaluated and verified. Further details on JEP 430 may be found in this InfoQ news story.

Archie Cobbs, founder and CEO at PatientEXP, and Gavin Bierman, consulting member of technical staff at Oracle, have introduced JEP Draft 8325803, Flexible Constructor Bodies (Second Preview), a JEP that proposes a second round of preview and a name change to obtain feedback from the previous round of preview, namely JEP 447, Statements before super(...) (Preview), to be delivered in the upcoming release of JDK 22. This feature allows 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. Changes in this JEP include: a treatment of local classes; and a relaxation of the restriction that fields cannot be accessed before an explicit constructor invocation to a requirement that fields cannot be read before an explicit constructor invocation. 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.

JDK 23

Build 10 of the JDK 23 early-access builds was made available this past week featuring updates from Build 9 that include fixes for various issues. More details on this release may be found in the release notes.

JDK 22

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

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

Spring Framework

The release of Spring Framework 6.1.4 delivers bug fixes, improvements in documentation, dependency upgrades, and many new features such as: allow subclasses of the BeanPropertyRowMapper class to customize mapped names; a refactor of the ReloadableResourceBundleMessageSource class to allow subclasses to reuse collecting and merging algorithms when overriding the getMergedProperties() method; and reject multiple declarations of the @HttpExchange annotation on the same element instead of logging a warning. More details on this release may be found in the release notes.

Similarly, versions 6.0.17 and 5.3.32 of Spring Framework have also been released featuring bug fixes, improvements in documentation and new features: allow the @CrossOrigin annotation to provide a Access-Control-Allow-Private-Network header from an application to Google Chrome if the Access-Control-Request-Private-Network header (Private Network Access) is sent in the preflight request; and avoid early resolution of the getMostSpecificMethod() method defined in the ClassUtils class from within the CommonAnnotationBeanPostProcessor class due to it being called at an outer level before finding an annotation. Further details on this release may be found in the release notes for version 6.0.17 and version 5.3.32.

The first milestone release of Spring Data 2024.0.0 ships with new features such as: support for Value Expressions that align closer with the Spring Framework @Value annotation for improved representation of Spring Expression Language (SpEL) expressions (#{…}), property placeholders (${…}), or both; compatibility with the MongoDB 5.0 driver; and the ability to create explicit transactions around the database operations within the Neo4jTemplate and ReactiveNeo4jTemplate classes that avoids confusion around multiple transactions being on the driver level if there are more than one query involved in this operation. More details on this release may be found in the release notes.

Similarly, versions 2023.1.3 and 2023.0.9 of Spring Data have been released providing bug fixes and respective dependency upgrades to sub-projects such as: Spring Data Commons 3.2.9 and 3.1.9; Spring Data MongoDB 4.2.9 and 4.1.9; Spring Data Elasticsearch 5.2.9 and 5.1.9; and Spring Data Neo4j 7.2.9 and 7.1.9. These versions may also be consumed by the upcoming releases of Spring Boot 3.2.3 and 3.1.9, respectively.

Open Liberty

IBM has released version 24.0.0.2-beta of Open Liberty featuring back-channel logout support for OpenID Connect clients and servers. A back-channel logout allows OpenID Connect servers to directly notify OpenID Connect clients of a user logout so that each OpenID Connect client can also locally logout the user. This direct communication resolves the issue in which this communication only happened via iFrames that were embedded in the OpenID Connect client’s web page.

Micronaut

The Micronaut Foundation has released version 4.3.2 of the Micronaut Framework featuring Micronaut Core 4.3.6, bug fixes, improvements in documentation, and updates to modules: Micronaut for Spring, Micronaut Tracing, Micronaut SQL Libraries, Micronaut Cache, and Micronaut Security. There was also a dependency upgrade to Netty 4.1.107. Further details on this release may be found in the release notes.

Quarkus

Quarkus 3.7.3, the third maintenance release, provides bug fixes, dependency upgrades and notable changes such as: a performance improvement in the OidcTestSecurityIdentityAugmentor class by setting generation of the privateKey attribute as final and static; the ability to use multiple instances of the @TestConfigProperty annotation on both classes and methods that allows for overriding multiple configuration values per test method; and a resolution to an IndexOutOfBoundsException from the getUriInfo() and getMatchedURIs() methods, defined in the Jakarta RESTful Web Services ContainerRequestContext and UriInfo interfaces, respectively, in which setting the value in the quarkus.http.root-path property that does not end in a slash. More details on this release may be found in the changelog.

Hibernate

The first release candidate of Hibernate Search 7.1.0 features: improved entity registration in the standalone POJO mapper via the new @SearchEntity annotation; a new query string predicate, queryString, that matches documents according to a structured query, provided as a string, to allow building more advanced query strings; and a new knn query, introduced in Elasticsearch 8.12, to remove some of the limitations on vector search capabilities.

Infinispan

Version 15.0.0.Dev09 of Infinispan ships with dependency upgrades and notable changes such as: a resolution to a "flaky test failure" from within the testExpirationCompactionOnLogFile() method defined in the SoftIndexFileStoreFileStatsTest class; a move of the TimeoutException class to the org.infinispan.commons package to reside in the same package as the CacheException class; and a mask of Hot Rod and database credentials when serializing configuration. Further details on this release may be found in the release notes.

Micrometer

Version 1.13.0-M1 of Micrometer Metrics delivers bug fixes, dependency upgrades and new features such as: remove an unnecessary call to the getConventionName() method, defined in the Meter.Id class, from within the PrometheusMeterRegistry class due to a duplicate calculation of the collector name; add a log entry for when the value returned by the record() method, defined in the AbstractTimer class, is negative; and add a database tag to DefaultMongoCommandTagsProvider class to support the databaseName property name for command events added in MongoDB 4.11.0. More details on this release may be found in the release notes.

Similarly, versions 1.12.3 and 1.11.9 of Micrometer Metrics ship with dependency upgrades and notable bug fixes such as: a NoSuchMethodException upon using the @MeterTag annotation on a package private method; an ArithmeticException upon calculating a modulus from the TimeWindowMax class if the durationBetweenRotatesMillis field is set to 0; and a continuous integration failure using ZGC from within the sizeMetricsNotSetToZero() method defined in the JvmGcMetricsTest class. Further details on these releases may be found in the release notes for version 1.12.3 and version 1.11.9.

Version 1.3.0-M1 of Micrometer Tracing provides bug fixes, dependency upgrades and new features: a new TestSpanReporter class, an implementation of the SpanReporter interface, that can store implementations of the FinishedSpan interface upon span reporting that allows one API to handle spans for tests regardless of used tracer; an update to Zipkin Brave 6.0, a distributed tracing instrumentation library, that avoids use of an internal type not supported by Brave 6.0; and reuse of the W3CPropagation class that avoids a significant behavior bug. More details on this release may be found in the release notes.

Similarly, version 1.2.3 and 1.1.10 of Micrometer Tracing ship with dependency upgrades and notable bug fixes: a missing user-defined tag from the OtelBaggageManager class despite creating the span; test failures after upgrading to Spring Boot 3.2.1 due to the lack of some attributes in the Log4j Mapped Diagnostic Context. Further details on these releases may be found in the release notes for version 1.2.3 and version 1.1.10.

Project Reactor

Project Reactor 2023.0.3, the third maintenance release, provides dependency upgrades to reactor-core 3.6.3, reactor-netty 1.1.16 and reactor-kafka 1.3.23. There was also a realignment to version 2023.0.3 with the reactor-pool 1.0.5, 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.

Next, Project Reactor 2022.0.16, the sixteenth maintenance release, provides dependency upgrades to, reactor-netty 1.1.16 and reactor-kafka 1.3.23 . There was also a realignment to version 2022.0.16 with the reactor-core 3.5.14, reactor-pool 1.0.5, reactor-addons 3.5.1 and reactor-kotlin-extensions 1.2.2 artifacts that remain unchanged. Further details on this release may be found in the changelog.

And finally, the release of Project Reactor 2020.0.41, codenamed Europium-SR41, provides dependency upgrades to reactor-netty 1.0.42 and reactor-kafka 1.3.23. There was also a realignment to version 2020.0.41 with the reactor-core 3.4.35, reactor-pool 0.2.12, reactor-addons 3.4.10, reactor-kotlin-extensions 1.1.10 and reactor-rabbitmq 1.5.6 artifacts that remain unchanged. More details on this release may be found in the changelog.

Piranha

The release of Piranha 24.2.0 delivers notable changes such as: ensure that the forward() method defined in the Jakarta Servlet RequestDispatcher interface does not wrap the request and honors the parameter precedence; new builder classes, DefaultWebApplicationRequestBuilder and DefaultWebApplicationResponseBuilder for improved requests and responses to complement the WebApplication class; and a Consolidation of tests for the HttpSession interface and its related APIs. Further details on this release may be found in their documentation and issue tracker.

About the Author

Rate this Article

Adoption
Style

BT