{"id":573599,"date":"2025-06-06T15:07:43","date_gmt":"2025-06-06T14:07:43","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=idea&#038;p=573599"},"modified":"2025-07-09T18:25:35","modified_gmt":"2025-07-09T17:25:35","slug":"java-annotated-monthly-june-2025","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/de\/idea\/2025\/06\/java-annotated-monthly-june-2025","title":{"rendered":"Java Annotated Monthly \u2013 June 2025"},"content":{"rendered":"\n<p>Hi there, Java fans! It\u2019s a new month, which means we\u2019ve got a new batch of hot news, deep dives, and tasty tidbits from the Java world for you to enjoy. In this edition, Piotr Przyby\u0142 joins us in the Featured Content section to share his cultivated list of content finds. We\u2019re also testing a new, more concise format that is faster to read but still packed with value. Let us know if you like it or miss the old style.&nbsp;<\/p>\n\n\n\n<p>Ready? Let\u2019s go!<\/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\/06\/image1.jpg\" alt=\"\" loading=\"lazy\">\n                        <\/div>\n                                        <div class=\"about-author__box-text\">\n                                                    <h4>Piotr Przyby\u0142<\/h4>\n                                                <p><a href=\"https:\/\/softwaregarden.dev\/\" target=\"_blank\" rel=\"noopener\">Piotr Przyby\u0142<\/a> \u2013 Notorious engineer at work and after hours, tracing the meanders of the art of software engineering. Remote Software Gardener, mostly working in web-oriented Java gardens. Java Champion. Testcontainers Champion. Programming usually in Java (since 1.3), Scala, and Go, but in other languages too. A fan of agility, seen mostly as choosing the right tools and approaches after asking the right questions. Developer, trainer, and conference speaker, currently working for Elastic as a Senior Developer Advocate.<\/p>\n                    <\/div>\n                            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<p><br>Greetings, fellow Java developers! It&#8217;s a pleasure to be here. It\u2019s exciting to be in the Java community, for a language that celebrated its 30th anniversary, which has been proclaimed to be dead so many times, and it\u2019s still doing surprisingly well. We can see that with all the exciting stuff happening around Java 25, and changes in the ecosystem at large.<br>I\u2019m humbled and honoured to be here. It\u2019s great to see the community and the ecosystem evolve, especially given that I\u2019ve been a part of it since (checks notes\u2026) 2003 ;-)<br><br>I was first exposed to Java at my alma mater, Wroc\u0142aw University of Science and Technology. Recently, there\u2019s been one more reason to be a proud alumnus: \u201cOdra 5\u201d!<br>&#8220;Odra 5&#8221; is the name of Poland&#8217;s first quantum computer, recently launched at the Wroc\u0142aw University of Science and Technology. It\u2019s a five-qubit machine, developed by Finnish company IQM Quantum Computers, that represents a significant milestone in the advancement of quantum computing in Central and Eastern Europe. I find the name cute and not without meaning for local IT history fans. You can read more about it here at the <a href=\"https:\/\/pwr.edu.pl\/en\/university\/news\/odra-5---a-quantum-computer-for-polish-science-10768.html\" target=\"_blank\" rel=\"noopener\">University&#8217;s official page<\/a>. Also, \u201cOdra\u201d is the Polish name for the Oder river, and\u2026 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Odra_(computer)\" target=\"_blank\" rel=\"noopener\">computers manufactured in Wroc\u0142aw in the 1960s<\/a>.<\/p>\n\n\n\n<p>Let\u2019s get back from general Computer Science to Java. Unless you have been living in total wilderness, I think you might have heard a thing or two about the AI (r)evolution happening recently. ;-) Contrary to some rumours, Java is a very decent language that benefits from improvements in this area, and with the release of Spring AI 1.0, things will get even easier! The <a href=\"https:\/\/www.elastic.co\/search-labs\/blog\/spring-ai-elasticsearch-application\" target=\"_blank\" rel=\"noopener\">article by Josh Long, Philipp Krenn, and Laura Trotta<\/a> (I know, and have lots of respect for all of them) will let you understand how to start with your own RAG quickly, benefiting from features of Spring AI, Elasticsearch, and more. Oh, and if you\u2019d like to learn more about stuff like vector search or searching in general, AI, and so on, <a href=\"https:\/\/www.elastic.co\/search-labs\" target=\"_blank\" rel=\"noopener\">Elasticsearch Labs<\/a> might be a good place to start.<\/p>\n\n\n\n<p>Speaking about Java itself, there\u2019s of course the 30th anniversary of Java! It\u2019s a big thing, although it might be disturbing to some that the language that keeps dying is still pretty much alive and actively developed. Right now, there are <a href=\"https:\/\/openjdk.org\/projects\/jdk\/25\/\" target=\"_blank\" rel=\"noopener\">17 active Java Enhancement Proposals<\/a> targeting Java 25, which in my opinion proves that despite its size and legacy, the Java ecosystem is still evolving fast. I couldn\u2019t resist, and wrote <a href=\"https:\/\/softwaregarden.dev\/en\/posts\/varia\/sc-es-devex-and-devadv\/\" target=\"_blank\" rel=\"noopener\">about Java&#8217;s Structured Concurrency, Elasticsearch Java client, DevEx, and a Developer Advocate&#8217;s job<\/a> on my personal page, touching on all of this.<\/p>\n\n\n\n<p>I think that some reasons why our ecosystem is still robust are that we can learn from our past mistakes. While some of them are irreversible, many of them can shape how we think and evolve our systems and our daily jobs. A great example is the <a href=\"https:\/\/blog.allegro.tech\/2025\/05\/popular-gradle-mistakes-and-how-to-avoid-them-part2.html\" target=\"_blank\" rel=\"noopener\">Allegro folks sharing how to avoid mistakes in Gradle<\/a>, because with flexibility comes responsibility. And also, our tech stack and our jobs are not only the language, the SDK, the frameworks, and build\/CI\/CD tools, but predominantly our mindset. That\u2019s something we shall all keep improving!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java News<\/h2>\n\n\n\n<p>Check out the most recent news from the Java world:&nbsp;<\/p>\n\n\n\n<ul>\n<li>Java News Roundup <a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/java-news-roundup-may05-2025\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">1<\/a>, <a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/jdk-news-roundup-may12-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\/05\/java-news-roundup-may12-2025\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">3<\/a>, <a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/java-news-roundup-may19-2025\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">4<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/java-at-30\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Java at 30: A Retrospective on a Language That Has Made a Big Impact<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/foojay-podcast-71\/\" target=\"_blank\" rel=\"noopener\">Foojay Podcast #71: Celebrating 30 Years of Java with James Gosling<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.jetbrains.com\/lp\/java-30\/\" target=\"_blank\" rel=\"noopener\">Java 30 by JetBrains<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/donraab.medium.com\/happy-30th-birthday-java-0b8095a1cd91\" target=\"_blank\" rel=\"noopener\">Happy 30th Birthday, Java!<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/live\/LHHPbI7sYv8?t=8762s\" target=\"_blank\" rel=\"noopener\">Java&#8217;s 30th Birthday<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thenewstack.io\/java-at-30-the-genius-behind-the-code-that-changed-tech\/\" target=\"_blank\" rel=\"noopener\">Java at 30: The Genius Behind the Code That Changed Tech<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/01\/strings-just-got-faster\/\" target=\"_blank\" rel=\"noopener\">Strings Just Got Faster<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/02\/jep511-target-jdk25\/\" target=\"_blank\" rel=\"noopener\">JEP targeted to JDK 25: 511: Module Import Declarations<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/06\/jep512-target-jdk25\/\" target=\"_blank\" rel=\"noopener\">JEP targeted to JDK 25: 512: Compact Source Files and Instance Main Methods<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/12\/jep505-target-jdk25\/\" target=\"_blank\" rel=\"noopener\">JEP targeted to JDK 25: 505: Structured Concurrency (5th Preview)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/19\/jep513-target-jdk25\/\" target=\"_blank\" rel=\"noopener\">JEP targeted to JDK 25: 513: Flexible Constructor Bodies<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/news\/2025\/06\/java25-stable-values-api-startup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Java 25 Introduces Stable Values API for Deferred Immutability and Improved Application Startup<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/jdk25-instance-main-methods\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Instance Main Methods Move from Preview to Final in JDK\u202f25<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/26\/jep510-target-jdk25\/\" target=\"_blank\" rel=\"noopener\">JEP 510: Key Derivation Function API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nipafx.dev\/inside-java-newscast-91\" target=\"_blank\" rel=\"noopener\">Structured Concurrency Revamp in Java 25 &#8211; Inside Java Newscast #91<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Java Tutorials and Tips<\/h2>\n\n\n\n<p>Learn new things and enjoy unique insights from industry experts:&nbsp;<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/inside.java\/2025\/05\/05\/podcast-035\/\" target=\"_blank\" rel=\"noopener\">Episode 35 \u201cStream Gatherers\u201d with Viktor Klang<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.selikoff.net\/2025\/05\/02\/oracles-new-certification-exam-engine\/\" target=\"_blank\" rel=\"noopener\">Oracle\u2019s new certification exam engine<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/mcp-within-java-ecosystem\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Adoption of the Model Context Protocol Within the Java Ecosystem<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/presentations\/streaming-patterns\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Presentation: Stream All the Things \u2014 Patterns of Effective Data Stream Processing<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/10\/javaone-javafx\/\" target=\"_blank\" rel=\"noopener\">JavaFX 24 and Beyond<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/14\/javaone-garbage-collection\/\" target=\"_blank\" rel=\"noopener\">Garbage Collection in Java: The Performance Benefits of Upgrading<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/15\/javaone-jvm-troubleshooting\/\" target=\"_blank\" rel=\"noopener\">Mastering JVM Memory Troubleshooting &#8211; From OutOfMemoryErrors to Leaks<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/16\/podcast-036\/\" target=\"_blank\" rel=\"noopener\">Episode 36 \u201cAhead of Time Computation\u201d with Dan Heidinga<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/17\/javaone-faster-jdk24\/\" target=\"_blank\" rel=\"noopener\">Java 24, Faster Than Ever<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nipafx.dev\/talk-structured-concurrency\" target=\"_blank\" rel=\"noopener\">Structured Concurrency in Action<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/24\/javaone-pattern-matching\/\" target=\"_blank\" rel=\"noopener\">Pattern Matching in Java: Better Code, Better APIs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/mail.openjdk.org\/pipermail\/core-libs-dev\/2025-May\/145905.html\" target=\"_blank\" rel=\"noreferrer noopener\">Towards a JSON API for the JDK<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin Corner<\/h2>\n\n\n\n<p>Everything you might have missed about Kotlin in May:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/05\/kotlinconf-2025-language-features-ai-powered-development-and-kotlin-multiplatform\/\">KotlinConf 2025 Unpacked: Upcoming Language Features, AI-Powered Development, and Kotlin Multiplatform Upgrades<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/05\/meet-koog-empowering-kotlin-developers-to-build-ai-agents\/\">Meet Koog: Empowering Kotlin Developers to Build AI Agents&nbsp;<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/05\/strategic-partnership-with-spring\/\">Strengthening Kotlin for Backend Development: A Strategic Partnership With Spring<\/a> <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/05\/present-and-future-kotlin-for-web\/\">Present and Future of Kotlin for Web<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/amper\/2025\/05\/amper-update-may-2025\/\">Amper Update, May&#8217;25<\/a>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/04\/how-to-use-kotlin-notebooks-for-productive-development\/\">How to Use Kotlin Notebooks for Productive Development<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2025\/04\/domain-driven-design-guide\/\">Structuring Ktor Projects Using Domain-Driven Design (DDD) Concepts&nbsp;<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlin-lsp\" target=\"_blank\" rel=\"noopener\">Kotlin LSP<\/a> \u2013 The launch of the pre-Alpha Kotlin LSP and VS Code plugin.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">AI<\/h2>\n\n\n\n<p>Learn more about the most recent AI news, innovations, problems, and predictions:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/nx.dev\/blog\/practical-guide-effective-ai-coding\" target=\"_blank\" rel=\"noopener\">A Practical Guide on Effective AI Use &#8211; AI as Your Peer Programmer<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/isabeliita90.hashnode.dev\/working-with-junie-in-legacy-code\" target=\"_blank\" rel=\"noopener\">Working with Junie in legacy code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/research\/2025\/06\/predict-the-future-of-ai-in-software-development\/\">Help Predict the Future of AI in Software Development!<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/glaforge.dev\/posts\/2025\/05\/02\/vibe-coding-an-mcp-server-with-micronaut-and-gemini\/\" target=\"_blank\" rel=\"noopener\">Vibe coding an MCP server with Micronaut, LangChain4j, and Gemini<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2025\/05\/03\/javaone-java-ai\/\" target=\"_blank\" rel=\"noopener\">Java for AI<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/javapro.io\/2025\/04\/23\/build-ai-apps-and-agents-in-java-hands-on-with-langchain4j\/\" target=\"_blank\" rel=\"noopener\">Build AI Apps and Agents in Java: Hands-On with LangChain4j<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/news\/2025\/05\/ai-toolkit-unify-workflows\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">From Architecture to Deployment: How AI-Powered Toolkits Are Unifying Developer Workflows<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/podcasts\/improve-quality-gen-ai\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Podcast: How To Improve the Quality of the Gen AI-Generated Code And Your Team\u2019s Dynamics<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/genai-blood-sweat-and-tears-loading-data-to-pinecone\/\" target=\"_blank\" rel=\"noopener\">GenAI blood, sweat, and tears: Loading data to Pinecone<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/05\/meet-koog-empowering-kotlin-developers-to-build-ai-agents\/\">Meet Koog: Empowering Kotlin Developers to Build AI Agents<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/05\/jetbrains-ai-assistant-now-in-visual-studio-code\/\">JetBrains AI Assistant \u2013 Now in Visual Studio Code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/glaforge.dev\/posts\/2025\/05\/20\/writing-java-ai-agents-with-adk-for-java-getting-started\/\" target=\"_blank\" rel=\"noopener\">Write AI agents in Java \u2014 Agent Development Kit getting started guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/how-to-send-prompts-in-bulk-with-spring-ai-and-java-virtual-threads\/\" target=\"_blank\" rel=\"noopener\">How to send prompts in bulk with Spring AI and Java Virtual Threads<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/glaforge.dev\/posts\/2025\/05\/23\/beyond-the-chatbot-or-ai-sparkle-a-seamless-ai-integration\/\" target=\"_blank\" rel=\"noopener\">Beyond the chatbot or AI sparkle: a seamless AI integration<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/ai-driven-testing-best-practices\/\" target=\"_blank\" rel=\"noopener\">AI Test Generation: A Dev\u2019s Guide Without Shooting Yourself in the Foot<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/glaforge.dev\/talks\/2025\/05\/26\/things-you-never-dared-to-ask-about-llms-take-2\/\" target=\"_blank\" rel=\"noopener\">Things you never dared to ask about LLMs \u2014 Take 2<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=ZPlD0rpiFwQ\" target=\"_blank\" rel=\"noopener\">Ethics in AI&#8217;s Wild West: Biases &amp; Responsibilities<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/06\/context-collection-competition\/\">Context Collection Competition by JetBrains and Mistral AI<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/brokk-for-java-developers\/\" target=\"_blank\" rel=\"noreferrer noopener\">Brokk: AI for Large (Java) Codebases<\/a>&nbsp;<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Languages, Frameworks, Libraries, and Technologies<\/h2>\n\n\n\n<p>Get to know programming technologies and frameworks better:<\/p>\n\n\n\n<ul>\n<li>This Week in Spring <a href=\"https:\/\/spring.io\/blog\/2025\/05\/06\/this-week-in-spring-may-6th-2025\" target=\"_blank\" rel=\"noopener\">1<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/05\/13\/this-week-in-spring-may-13th-2025\" target=\"_blank\" rel=\"noopener\">2<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/05\/20\/this-week-in-spring-may-20th-2025\" target=\"_blank\" rel=\"noopener\">3<\/a>, <a href=\"https:\/\/spring.io\/blog\/2025\/05\/27\/this-week-in-spring-may-27th-2025\" target=\"_blank\" rel=\"noopener\">4<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/how-to-send-prompts-in-bulk-with-spring-ai-and-java-virtual-threads\/\" target=\"_blank\" rel=\"noreferrer noopener\">How to send prompts in bulk with Spring AI and Java Virtual Threads<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/spring.io\/blog\/2025\/05\/04\/spring-ai-dynamic-tool-updates-with-mcp\" target=\"_blank\" rel=\"noopener\">Dynamic Tool Updates in Spring AI&#8217;s Model Context Protocol<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.gradle.org\/gradle-best-practices\" target=\"_blank\" rel=\"noopener\">Gradle Best Practices &#8211; A Path to Build Happiness<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/semantic-search-with-spring-boot-redis\/\" target=\"_blank\" rel=\"noopener\">Semantic Search with Spring Boot &amp; Redis<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/local-ai-with-spring-building-privacy-first-agents-using-ollama\/\" target=\"_blank\" rel=\"noopener\">Local AI with Spring: Building Privacy-First Agents Using Ollama<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/spring.io\/blog\/2025\/05\/08\/a-bootiful-podcast-v-korbes\" target=\"_blank\" rel=\"noopener\">A Bootiful Podcast: V K\u00f6rbes on security from the platform on up<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/what-is-rag-and-how-to-secure-it\/\" target=\"_blank\" rel=\"noopener\">What is RAG, and How to Secure It<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conferences and Events<\/h2>\n\n\n\n<p>Here are some of the must-attend online and offline events in June:<\/p>\n\n\n\n<ul>\n<li><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\">IntelliJ IDEA Conf<\/a> \u2013 Online, June 3\u20134<\/li>\n\n\n\n<li><a href=\"https:\/\/jspring.nl\/\" target=\"_blank\" rel=\"noopener\">J-Spring<\/a> \u2013 Utrecht, Netherlands, June 5; <a href=\"https:\/\/x.com\/antonarhipov\" target=\"_blank\">Anton Arhipov<\/a> is a speaker. <\/li>\n\n\n\n<li><a href=\"https:\/\/javaday.parisjug.org\/\" target=\"_blank\" rel=\"noopener\">Le Paris JUG Java Day<\/a> \u2013 Paris, France, June 5<\/li>\n\n\n\n<li><a href=\"https:\/\/jconf.mx\/\" target=\"_blank\" rel=\"noopener\">JConf M\u00e9x<\/a> \u2013 Nuevo M\u00e9xico, Mexico, June 7<\/li>\n\n\n\n<li><a href=\"https:\/\/devoxx.pl\/\" target=\"_blank\" rel=\"noopener\">Devoxx Poland<\/a> \u2013 Krakow, Poland, June 11\u201313; <a href=\"https:\/\/x.com\/antonarhipov\" target=\"_blank\">Anton Arhipov<\/a> and <a href=\"https:\/\/x.com\/MaritvanDijk77\" target=\"_blank\">Marit van Dijk<\/a> are the speakers. <\/li>\n\n\n\n<li><a href=\"https:\/\/www.devconf.info\/cz\/\" target=\"_blank\" rel=\"noopener\">DevConf<\/a> \u2013 Brno, Czechia, June 12\u201314<\/li>\n\n\n\n<li><a href=\"https:\/\/jsail.ijug.eu\/\" target=\"_blank\" rel=\"noopener\">JSail Unconference<\/a> \u2013 Hemelum, Netherlands, June 23\u201327<\/li>\n\n\n\n<li><a href=\"https:\/\/luxembourg.voxxeddays.com\/en\/\" target=\"_blank\" rel=\"noopener\">Voxxed Days Luxembourg<\/a> \u2013 Mondorf-les-Bains, Luxembourg, June 19\u201320<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Culture and Community<\/h2>\n\n\n\n<p>Take some time to think about the non-tech topics that are of significance to tech people at the moment:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/brightnessbalance.com\/imposter-syndrome-in-tech-part-1-never-being-enough\/\" target=\"_blank\" rel=\"noopener\">Imposter Syndrome in Tech<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/podcasts\/achieving-sustainable-mental-peace\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Achieving Sustainable Mental Peace in Software Engineering with Help from Generative AI<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.javaspecialists.eu\/archive\/Issue325-Be-a-Distinguished-Java-Engineer-in-the-Age-of-Vibe-Coding.html\" target=\"_blank\" rel=\"noreferrer noopener\">Be a Distinguished Java Engineer in the Age of Vibe Coding<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/presentations\/culture-resilience\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">Built to Outlast: Cultivating a Culture of Resilience<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/foojay.io\/today\/book-review-raising-young-coders\/\" target=\"_blank\" rel=\"noopener\">Book Review: Raising Young Coders<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoq.com\/articles\/emotional-mastery-tech-leaders\/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global\" target=\"_blank\" rel=\"noopener\">From Code to Charisma: Emotional Mastery for Tech Leaders<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/hilton.org.uk\/blog\/97-jokes\" target=\"_blank\" rel=\"noopener\">97 Jokes Every Programmer Should Know<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/donraab.medium.com\/conversations-ive-had-with-code-583f0fd67363\" target=\"_blank\" rel=\"noopener\">Conversations I\u2019ve had with Code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/ai\/2025\/05\/what-can-ai-do-to-improve-diversity-in-the-tech-community\/\">What Can AI Do to Improve Diversity in the Tech Community?<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">And Finally\u2026<\/h2>\n\n\n\n<p>Don\u2019t miss the latest updates from the IntelliJ IDEA team:&nbsp;<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/sources-bytecode-debugging\/\">Sources, Bytecode, Debugging<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/do-you-really-know-java\/\">Do You Really Know Java?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/coding-guidelines-for-your-ai-agents\/\">Coding Guidelines for Your AI Agents<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/finding-your-tribe-jugs-unveiled\/\">Finding Your Tribe \u2013 JUGs Unveiled&nbsp;<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/the-intellij-idea-2025-2-eap\/\">The IntelliJ IDEA 2025.2 Early Access Program Is Open!<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/try-declarative-gradle-eap3-in-intellij-idea\/\">Try Declarative Gradle EAP3 in IntelliJ IDEA<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/05\/building-cloud-ready-apps-locally-spring-boot-aws-and-localstack-in-action\/\">Building Cloud-Ready Apps Locally: Spring Boot, AWS, and LocalStack in Action<\/a><\/li>\n<\/ul>\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 June 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":573624,"comment_status":"closed","ping_status":"closed","template":"","categories":[89],"tags":[6847,155,3236,8647],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/idea\/573599"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/users\/1138"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/comments?post=573599"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/idea\/573599\/revisions"}],"predecessor-version":[{"id":573650,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/idea\/573599\/revisions\/573650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media\/573624"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/media?parent=573599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/categories?post=573599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/tags?post=573599"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/de\/wp-json\/wp\/v2\/cross-post-tag?post=573599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}