IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
Java Annotated Monthly – September 2023
The September edition of Java Annotated Monthly is here!
With this month’s release of Java 21 approaching, we’re excited to bring you a final sneak peek into its crucial features. But that’s not all! This edition is packed with helpful articles about cutting-edge AI technologies, including updates about the latest enhancements in IntelliJ IDEA’s AI Assistant. Read on for exciting tech events to attend online or in person throughout September. And in the Culture and Community section, discover valuable insights about mastering any programming topic.
You are now 100% ready for an inspiring and informative read. Let’s go!
Java News
Java News Roundup 1, 2, 3, 4, 5 – Don’t miss any changes that August brought to the Java world.
Java 21 sneak peek – From virtual threads to pattern matching for switch, there are 15 JEPs to explore and enjoy. Find out which of them are final and which are in the preview and incubator stages.
Foreign Function & Memory API Summer Update – The FFM API is stable and should exit the preview stage in the following Java SE release. For more details, read this blog post.
Draft JEP: Computed Constants – The draft of the “Computed Constants” JEP has been released, introducing fast, independent, initializable ComputedConstant objects. Per Minborg explains what they are and how to use them in this article.
OpenJDK’s JEP 451: Balancing Serviceability and Integrity in JVM – JEP 451 has graduated from the Target status in JDK 21. This JEP aims to reevaluate the balance between serviceability and integrity while safeguarding unaffected tools that don’t require dynamic agent loading.
JDK 21 G1/Parallel/Serial GC changes – Read this article to learn more about Hotspot collectors and the most significant changes to them in JDK 21.
Strengthen your Java App’s Defenses with Key Encapsulation Mechanism API – Inside Java Newscast #54 – JEP 452 introduces a user-friendly cryptographic primitive for establishing secret keys through key encapsulation messages. The Key Encapsulation Mechanism (KEM) API, tied to security providers, enables the easy integration of KEM algorithms into your applications as well as TLS usage.
Java Tutorials and Tips
Virtual Threads (JEP 444) – After a couple of rounds of prereleases, this JEP has become finalized in JDK 21. Read on to discover when and how to use virtual threads in your applications.
Exploring the design of Java’s new virtual threads – This article brings together several technical topics that Java Magazine has previously discussed on the subject of threading, and it explains not only how but why virtual threads work.
Better Java Compiler Error Messages – Almost a year of work from Andrew Arnold, Ataberk Cirikci, Noah Jamison, and Thalia La Pommeray went into this study research on error messages.
Upgrading From Java 17 To 21: All You Need To Know – Nikolai Parlog has gathered all the possible challenges you might face when moving from Java 17 to 21 and has described each of these issues in this article, which includes a helpful video.
To Java 21 and Beyond! – Java 17 has come and gone, but development of Java continues! What has changed since Java 11? And what changes are being added in Java 21? Find out in this video.
Preparing for JDK 21: A Comprehensive Overview of Key Features and Enhancements – Java 21 will be released in September, making this is a great time to familiarize yourself with the noteworthy features.
Toward Condensers – Brian Goetz, Mark Reinhold, and Paul Sandoz elaborate on composable condensers and demonstrate how to use them.
How To Approach Dependency Management in Java – In this recent video by Marco Behler, you will learn how to keep your dependencies up to date and find out about their vulnerabilities, as well as how to trust dependencies, and more.
Thread-Safe Counter in Java: A Comprehensive Guide – This tutorial explores why a simple counter isn’t secure for multiple threads and how to improve thread safety step by step, using various methods like synchronization, locks, Unsafe, VarHandle, and ultimately, AtomicInteger.
The Inner Workings of Safepoints – Johannes Bechberger describes the implementation of safepoints in OpenJDK and presents a related bug he found along the way.
Sealed Interfaces and Pattern Matching: A Quick Dive into Java’s Modern Capabilities – In this tutorial, you will explore sealed classes and learn how to use them to find all subclasses, as well as how to apply pattern matching in a practical context.
How to Automatically Detect Multiple Cybersecurity Threats from an Input Text String in Java – Gain insight into the growing risk of cyberattacks targeting user input fields in web apps, and learn about an API solution to prevent them.
How To Get the Comments From a DOCX Document in Java – In this article, Brian O’Neill demonstrates two APIs designed to retrieve comment text and comment metadata from DOCX files.
Quiz yourself: Abstract classes and the difference between Java’s super() and this() – Test your knowledge about what happens when you initialize a Java object.
Thread-Safe Counter in Java: A Comprehensive Guide – A N M Bazlur Rahman explores the concept of thread safety in Java, specifically focusing on a simple counter.
Languages, Frameworks, Libraries, and Technologies
This Week in Spring 1, 2, 3, 4 – Don’t miss any important updates about Spring from August.
The best way to use JPA bidirectional sync methods – Vlad Mihalcea explains the best way to use JPA bidirectional sync methods for one-to-many, one-to-one, and many-to-many associations.
Pitest: Do You Test Your Tests? – Simon Verhoeven demonstrates how he uses Pitest – a library that helps us do mutation testing.
A Look at Virtual Threads in a Jakarta EE Managed Context – Petr Aubrecht explains how to use virtual threads and structured concurrency in Jakarta EE 11.
Exploring Sealed Classes in a Jakarta EE Context – Discover the benefits of sealed classes in Jakarta EE and learn to work with them there.
Presentation: Microservices Retrospective – What We Learned (and Didn’t Learn) From Netflix – Adrian Cockcroft offers a retrospective on microservices, what the Netflix team set out to do, how it worked out, and more.
System Architecture: Move Authentication to the API Gateway – Nicolas Fränkel describes how to move the authentication step to the API Gateway stage, delegate authentication to an identity provider, and let the app verify the authentication status.
Can’t Reproduce a Bug? – Shai Almog shares his thoughts about how to take responsibility and chase bugs, regardless of where the search takes us.
Testing and Local Development Made Simpler with Testcontainers Desktop App – Find out how test container libraries help you test your application with real dependencies and speed up local development.
AI, ML, Data Engineering News Roundup: Jupyter AI, AudioCraft, OverflowAI, StableCode and Tabnine – Check out the latest updates in artificial intelligence, machine learning, and data science.
Meta Open Sources New AI Model Llama 2 – Meta has open-sourced its AI language model, Llama 2, providing free access to its code and weights for research and commercial purposes.
Meta Open Sourced AudioCraft, its Text-to-Music Generative AI – Meta has released its text-to-music generative AI, AudioCraft, which includes three models: MusicGen for music generation from text, AudioGen for environmental sound generation, and EnCodec, an AI-based encoder/quantizer/decoder.
Integrating AI Into the IDEs – Read this article to learn more about how AI can work in your IDE. The article covers actions, intentions, AI assistance, and more.
Generate AI-based Images with Quarkus and OpenAI DALL.E – In this article, Antonio Perrone demonstrates how to integrate the OpenAI API with Quarkus. You will learn to create a Quarkus application using the new REST Client Reactive to invoke the OpenAI DALL.E API for image generation.
Exploring Generative AI – Birgitta Böckeler presents a collection of her and her colleagues’ memos with thoughts and insights about generative AI and LLMs.
My Final Take on Gradle (vs. Maven) – Nicolas Frankel shares his thoughts about various build tools.
Best Plugins For JetBrains IDEs – Check out this list of the top IntelliJ IDEA plugins by Bartłomiej Żyliński. Which are your favorites?
What is this thing called Profiling? – The article presents interesting perspectives on the diverse interpretations of the term “profiling” in different software products. How would you define it?
Writing Testable Code: A Journey Through Consideration and Refactoring – What are the challenges that testing brings? How can you refactor code to improve testing? Find the answers in this article.
Introduction: Q-descriptors and v-bytecodes – Find out about a novel VM type – known as a Q-type – and how the unique bytecodes that start with the letter “v” handle Q-type values.
A Tweet – Check out this article to learn how much memory Scala code allocates depending on the wrappers used.
Kotlin Corner
Update on the Name of Kotlin Multiplatform – The “Kotlin Multiplatform Mobile” (KMM) product name has been deprecated. From now on, “Kotlin Multiplatform” (KMP) is the preferred term when referring to the Kotlin technology for sharing code across different platforms. More details can be found in this article.
KotlinConf 2024 Tickets Are Now Available! – KotlinConf is bringing the Kotlin community together for the fifth time, from May 22 to 24, 2024, at the Bella Center in Copenhagen, Denmark! Book your tickets now!
Exposed moving forward – Though Exposed has been used internally on several critical products at JetBrains and classified as a Team project on GitHub, it is now moving forward with some ambitious plans. Check them out!
Popular apps using Kotlin Multiplatform (KMP) in 2023 – Jacob Ras shares a list of the most exciting apps and companies that use KMP.
A glimpse of K2 in nowinandroid – K2 is the new frontend for the Kotlin compiler. The compiler is already available for preview and is expected to be Stable in the future release of Kotlin 2.0. In this article, you will see the results of using K2 in the nowinandroid project.
How to apply the test pyramid to your Ktor application – Matthias Schenk shows how to test a Ktor application so that all parts of the testing pyramid are covered and explains how to keep your effort to a minimum when changing the requirements and adding new ones.
JSON Parsing from Scratch in Kotlin – In this article, you will learn to build a JSON parser from scratch using Kotlin, exploring the core concepts along the way.
Moving Java Forward at Oracle CloudWorld 2023 – Check out the agenda for the upcoming Oracle CloudWorld conference in Las Vegas.
Conferences and Events
Here are some events you might want to attend in person or online in September:
IntelliJ IDEA LiveStream: GitLab Integration in IntelliJ IDEA – Online, September 7.
JavaZone – Oslo, Norway, September 7–8.
JUG Summer Camp – La Rochelle, France, September 8.
Java Forum Nord – Hannover, Germany, September 12.
Devoxx Ukraine 2023: AI – Friend or Foe? – Online, September 22.
jconf – Chicago, USA, September 26–28.
JUG Saxony Day – Radebeul, Germany, September 29.
Culture and Community
What does a CTO actually do? – This article demystifies the role of a Chief Technology Officer (CTO) for software engineers and offers a guide for those aiming to attain this position.
Podcast: Avoiding Burnout and Overload Using Cognitive Systems Engineering – In this podcast, Shane Hastie, Lead Editor for Culture & Methods, talks to Dr. Laura Maguire about how resilience engineering can enhance personal and team performance in times of uncertainty and stress.
How To Learn Any Programming Topic – Marco Behler shares his approach to learning and getting results.
And Finally…
Here are August’s most important news stories, blog posts, and tutorials about IntelliJ IDEA:
AI Assistant Update – August 2023 – In this article, you’ll discover the updates that have been recently introduced to AI Assistant. These include the prompt library, the ability to explain runtime errors and commits, and other helpful enhancements.
Profile on the Fly With the IntelliJ Profiler – Familiarize yourself with the newly introduced in-editor hints that quickly analyze code performance line by line, helping you identify and resolve issues faster.
Redocly Brings Enhanced OpenAPI Experience to JetBrains IDEs – Starting from IntelliJ IDEA 2023.2, we have joined forces with Redocly Inc., one of the industry leaders in API documentation solutions. All the details of this integration are in this article.
Creating Your First Kotlin App – Begin your journey with Kotlin by following this short tutorial for beginners.
That’s it for today!
If you have any content suggestions for the next Java Annotated Monthly, please contact us via email or Twitter. Remember, article suggestions must be submitted by September 20.
All previous JAM issues are conveniently archived on our dedicated website. If you missed an intriguing blog post or article, you can easily find it there. Happy exploring!