Author: Karsten Silz
Dec 7, 2022   |  updated Dec 7, 2022 4 min read

Permalink: https://betterprojectsfaster.com/guide/java-full-stack-report-2022-12/new-noteworthy/

Java Full-Stack Report December 2022: New & Noteworthy


This is an old version! Click below for the current one.

See Current Version


What’s This?

Here are my most important news for Java developers from last month: Spring Boot 3 brings Java 17, Jakarta EE 9, and native Java with GraalVM, Spring Modulith structures Spring Boot 3 applications with modules and events, a new UI in IntelliJ 2022.3, and a garbage collection refresher.

Archive

2022 Nov Oct Sep Aug Jul Jun May Apr Mar Feb Jan

Table Of Contents

New & Noteworthy

Spring Boot 3: Java 17, Jakarta EE 9, and Native Java with GraalVM

VMware released Spring Framework 6 and Spring Boot 3. After five years of Spring Framework 5, these releases start a new generation for the Spring ecosystem. Spring Framework 6 requires Java 17 and Jakarta EE 9 and is compatible with the recently released Jakarta EE 10. It also embeds observability through Micrometer with tracing and metrics. Spring Boot 3 requires Spring Framework 6. It has built-in support for creating native executables through static Ahead-of-Time (AOT) compilation with GraalVM Native Image.

The originally planned support for the Java Platform Module System (JPMS) in Spring Framework 6 did not ship, as Spring focused on AOT compilation with GraalVM Native Image this time. It’s unclear if and when Spring will support JPMS.

Spring Boot 3.0 has a migration guide. It suggests upgrading to Spring Boot 2.7 first before moving to Spring Boot 3.0.

I also interviewed Java Champion and original Spring Developer Advocate Josh Long on this topic. There, Josh tells us why Spring Framework 6 took so long, why he loves reactive programming, and which Spring project he’d like to see resurrected.


Spring Modulith Structures Spring Boot 3 Applications with Modules and Events

VMware has introduced an experimental project, Spring Modulith, to better structure monolithic Spring Boot 3 applications through modules and events. Despite the name suggesting otherwise, we can use this framework for any Spring Boot project, including microservices. I had the chance to interview the author of this Spring project for my news item.

The project introduces new classes and annotations but doesn’t generate code. Its modules don’t use the Java Platform Module System (JPMS) but instead map to plain Java packages. Modules have an API, but Spring Modulith encourages using Spring application events as the “primary means of interaction.” These events can be automatically persisted in an event log. Spring Modulith also eases the testing of modules and events.


A New UI in IntelliJ 2022.3

JetBrains announced a new UI for its products, including IntelliJ, in May this year. Now that new UI isn’t the Visual Studio Code clone “Fleet” they announced a year ago — that’s separate (though Fleet also uses the new UI).

With IntelliJ 2022.3, we can now test the new UI. I took a brief look and immediately went back: Rearranging where to find the existing functionality is less appealing to me, as I know where everything is already. JetBrains held a webinar on the new UI, demoing and explaining it.

The good news for people like me: The old UI will remain in IntelliJ “for at least a year after the new UI becomes the default.” So we all have some time to get used to the new UI!


A Garbage Collection Refresher

We all know that there’s garbage collection in Java so that we developers don’t have to reserve and release memory manually. Wonderful! But how does that work exactly? Here are the two main ideas.

  • Garbage collectors do one or more of these four activities: Mark labels all objects still in use as “live”. Sweep clears all non-live objects. Compact brings live objects closer together, so bigger memory blocks are available. And copy moves all live objects to a “to” space, while non-live objects remain in a “from” space.
  • When selecting a garbage collector, you can pick at most two of three benefits: very low latency, very high throughput, and lowest CPU and memory usage.

The article tells us more. 😃


comments powered by Disqus