IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
Java Annotated Monthly – May 2023
The May edition of Java Annotated Monthly is here! This issue comes with exciting news on the future Java release, including a sneak peek at the JEPs planned for implementation. Our hand-picked selection of Java tutorials will help you sharpen your skills and stay on top of the latest trends. In addition, we have curated some of the most significant recent highlights from the world of technology to keep you up to date with the latest developments.
Read on for all this and more in this month’s JAM. If you want to be the first to get our monthly selection, subscribe to our JAM Newsletter.
Java News
Java News Roundup 1, 2, 3, 4 – Check out the most prominent April announcements in the world of Java.
Java Language Futures, Spring 2023 Edition – Watch this video for a short overview of the latest Java language enhancements, including those in Java 20. Get a sneak peek at the features planned for future Java releases.
Java Next – From Amber to Loom, from Panama – This video looks at the most important plans for projects Amber, Panama, Loom, and Valhalla.
JavaFX 20 and Beyond – Explore what’s new in JavaFX 20 and beyond as Kevin Rushforth highlights the improvements to JavaFX over the past few releases.
JFR Event Stream Stop – Sip of Java – JDK Flight Recorder (JFR) was updated in JDK 20, significantly changing the Event Streams API. This article explores these updates.
Project Panama: Interconnecting the Java Virtual Machine and Native Code – This session offers an overview and demo of features from Project Panama, including JDK Enhancement Proposal (JEP) 434 from Java 20.
JDK 20 – Reviewing the Enhancements in the Latest JDK Release – Discover the latest performance, stability, and security updates in JDK 20, including advancements in Project Amber, Project Loom, and Project Panama.
JEP 444: Virtual Threads – This JEP announces the finalization of virtual threads in JDK 21. It is planned to be delivered with just one modification from JDK 20 – virtual threads will always support thread-local variables.
JEP 442: Foreign Function & Memory API (Third Preview) – This JEP proposes a third preview to incorporate refinements based on your feedback. All future changes are listed in the article.
Getting Rid Of Unused Variables (Finally) – Inside Java Newscast #46 – JEP 443 proposes to add unnamed variables and patterns to Java, which will help to replace unused variables and patterns by a single underscore.
Java Tutorials and Tips
Mitigating Path Traversal Vulnerabilities in Java – This article details path traversal vulnerabilities in file uploads and how you can prevent this type of vulnerability in your Java applications using Snyk Code.
The Ultimate Guide to Java Virtual Threads – Take a look at a comprehensive guide about virtual threads, covering topics such as the reasons and methods for creating them, their functionality, the concept of ThreadLocal and Thread Pools, and more.
Not Your Grandfather’s Logs — A Java Library’s New Approach To Observability – Is there a new, better way to generate logs without numerous debugging messages, excavation attempts, warnings, and notices? See what Roni Dover has to say about it.
Java improved its ‘Hello World’ experience – Java is moving towards simplifying the initial developer experience. This article shows which JEPs make Tom Cools optimistic about this trend.
Z Garbage Collector: The Next Generation – The Z Garbage Collector (ZGC), which provides low-latency garbage collection with sub-millisecond pause times, is evolving. This session will discuss the design goals of ZGC and its upcoming support for multiple generations.
Creating Scalable OpenAI GPT Applications in Java – Learn how to seamlessly integrate ChatGPT into your Java applications for efficient and scalable performance by sending prompts to the engine only when necessary.
How To Perform Sentiment Analysis and Classification on Text (In Java) – This article provides an overview of NLP sentiment analysis and classification and features a demonstration of an API-based solution.
Instrumenting Java Code to Find and Handle Unused Classes – This blog post explains how to write a Java agent and instrumentation code to find unused classes and dependencies in your project.
Cherry-Pick: Move a Commit to a Different Branch – Together with Marit van Dijk, find out why you might want to move a commit to a different branch.
An Incomplete Guide to Modern Java I/O Idioms – Cay Horstmann explains why you don’t need to use BufferedReader and BufferedWriter in 2023, and shares some methods to simplify I/O tasks without loops.
Introducing Bld: A New Pure Java Build System – Find out what RIFE2’s bld is and how it allows you to write your build logic in pure Java.
A Simpler Testing Pyramid: Getting the Most out of Your Tests – Tyson Gern introduces the notion of a testing pyramid and explains how to speed up tests.
How to Create a Microservice Architecture With Java – Discover the benefits, tools, and best practices for creating microservices with Java architecture.
How To Create and Edit PDF Annotations in Java – This article explains how to leverage 4 APIs that can be used to programmatically create, retrieve, and/or remove annotations in a PDF document.
Guide to Creating and Containerizing Native Images – Learn how to turn Java applications into native images and then containerize them for further deployment in the cloud.
Languages, Frameworks, Libraries, and Technologies
This week in Spring 1, 2, 3, 4 – Read the series of blogs to stay up to date with the recent Spring updates.
Taming Thymeleaf update for Spring Boot 3 – Wim Deblauwe guides you through the steps you have to take to upgrade from Spring Boot 2 to Spring Boot 3.
Application development with large language models – Learn to extend Visual ChatGPT with image search engines.
8 things you need to know when migrating to Hibernate 6.x – Thorben Janssen shares a summary of the most useful actions to take and avoid if you intend to migrate to Hibernate 6.
Faster hardware is a bad first solution to slow software – This article explains how to understand if upgrading to faster hardware is the right solution for software performance issues.
When DevOps Meets Security to Protect Software – What does DevSecOps stand for? Is it important to integrate security into every stage of the development process? These and many other security-related questions are discussed in the article.
How To Do Code Reviews – In this video, Marco Codes shows how to review pull requests and shares his “every line of code is a liability” philosophy.
How To REALLY Do Code Reviews – This one adds even more details to the previous video.
Solving Java Multithreading Challenges in My Google Photos Clone – Together with Marco Codes, find out how many threads you should use to generate thumbnails, how threads can get in conflict with each other, and more.
How To Create a GraalVM Docker Image – Discover why creating a Docker image for your GraalVM native image is trickier than the usual Docker image creation.
Bloomberg Unveils a GPT Finance-Focused AI Model – Find out more about BloombergGPT, a cutting-edge AI that can quickly evaluate financial data to help with risk assessments, gauge financial sentiment, and automate accounting and auditing activities.
Getting Started With Jakarta EE 10 – Jakarta REST – Read this article if you are a newbie to developing RESTful web services on the Jakarta EE Platform using the Jakarta REST API.
Replacing Postman with the JetBrains HTTP Client – Julien Lengrand-Lambert introduces the basic functionality of the JetBrains HTTP Client.
PostgreSQL Auto Explain – This article explains how PostgreSQL’s Auto Explain feature works and why it’s beneficial to gather the actual execution plan for SQL statements that execute on a production system.
Unleash the Power of Open Source Java Profilers: Comparing VisualVM, JMC, and async-profiler – Johannes Bechberger shares his thoughts on the 3 most popular sampling-based profilers for Java.
An introduction to generative AI with Swami Sivasubramanian – Dr. Werner Vogels, Amazon CTO and Swami Sivasubramanian, AWS VP of Database, Analytics, and ML, sit down to discuss the broad landscape of generative AI, why it’s not hype, and how AWS is democratizing access to large language and foundation models.
Thread dump — the simple tool for debugging Java-applications in production – This blog post explains the basics of a thread dump and how to obtain it, while also showing some examples of what interesting thread dumps may look like.
Helidon – Microservices on Modern Java – This session covers the practical aspects of using Project Loom’s Virtual Threads (from OpenJDK) with Helidon Níma.
Fearless Distroless – With the rise of Docker, engineers have been trying to optimize the build to reach the smallest image size possible. Learn how Distroless images help reduce image size and improve security.
Kotlin Corner
Kotlin DSL is Now the Default for New Gradle Builds – When you create a new project with Gradle, including in IntelliJ IDEA (starting with 2023.1) and Android Studio (starting with Giraffe), Kotlin DSL is the default option. Learn more about it in this article.
Is There an Equivalent of Spring Boot for Kotlin? – Does Spring work with Kotlin the same way as it does with Java? Find out in this article.
What’s new in Kotlin 1.8.20: K2 compiler, language updates, stdlib improvements, and Java interop – In this video, Anton Arhipov explains the new features in Kotlin 1.8.20, including the K2 compiler update, data objects, enum classes, improvements for inline classes, synthetic property references for Java classes, and the new experimental API in the standard library.
Kotlin Coroutines Recipes – In this article, you will explore a collection of practical Kotlin Coroutine recipes that can help streamline your development process.
Spring Boot 3 With Kotlin DSL. REST API Without Annotations – Piotr Wolak shows you how to expose a REST API using Spring Boot 3, Kotlin, bean definition, and router DSL.
KotlinConf 2023: A Look at the Opening Keynote – Watch the linked video or read this blog for the essential takeaways from the opening session of KotlinConf 2023.
Culture and Community
A Bootiful Podcast: José Paumard, Java Champion alumnus and Java legend, on Project Loom, Valhalla, and more, from Devnexus 2023! – This podcast was recorded at the Devnexus 2023 event, and features renowned Oracle Java Champion (alumnus), Java advocate, professor emeritus, and all around amiable fellow, José Paumard.
Meta Open-sourced AI Tool to Animate Child and Amateur Drawings of Human Figure – Find out more about Animated Drawings by Meta – an AI-based tool to create animations from hand-drawn human-like characters.
Foojay Podcast #19: How Working For Free For Fun Brought Me Fame and Fortune – Or At Least Some Of Each – In The End – Listen to the success stories of people whose side projects led them not only to new jobs, but also their own businesses.
Culture & Methods Trends Report March 2023 – Why do developers feel insecure following rounds of layoffs in tech? Are large language models friends or foes? What is the concept of responsible technology? The answers to these and other questions are in the article.
Software Engineering towards Sustainable Empathic Capacities – Does empathy have a place in software development? Find out with Peter Pilgrim.
Unlocking the Secrets to a Successful Software Engineering Career: An Interview with Otavio Santana – Otavio shares valuable insights from his journey in the open-source world, highlighting the importance of mentorship and open-source contributions for career growth.
Moving from Technical Contributor to People Leader with Lena Reinhard – In this podcast, Shane Hastie, Lead Editor for Culture & Methods, speaks to Lena Reinhard about the essential skills for moving from an individual contributor role to a people leader, communicating outside of engineering and the layoffs in tech.
Programmer Interrupted: The Real Cost of Interruption and Context Switching – Daily productivity is significantly influenced by 2 costly factors: interruptions and context switching. While these cannot be eliminated entirely, several effective tactics can reduce their impact and improve productivity. Read the article to learn more.
The Journey from Underrepresented IC to CTO: How Open Source Helped – Trista Pan, CTO and co-founder of SphereEx, shares her inspiring path up the career ladder and also talks about how to develop your open-source project from zero.
And Finally…
Debugger Upskill: Variables, Evaluate Expression, and Watches – Check out the second blog in the series, in which we explain the tools you can use to examine your program’s state and test different scenarios for fixing bugs during the debugging process.
“Quick” Features in IntelliJ IDEA – In this blog post, Mala Gupta describes IntelliJ IDEA’s features and actions that are labeled as “quick”. Discover what these features are, why they are essential, and how you can use them effectively.
Turbocharge Lombok annotations with IntelliJ IDEA – Igor Kulakov shares his knowledge about how IntelliJ IDEA and Lombok work together.
That’s it for today!
To propose content for the next edition of Java Annotated Monthly, kindly reach out to us via email or Twitter. Please keep in mind that articles need to be submitted by May 20.
Lastly, don’t forget that all JAM issues are archived on a dedicated website. So, if you came across an interesting blog but couldn’t read it at the time, don’t fret, you can find it there!