Java Annotated Monthly – February 2024
Welcome to the February edition of Java Annotated Monthly! We’re excited to share this month’s collection of articles brimming with the latest Java news, including a list of the upcoming JEPs for Java 22. What’s more, you’ll also get to explore numerous informative blogs packed with Java tips and tutorials that are perfect for both beginners and seasoned developers.
This new edition also brings you the latest updates on Kotlin and other cutting-edge technologies. Stay in the loop with our curated list of upcoming tech events in the industry, and gain deeper insight with blog posts from the IntelliJ IDEA team.
Java’s Plans for 2024 – Inside Java Newscast #61 – Java is still on the move in 2024. Big projects like Amber, Leyden, and Valhalla in OpenJDK all have exciting plans for the year ahead. Check them out in this newscast.
Stepping into 2024 with Powerful Java Language Features – See how Java 21 features work in a real-life project.
Java 22: What’s New? – With Java 22 now feature-complete, it’s the perfect moment to explore the array of new functionalities this latest version offers.
JDK 22: Gatherer – This article provides a guided walkthrough with examples demonstrating the practical implementation of the new Gatherer meta-operation, which is currently in preview for JDK 22.
Java Tutorials and Tips
A categorized list of all Java and JVM features from JDK 8 to 21 – Java has grown significantly between versions 8 and 21, with 232 major JDK Enhancement Proposals (JEPs) and many smaller updates improving the platform. This page provides a categorized and curated list of the key enhancements.
Migrating From Lombok to Records in Java – If you’ve been using Lombok in your Java classes to cut down on boilerplate code, you may want to switch to records for a more native solution. This article includes hands-on examples demonstrating how to move from Lombok to Java records.
Securing Symmetric Encryption Algorithms in Java – Brian Vermeer helps you decide whether you need to encrypt your project, understand outdated encryption algorithms and identify their weaknesses, and more.
Article: Architecting with Java Persistence: Patterns and Strategies – This article explores design patterns in Java’s persistence layer, specifically highlighting the differences between object-oriented and data-oriented methodologies.
Tutorial: JWebserver – Launch the Java Simple Web Server – Learn more about jwebserver – a tool that offers a minimal HTTP server designed for serving a single directory hierarchy, ideal for prototyping, testing, and debugging purposes.
Inside Java Podcast Episode 32 “The Panama Effect” with Jorn Vernee – Jorn Vernee talks about the Foreign-Memory Access API, its evolution, examples of its adoption in Java libraries, and its integration with native libraries in Java code.
Foojay Podcast #40: Making Java Attractive for Beginners in Programming – Several expert hosts discuss strategies for making Java more appealing to newcomers.
Where do you get your Java? – Several vendors now offer Java distributions that fully comply with the official Java specification. So, you might be wondering: Are they all the same? If not, what differentiates them, and how do I know which one to use?
Presentation: Virtual Threads for Lightweight Concurrency and Other JVM Enhancements – Ron Pressler explains Java’s shift from its traditional thread model to a user-mode thread implementation, and he highlights recent JVM updates in garbage collection and observability.
Lessons from Advent Of Code 2023 – Part 1: Introduction – Cay Horstmann shares his experience of taking on the Advent of Code puzzle event, diligently solving each challenge to earn his fifty stars.
Build A Compiler With The JEP 457 Class-File API – If you’ve ever been curious about how compilers function or how a Java compiler generates Java class files, then this is for you! The article guides you through the process of creating a compiler.
Languages, Frameworks, Libraries, and Technologies
Durable Subscription with JMS and Spring Boot – When using the publish-subscribe domain with JMS, we often want to use durable subscriptions. But how can this be done with Spring Boot? Simon Martinelli answers this question in his article.
Using AI to Create JFR Event Descriptions – JFR sets itself apart from other profilers with its ability to log a diverse range of detailed events, including class loading, JIT compilation, and garbage collection. However, only a few descriptions are available, and most of them are brief, often limited to just single sentences. Johannes Bechberger tries to solve this issue using AI.
11 JPA and Hibernate query hints every developer should know – JPA and Hibernate offer a collection of hints that allow you to give extra instructions to your persistence provider to influence the execution of queries. These hints can be used for various purposes, such as setting query timeouts, employing entity graphs, or controlling query result caching.
Security and Productivity – Pick Two with Reproducible Builds – This talk will delve into combining reproducible builds and build caches to enhance workflow efficiency and security. Brian Demers covers the pros, cons, and practical implementation tips.
The best way to test the data access layer – In this article, you’ll explore the best methods for testing the data access layer in relational database systems. You’ll start by examining the advantages and disadvantages of unit testing. Then, you’ll compare integration testing with system integration testing, and look at how a data platform like Aiven can be beneficial.
Maximizing the Utility of Large Language Models (LLMs) through Prompting – This article is the perfect resource if you’re interested in learning about the emerging and trendy role of a prompt engineer.
Developer Upskilling and Generative AI with Hywel Carver and Suhail Patel – In this episode, Nsikan Essien discusses developer training and generative AI with Hywel Carver and Suhail Patel. They explore the learning path for software engineers, how generative AI could impact it, and the evolving role of developers due to advanced AI technologies.
Fetching recursive associations with JPA and Hibernate – It is possible to fetch recursive associations with JPA and Hibernate using both JPQL and native SQL queries. Read the article to learn how.
Effective Developer Workflows With Quarkus – If you have some experience with Quarkus, you’ve probably had the chance to explore its development mode (quarkus:dev) and other productivity-enhancing features. In this video, Sebastian Daschner shows you how to leverage those as well as how to build up a local development workflow that is efficient to use.
Learn IDE Code Refactoring for Enhanced Code Quality – Check out the new course from JetBrains Academy. It teaches you how to use your IDE to format and reshape your code so it is more readable and less likely to break. It’s an excellent choice for beginner to intermediate programmers looking to write professional code.
IntelliJ IDEA’s K2 Kotlin Mode Now in Alpha! – Don’t miss this important update from the recently opened EAP.
Type Driven Development in Kotlin – Extending the Bowling Kata – In this YouTube video, Duncan McGregor uses a 10-pin bowling domain and adopts a type-driven design approach to model the game elements in Kotlin.
Kotlin: An Illustrated Guide – Chapter 16: Sealed Types – If you enjoy pictures, metaphorical insights into complex concepts, and plenty of code examples, this article is perfect for you.
Conferences and Events
Check out the events planned for February:
FOSDEM 2024 – Brussels, Belgium, February 3–4
Jfokus – Stockholm, Sweden, February 5–7
London Java Community Roundtable – London, United Kingdom, February 13
London Java Community Live with Michael Mirwaldt – Online, February 15
DeveloperWeek San Francisco – San Francisco, USA, February 21–23
ConFoo Montreal – Montreal, Canada, February 21–23
Voxxed Days Ioannina – Ioannina, Greece, February 23
DeveloperWeek Online – Online, February 27–29
Best of Modern Java 21 – Lucerne, Switzerland, February 28
Spring Tools Live – Zurich, Switzerland, February 28
Qodana Code Analysis: From the IDE to Quality Gates – Online, February 29
IntelliJ IDEA Conf 2024 – Online, March 6–7
Culture and Community
Foojay Podcast #39: Java Dominicano – Interested in discovering more about Java User Groups (JUGs) from around the world? In this episode, the Foojay Podcast team goes to the Dominican Republic to experience its vibrant culture and explore its Java community.
Podcast: InfoQ Culture & Methods Trends in 2023 – In this podcast episode, Rebecca Parsons, CTO of Thoughtworks, joins the entire Culture & Methods editorial team to talk about the trends emerging in the technology industry. There is also a text article called Culture & Methods Trends in 2023 online.
Podcast: Technical Excellence from the Ground Up – In this podcast episode, Shane Hastie, Lead Editor for Culture & Methods, talks with Tim Ottinger from Industrial Logic about ensemble programming, achieving technical excellence, and what the future holds for programming.
IntelliJ IDEA 2024.1 EAP Is Open! – Great news, we’re back on schedule with our release cycle! Join the Early Access Program (EAP) to be among the first to test our new features and updates.
The Best Ways to Learn Java – Explore our selection of resources tailored to help beginners learn Java.
Easy Hacks: How To Create Inheritance In Java – Inheritance is a fundamental concept of object-oriented programming. In this blog post, you’ll explore what it is, look at the syntax in Java, and see how and why class hierarchies can enable code reuse.
Top 10 UI Updates in IntelliJ IDEA for 2023 – In this blog post, we share the most significant UI updates from 2023 that have transformed how IntelliJ IDEA looks and functions.
Evolution of the Switch Construct in Java—Why Should you Care? – With the addition of switch expressions and pattern matching, the switch construct has evolved a lot—it can return values, switch over multiple types, compare objects and not just constants in case labels, and much more. Learn the story of the switch development in this article by Mala Gupta.
AI Refactorings in IntelliJ IDEA – In this article, we continue to test AI Assitant by JetBrains. We showcase how several easy AI actions and chat prompts can make wordy, overly complicated, or inaccurate code elegant and precise.
Check out the most interesting webinars and product-related videos released in January:
Virtual threads in action! – Dmitry Aleksandrov, a software developer at Oracle, Java Champion, and Oracle Groundbreaker, shares the journey of Helidon WebServer in his talk. He discusses the challenges faced, the solutions found, the tasks Helidon is built for, and its impact on the microservices frameworks world.
Ask Me Anything: IntelliJ IDEA B-Day Edition – Yuriy Artamonov, the Product Lead for IntelliJ IDEA, along with Anton Arhipov, a Developer Advocate from the Kotlin team at JetBrains, answer your questions about IntelliJ IDEA.
And that concludes today’s issue!
We’re already collecting ideas for the next Java Annotated Monthly, so please send your suggestions via email or tweet by February 20. And remember to check out our archive of past JAM issues – it’s great for catching up on any blogs or articles you might have missed.
Subscribe to Blog updates
The New Terminal (Beta) Is Now in JetBrains IDEs
The new terminal (Beta) is now in JetBrains IDEs and will be available in the new UI starting from the 2024.1 version of the IDEs.
‘HelloWorld’ and ‘main()’ meet minimalistic
In this blog post, I'll cover why and how this feature is helpful for students using hands-on coding examples. I’ll also cover some details and frequently asked questions relevant to educators or experienced programmers. Let's get started. Hi Students - Your HelloWorld code is changing …
Easy Hacks: How To Implement Polymorphism in Java
Polymorphism is the ability of an object to take on different forms. In programming, this means that a variable or a method can have different behaviors depending on the type of object it represents. While the term may sound intimidating to beginners, polymorphism is a powerful tool: it helps you re…
Constructor Makeover in Java 22
Typically, we create alternative solutions for tasks that are necessary, but not officially permitted. For instance, executing statements before super() in a derived class constructor was not officially allowed, even though it was important for, say, validating values being passed to the base class …