{"id":556637,"date":"2025-04-04T08:43:58","date_gmt":"2025-04-04T07:43:58","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=idea&#038;p=556637"},"modified":"2025-04-07T09:00:49","modified_gmt":"2025-04-07T08:00:49","slug":"java-annotated-monthly-april-2025","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/zh-hans\/idea\/2025\/04\/java-annotated-monthly-april-2025","title":{"rendered":"Java Annotated Monthly \u2013 April 2025"},"content":{"rendered":"\n<p>Welcome to the April edition of Java Annotated Monthly! Java 24 has landed, and we\u2019ve got plenty to say about it. From fresh language features to smart tricks and must-try tutorials, there\u2019s something for every curious developer. The cherry on top? Mala Gupta joins us as this month\u2019s featured guest \u2013 don\u2019t miss her insights!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Featured Content<\/h2>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                                                            <div class=\"about-author__box-img\">\n                            <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/images.jpeg\" alt=\"\" loading=\"lazy\">\n                        <\/div>\n                                        <div class=\"about-author__box-text\">\n                                                    <h4>Mala Gupta<\/h4>\n                                                <p><span style=\"font-weight: 400;\">Java Developer Advocate with JetBrains, a Java Champion, and a JUG leader, <\/span><a href=\"https:\/\/x.com\/eMalaGupta\" target=\"_blank\"><span style=\"font-weight: 400;\">Mala Gupta<\/span><\/a><span style=\"font-weight: 400;\"> has authored multiple books with Manning, Packt, and O\u2019Reilly Publications. She has more than two decades of experience in the software industry and is a regular speaker at industry conferences around the world. She is a vocal supporter of Java certification as a path to career advancement.<\/span><\/p>\n                    <\/div>\n                            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<p>In this featured section, I want to highlight the release of <a href=\"https:\/\/www.oracle.com\/in\/news\/announcement\/oracle-releases-java-24-2025-03-18\/\" target=\"_blank\" rel=\"noopener\">Java 24<\/a> and the <a href=\"https:\/\/www.oracle.com\/javaone\/\" target=\"_blank\" rel=\"noopener\">JavaOne<\/a> conference in San Francisco.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Java 24: Power, simplicity, and the joy of coding<\/h3>\n\n\n\n<p>Released on March 18, <a href=\"https:\/\/openjdk.org\/projects\/jdk\/24\/\" target=\"_blank\" rel=\"noopener\">Java 24<\/a> brings powerful enhancements for both new and experienced developers. Interestingly, it includes 24 JEPs, covering language and API improvements, performance boosts, concurrency enhancements, and security updates \u2013 all designed to make development smoother.<\/p>\n\n\n\n<p>As always, IntelliJ IDEA supported Java 24\u2019s features even before its GA release, making it easier than ever to adopt the latest innovations. In my recent blog posts, I dove into some of these key updates:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/03\/java-24-and-intellij-idea\/\"><strong>Java 24 and IntelliJ IDEA<\/strong><\/a> \u2013 See how Java 24 integrates with IntelliJ IDEA.<br><\/li>\n\n\n\n<li>\u2018<a href=\"https:\/\/blog.jetbrains.com\/idea\/2024\/02\/helloworld-and-main-meet-minimalistic\/\"><strong>HelloWorld\u2019 and \u2018main()\u2019 Meet Minimalism<\/strong><\/a> \u2013 Explore how Java 24 simplifies startup with less boilerplate.<br><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/02\/java-24-build-games-prototypes-utilities-and-more-with-less-boilerplate\/\"><strong>Build Games, Prototypes, and Utilities With Less Boilerplate<\/strong><\/a> \u2013 Learn how Java 24 makes rapid development intuitive and fun.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Let\u2019s make learning fun again<\/h3>\n\n\n\n<p>Programming should be exciting, not tedious! I still remember the thrill of writing my first piece of code at age ten. Seeing graphics appear on a screen made me think, &#8220;Wow! I made that happen! What else can I create?&#8221; That moment sparked my journey as a developer.<\/p>\n\n\n\n<p>With Java 24, learning to code can be fun, engaging, and creative. Instead of getting stuck in syntax, why not start with games? Java 24 reduces boilerplate, letting you dive straight into building. Whether it&#8217;s a hangman game or a quick prototype, coding should feel like an adventure \u2013 not a chore. Check out <a href=\"https:\/\/github.com\/malagupta\/HelloWorldProjJava24\" target=\"_blank\" rel=\"noopener\">my repository<\/a> for some inspiration.<\/p>\n\n\n\n<p>With fewer complexities and more powerful features, Java 24 makes programming feel fresh again. I can&#8217;t wait to see what exciting projects and games you create!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">JavaOne, March 18\u201320, 2025, Redwood Shores, CA<\/h3>\n\n\n\n<p>First of all, a huge thanks to <a href=\"https:\/\/bsky.app\/profile\/sharatchander.bsky.social\" target=\"_blank\" rel=\"noopener\">Sharat Chander<\/a> and his team for bringing back JavaOne! There\u2019s something magical about discussing Java with the very architects of the language I\u2019ve been working with for over two decades. Attending and presenting at <a href=\"https:\/\/www.oracle.com\/javaone\/\" target=\"_blank\" rel=\"noopener\">JavaOne<\/a> this year was an incredible experience. It was an honor to be part of this prestigious conference, sharing insights on the latest Java features alongside my co-speaker, <a href=\"https:\/\/bsky.app\/profile\/cguntur.bsky.social\" target=\"_blank\" rel=\"noopener\">Chandra Guntur<\/a>, while also learning from the brightest minds shaping Java\u2019s future. Contributing to the Java Community Process as JetBrains&#8217; primary representative on the Executive Committee was another incredible highlight.&nbsp;<\/p>\n\n\n\n<p>The presentations and discussions with Java architects and leaders like <a href=\"https:\/\/bsky.app\/profile\/mreinhold.org\" target=\"_blank\" rel=\"noopener\">Mark Reinhold<\/a>, <a href=\"https:\/\/bsky.app\/profile\/briangoetz.bsky.social\" target=\"_blank\" rel=\"noopener\">Brian Goetz<\/a>, <a href=\"https:\/\/bsky.app\/profile\/venkats.bsky.social\" target=\"_blank\" rel=\"noopener\">Venkat Subramaniam<\/a>, <a href=\"https:\/\/bsky.app\/profile\/viktorklang.com\" target=\"_blank\" rel=\"noopener\">Viktor Klang<\/a>, <a href=\"https:\/\/bsky.app\/profile\/pressron.bsky.social\" target=\"_blank\" rel=\"noopener\">Ron Pressler<\/a>, <a href=\"https:\/\/bsky.app\/profile\/josepaumard.bsky.social\" target=\"_blank\" rel=\"noopener\">Jos\u00e9 Paumard<\/a>, Poonam Parhar, <a href=\"https:\/\/bsky.app\/profile\/philwebb.dev\" target=\"_blank\" rel=\"noopener\">Phil Webb<\/a>, <a href=\"https:\/\/x.com\/jimgris\" target=\"_blank\">Jim Grisanzio<\/a>, Alan Bateman, Alex Buckley, <a href=\"https:\/\/bsky.app\/profile\/adambien.blog\" target=\"_blank\" rel=\"noopener\">Adam Bien<\/a>, <a href=\"https:\/\/bsky.app\/profile\/thedonraab.bsky.social\" target=\"_blank\" rel=\"noopener\">Donald Raab<\/a>, <a href=\"https:\/\/bsky.app\/profile\/brjavaman.bsky.social\" target=\"_blank\" rel=\"noopener\">Bruno Souza<\/a>, <a href=\"https:\/\/x.com\/heathervc\" target=\"_blank\">Heather VanCura<\/a>, <a href=\"https:\/\/x.com\/chadarimura\" target=\"_blank\">Chad Arimura<\/a>, <a href=\"https:\/\/bsky.app\/profile\/monoquito89.bsky.social\" target=\"_blank\" rel=\"noopener\">Heather Stephens<\/a>, <a href=\"https:\/\/bsky.app\/profile\/ted.dev\" target=\"_blank\" rel=\"noopener\">Ted Young<\/a>, and many others were truly inspiring. My colleague <a href=\"https:\/\/bsky.app\/profile\/maritvandijk.bsky.social\" target=\"_blank\" rel=\"noopener\">Marit<\/a> also delivered a fantastic session on being productive with IntelliJ IDEA. It was a privilege to learn from everyone I met, and I\u2019m excited to apply these insights while continuing this journey with the amazing Java community.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java News<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/java-news-roundup-mar03-2025\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Java News Roundup<\/a> <a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/java-news-roundup-mar03-2025\/\" target=\"_blank\" rel=\"noopener\">1<\/a>, <a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/java-news-roundup-mar10-2025\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">2<\/a>, <a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/java-news-roundup-mar17-2025\/\" target=\"_blank\" rel=\"noopener\">3<\/a>, <a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/java-news-roundup-mar24-2025\/\" target=\"_blank\" rel=\"noopener\">4<\/a> \u2013 Make sure you haven\u2019t missed any Java news for March.<\/p>\n\n\n\n<p>Check out a selection of articles about the recent release of Java 24:&nbsp;<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/03\/java-24-and-intellij-idea\/\">Java 24 and IntelliJ IDEA<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/03\/24\/javaone-opening-keynote\/\" target=\"_blank\" rel=\"noopener\">Our World, Moved by Java<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/03\/01\/jfokus-better-jdk24\/\" target=\"_blank\" rel=\"noopener\">Java 24 &#8211; Better Language, Better APIs, Better Runtime<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/foojay-podcast-68\/\" target=\"_blank\" rel=\"noopener\">Foojay Podcast #68: Welcome to OpenJDK (Java) 24<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/java-24-rolls-out-today-find-out-why-its-aptly-named\/\" target=\"_blank\" rel=\"noopener\">Java 24 Rolls Out Today! Find Out Why It\u2019s Aptly Named<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/03\/18\/the-arrival-of-java-24\/\" target=\"_blank\" rel=\"noopener\">The Arrival of Java 24<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/@aichalaafia1\/jdk-24-faster-smarter-and-ready-for-the-future-aa2430d9fafa\" target=\"_blank\" rel=\"noopener\">JDK 24: Faster, Smarter, and Ready for the Future!<\/a><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/inside.java\/2025\/03\/19\/performance-improvements-in-jdk24\/\" target=\"_blank\" rel=\"noopener\">Performance Improvements in JDK 24<\/a> \u2013 Take a look at the latest enhancements that boost Java&#8217;s performance, including optimized <em>Foreign Function &amp; Memory API <\/em>operations, streamlined string concatenation, and faster SHA3 algorithms.<\/p>\n\n\n\n<p><a href=\"https:\/\/inside.java\/2025\/03\/27\/newscast-88\/\" target=\"_blank\" rel=\"noopener\">Stable Values in Java 25 &#8211; Inside Java Newscast #88<\/a> \u2013 Watch the introduction of a new Java 25 feature that lets you create<em> <\/em>stable values: one-time computed, never-changing values the JVM can optimize for speed and smarts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java Tutorials and Tips<\/h2>\n\n\n\n<p><a href=\"https:\/\/inside.java\/2025\/03\/09\/jfokus-faster-jvm\/\" target=\"_blank\" rel=\"noopener\">How Can Machine Learning Assist to Improve JVM Performance<\/a> \u2013&nbsp; Learn how machine learning models, trained on G1 garbage collector logs, can automatically fine-tune JVM flags to boost application throughput and reduce latency.<\/p>\n\n\n\n<p><a href=\"https:\/\/inside.java\/2025\/03\/11\/gatherers-tutorial\/\" target=\"_blank\" rel=\"noopener\">The Gatherer API<\/a> \u2013 In this tutorial, you can learn more about the new Gatherers API in JDK 24, a powerful tool that allows you to create custom intermediate operations in the Stream API, which enhances both code readability and parallel processing capabilities.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=NJxqVoEi5JI\" target=\"_blank\" rel=\"noopener\">Be more productive with IntelliJ IDEA<\/a> \u2013 IntelliJ IDEA helps you stay productive with smart coding features, built-in tools like Git, Spring, and a debugger \u2013 everything you need, all in one IDE. This talk by <a href=\"https:\/\/maritvandijk.com\/\" target=\"_blank\" rel=\"noopener\">Marit van Dijk<\/a> shows how it supports your workflow and boosts your developer happiness.<\/p>\n\n\n\n<p><a href=\"https:\/\/dev.to\/yanev\/why-i-believe-lombok-should-be-discarded-from-java-projects-1g4h\" target=\"_blank\" rel=\"noopener\">Why I Believe Lombok Should Be Discarded from Java Projects<\/a> \u2013 Ivelin Yanev critically examines Project Lombok, highlighting concerns such as increased compilation times, potential design oversights due to the overuse of annotations like @Builder, and compatibility issues with evolving Java versions. Do you share the author\u2019s concerns?<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.frankel.ch\/maven-dependency-analyze\/\" target=\"_blank\" rel=\"noopener\">Improving Maven\u2019s dependency:analyze\u2026 or not<\/a> \u2013 <a href=\"https:\/\/blog.frankel.ch\/me\/\" target=\"_blank\" rel=\"noopener\">Nicolas Fr\u00e4nkel<\/a> digs into Maven\u2019s dependency:analyze command, showing why it often gives misleading results, especially in Spring Boot projects, and he warns devs not to blindly trust it.<\/p>\n\n\n\n<p><a href=\"https:\/\/spring.io\/blog\/2025\/03\/06\/a-bootiful-podcast-johannes-bechberger\" target=\"_blank\" rel=\"noopener\">A Bootiful Podcast: Johannes Bechberger, Java engineer at SAP<\/a> \u2013 <a href=\"https:\/\/joshlong.com\/\" target=\"_blank\" rel=\"noopener\">Josh Long<\/a> talks with Java engineer <a href=\"https:\/\/mostlynerdless.de\/me\/\" target=\"_blank\" rel=\"noopener\">Johannes Bechberger<\/a> about his work on Java profilers, open-source projects, and creating hello-ebpf \u2013 the first eBPF library for Java.<\/p>\n\n\n\n<p><a href=\"https:\/\/dev.java\/community\/javaone-2025\/\" target=\"_blank\" rel=\"noopener\">JavaOne 2025 Live Streams<\/a> \u2013 For those who couldn&#8217;t make it, the JavaOne team live-streamed some of the highlights to <a href=\"https:\/\/www.youtube.com\/java\" target=\"_blank\" rel=\"noopener\">the Java YouTube channel<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/foojay.io\/today\/introduction-to-intermediate-operations-modeler-stream-gatherers\/\" target=\"_blank\" rel=\"noopener\">Introduction to intermediate operations modeler: Stream Gatherers<\/a> \u2013 <a href=\"https:\/\/x.com\/hakdoganhoca\" target=\"_blank\">H\u00fcseyin Akdo\u011fan<\/a> explores the concept of gatherers in Java streams, demonstrates how to create them, shows their built-in options, and explains how to develop custom gatherers.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.javaspecialists.eu\/archive\/Issue323-Visiting-All-Threads-Including-Virtual.html\" target=\"_blank\" rel=\"noopener\">Issue 323 \u2013 Visiting All Threads (Including Virtual)<\/a> \u2013 <a href=\"https:\/\/www.javaspecialists.eu\/about\/heinz\/\" target=\"_blank\" rel=\"noopener\">Dr. Heinz M. Kabutz<\/a> demonstrates how you can visit the entire hierarchy of threads in our virtual machine, including virtual threads. We do this using the composite, visitor, and facade design patterns.<\/p>\n\n\n\n<p><a href=\"https:\/\/spring.io\/blog\/2025\/03\/20\/a-bootiful-podcast-henri-tremblay\" target=\"_blank\" rel=\"noopener\">A Bootiful Podcast: Java Champion and legend Henri Tremblay<\/a> \u2013 <a href=\"https:\/\/joshlong.com\/\" target=\"_blank\" rel=\"noopener\">Josh Long<\/a> interviews <a href=\"https:\/\/x.com\/henri_tremblay\" target=\"_blank\">Henri Tremblay<\/a>, head of TS Imagine Canada, Java Champion, Montreal JUG leader, and lead developer of EasyMock.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.frankel.ch\/java-cleaner\/\" target=\"_blank\" rel=\"noopener\">Clean your Memory: From Finalize to Cleaner<\/a> \u2013 <a href=\"https:\/\/blog.frankel.ch\/me\/\" target=\"_blank\" rel=\"noopener\">Nicolas Fr\u00e4nkel<\/a> explains how Java developers can write more concise and readable code by replacing common patterns with built-in language features like record, sealed, and switch enhancements.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=fLaXlBVUb0c\" target=\"_blank\" rel=\"noopener\">Deeply Nested Complex Conditional Code | Safe Transformations &amp; Refactoring<\/a> \u2013 There are lots of conditional manipulations you can do safely using the tools in your editor or IDE. In this video, <a href=\"https:\/\/www.youtube.com\/@EmilyBache-tech-coach\" target=\"_blank\" rel=\"noopener\">Emily Bache<\/a> shows you how, using IntelliJ IDEA and Java.<\/p>\n\n\n\n<p><a href=\"https:\/\/inside.java\/2025\/01\/28\/jvm-start-up\/\" target=\"_blank\" rel=\"noopener\">A Deep Dive into JVM Start-up<\/a> \u2013 <a href=\"https:\/\/billykorando.com\/\" target=\"_blank\" rel=\"noopener\">Billy Korando<\/a> explains what exactly happens behind the scenes when you start a Java program, breaking down each step the JVM takes from launch to running your code.<\/p>\n\n\n\n<p><a href=\"https:\/\/softwaremill.com\/how-to-improve-jvm-based-application-startup-time\/\" target=\"_blank\" rel=\"noopener\">How to Improve JVM-Based Application Startup Time?<\/a> \u2013 Check out various strategies to accelerate the startup time of JVM applications and get practical insights to enhance application performance.<\/p>\n\n\n\n<p><a href=\"https:\/\/medium.com\/@vlad.dedita\/my-java-date-handling-will-never-be-the-same-193ad5869c6d\" target=\"_blank\" rel=\"noopener\">My Java Date Handling Will Never Be The Same<\/a> \u2013 <a href=\"https:\/\/medium.com\/@vlad.dedita\" target=\"_blank\" rel=\"noopener\">Vlad Dedita<\/a> reveals how Java&#8217;s TemporalAdjusters can simplify complex date manipulations, transforming cumbersome code into clean, efficient solutions.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=VkK0to0vFyc\" target=\"_blank\" rel=\"noopener\">Friends of OpenJDK<\/a> \u2013 Hear from active collaborators in the OpenJDK community about how they got started and what excites them about using the OpenJDK. Pick up tips and tricks for getting the most out of the OpenJDK and its vibrant international community.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=_R_Vc17mxNE\" target=\"_blank\" rel=\"noopener\">Reading Code Effectively: An Overlooked Dev. Skill \u2022 Marit van Dijk &amp; Hannes Lowette \u2022 GOTO 2025<\/a> \u2013 Reading code is a critical yet often underappreciated skill in software development. <a href=\"https:\/\/maritvandijk.com\/\" target=\"_blank\" rel=\"noopener\">Marit van Dijk<\/a> and <a href=\"https:\/\/www.hanneslowette.com\/\" target=\"_blank\" rel=\"noopener\">Hannes Lowette<\/a> highlight that while developers are trained to write code, they spend most of their time understanding existing codebases, often with incomplete documentation and evolving complexity.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin Corner<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/03\/shout-out-to-kotlin-for-server-side-content-creators\/\">Shout-Out to Kotlin for Server-Side Content Creators!<\/a> \u2013 See the outstanding community contributions to Kotlin server-side development and share your experiences.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/02\/google-summer-of-code-2025-kotlin\/\">Apply for Google Summer of Code 2025 and Contribute to the Kotlin Ecosystem <\/a>\u2013 Contributors are invited to collaborate on open-source projects from JetBrains, Google, Uber, and Gradle. The details are in this blog post.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/carrion.dev\/en\/posts\/kotlin-flows-hot-cold\/\" target=\"_blank\" rel=\"noopener\">Understanding Hot and Cold Flows in Kotlin<\/a> \u2013 <a href=\"https:\/\/carrion.dev\/en\/\" target=\"_blank\" rel=\"noopener\">Ignacio Carri\u00f3n<\/a> demystifies the key differences between hot and cold flows in Kotlin, providing clear explanations and practical examples to help you effectively manage reactive data streams.<\/p>\n\n\n\n<p><a href=\"https:\/\/codersee.com\/getting-started-with-mockk-kotlin\/\" target=\"_blank\" rel=\"noopener\">Getting Started with MockK in Kotlin<\/a> \u2013 <a href=\"https:\/\/codersee.com\/author\/piotr\/\" target=\"_blank\" rel=\"noopener\">Piotr<\/a> introduces MockK, guiding readers through creating mocks, defining stubbings, and utilizing matchers.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=J_DFKIVJVE0\" target=\"_blank\" rel=\"noopener\">Can Junie generate Kotlin code from UML? <\/a>\u2013 UML code generators have been around for a long time. Can Junie do better? In this video, <a href=\"https:\/\/www.youtube.com\/@typealias\" target=\"_blank\" rel=\"noopener\">Dave Leeds<\/a> tasks <a href=\"https:\/\/www.jetbrains.com\/de-de\/junie\/\" target=\"_blank\" rel=\"noopener\">Junie<\/a>, JetBrains&#8217; new AI coding agent, with writing Kotlin code for some UML diagrams.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/03\/kotlin-2-1-20-released-2\/\">Kotlin 2.1.20 Released<\/a> \u2013 Check out the latest updates!&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/softwaremill.com\/7-kotlin-libraries-and-frameworks-for-backend-development-you-should-know\/\" target=\"_blank\" rel=\"noopener\">7 Kotlin Libraries and Frameworks for Backend Development You Should Know<\/a> \u2013 In his article, <a href=\"https:\/\/www.linkedin.com\/in\/szymon-winiarz\/\" target=\"_blank\" rel=\"noopener\">Szymon Winiarz<\/a> introduces native Kotlin tools that can enhance your backend projects.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AI<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.infoq.com\/presentations\/ai-agents-infrastructure\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Pioneering the Future: Advancing Infrastructure for AI Agents<\/a> \u2013 AI agents, powered by RAG and vector databases, will anticipate needs, automate workflows, and supervise agents. This presentation explores infrastructure, security, and impact to help enterprises harness AI.<\/p>\n\n\n\n<p><a href=\"https:\/\/flounder.dev\/posts\/structured-output-for-translation\/\" target=\"_blank\" rel=\"noopener\">LLMs + Structured Output as a Translation Service<\/a> \u2013 In his post, <a href=\"https:\/\/flounder.dev\/\" target=\"_blank\" rel=\"noopener\">Igor Kulakov<\/a> shows how to make AI translations more reliable by using structured output, with a simple code example to prove it.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/03\/how-to-choose-the-right-llm\/\">How to Choose the Right LLM<\/a> \u2013 Check out a hands-on guide to choosing the right LLM for coding based on real benchmarks.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/03\/ai-code-completion-less-is-more\/\">AI Code Completion: Less Is More<\/a> \u2013 <a href=\"https:\/\/www.linkedin.com\/in\/darya-rovdo-85aa9111a\/?originalSubdomain=nl\" target=\"_blank\" rel=\"noopener\">Darya Rovdo<\/a> unveils how JetBrains enhanced code completion by implementing a lightweight, local filter model that smartly decides when to display AI-generated suggestions.<\/p>\n\n\n\n<p><a href=\"https:\/\/foojay.io\/today\/code-reviews-with-ai-a-developer-guide\/\" target=\"_blank\" rel=\"noopener\">Code Reviews with AI: a Developer Guide<\/a> \u2013 <a href=\"https:\/\/foojay.io\/today\/author\/jonathan-vila\/\" target=\"_blank\" rel=\"noopener\">Jonathan Vila<\/a> discusses the use and impact of AI on the different phases of the SDLC from the perspectives of the developer and the reviewer.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.pubhouse.net\/podcast\/episode-106-spring-ai-and-ollama\/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=episode-106-spring-ai-and-ollama\" target=\"_blank\" rel=\"noopener\">Episode 106. Spring AI and Ollama<\/a> \u2013 Spring AI and Ollama make it much easier to build smart apps with AI in the Spring world. Find out how in this blog post.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/03\/using-ai-agents-for-notebook-debugging\/\">Using AI Agents for Notebook Debugging<\/a> \u2013 <a href=\"https:\/\/www.linkedin.com\/in\/galina-ryazanskaya\/?originalSubdomain=de\" target=\"_blank\" rel=\"noopener\">Galina Ryazanskaya<\/a> demonstrates JetBrains&#8217; prototype of an AI agent that autonomously detects and fixes errors in computational notebooks.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.christianposta.com\/ai\/learnings-from-load-testing-llms\/\" target=\"_blank\" rel=\"noopener\">4 Learnings From Load Testing LLMs<\/a> \u2013 <a href=\"https:\/\/blog.christianposta.com\/about\/\" target=\"_blank\" rel=\"noopener\">Christian Posta<\/a> breaks down what he learned from load testing LLMs on Kubernetes, including why real prompts matter, how to avoid crashing your setup, and what to watch for to keep things running smoothly.<\/p>\n\n\n\n<p><a href=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai.html#memo-13\" target=\"_blank\" rel=\"noopener\">The role of developer skills in agentic coding<\/a> \u2013 <a href=\"https:\/\/birgitta.info\/\" target=\"_blank\" rel=\"noopener\">Birgitta B\u00f6ckeler<\/a> shares her insights and uncertainties about LLMs\u2019 transformative impact on software development practices.<\/p>\n\n\n\n<p><a href=\"https:\/\/tryingthings.wordpress.com\/2025\/03\/24\/about-vibe-coding\/\" target=\"_blank\" rel=\"noopener\">About \u201cvibe coding\u201d<\/a> \u2013 <a href=\"https:\/\/www.linkedin.com\/in\/scostea\/?originalSubdomain=ch\" target=\"_blank\" rel=\"noopener\">Sorin Costea<\/a> critiques the AI-driven programming trend, sharing his frustrating experience with Cursor&#8217;s inability to perform basic tasks like renaming a class in a Java Maven project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Languages, Frameworks, Libraries, and Technologies<\/h2>\n\n\n\n<p>This Week in Spring <a href=\"https:\/\/spring.io\/blog\/2025\/03\/04\/this-week-in-spring-march-4th-2025\" target=\"_blank\" rel=\"noopener\">1<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/03\/11\/this-week-in-spring-march-11th-2025\" target=\"_blank\" rel=\"noopener\">2<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/03\/18\/this-week-in-spring-march-18th-2025\" target=\"_blank\" rel=\"noopener\">3<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/03\/25\/this-week-in-spring-march-25th-2025\" target=\"_blank\" rel=\"noopener\">4<\/a> \u2013 Weekly Spring news is here.<\/p>\n\n\n\n<p><a href=\"https:\/\/spring.io\/blog\/2025\/03\/10\/null-safety-in-spring-apps-with-jspecify-and-null-away\" target=\"_blank\" rel=\"noopener\">Null Safety in Spring applications with JSpecify and NullAway<\/a> \u2013 Learn how to make Spring apps safer and cleaner by using JSpecify and NullAway to catch sneaky null bugs before they break things.<\/p>\n\n\n\n<p><a href=\"https:\/\/foojay.io\/today\/front-end-debugging-part-3-networking\/\" target=\"_blank\" rel=\"noopener\">Front End Debugging Part 3: Networking<\/a> \u2013 <a href=\"https:\/\/foojay.io\/today\/author\/shai-almog\/\" target=\"_blank\" rel=\"noopener\">Shai Almog<\/a> explores advanced browser-based tools and techniques for effectively debugging network communication issues in frontend development.<\/p>\n\n\n\n<p><a href=\"https:\/\/glaforge.dev\/posts\/2025\/02\/27\/pretty-print-markdown-on-the-console\/\" target=\"_blank\" rel=\"noopener\">Pretty-print Markdown on the console<\/a> \u2013 Find out how to make Markdown look great in your console using a simple Java tool that adds colors and style to plain text.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.bdemers.io\/presentations\/2025\/devnexus-testing-on-thin-ice\/\" target=\"_blank\" rel=\"noopener\">Testing on Thin Ice: Chipping Away at Test Unpredictability<\/a> \u2013 <a href=\"https:\/\/blog.bdemers.io\/\" target=\"_blank\" rel=\"noopener\">Brian Demers<\/a> breaks down how to test code in risky, fast-moving environments without letting everything crash and burn.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.infoq.com\/articles\/checklist-kubernetes-production\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Checklist for Kubernetes in Production: Best Practices for SREs<\/a> \u2013 <a href=\"https:\/\/www.linkedin.com\/in\/utkudarilmaz\/?locale=en_US\" target=\"_blank\" rel=\"noopener\">Utku Darilmaz<\/a> shares a no-fluff checklist to help SREs run Kubernetes smoothly in production, covering all that\u2019s needed to keep things stable, efficient, and cost-effective.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.infoq.com\/news\/2025\/03\/htmx-future-stability-compat\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">The Future of Htmx &#8211; Stability and Compatibility<\/a> \u2013 Learn how the Htmx team is doubling down on keeping the tool stable and backward-compatible so developers can build cool stuff without worrying if it\u2019ll break later.<\/p>\n\n\n\n<p><a href=\"https:\/\/foojay.io\/today\/one-giant-kubernetes-cluster-for-everything\/\" target=\"_blank\" rel=\"noopener\">One giant Kubernetes cluster for everything<\/a> \u2013 <a href=\"https:\/\/blog.frankel.ch\/\" target=\"_blank\" rel=\"noopener\">Nicolas Fr\u00e4nkel<\/a> makes a bold case for running everything in one giant Kubernetes cluster to simplify management and boost efficiency, risks included.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.payara.fish\/5-hidden-git-tips-for-java-developers\" target=\"_blank\" rel=\"noopener\">5 Hidden Git Tips for Java Developers<\/a> \u2013 In this post, you\u2019ll explore five hidden Git tips tailored specifically for Java development. These tips will help you manage your codebase more efficiently, debug issues faster, and collaborate more effectively.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/qodana\/2025\/03\/code-analysis-in-stem\/\">The Impact of Code Analysis in STEM: Protecting Work That Affects the World<\/a> \u2013 In her article, <a href=\"https:\/\/www.linkedin.com\/in\/kerry-beetge-5421a727\/?originalSubdomain=de\" target=\"_blank\" rel=\"noopener\">Kerry Beetge<\/a> shows how code analysis helps STEM teams catch bugs early and build smarter, safer tech that actually works.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conferences and Events<\/h2>\n\n\n\n<p>Here are some of the events you can visit online and offline:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/qconlondon.com\/\" target=\"_blank\" rel=\"noopener\">Qcon London<\/a> \u2013 London, United Kingdom, April 7\u201310<\/li>\n\n\n\n<li><a href=\"https:\/\/devoxx.gr\/\" target=\"_blank\" rel=\"noopener\">Devoxx Greece<\/a> \u2013 Athens, Greece, April 10\u201312; <\/li>\n\n\n\n<li><a href=\"https:\/\/www.devoxx.fr\/\" target=\"_blank\" rel=\"noopener\">Devoxx France<\/a> \u2013 Paris, France, April 16\u201318; <\/li>\n\n\n\n<li><a href=\"https:\/\/info.jetbrains.com\/idea-livestream-april17-2025.html\" target=\"_blank\" rel=\"noopener\">Code Smarter, Not Harder: AI-Powered Dev Hacks for All<\/a> \u2013 Online, April 17<\/li>\n\n\n\n<li><a href=\"https:\/\/developersummit.com\/\" target=\"_blank\" rel=\"noopener\">Great International Developer Summit<\/a> \u2013 Bangalore, India, April 22\u201325; <\/li>\n<\/ul>\n\n\n\n<p>JetBrains Java advocates will be speakers at several events this month. Meet <a href=\"https:\/\/maritvandijk.com\/\" target=\"_blank\" rel=\"noopener\">Marit van Dijk<\/a> and <a href=\"https:\/\/x.com\/antonarhipov?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor\" target=\"_blank\">Anton Arhipov<\/a> at <a href=\"http:\/\/devoxx.gr\" target=\"_blank\" rel=\"noopener\">Devoxx Greece<\/a> and <a href=\"http:\/\/devoxx.fr\" target=\"_blank\" rel=\"noopener\">Devoxx France<\/a> and <a href=\"https:\/\/x.com\/emalagupta?lang=en\" target=\"_blank\">Mala Gupta<\/a> and <a href=\"https:\/\/x.com\/sivalabs?lang=en\" target=\"_blank\">Siva Katamreddy<\/a> at <a href=\"http:\/\/developersummit.com\" target=\"_blank\" rel=\"noopener\">GIDS<\/a>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/lp.jetbrains.com\/intellij-idea-conf-2025\/?utm_source=newsletter&amp;utm_medium=jam&amp;utm_campaign=intellijideaconf\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"1300\" height=\"400\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/04\/Email-banner-650x200-2x-Register.png\" alt=\"\" class=\"wp-image-556674\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Culture and Community<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.infoq.com\/presentations\/trust-psychological-safety\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">The (Not So) Hidden Social Drivers behind the Highest Performing Engineering Teams<\/a> \u2013 <a href=\"https:\/\/www.linkedin.com\/in\/lizzie-matusov\/\" target=\"_blank\" rel=\"noopener\">Lizzie Matusov<\/a> delves into how trust and psychological safety serve as powerful signals of team success with practical methods to evaluate and measure these key social dimensions.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/in.relation.to\/2025\/03\/13\/ideas-are-cheap\/\" target=\"_blank\" rel=\"noopener\">Ideas are cheap<\/a> \u2013 Gavin King says cool ideas are everywhere, but turning them into solid, useful features takes tough judgment and saying \u201cno\u201d a lot. Do you agree?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">And Finally\u2026<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/03\/intellij-idea-s-blog-feedback-2025\/\">IntelliJ IDEA\u2019s Blog Feedback 2025<\/a> \u2013 Help us shape the future of our blog and deliver the most relatable content to you.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/03\/ide-workspaces-development-challenges-and-plans\/\">IDE Workspaces Development: Challenges and Plans<\/a> \u2013 Discover the challenges and what\u2019s coming for IDE workspaces in IntelliJ IDEA.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=V5iQ1FyRtBo\" target=\"_blank\" rel=\"noopener\">Debugging Java code in IntelliJ IDEA<\/a> \u2013 See how the IntelliJ IDEA debugger can help you find and fix bugs and learn some neat tricks about the debugger in the process!<\/p>\n\n\n\n<p>That\u2019s it for today! We\u2019re always collecting ideas for the next Java Annotated Monthly \u2013 send us your suggestions via <a href=\"https:\/\/mail.google.com\/mail\/u\/0\/?fs=1&amp;tf=cm&amp;source=mailto&amp;to=JAM@jetbrains.com\" target=\"_blank\" rel=\"noopener\">email<\/a> or <a href=\"https:\/\/x.com\/intellijidea?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor\" target=\"_blank\">X<\/a> by April 20. Don\u2019t forget to check out our archive of <a href=\"https:\/\/www.jetbrains.com\/lp\/jam\/\" target=\"_blank\" rel=\"noopener\">past JAM issues<\/a> for any articles you might have missed!<\/p>\n","protected":false},"author":1138,"featured_media":556649,"comment_status":"closed","ping_status":"closed","template":"","categories":[8526,5088,4918,8397,4113],"tags":[3236],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/idea\/556637"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1138"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=556637"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/idea\/556637\/revisions"}],"predecessor-version":[{"id":556796,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/idea\/556637\/revisions\/556796"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/556649"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=556637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=556637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=556637"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=556637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}