IntelliJ IDEA Java News

Java Annotated Monthly – November 2023

Welcome to the Java Annotated Monthly – November 2023!

As the Java world keeps on spinning, we’ve gathered a treasure trove of articles, talks, and insights to warm your Java developers’ hearts. This month’s edition features a delightful blend of the latest technological advancements and the ever-inspiring soft-skills discussions.

We’ve also selected several talks recorded during Devoxx Belgium and included an interview with its participants. Moreover, we’ve handpicked a selection of exciting events, both online and offline, that you might want to check out in November.

So, settle in and enjoy the read!

Java News

Java News Roundup 1, 2, 3, 4 – The crucial updates in the world of Java are collected here. Don’t miss out!

Here are the new candidates introduced in October:

Java Tutorials and Tips

Project Leyden – Brian Goetz discusses Project Leyden and outlines its primary objectives, which revolve around enhancing startup time, reducing the time it takes to hit peak performance, and shrinking the overall footprint of Java applications.

With Java 21, Your Code Runs Even Faster but How is that Possible? – Java 21 is the fastest version so far. In this brief discussion, you’ll find out how the speed was boosted for old classes and look at potential future improvements.

Generational ZGC – Sip of Java – In this podcast hosted by Billy Korando, we’ll explore the significant changes made to the Z Garbage Collector (ZGC) in JDK 21. This update has turned ZGC into a multi-generational garbage collector, often referred to as Generational ZGC.

Reified Generics in Java? – Even though Java does not support reified generics, there is a workaround that allows an array type to be reified even with an erased generics type.

Teaching Old Streams New Tricks – In this Devoxx presentation, Victor Klang showcases Gatherers, a prospective future API designed to create and reuse intermediate operations for java.util.stream.Stream.

New Class-File API will make Java Updates easier – Inside Java Newscast #56 – This video introduces the new class-file API that ships an up-to-date bytecode analysis and manipulation API with the JDK.

ArrayList vs. LinkedList – JEP Cafe #20 – The Collections Framework has two List implementations: ArrayList and LinkedList. This JEP Café explains how to measure their performance and memory usage to help you pick the right one for your application.

Where the JVM is Entering the Era of AI Performance Tuning! – Created by Oracle’s JVM team, the Oracle Java Management Cloud Service (JMS) now includes an AI engine for performance analysis. Ana-Maria Mihalceanu presents this AI engine during her talk at Devoxx Belgium 2023.

JDWP, onthrow, and a mysterious errorJohannes Bechberger describes how the JDWP agent helps to track and solve a JDB bug.

What is… a Concurrent Undo CycleThomas Schatzl explains what Concurrent Undo Cycle messages in the logs mean and what you should do if they occur.

Foojay Podcast #30: Utrecht JUG – If you have ever wondered what a JUG (Java User Group) is, this talk may be interesting.

Testing virtual thread applications – This video shows how to test a CRUD application using virtual threads in Quarkus and detect pinning there.

Is Your Java Application Slow? Check out These Open-Source ProfilersJohannes Bechberger focuses on the fundamental aspects of profiling, including topics such as flame graphs, utilizing async-profiler and JMC, and weighing the pros and cons of these various tools.

How to Diagnose and Mitigate Pinning in Java’s Virtual Thread ExecutionA N M Bazlur Rahman breaks down the concept of pinning, exploring why it happens, its limitations, and how to manage and track it effectively.

Java 21 Record and Pattern Matching: Master Data-Oriented Programming [Video] – In this short article and the video linked to it, Otavio Santana demonstrates JEPs 440 and 441.

Java and MongoDB Integration: A CRUD Tutorial [Video Tutorial] – This page presents a collection of videos devoted to MongoDB, from installation to updating multiple documents in a MongoDB collection, and many other topics.

Java 21 and the Upcoming Jakarta EE 11: A New Era of Cloud Native Java – In this blog, Jadon Ortlepp discusses how Java 21 and the upcoming Jakarta EE release can improve cloud-native Java development, both individually and together.

Beyond Pass/Fail- a Modern Approach to Java Integration Testing – In this article, Roni Dover reevaluates the testing pyramid in light of evolving technology trends and proposes a fresh default approach for testing your application.

Support Markdown in Javadoc CommentsJonathan Gibbons provides updates on the improved support for Markdown in documentation comments, including a new form for documentation comments, code spans and code blocks, reference links, and more.

Languages, Frameworks, Libraries, and Technologies

This Week in Spring 1, 2, 3, 4 – Check out the most important Spring-related news. 

The best way to use Spring Data JPA Stream methodsVlad Mihalcea explores the optimal approach to using Spring Data JPA Stream query methods. When dealing with large result sets, Java Streams offer the advantage of fetching data progressively instead of all at once.

A Bootiful Podcast: Spring Data legend Greg Turnquist on optimizations and queries and more – This podcast features a chat with the Spring Data expert Greg Turnquist about the remarkable performance improvements and query enhancements, the overall project, and a whole lot more.

Caching Spring Context Between Test Runs: How to Speed Up the Local Testing Process – Optimizing tests is crucial. The challenge is to save time on test initialization while keeping testing efficient. This article suggests a new way to solve this problem by caching a Spring context between test runs.

How To Generate Spring Properties Documentation – Are you having trouble keeping your Spring configuration properties documentation in sync with your code? Discover solutions to this problem in this article.

Transactional Rollback Strategies with Spring Cloud Stream and Apache Kafka – This blog contains links to a series of articles about working with transactions in Spring Cloud Stream Kafka applications. It also provides more details on rolling back a transaction when an error occurs.

Tech Watch #3 — October 20, 2023Guillaume Laforge offers a personal selection of tech news and updates.

Spring Boot & Kotlin Tutorial – Crash Course For Java DevsMarco Behler demonstrates how to create a Spring Boot application using Kotlin. He begins with a fresh project and builds a small CRUD REST service. Throughout, he explores fundamental Kotlin concepts and more advanced topics, including Kotlin’s compatibility with JPA.

Microfrontends for Quarkus MicroservicesNicolas Duminil explains the concept behind microfrontends.

OpenAI Announces ChatGPT Voice and Image Features – OpenAI has recently unveiled exciting updates for ChatGPT. They’re introducing GPT-4V, a powerful model for handling image inputs and enhancing DALL-E to generate images. Plus, the mobile ChatGPT app will soon support voice conversations with the chatbot.

Presentation: Overcomplicated Architecture: Scaling BottleneckCassandra Shum discusses a common software development challenge: dealing with overly complex architectures. She explores how companies end up with such complex systems and offers insights on simplifying and streamlining them.

The Challenges of Producing Quality Code When Using AI-Based Generalistic ModelsBen Linders explains how using AI with generalistic models can help you eliminate the feeling that the generated code was created by a stranger, which may not match your standards and quality.

Presentation: Ray: The Next Generation Compute Runtime for ML ApplicationsZhe Zang introduces the basic API and architectural concepts of Ray, as well as diving deeper into some of its innovative ML use cases.

Level-up your Java Debugging Skills with on-demand DebuggingJohannes Bechberger writes about the hidden gems of the Java Debugging (JDWP) agent: JCmd triggered debugging, Exception triggered debugging, and more.

Kotlin Corner

Kotlin Support in Fleet: Explore a New IDE from JetBrains – In this blog post, we want to provide insights into the current status of Kotlin support in the Fleet Public Preview. We’ll offer an overview of the IDE’s various features for Kotlin projects.

KotlinConf 2024 CFP is still open! – KotlinConf is an official JetBrains conference. It is devoted to the Kotlin programming language and is the place for the community to gather and discuss all things Kotlin. Join us!

Functional event sourcing with Kotlin and Arrow Jakub Zalas shows how to apply the event sourcing pattern to a functional domain model.

How to add Kotlin as a second language to a SpringBoot app using Maven multimodule – Stephan Schröder shares his experience in adding Kotlin as a second language to a SpringBoot app that is separated into several Maven modules.

How to deal with transactions in SpringBoot applications with Arrow’s Either Matthias Schenk shares the things he has learned in this process of studying exception handling with Either.

Kotlin and Variance: Navigating Type RelationshipsMirco on Tech explains “invariance, covariance, and contravariance”. While this article uses Kotlin for illustration, the core concepts resonate across several programming languages, including Scala, Java, C#, and Swift.

Kotlin Reflection: Method and property references – Read this comprehensive tutorial for more detail on function, parameter, and property references.

Conferences and Events

Foojay Podcast #31: Report of Devoxx ’23 in Belgium – Frank Delporte walks around with a microphone and talks to visitors and speakers. Check out these exclusive interviews!

Here are some events you might want to attend in person or online in November:

Heapcon – Belgrade, Serbia, November 2–3.

W-Jax – Munich, Germany, November 6–10.

FooConf Helsinki – Helsinki, Finland, November 7.

JavaDays Czech Republic – Prague, Czech Republic, November 8–9.

Øredev – Malmö, Sweden, November 8–10.

JFall – Ede, Netherlands, November 9.

JCon World – Online, November 21–23.

Voxxed Days Thessaloniki – Thessaloniki, Greece, November 24–25.

Culture and Community

How Instagram scaled to 14 million users with only 3 engineers – From October 2010 to December 2011, Instagram scaled from nothing to 14 million users. They did this with only three engineers. How did they manage to do that in just over a year?

Article: How Agile Teams Can Improve Predictability by Measuring Stability – Read the article to learn more about the new Stability Metric (ψ), that uses queueing theory to test assumptions of system stability in agile systems.

Death By a Thousand MicroservicesAndrei Taranchenko shares his opinion on why overcomplicated microservices usually solve problems that you don’t have.

One does not simply deliver softwareBenji Weber helps you discover the unexpected similarities between a Murano glass deliverer and a software developer in this article.

Engineering Team Lessons from Cycling – This is another metaphor from the same author as the previous article.

And Finally…

AI Assistant Update – October 2023 – This article presents the latest features of our AI Assistant, introduced in the 2023.3 EAP of JetBrains IDEs, such as in-editor code generation, context-aware smart chat, project-aware AI actions, and a refactorings diff view.

The Best of IntelliJ IDEA’s HTTP Client – Discover the most exciting features in the HTTP Client. See how you can easily handle HTTP requests and environment files, and explore the support for gRPC, GraphQL, WebSocket requests, and beyond.

That’s a wrap for today!

If you have content suggestions for the next Java Annotated Monthly, please send them via email or Twitter. Article suggestions are welcome until November 20.
You can access all previous JAM issues in our dedicated archive. If you missed any interesting blog posts or articles, you’ll find them there.

image description