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!
Here are the new candidates introduced in October:
- New candidate JEP: 456: Unnamed Variables and Patterns
- New candidate JEP: 457: Class-File API (Preview)
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.
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 Profilers – Johannes 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 Execution – A 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 Comments – Jonathan 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
The best way to use Spring Data JPA Stream methods – Vlad 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.
Spring Boot & Kotlin Tutorial – Crash Course For Java Devs – Marco 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.
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 Bottleneck – Cassandra 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 Models – Ben 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 Applications – Zhe 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 Debugging – Johannes Bechberger writes about the hidden gems of the Java Debugging (JDWP) agent: JCmd triggered debugging, Exception triggered debugging, and more.
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!
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 Relationships – Mirco 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.
Engineering Team Lessons from Cycling – This is another metaphor from the same author as the previous article.
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.
Subscribe to Blog updates
Thanks, we've got you!
Java Annotated Monthly – December 2023
The December edition of Java Annotated Monthly is here! As usual, you’ll find all the latest Java and Kotlin updates as well as details of key industry events for networking and learning. This issue also features the latest release candidates and targeted JEPs alongside Java tutorials and articles a…
String Templates in Java – why should you care?
TLDR; The existing String concatenation options are difficult to work with and could be error prone. String Templates (a preview feature introduced in Java 21) greatly improves how we create strings in Java by merging constant strings with variable values. The name of this feature pretty much says …
Java Annotated Monthly – October 2023
Welcome to the October edition of Java Annotated Monthly! In this issue, we're plunging into the world of Java and tech. We'll explore the latest and greatest in the recent release of Java 21, share exciting news about the new EAP for IntelliJ IDEA 2023.3, and bring you a handpicked selection of …