IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
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 engaging events, tutorials, talks, and opinions from the community.
Settle in with your favorite cup of coffee, and enjoy!
Java News
Java News Roundup 1, 2, 3, 4 – All things Java introduced or enhanced In September are here.
The hottest news is the official launch of Java 21, so we’ve chosen several written and audio overviews of the newly released features:
- Java 21 is Available Today, And It’s Quite the Update
- Foojay Podcast #28: Java 21 Has Arrived!
- The Arrival of Java 21!
- JDK 21 and JDK 22: What We Know So FarPRINT
- Spring Tips: Making the joyful jump to Java 21
The following selections bring more detailed presentations of the Java 21 updates from Ana-Maria Mihalceanu, Nicolai Parlog, and José Paumard:
- Java 21 new feature: Virtual Threads #RoadTo21 – Learn more about the most anticipated feature – a new, lighter model of threads. Virtual threads address the complexity and maintenance costs of asynchronous programming without giving up the performance of this model.
- Java21 Brings Full Pattern Matching #RoadTo21 – Java 21 is the first release that finalizes the essential pattern matching features, including sealed types and type patterns in an improved switch and the much-anticipated records and record patterns. Watch this video to explore these features.
- Java 21 Security #RoadTo21 – Learn how Java Security has evolved since JDK 17, enabling you to build and deploy applications using modern, strong algorithms and protocols.
- Java 21 API Changes #RoadTo21 – Explore the myriad of enhancements that Java 21 brings to your everyday classes. From improved compilation efficiency with javac and comprehensive documentation enhancements in javadoc, to even faster prototyping with jwebserver – there’s so much in store!
- Java 21 Tool Enhancements: Better Across the Board #RoadTo21 – Discover the latest enhancements to JDK tools since Java 17, including improved compilation efficiency with javac, comprehensive documentation enhancements in javadoc, and fast prototyping capabilities with jwebserver.
Also, this month the following JEPs received the Candidate status:
- JEP 456: Unnamed Variables and Patterns
- JEP 455: Primitive types in Patterns, instanceof, and switch (Preview)
- JEP 457: Class-File API (Preview)
Java Tutorials and Tips
Java 21: The Nice, The Meh, and the … Momentous – Cay Horstmann offers insights on the newly launched Java 21, including a feature rating table explaining what makes them more or less compelling. You can also dive deeper with his comprehensive analysis of the highlights from the release.
Creating a Deep vs. Shallow Copy of an Object in Java – Copying usually comes in two variants: deep copy and shallow copy. Read this article to learn more about these concepts and see how they work in practice.
Java Records are “Trusted” and Consequently Faster – Records offer a convenient way of expressing data carriers. As a pleasant bonus, they come with enhanced performance over standard Java classes in specific applications. Find out why in this article.
Call for Discussion: New Project: Babylon – Paul Sandoz introduces a new project named Babylon. Its main goal is to extend the reach of Java to foreign programming models, such as SQL, differentiable programming, machine learning models, and GPUs.
Embracing Modernity: A Comprehensive Look at Sealed Classes, Pattern Matching, and Functional Paradigms in Java – A N M Bazlur Rahman looks into the principles and practical applications of sealed classes and pattern matching in an attempt to understand why some developers fear that pattern matching with switch might promote poor coding practices.
Virtual Threads and Parallel Streams – In this new edition of the Java(tm) Specialists’ Newsletter, Dr. Heinz M. Kabutz shares some best practices for invoking a parallel stream from a virtual thread.
Monkey-patching in Java – Nicolas Frankel tries several approaches for monkey-patching in Java.
Streamlining Code with Unnamed Patterns/Variables: a Comparative Study of Java, Kotlin, and Scala – Does the introduction of unnamed patterns and variables bring Java closer to the expressiveness and versatility of languages like Kotlin and Scala? Find out in this article.
Memory Management in Java: An Introduction – Jasmine Taylor shares her knowledge about object allocation and garbage collection and presents a simple analogy that will help you understand them.
Languages, Frameworks, Libraries, and Technologies
This Week in Spring 1, 2, 3, 4 – As always, you can find the most recent Spring-related news here.
All together now: Spring Boot 3.2, GraalVM native images, Java 21, and virtual threads with
Project Loom – Josh Long introduces the possibility of creating GraalVM native images that use Spring Boot and Java 21’s virtual threads!
Spring Boot Configuration Properties Explained – Are Spring Boot configuration annotations leaving you feeling lost? This blog looks into these annotations, explains their significance, and demonstrates how to integrate them into your code with illustrative examples.
A Bootiful Podcast: Spring Security lead Rob Winch – In this podcast, recorded live from
SpringOne 2023, Josh Long talks to Spring Security legend and lead Rob Winch!
Caching Spring Context Between Test Runs: How to Speed Up the Local Testing Process – Efficient testing while reducing test initialization time can be a challenge. In this article, you’ll explore a possible solution: caching a Spring context between test runs.
Podcast: AI, ML, and Data Engineering InfoQ Trends Report—September 2023 – In this podcast episode, InfoQ’s editorial team and associates talk about generative AI, responsible
and ethical AI considerations, the concepts of Data Mesh, and more.
AI, ML, Data Engineering News Roundup: Stable Chat, Vertex AI, ChatGPT and Code Llama – Learn more about the introduction of ChatGPT Enterprise, the general availability of Google Cloud’s Vertex AI Search and Conversation, and more.
Exploring Generative AI – Find out how GenAI is different from other code generators.
This is the Beginning of the End of the N+1 Problem: Introducing Single Query Loading – This edition features developments from Stability AI, Google, OpenAI, and Meta.
New JavaFX theme library “Transit” released – Check out what the new theme is about and how it builds on the lessons learned while developing the previously released JMetro.
The Evolution of Bugs – In his comprehensive long read, Shai Almog writes about the past and present of memory management, concurrency, state bugs, exceptions, faults, thread bugs, and more.
Five Ways to Use Gradle Enterprise to Identify and Manage Flaky Tests – Trisha Gee shares her vision on how to use Gradle Enterprise to better manage flaky tests. She offers these top actions: flagging potential flaky tests, leveraging historical data analysis, collaborative problem-solving and knowledge-sharing, and continuous monitoring. More details on each point are in the article.
Podman Desktop Review – This blog post provides a demonstration of Podman Desktop, a graphical tool designed for working with containers.
3 Parts of a TEST | Guided Learning Hour – Emily Bache talks about Unit tests and three actions you must take when working with them: arrange, act, and assert. More details are in this video.
TDD: What it is & Why you Should Care | Guided Learning Hour – The video is about Test Driven Development and includes a demo where Emily Bache uses TDD to solve a code kata.
Kotlin Corner
Compose Multiplatform 1.5.0 Release – This release brings the following: the Dialog, Popup, WindowInsets APIs in common code, improvements to scrolling, resource management, and text fields on iOS, and a more stable UI testing framework on desktop platforms.
ktlint 1.0 is out! – Check out the recent changes to ktlint, a Kotlin linter with built-in formatter.
Gradle: from Newbie to Strong fundamentals – This article explains Gradle for Kotlin and on Kotlin.
Getting Better with Kotlin — Exploring Advanced Features and Effective Coding Strategies – In this article, you’ll discover Kotlin’s lesser-known features that can empower you to create more expressive, efficient, and maintainable code. These include, inline and sealed classes, type aliases, and others.
Practice Technical Interview Algorithms in Kotlin – This stream presents the Algorithmic Challenges in Kotlin course, which allows you to practice directly from your IDE. You’ll gain proficiency in more than 30 algorithms, ranging from brute force and greedy algorithms to divide and conquer and dynamic programming.
Talking Kotlin #125: Making Multiplatform Better – One of the Kotlin Foundation Grants winners, Rick Clephas, discusses the KMP-NativeCoroutines library’s origins, its functionality, challenges behind its development, and the motivation behind securing the grant.
Conferences and Events
JVM Language Summit 2023 – Watch the sessions recorded at the JVM Language Summit in Santa Clara, CA, where speakers, including non-JVM developers and programming language experts, share their insights. The summit brings together designers, compiler writers, tool builders, runtime engineers, and VM architects.
KotlinConf 2024 – If you work with Kotlin and feel there are interesting topics to share with attendees next year, you’re welcome to submit a talk.
Here are some events you might want to attend in person or online in October:
- GOTO Copenhagen 2023 – Copenhagen, Denmark, October 2–4.
- Devoxx Belgium 2023 – Antwerp, Belgium, October 2–6
- Voxxed Days Cluj – Cluj-Napoca, Romania, October 11–12
- I Code Java 2023 – Johannesburg, South Africa, October 11–12.
- Devoxx Morocco 2023 – Agadir, Morocco, October 11–13.
- JavaCro’23 – Rovinj, Croatia, October 15–17.
- BaselOne 23 – Basel, Switzerland, October 18–19.
- GeeCON Prague 2023 – Prague, Czech Republic, October 19–20.
- {j}DD – Kraków, Poland, October 24–25.
- Accento – Karlsruhe, Germany, October 24–25.
Culture and Community
Podcast: Addressing Gender Imbalance in Software Engineering Through Community and Mentoring – Does a gender imbalance still exist in software engineering? If yes, how can it be addressed? Listen to this podcast to find some answers and
Fixed mindset vs Growth mindset – This is a short, inspirational read about the endless possibilities people have when choosing a non-toxic mindset.
How Software Companies Give Away Stuff for Free – In this article, Jamie Coleman explains the main approaches software companies use to distribute their products for free. What is the reasoning behind these methods? Find out now.
How to Be a Good Open Source Contributor During Hacktoberfest and Beyond – If you plan to participate in Hacktoberfest this year, here are 9 valuable tips to help you make more meaningful contributions.
Let’s Stop Making Each Other Feel Stupid – Have you ever experienced imposter syndrome at work? When was the last time you arrived at your desk excited about learning new things and not feeling ashamed that you don’t know anything? If these are things that worry you, this article is definitely for you!
Developer Productivity Engineering: What’s in it for me? – In this talk, Trisha Gee explores what Developer Productivity Engineering (DPE) is, gives you some practical ways to get started with it, and discusses how to help your organization’s leaders understand the enormous value DPE can unlock.
And Finally…
Here are September’s most important news stories and blog posts about IntelliJ:
IntelliJ IDEA 2023.3 EAP Is Open! – The first IntelliJ IDEA 2023.3 EAP build offers a range of UI/UX enhancements and support for GitLab snippets, along with improvements to the indexing process and the IDE’s start-up speed.
IntelliJ HTTP Client plugin – Great news! IntelliJ IDEA’s HTTP Client plugin has popped up on Tech Radar by @thoughtworks as an enterprise tech to try!
JPA and React Plugins: From Buddies To Full Members of The JetBrains Family – JPA Buddy and React Buddy have joined the JetBrains family. Read this article to find out how this affects you.
Import Postman Collections to the HTTP Client – You can now effortlessly transform Postman collections into .http and use them in the HTTP Client with the Import from Postman Collections plugin, available on JetBrains Marketplace.
Code Quality Under Pressure: Supporting Developers With Qodana Integration in IntelliJ-based IDEs – How do you get the support you need to reach deadlines realistically, focus on your work, and prioritize code quality as a critical component? The answer lies in using JetBrains Qodana. Find out what it is and how to get started with it in this article.
That wraps it up for today!
If you have any content suggestions for the upcoming Java Annotated Monthly, please reach out to us via email or Twitter. Please note that article suggestions must be submitted by October 20.
You can find a convenient archive of all previous JAM issues on our dedicated website. If you’ve missed an intriguing blog post or article, you can find it there.
Happy exploring!