Java Digest 08/23: Toward Condensers, Apache Camel 4.0, Uber Cadence, Postman’s State of the API, pg_later

Andrew Petryk
8 min readSep 1, 2023

--

This digest was prepared in co-op with Ivan Mahlatii. Kudos, Ivan!

🙋 Aloha, friends!

So here we are, coming to the logical conclusion of the last month of summer. To ensure you don’t feel nostalgic about it, we have prepared the latest Java, and not-so, news for you.

You can read the previous digests (they are available in Ukrainian) here and here.

Soon in September, we will all be able to try out the release version of Java 21. But progress doesn’t stand still. Therefore, the most avid Java enthusiasts can enjoy the next version of Java. Recently, JDK 22 EA Build 11 has become available. More detailed information about JDK 22 EA can be found here.

Anyone willing to assist with testing can report bugs in JDK 21 and JDK 22 through the Java Bug Database.

Brian Goetz, Mark Reinhold, and Paul Sandoz have presented a very interesting article about what they call “composable condensers” in the Leyden project. For the full article, check here.

And, we couldn’t miss featuring a presentation from our favorite Java Language Architect at the JVM Language Summit: A Classfile API for the JDK.

Since today no conference can happen without a talk about virtual threads, here’s the relevant content from the same JVMLS: The Challenges of Introducing Virtual Threads to the Java Platform — Project Loom

And if that wasn’t enough, here’s a talk by Ron Pressler himself on Continuations — Under the Covers

You can read a summer update on the JEP dedicated to the Foreign Function & Memory API by Maurizio Cimadamore. You can learn more about the Foreign Function & Memory API from this video — Project Panama — Foreign Function & Memory API

Two updates from the OpenJDK Quality Group: Starting from Java 21, JLine will be the new default for console invocation, and there are changes in the way annotation processors work. Learn more here and here.

Additionally, in August, we encountered two interesting JEP drafts: computed constants and AOT compilation for the JVM. Based on the information, it seems that computed constants as a preview feature will be available in one of the builds of Java 22. You can read more in Pera Minborg’s blog post. Computed constants are also a cornerstone of ongoing work on the Layden project.

The latest installment of “Inside Java” is dedicated to the Key Encapsulation Mechanism API — Strengthen your Java App’s Defenses with Key Encapsulation Mechanism API — Inside Java Newscast #54

You can also read a list of GC improvements awaiting us in Java 21. Users can expect enhancements in the G1 GC.

If you enjoy optimizing resource usage, we recommend checking out the research report on improving default JVM settings, published by Bruno Borges from Microsoft.

The Timefold team conducted a comparative benchmark of Java 21 vs. Java 17. According to their research, upgrading to Java 21 could improve productivity.

No matter the month, season, or time of day outside the window, the Spring team is churning out updates in the best traditions of the Industrial Revolution.

In the middle of August, the fourth milestone of Spring Framework 6.1.0 was released, bringing a lot of exciting additions. Firstly, there’s the new JdbcClient, fashioned after the DatabaseClient in R2DBC. You can check out the interface here. This version also introduces a new RowMapper that can automatically “map” values. Among other things, monitoring indicators and tracing for JMS were added, CompletableFuture support for methods annotated with @Cacheable, and much more. For more detailed information about this update, you can refer to the release notes.

Spring Modulith finally reached its GA version. The project started as a research initiative around 5 years ago and was elevated to experimental status last year. If you prefer crafting well-structured Spring Boot applications, it’s recommended to familiarize yourself with this project.

Additionally, the second milestone of Spring Boot 3.2.0 was released. As expected, it includes support for the latest Spring Framework 6.1.0 milestone. The new JdbcClient, improved virtual threads support, and numerous dependency updates are waiting for you.

New patch versions of Spring Boot 2.7.15, 3.0.10, and 3.1.13 are available for download. We recommend not ignoring these new versions, as they regularly contain vulnerabilities and bug fixes.

The Spring Data team knows no rest and keeps on releasing. Spring Data 2023.1.0, codenamed Vaughn, includes compatibility with JDK 21; support for value-classes with Kotlin; use of virtual threads through the Executor interface; and exploration of potential optimizations through Coordinated Restore at Checkpoint (CRaC). Additional information about this release can be found here.

The Spring Batch team released new versions: Spring Batch 5.1.0-M2, 5.0.3, and 4.3.9. They also introduced a new course for those interested in utilizing their product in their own projects. We highly recommend Spring Academy for those who want to improve their Spring skills.

Spring Cloud is slowly preparing for the release of Spring Cloud 2023.0.0. The first milestone appeared this month. The team also released Spring Cloud 2022.0.4 (aka Kilburn).

If you’re an Eclipse or VS Code user, rush to grab the latest version of Spring Tools here.

Spring Shell 2.1.12, 3.0.7, and 3.1.3, as well as Spring Authorization Server 1.1.2, are also now available.

AI hasn’t disappeared from trends, and Spring certainly isn’t lagging behind in that regard — you can check out the corresponding experimental project here.

Additionally, there’s a fresh video from SpringOne Dr. Mark Pollack, lead of the new Spring AI project

  • Microsoft continues its efforts to catch up with AWS. In this context, Azure has introduced Web App Patterns.
  • AWS has announced the availability of the Vector engine for their OpenSearch Serverless (which is AWS equivalent to Elasticsearch).

Whoa, I interrupt You in the middle of the article, when You least expect it.

While u reading this Ukraine is suffering from criminal and unprovoked ruzzian aggression.

But, You can help. Donate some money to the Back & Alive charity foundation and help Ukrainians win faster.

  • Groovy has released a series of new versions, including an alpha release of the upcoming version 5, as announced by Paul King on his Twitter.
  • Quarkus has released version 3.2.3 with the “Final” tag.
  • Micronaut has released versions 4.0.2, 3.10.0, and 3.9.5. Additionally, on August 24th, version 4.0.5 was also released.
  • Hibernate Search 6.2.1.Final has been released with several notable changes, including the ability to read Jandex indexes repackaged by Spring applications running on JDK 13+. Search queries with partial errors can now trigger an exception if the property hibernate.search.backend.query.shard_failure.ignore is set to false. Dependencies have been updated to Hibernate ORM 6.2.7.Final and Elasticsearch client 8.9.0. Compatibility with OpenSearch 2.9.0 has also been ensured.
  • The new 6th version of Grails has been released.
  • A new version of Testcontainers, version 1.19.0, is now available.
  • Scala Center has released updates to their Scala learning courses.
  • Apache Camel has released a new major version, 4.0.0.
  • The Apache Commons library has added new FileUpload capabilities for servlet-based web applications.
  • You can read about the enhancements for VSCode for Java in August here.
  • You can access Graal CE releases here.
  • Postman has published its annual “State of the API” report.
  • Uber has announced its platform for workflow management, which looks quite interesting.
  • ClickHouse has announced SharedMergeTree and Lightweight Updates.
  • Although not related to Java, the digest couldn’t ignore it — nVidia has introduced Neuralangelo.
  • ATTENTION! WARNING! POZOR! This is not a drill — IBM is preparing to release the Kraken - watsonX Code Assistant for Z (planned for Q4 2023), which will be capable of translating COBOL code into Java on Z mainframes.
  • pg_later. We have always considered PostgreSQL as “The Ideal. Perfection. The Best There Is.”

🔗 If you have something to say, join the Quarkus vs. Micronaut discussion on Reddit.

🔗 Billy Korando shared his SpringIO presentation (which took place this spring).

🔗 Michael Simmons gives a masterclass on using TestContainers with Spring Boot.

🔗 Nicolas Frankel published a comparative article on Apache APISIX vs. Spring Cloud Gateway.

🔗 Daniel Raab (the person behind Eclipse Collections) wrote a fascinating article about data structures that are still missing in JDK — read it here.

🔗 A retrospective look at microservices architecture by Adrian Cockcroft.

🔗 DTOs have long survived the reason for their existence (hello, EJB!), so Otavio Santana and Michael Redlich tried to explore whether Java Records are a continuation of DTO ideas or something else.

🔗 A compact and accessible cheatsheet from Serverless Land about queues vs. streams vs. pub/sub.

🔗 Ken Kousen, the author of “Tales from the Jar side”, released an interesting video (of course) about OpenAI and how to interact with it using Java OpenAI tools in Java 17: List the Models

🔗 If you, like us, are concerned about the lack of a strong Java presence in the GPU world, perhaps this video can shed some light on its the current state Java and GPU … are we nearly there yet?

And of course, we haven’t forgotten about TornadoVM From CPU to GPU and FPGAs: Supercharging Java Applications with TornadoVM

🔗 Ionut Balosin conducted a comparative analysis of energy consumption among different distributions of JDK 17.

🔗 If tiered compilation in OpenJDK is something you haven’t quite grasped yet, Cesar Soares wrote this article especially for you.

🔗 Nataliia Dziubenko published an interesting article about the fate of String in the world after Java 21.

🔗 Have you ever thought about how challenging it is to design multithreaded data structures? Whatever your answer, this article sheds light on many interesting solutions and trade-offs.

🔗 Sometimes it’s intriguing to peek into the curtain of what awaits us in the near future — precisely for such enthusiasts, there’s Noria.

Thx for reading this far and see You in the next episodes!

--

--

Andrew Petryk

Engineering Director @Avenga, #JavaDayLviv Head of PC, speaks about #java #groovy #scala #spring #micronaut #dota2 #heroes3 https://twitter.com/ipreferespresso