News

Java Annotated Monthly – January 2025

The new year has arrived, and we’re kicking it off with another handpicked selection of must-read tutorials and the latest news you won’t want to miss. This issue starts with an amazing featured content section with Donald Raab. Settle in and scroll your way to some fresh knowledge!

Featured Content 

Donald Raab has over 23 years of experience as a Software Engineer in the financial services industry. He started programming with Java in 1997. Don is a member of the JSR 335 Expert Group (Libraries) and is also the creator of the Eclipse Collections open-source Java Library. Donald was selected as a 2018 Java Champion, and he is a frequent speaker and guest trainer at key Java conferences and user group meetups.

Greetings, Java Annotated Monthly readers! It’s an honor to be invited to write the featured content section this month! I’ve been reading the Java Annotated Monthly newsletter for the past decade. It is an amazing resource for the Java community. As an author of Java related content, I find it incredibly gratifying every time something I write is included in this newsletter.

Writing about writing

I spent most of 2024 writing a book and writing blogs. I wrote an average of four blogs per month this year. One of my recent technical blogs is Poetry in Code. This is a crossover blog which blends poetry, Java code, and blogging. To see how I can effortlessly switch from poetry to parkour, there is Parkour with Maps in Java. Queue “The Office” parkour meme.

Writing content in AsciiDoc

I’m writing the content for this feature in AsciiDoc using IntelliJ IDEA. I’ve spent most of 2024 writing a book about Eclipse Collections in AsciiDoc. The AsciiDoc plugin in IntelliJ IDEA is absolutely wonderful! I have used AsciiDoc to write READMEs, reference guide documentation, conference slide decks, and several tables for Medium blogs that are stored in GitHub gists.

The open-source developers who work on AsciiDoc, Asciidoctor, AsciidoctorJ, JRuby, and IntelliJ IDEA have created tools that work great together and are a pleasure to author and publish content with. Thank you!

I found a lot of useful information from this blog from Trisha Gee that I discovered near the beginning of my book journey. I also discovered this article from vogella which has some consolidated and useful advice and examples for writing documentation in AsciiDoc.

JavaOne 2025

I’m excited to be giving a talk at JavaOne 2025 on DataFrames in Java with my long time friend Vlad Zakharov. Vlad is the creator of an open-source DataFrame library for Java named DataFrame-EC, which is built on top of Eclipse Collections. Vlad has an interesting blog about Java, Kotlin, and Pandas Data Frames and the One Billion Row Challenge. I hope to meet some new Java devs and catch up with friends at JavaOne next year. If you want to speak at conferences, this blog from Holly Cummins is a great resource to learn from.

Java 24

I’m excited for Java 24 to be released in March 2025, and for it to include experimental support for Compact Object Headers (JEP 450). Peter Lawrey wrote a very interesting blog titled Demystifying Java Object Sizes: Compact Headers, Compressed Oops, and Beyond. I am curious to see how Compact Object Headers impact Eclipse Collections types.

JCP EC Working Groups

Here’s a useful link to keep up to date with the two active workgroups on the JCP Executive Committee. The wikis for the workgroups have many useful presentations, links, and other resources. JEP 14 is an interesting recent development we’ve been discussing in the Java Ecosystem WG.

Do something that scares you, every single day

I broke through my fear of being on a podcast in 2024, twice! If you’d like to know more about things I have been up to in open source, the Java community, Eclipse Collections, and my book, there’s a recent audio-only version of a Duke’s Corner podcast titled “Unlimited, Untapped Resources”, I gave with Jim Grisanzio. If you listen to the podcast, you can find out the title of my book. Be sure to check out the other Duke’s Corner podcasts.

Kudos to the writers

I want to thank the amazing writers at JetBrains who have read, explained, and linked to valuable Java related content over the past decade plus at the Java Annotated Monthly archive. I appreciate the time and effort that has been consistently invested in finding and linking to amazing Java content every month! FOR OVER A DECADE!!! This newsletter has helped me discover so many interesting articles and blogs I otherwise would not have had the time to discover on my own.

Finally

Thank you to all the content producers and open source contributors out there who make being a Java developer an amazing experience! Have fun coding and writing out there!

Java News

Java News Roundup 1, 2, 3, 4 – Your weekly selection of Java news is here. 

Java 24 Language & API Changes – Inside Java Newscast #81Nicolai Parlog talks about the JDK Enhancement Proposals featured in Java 24, covering topics such as pattern matching primitives, flexible constructor bodies, stream gatherers, the class-file API, quantum-safe encryption, and structured concurrency.

Java 24 Performance Improvements and Deprecations – Inside Java Newscast #82 – Some more news on the enhancements in Java 24, including better garbage collection, compact object headers, increased integrity by default, and the removal of 32-bit ports.

Post-Quantum Cryptography in JavaBen Evans discusses the integration of post-quantum cryptography algorithms into Java, highlighting the challenges and progress in enhancing Java’s security against quantum computing threats.

Valhalla – Java’s Epic Refactor – Project Valhalla aims to improve Java’s type system with value classes for better performance and memory efficiency. During Devoxx 2024, Java Language Architect Brian Goetz gave a complete update and explained the proposed solution: value classes, null-restricted types, beefed up definite assignment analysis, and strict initialization.

Episode 33 “JDK 24 and More” with Chad – One more piece on JDK 24, preview features, and more.

Don’t miss any JDK highlights with this article series by Nikolai Parlog

Java Tutorials and Tips

Java in the SmallCay Horstmann explains how modern Java features make it great for small tasks and scripting, not just big projects.

How JVM handles exceptionsNataliia Dziubenko demonstrates how the Java Virtual Machine manages exceptions and handles errors during runtime.

Design Better Code with Preparatory Refactoring in TDD | Demo – Refactoring is a crucial part of test-driven development (TDD) and shaping your code design – watch this video for a hands-on Java demo by Emily Bache

In Praise of RecordsCay Horstmann highlights the power of Java records and enumerations, emphasizing their ability to provide clarity, structure, and a natural home for operations.

How do we keep our Java applications up to date and secure – An inspiring discussion on strategies and tools to keep Java applications modern and safe. 

Article: InfoQ Java Trends Report – December 2024 – Check out an in-depth analysis of the latest developments and future directions in the Java ecosystem.

JavaOne: A Lifetime of Java Learning in Three Days – Don’t miss your chance to join the event of the year!

James Gosling on Java – Historical Oddities & Persistent Itches #JVMLSJames Gosling, the creator of Java, reflects on the historical quirks and ongoing challenges in the evolution of the Java programming language.

Demystifying Java Object Sizes: Compact Headers, Compressed Oops, and Beyond – Find out how Java’s memory optimizations, such as compressed OOPs and compact object headers, affect object sizes and performance.

Run a Java Lambda Function From a Docker image – Charl Fasching demonstrates how to deploy a Java serverless function using AWS and Docker.

Detoxifying the JDK Source CodeStuart Marks discusses the removal of the Security Manager to simplify the JDK.

Tutorial: The Foreign Function and Memory API – This article provides tutorials to help developers understand the Foreign Function and Memory (FFM) API. 

Kotlin Corner

The Path Not TakenRomain Guy examines how data patterns influence algorithm performance, highlighting the impact of branch prediction on execution speed.

Introducing klibs.io: A New Way to Discover Kotlin Multiplatform Libraries – Ekaterina Petrova introduces klibs.io, a new service designed to streamline the discovery of Kotlin Multiplatform libraries by indexing data from GitHub and Maven Central and utilizing AI-generated metadata to enhance search results.

Get your KotlinConf 2025 ticket – Join us in Copenhagen on May 21–23, 2025, for the biggest KotlinConf yet! With 2,500 attendees, you’ll explore modern server-side, web, mobile, and desktop Kotlin development, and enjoy days full of sessions, workshops, and networking with top professionals from across the industry.

KotlinConf 2025 is calling for speakers – Whether it’s server side, Kotlin Multiplatform, AI, or best practices, we want to hear from you! Submit your talk and inspire others with your experience at the biggest Kotlin event.

Join Kotlin Multiplatform Contest – If you are a student or recent graduate, you can win a trip to KotlinConf 2025. Showcase your creativity and coding skills by building a cross-platform project using Kotlin Multiplatform technology. 

KotlinConf 2025 is calling for volunteers. This is your chance to join the biggest Kotlin event of the year, expand your network, and meet new people in the Kotlin сommunity. Apply now to join our team of volunteers on May 21–23, 2025.

Languages, Frameworks, Libraries, and Technologies

This Week in Spring 1, 2, 3, 4 – The weekly Spring news selection is available here. 

WireMock Now Has an Official Spring Boot Integration – It is official! This article introduces WireMock’s Spring Boot integration, making it easier to embed WireMock into Spring applications.

Supporting Okta with DPoP in an OIDC-based Spring Security applicationJoris Kuipers explains how to add DPoP support to Spring Security for OpenID Connect applications.

Speed up your Spring Batch with Native Image and GraalVMVincent Vauban explains how to speed up Spring Batch applications with GraalVM’s Native Image for faster startup times and lower memory usage.

A Bootiful Podcast: the amazing K. Siva Prasad Reddy (SivaLabs)Josh Long interviews Siva Katamreddy to learn more about his software development insights and experience.

A Bootiful Podcast: Spring Security lead Rob Winch on the amazing Spring Security 6.4 releaseRob Winch, lead of Spring Security 6.4, discusses the features of the new release.

What’s new in Spring Data 2024.1? – Check out the latest features introduced in Spring Data 2024.1, released alongside Spring Boot 3.4.

What’s new in Spring Framework 6.2? – Here is a recap of the new features in Spring Framework 6.2.

A practical guide to implement OpenTelemetry in Spring Boot – Get a comprehensive tutorial by Víctor Orozco on integrating OpenTelemetry with Spring Boot applications.

Fix Phantom Read problem for Bean Overrides in the TestContext frameworkSam Brannen fixes a Phantom Read issue in the Spring TestContext framework, improving how bean overrides are handled during tests.

RAG + Semantic MarkupIgor Kulakov discusses how integrating semantic markup with retrieval-augmented generation (RAG) can enhance AI-driven features in software development, particularly in JetBrains IDEs.

RAG made easy with Spring AI + ElasticsearchLaura Trotta, explores how developers can efficiently build a retrieval-augmented generation (RAG) application using Spring AI and Elasticsearch.

Principles of Developer AI Product DevelopmentDion Almaer shares insights from his experiences in building AI-driven products for developers. 

Production Comes First – An Outside-In Approach to Building MicroservicesMartin Thwaites explains how to build microservices using an outside-in approach, focusing on production-first practices and observability techniques.

JetBrain’s Webstorm IDE for JavaScript Development Now Free for Non-Commercial Purposes – Don’t miss this news for your chance to use WebStorm for free!

Date and Time Mappings with Hibernate and JPAThorben Janssen explains how to map Java date and time types to database columns using Hibernate and JPA.

Testing Jakarta EE Applications: Best Practices and Tools – Check out tips and tools for testing Jakarta EE applications, focusing on JUnit 5 and Arquillian.

What might an AI System Prompt look like? – Check out how AI prompts can be designed to guide its responses.

The AI Trough – AI has many inaccuracies like contextual misalignment and the need for human oversight to maintain reliability and efficiency in code generation. What do you think about that?

How to Think About TimeKevin Bourrillion explores the complexities of date and time concepts in programming, offering a conceptual model to better understand and handle these challenges in code.

Conferences and Events

Start the year off right with January’s events: 

Culture and Community

Introduce yourself to your remote teamCassidy Williams shares a creative approach to remote team introductions. 

The Efficiency Paradox and How to Save Yourself and the WorldHolly Cummins explores how both machine and human efficiency can be optimized to reduce environmental impact and improve productivity.

The Backwards Law—Why the Best Things in Life Must Be Let Go – Can striving too hard for something cause it to slip away?

Reflecting on LifeArmin Ronacher shares personal insights and life lessons on topics such as meaningful work, relationships, and personal growth, offering advice based on his experiences and reflections on happiness, fulfillment, and commitment.

And Finally…

New! Security Analysis Plugin for IntelliJ IDEA 2024.3.1 – This article introduces advanced security tools powered by Qodana’s interprocedural data flow analysis. Detect vulnerabilities like SQL injections and cross-site scripting in real time while coding in Java and Kotlin. These features are available in IntelliJ IDEA Ultimate 2024.3.1 with the optional Security Analysis by Qodana plugin.

Get to know the new Bazel plugin for IntelliJ IDEA: 

Testing Spring Boot Applications Using TestcontainersSiva Katamreddy explores how to effectively use Testcontainers for integration testing in Spring Boot applications, covering setup, writing tests with JUnit 5, and testing various components like Spring Data JPA repositories and REST APIs.
That’s it for today! We’re collecting ideas for the next Java Annotated Monthly – send your suggestions via email or X by January 20. Don’t forget to check out our archive of past JAM issues for any articles you may have missed!

image description