Sorry

This feed does not validate.

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://blog.jetbrains.com/idea/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. xmlns:media="http://search.yahoo.com/mrss/" >
  9.  
  10. <channel>
  11. <title>IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog</title>
  12. <atom:link href="https://blog.jetbrains.com/idea/feed/" rel="self" type="application/rss+xml" />
  13. <link>https://blog.jetbrains.com</link>
  14. <description>Developer Tools for Professionals and Teams</description>
  15. <lastBuildDate>Sun, 26 Oct 2025 22:05:55 +0000</lastBuildDate>
  16. <language>en-US</language>
  17. <sy:updatePeriod>
  18. hourly </sy:updatePeriod>
  19. <sy:updateFrequency>
  20. 1 </sy:updateFrequency>
  21.  
  22. <image>
  23. <url>https://blog.jetbrains.com/wp-content/uploads/2024/01/cropped-mstile-310x310-1-32x32.png</url>
  24. <title>IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog</title>
  25. <link>https://blog.jetbrains.com</link>
  26. <width>32</width>
  27. <height>32</height>
  28. </image>
  29. <item>
  30. <title>IntelliJ IDEA 2025.2.4 Is Out!</title>
  31. <link>https://blog.jetbrains.com/idea/2025/10/intellij-idea-2025-2-4/</link>
  32. <dc:creator><![CDATA[Maria Kosukhina]]></dc:creator>
  33. <pubDate>Fri, 24 Oct 2025 00:26:26 +0000</pubDate>
  34. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/10/IJ-IDEA-25.2.4.png</featuredImage> <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=652472</guid>
  35.  
  36. <description><![CDATA[IntelliJ IDEA 2025.2.4 has arrived with several valuable fixes. You can update to this version from inside the IDE, using the&#160;Toolbox App, or using snaps if you are a Ubuntu user. You can also download it from our&#160;website. The latest update brings the following improvements: For a comprehensive overview of the fixes, see the release notes. [&#8230;]]]></description>
  37. <content:encoded><![CDATA[
  38. <p>IntelliJ IDEA 2025.2.4 has arrived with several valuable fixes.</p>
  39.  
  40.  
  41.  
  42. <p>You can update to this version from inside the IDE, using the&nbsp;<a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noreferrer noopener">Toolbox App</a>, or using snaps if you are a Ubuntu user. You can also download it from our&nbsp;<a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noreferrer noopener">website</a>.</p>
  43.  
  44.  
  45.  
  46. <p>The latest update brings the following improvements:</p>
  47.  
  48.  
  49.  
  50. <ul>
  51. <li>The uninstaller now works as expected and should no longer fail and report an error when uninstalling a patched version. [<a href="https://youtrack.jetbrains.com/issue/IJPL-35268/Uninstaller-doesnt-cleanly-remove-an-updated-version" target="_blank" rel="noopener">IJPL-35268</a>]</li>
  52. </ul>
  53.  
  54.  
  55.  
  56. <ul>
  57. <li>The IDE no longer freezes during code completion, which was previously caused by recursive <code>StubIndex</code> calls leading to a deadlock. [<a href="https://youtrack.jetbrains.com/issue/IJPL-2989/IDE-freezes-during-auto-completion-due-to-calling-StubIndex-recursively-and-causing-deadlock" target="_blank" rel="noopener">IJPL-2989</a>]</li>
  58. </ul>
  59.  
  60.  
  61.  
  62. <ul>
  63. <li>&nbsp;cURL command conversion in the HTTP Client no longer fails when using the <code>-b<code> or <code>--cookie</code> options. [<a href="https://youtrack.jetbrains.com/issue/IJPL-177565/cURL-Import-in-http-client-fails-with-b-or-cookie-option" target="_blank" rel="noopener">IJPL-177565</a>]</code></code></li>
  64. </ul>
  65.  
  66.  
  67.  
  68. <ul>
  69. <li>The IDE now preserves original line endings when shelving and unshelving changes, instead of converting between CRLF and LF formats. [<a href="https://youtrack.jetbrains.com/issue/IJPL-208047/Shelve-unshelve-changes-line-separators-CRLF-LF" target="_blank" rel="noopener">IJPL-208047</a>]&nbsp;</li>
  70. </ul>
  71.  
  72.  
  73.  
  74. <ul>
  75. <li>Background images are now correctly displayed in all tool windows. [<a href="https://youtrack.jetbrains.com/issue/IJPL-208221" target="_blank" rel="noopener">IJPL-208221</a>]</li>
  76. </ul>
  77.  
  78.  
  79.  
  80. <ul>
  81. <li>Maven console output in Chinese is now displayed correctly. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376955" target="_blank" rel="noopener">IDEA-376955</a>]&nbsp;</li>
  82. </ul>
  83.  
  84.  
  85.  
  86. <ul>
  87. <li>In the AI diff view, the middle section with gutters has been resized for improved usability. [<a href="https://youtrack.jetbrains.com/issue/IJPL-195411" target="_blank" rel="noopener">IJPL-195411</a>]&nbsp;</li>
  88.  
  89.  
  90.  
  91. <li>The IDE once again correctly builds dependent modules after the modules they are dependent on. [<a href="https://youtrack.jetbrains.com/issue/IDEA-377309" target="_blank" rel="noopener">IDEA-377309</a>]</li>
  92. </ul>
  93.  
  94.  
  95.  
  96. <p></p>
  97.  
  98.  
  99.  
  100. <p>For a comprehensive overview of the fixes, see the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662523/IntelliJ-IDEA-2025.2.4-252.27397.103-build-Release-Notes" data-type="link" data-id="https://youtrack.jetbrains.com/articles/IDEA-A-2100662523/IntelliJ-IDEA-2025.2.4-252.27397.103-build-Release-Notes" target="_blank" rel="noopener">release notes</a>. If you spot any issues, let us know via the <a href="https://youtrack.jetbrains.com/issues/IDEA" target="_blank" rel="noreferrer noopener">issue tracker</a>.</p>
  101.  
  102.  
  103.  
  104. <p>Happy developing!</p>
  105. ]]></content:encoded>
  106. </item>
  107. <item>
  108. <title>Java Annotated Monthly – October 2025</title>
  109. <link>https://blog.jetbrains.com/idea/2025/10/java-annotated-monthly-october-2025/</link>
  110. <dc:creator><![CDATA[Irina Mariasova]]></dc:creator>
  111. <pubDate>Mon, 06 Oct 2025 08:15:08 +0000</pubDate>
  112. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/10/IJ-social-BlogFeatured-1280x720-1.png</featuredImage> <category><![CDATA[news]]></category>
  113. <category><![CDATA[ai]]></category>
  114. <category><![CDATA[ai-agent]]></category>
  115. <category><![CDATA[java]]></category>
  116. <category><![CDATA[java-annotated]]></category>
  117. <category><![CDATA[java-annotated-monthly]]></category>
  118. <category><![CDATA[kotlin]]></category>
  119. <category><![CDATA[spring]]></category>
  120. <category><![CDATA[tips]]></category>
  121. <category><![CDATA[tutorial]]></category>
  122. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=646582</guid>
  123.  
  124. <description><![CDATA[Welcome to Java Annotated Monthly! Wow, September really flew by! We&#8217;ve gathered all the top Java news and insights to help you catch up on anything you missed.&#160; First up, we’re diving headfirst into a big splash around Java 25 and all the updates it brings along. Then, as always, you’ll find plenty of tech [&#8230;]]]></description>
  125. <content:encoded><![CDATA[
  126. <p>Welcome to Java Annotated Monthly! Wow, September really flew by! We&#8217;ve gathered all the top Java news and insights to help you catch up on anything you missed.&nbsp;</p>
  127.  
  128.  
  129.  
  130. <p>First up, we’re diving headfirst into a big splash around Java 25 and all the updates it brings along. Then, as always, you’ll find plenty of tech tips, tutorials, Kotlin updates, and a quick flash of AI news to keep you sharp.</p>
  131.  
  132.  
  133.  
  134. <p>This month’s <a href="https://blog.jetbrains.com/idea/2025/10/java-annotated-monthly-october-2025/#culture-community">Culture and Community</a> section is packed with gems to make your daily developer life easier and insightful. And we’re extra excited to feature a special guest: <a href="https://www.marcobehler.com/" target="_blank" rel="noopener">Marco Behler</a>!</p>
  135.  
  136.  
  137.  
  138. <p>So without further ado, grab your favorite drink and let’s jump right in.</p>
  139.  
  140.  
  141.  
  142. <h2 class="wp-block-heading">Featured Content</h2>
  143.  
  144.  
  145.    <div class="about-author ">
  146.        <div class="about-author__box">
  147.            <div class="row">
  148.                                                            <div class="about-author__box-img">
  149.                            <img decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2025/10/headshot_small.jpg" alt="" loading="lazy">
  150.                        </div>
  151.                                        <div class="about-author__box-text">
  152.                                                    <h4>Marco Behler </h4>
  153.                                                <p><span style="font-weight: 400;">Marco runs the Java Developer Advocacy team at JetBrains in Munich, Germany. He loves to share everything he knows about writing and building awesome software – knowledge he acquired from a decade of consulting in the Java and Spring ecosystems – through guides, tweets, books, and talks.</span></p>
  154.                    </div>
  155.                            </div>
  156.        </div>
  157.    </div>
  158.  
  159.  
  160.  
  161. <p>I recently started a new podcast format called The Marco Show. It’s a bi-weekly podcast about coding, developer tools, and of course, AI. I’m having real conversations with people who actually build things – covering opposing opinions, hot takes, and practical insights.</p>
  162.  
  163.  
  164.  
  165. <p>Check out the first two episodes!</p>
  166.  
  167.  
  168.  
  169. <ul>
  170. <li><a href="https://youtu.be/iRqpsCHqLUI" target="_blank" rel="noopener">LLMs for Devs: Model Selection, Hallucinations, Agents, AGI – Jodie Burchell | The Marco Show</a></li>
  171.  
  172.  
  173.  
  174. <li><a href="https://youtu.be/apREl0KmTdQ" target="_blank" rel="noopener">Software Performance: Avoiding Slow Code, Myths &amp; Sane Approaches – Casey Muratori | The Marco Show<br></a></li>
  175. </ul>
  176.  
  177.  
  178.  
  179. <p>If you like the episodes, they are available on <a href="https://jb.gg/themarco.show-youtube" target="_blank" rel="noopener">YouTube</a>, <a href="https://jb.gg/themarco.show-spotify" target="_blank" rel="noopener">Spotify</a>, <a href="https://jb.gg/themarco.show-apple" target="_blank" rel="noopener">Apple Podcasts</a>, <a href="https://jb.gg/themarco.show-amazon" target="_blank" rel="noopener">Amazon Music</a>, and <a href="https://jb.gg/themarco.show-castbox" target="_blank" rel="noopener">Castbox</a>.</p>
  180.  
  181.  
  182.  
  183. <p>And if you’ve ever wanted to dig deeper into solving Java’s One Billion Row Challenge (1BRC), I teamed up with <a href="https://x.com/cmuratori" target="_blank">Casey Muratori</a> for a video series. So far, two episodes are live, with more on the way!</p>
  184.  
  185.  
  186.  
  187. <ul>
  188. <li><a href="https://youtu.be/n-YK3B4_xPA" target="_blank" rel="noopener">Solving Java’s 1 Billion Row Challenge (Ep. 1) </a>| with <a href="https://studio.youtube.com/channel/UCbGQAz4nL_P2Em5p8KPDFIA" target="_blank" rel="noopener">@caseymuratori</a></li>
  189.  
  190.  
  191.  
  192. <li><a href="https://youtu.be/rzLcVq8xm1Y" target="_blank" rel="noopener">Setting Performance Baselines for Java&#8217;s 1-Billion-Row Challenge (Ep. 2)</a> | with <a href="https://studio.youtube.com/channel/UCbGQAz4nL_P2Em5p8KPDFIA" target="_blank" rel="noopener">@caseymuratori</a></li>
  193. </ul>
  194.  
  195.  
  196.  
  197. <h2 class="wp-block-heading">Java News</h2>
  198.  
  199.  
  200.  
  201. <p>Learn what&#8217;s new in Java: </p>
  202.  
  203.  
  204.  
  205. <ul>
  206. <li>Java News Roundup <a href="https://www.infoq.com/news/2025/09/java-news-roundup-aug25-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/09/java-news-roundup-sep01-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/09/java-news-roundup-sep08-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/09/java-news-roundup-sep15-2025/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">4&nbsp;</a></li>
  207.  
  208.  
  209.  
  210. <li><a href="https://inside.java/2025/09/02/inside-java-newsletter/" target="_blank" rel="noopener">Java 25, AI World, JavaOne 2026!</a></li>
  211.  
  212.  
  213.  
  214. <li><a href="https://inside.java/2025/09/19/jep504-target-jdk26/" target="_blank" rel="noopener">JEP targeted to JDK 26: 504: Remove the Applet API</a></li>
  215.  
  216.  
  217.  
  218. <li><a href="https://blogs.oracle.com/java/post/detaching-graalvm-from-the-java-ecosystem-train" target="_blank" rel="noopener">Detaching GraalVM from the Java Ecosystem Train</a>&nbsp;</li>
  219. </ul>
  220.  
  221.  
  222.  
  223. <h2 class="wp-block-heading">Java Tutorials and Tips</h2>
  224.  
  225.  
  226.  
  227. <p>Keep getting the most out of Java with helpful tips and expert insights:</p>
  228.  
  229.  
  230.  
  231. <ul>
  232. <li><a href="https://www.the-main-thread.com/p/java-unicode-rest-api-quarkus" target="_blank" rel="noopener">Mastering Unicode in Java: Build World-Ready REST APIs With Quarkus</a></li>
  233.  
  234.  
  235.  
  236. <li><a href="https://www.youtube.com/watch?v=xeOuEqorY8g" target="_blank" rel="noopener">How to Handle Security Changes in Java 25</a></li>
  237.  
  238.  
  239.  
  240. <li><a href="https://vimeo.com/javazone" target="_blank" rel="noopener">JavaZone Videos</a></li>
  241.  
  242.  
  243.  
  244. <li><a href="https://www.youtube.com/watch?v=AtjGrQAXPbk" target="_blank" rel="noopener">Jeanne Boyarsky &#8211; Java Does What Now?</a></li>
  245.  
  246.  
  247.  
  248. <li><a href="https://inside.java/2025/09/17/java25-launch-stream/" target="_blank" rel="noopener">Java 25 – Launch Stream</a></li>
  249.  
  250.  
  251.  
  252. <li><a href="https://www.youtube.com/watch?v=FftYJqEGKME" target="_blank" rel="noopener">Welcome to OpenJDK 25!</a></li>
  253.  
  254.  
  255.  
  256. <li><a href="https://www.youtube.com/watch?v=hwr9bVyXkTY" target="_blank" rel="noopener">Breaking Legacy Code Dependencies With Extract and Override</a></li>
  257.  
  258.  
  259.  
  260. <li><a href="https://inside.java/2025/09/16/the-arrival-of-java-25/" target="_blank" rel="noopener">The Arrival of Java 25</a></li>
  261.  
  262.  
  263.  
  264. <li><a href="https://foojay.io/today/heres-java-25-ready-to-perform-to-the-limit/" target="_blank" rel="noopener">Here’s Java 25, Ready to Perform to the Limit</a></li>
  265.  
  266.  
  267.  
  268. <li><a href="https://inside.java/2025/09/05/roadto25-performance/" target="_blank" rel="noopener">Java 21 ⮕ 25: Performance and Runtime Enhancements #RoadTo25</a></li>
  269.  
  270.  
  271.  
  272. <li><a href="https://horstmann.com/unblog/2025-09-16/index.html" target="_blank" rel="noopener">Java 25: The Nice, the Meh, and …</a></li>
  273.  
  274.  
  275.  
  276. <li><a href="https://foojay.io/today/foojay-podcast-78/" target="_blank" rel="noopener">Foojay Podcast #78: Welcome to OpenJDK 25!</a></li>
  277.  
  278.  
  279.  
  280. <li><a href="https://inside.java/2025/09/07/roadto25-security/" target="_blank" rel="noopener">How to Handle Security Changes in Java 25 #RoadTo25</a></li>
  281.  
  282.  
  283.  
  284. <li><a href="https://inside.java/2025/09/26/jeps-since-jdk-21/" target="_blank" rel="noopener">JEPs in JDK 25 Integrated Since JDK 21</a></li>
  285.  
  286.  
  287.  
  288. <li><a href="https://inside.java/2025/09/08/jdk25-gc-changes/" target="_blank" rel="noopener">JDK 25 G1/Parallel/Serial GC Changes</a></li>
  289.  
  290.  
  291.  
  292. <li><a href="https://inside.java/2025/09/09/roadto25-api/" target="_blank" rel="noopener">All API Additions From Java 21 to 25</a></li>
  293.  
  294.  
  295.  
  296. <li><a href="https://blog.eisele.net/2025/09/quarkus-foundations-for-java-developers.html" target="_blank" rel="noopener">Quarkus Foundations for Java Developers</a>&nbsp;</li>
  297.  
  298.  
  299.  
  300. <li><a href="https://poutsma-principles.com/blog/2025/09/25/parameter-names/" target="_blank" rel="noopener">What&#8217;s in a Parameter Name?</a></li>
  301.  
  302.  
  303.  
  304. <li><a href="https://kevlinhenney.medium.com/step-back-39d9e005ed89" target="_blank" rel="noopener">Step Back</a></li>
  305.  
  306.  
  307.  
  308. <li><a href="https://www.infoq.com/podcasts/observability-java-micrometer/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Observability in Java With Micrometer – A Conversation With Marcin Grzejszczak</a></li>
  309.  
  310.  
  311.  
  312. <li><a href="https://nipafx.dev/talk-structured-concurrency" target="_blank" rel="noopener">Structured Concurrency in Action</a></li>
  313.  
  314.  
  315.  
  316. <li><a href="https://foojay.io/today/building-rest-apis-in-java-with-spring-boot/" target="_blank" rel="noopener">Building REST APIs in Java With Spring Boot</a></li>
  317.  
  318.  
  319.  
  320. <li><a href="https://inside.java/2025/09/28/podcast-040/" target="_blank" rel="noopener">Episode 40 “Amber &amp; Valhalla – Incremental Design and Feature Arcs” With Brian Goetz</a></li>
  321.  
  322.  
  323.  
  324. <li><a href="https://inside.java/2025/09/21/jvmls-java-additional-numeric-types/" target="_blank" rel="noopener">Paths to Support Additional Numeric Types on the Java Platform</a></li>
  325. </ul>
  326.  
  327.  
  328.  
  329. <h2 class="wp-block-heading">Kotlin Corner</h2>
  330.  
  331.  
  332.  
  333. <p>Check out the recent Kotlin news and tips:&nbsp;</p>
  334.  
  335.  
  336.  
  337. <ul>
  338. <li><a href="https://rakhman.info/blog/kotlin-emerging-patterns-with-context-parameters/" target="_blank" rel="noopener">Kotlin: Emerging Patterns With Context Parameters</a></li>
  339.  
  340.  
  341.  
  342. <li><a href="https://blog.jetbrains.com/kotlin/2025/08/exploring-data-science-with-kotlin-a-powerlifting-case-study/">Exploring Data Science With Kotlin: A Powerlifting Case Study</a></li>
  343.  
  344.  
  345.  
  346. <li><a href="https://medium.com/@vadim.briliantov/why-koog-is-the-most-advanced-jvm-framework-for-ai-agents-e12ab5d24a16" target="_blank" rel="noopener">Why JetBrains’ Koog is the Most Advanced JVM Framework for Building AI Agents</a>&nbsp;</li>
  347.  
  348.  
  349.  
  350. <li><a href="https://blog.kotlin-academy.com/how-to-design-a-flexible-graph-based-strategy-in-koog-52b1fb24802d" target="_blank" rel="noopener">Mixing the Secret AI Sauce: How to Design a Flexible, Graph-Based Strategy in Koog&nbsp;</a></li>
  351.  
  352.  
  353.  
  354. <li><a href="https://medium.com/spring-boot/from-python-to-kotlin-how-jetbrains-revolutionized-ai-agent-development-eb8f7127c901" target="_blank" rel="noopener">From Python to Kotlin: How JetBrains Revolutionized AI Agent Development&nbsp;</a></li>
  355.  
  356.  
  357.  
  358. <li><a href="https://medium.com/@vadim.briliantov/cooking-ai-agents-for-every-flavor-jvm-backend-android-ios-js-and-wasm-in-one-pot-7312077b30f2" target="_blank" rel="noopener">Cooking AI Agents for Every Flavor: JVM Backend, Android, iOS, JS, and WASM in One Pot </a></li>
  359. </ul>
  360.  
  361.  
  362.  
  363. <h2 class="wp-block-heading">AI </h2>
  364.  
  365.  
  366.  
  367. <p>Check out some helpful content pieces on AI:</p>
  368.  
  369.  
  370.  
  371. <ul>
  372. <li><a href="https://blog.jetbrains.com/ai/2025/09/introducing-claude-agent-in-jetbrains-ides/">Introducing Claude Agent in JetBrains IDEs</a></li>
  373.  
  374.  
  375.  
  376. <li><a href="https://blog.jetbrains.com/ai/2025/09/faq-new-ai-quota/">FAQ: New AI Quotas</a></li>
  377.  
  378.  
  379.  
  380. <li><a href="https://blog.jetbrains.com/ai/2025/09/jetbrains-mellum-now-available-on-amazon-bedrock-marketplace-for-free/">JetBrains Mellum Now Available on Amazon Bedrock Marketplace – For Free</a></li>
  381.  
  382.  
  383.  
  384. <li><a href="https://www.deepnetts.com/project-panama-powering-ai-ml-in-the-java-ecosystem/" target="_blank" rel="noopener">Project Panama: Powering AI/ML in the Java Ecosystem</a></li>
  385.  
  386.  
  387.  
  388. <li><a href="https://www.infoq.com/podcasts/ai-ml-data-engineering-trends-2025/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">AI, ML, and Data Engineering InfoQ Trends Report 2025</a></li>
  389.  
  390.  
  391.  
  392. <li><a href="https://spring.io/blog/2025/09/16/spring-ai-mcp-intro-blog" target="_blank" rel="noopener">Connect Your AI to Everything: Spring AI’s MCP Boot Starters</a></li>
  393.  
  394.  
  395.  
  396. <li><a href="https://foojay.io/today/stochastic-ai-agility-breaking-cycles-of-debt/" target="_blank" rel="noopener">Stochastic AI Agility: Breaking Cycles of Debt</a></li>
  397.  
  398.  
  399.  
  400. <li><a href="https://foojay.io/today/spec-driven-development-with-ai-a-new-approach-and-a-journey-into-the-past/" target="_blank" rel="noopener">Spec-Driven Development with AI: A New Approach and a Journey Into the Past</a> </li>
  401. </ul>
  402.  
  403.  
  404.  
  405. <h2 class="wp-block-heading">Languages, Frameworks, Libraries, and Technologies</h2>
  406.  
  407.  
  408.  
  409. <p>Keep up with the latest news, updates, and know-hows:</p>
  410.  
  411.  
  412.  
  413. <ul>
  414. <li>This Week in Spring <a href="https://spring.io/blog/2025/09/02/this-week-in-spring-september-2nd-2025" target="_blank" rel="noopener">1</a>, <a href="https://spring.io/blog/2025/09/16/this-week-in-spring-september-16th-2025" target="_blank" rel="noopener">2</a>, <a href="https://spring.io/blog/2025/09/23/this-week-in-spring-september-23rd-2025" target="_blank" rel="noopener">3</a>, <a href="https://spring.io/blog/2025/09/30/this-week-in-spring-september-30th-2025" target="_blank" rel="noopener">4</a></li>
  415.  
  416.  
  417.  
  418. <li><a href="https://blog.bmarwell.de/2025/09/05/regex-vs-email-addresses-battle-youll-lose.html" target="_blank" rel="noopener">Regex vs. Email Addresses: A Battle You’ll Always Lose</a></li>
  419.  
  420.  
  421.  
  422. <li><a href="https://foojay.io/today/queryable-encryption-with-spring-data-mongodb-how-to-query-encrypted-fields/" target="_blank" rel="noopener">Queryable Encryption With Spring Data MongoDB: How to Query Encrypted Fields</a></li>
  423.  
  424.  
  425.  
  426. <li><a href="https://spring.io/blog/2025/09/04/a-bootiful-podcast-ryan-baxter" target="_blank" rel="noopener">A Bootiful Podcast: Spring Cloud Guru Ryan Baxter</a></li>
  427.  
  428.  
  429.  
  430. <li><a href="https://www.wimdeblauwe.com/blog/2025/09/08/how-i-document-production-ready-spring-boot-applications/" target="_blank" rel="noopener">How I Document Production-Ready Spring Boot Applications</a></li>
  431.  
  432.  
  433.  
  434. <li><a href="https://www.infoq.com/podcasts/evolution-code-review-bug-finding/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">The Evolution of Code Review: From Bug-Finding to Team Building</a></li>
  435.  
  436.  
  437.  
  438. <li><a href="https://foojay.io/today/mongodb-schemas-in-java/" target="_blank" rel="noopener">MongoDB Schemas in Java</a></li>
  439.  
  440.  
  441.  
  442. <li><a href="https://spring.io/blog/2025/09/23/http-service-client-enhancements" target="_blank" rel="noopener">HTTP Service Client Enhancements</a></li>
  443.  
  444.  
  445.  
  446. <li><a href="https://foojay.io/today/introduction-to-data-driven-testing-with-java-and-mongodb/" target="_blank" rel="noopener">Introduction to Data-Driven Testing With Java and MongoDB</a></li>
  447.  
  448.  
  449.  
  450. <li><a href="https://www.youtube.com/watch?v=8y_3quGmFvU" target="_blank" rel="noopener">IntelliJ IDEA x Scala: The Debugger&nbsp;</a></li>
  451.  
  452.  
  453.  
  454. <li><a href="https://spring.io/blog/2025/09/16/api-versioning-in-spring" target="_blank" rel="noopener">API Versioning in Spring</a></li>
  455.  
  456.  
  457.  
  458. <li><a href="https://blog.frankel.ch/dependency-version-resolution-rust-java/" target="_blank" rel="noopener">Comparing Transitive Dependency Version Resolution in Rust and Java</a>&nbsp;</li>
  459.  
  460.  
  461.  
  462. <li><a href="https://spring.io/blog/2025/09/11/a-bootiful-podcast-purnima-padmanabhan" target="_blank" rel="noopener">A Bootiful Podcast: Purnima Padmanabhan, General Manager, Tanzu Division, Broadcom</a>&nbsp;</li>
  463.  
  464.  
  465.  
  466. <li><a href="https://blog.scottlogic.com/2025/09/04/some-best-practices-for-writing-readable-automation-tests.html" target="_blank" rel="noopener">Some Best Practices for Writing Readable Automation Tests</a>&nbsp;</li>
  467.  
  468.  
  469.  
  470. <li><a href="https://www.infoq.com/articles/architecting-rag-pipeline/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Effective Practices for Architecting a RAG Pipeline</a></li>
  471. </ul>
  472.  
  473.  
  474.  
  475. <h2 class="wp-block-heading">Conferences and Events</h2>
  476.  
  477.  
  478.  
  479. <p>Plan your education sessions and networking, both online and offline:</p>
  480.  
  481.  
  482.  
  483. <ul>
  484. <li><a href="https://www.jopenspace.cz/" target="_blank" rel="noopener">JOpenSpace</a> – Telč, Czech Republic, October 3–5</li>
  485.  
  486.  
  487.  
  488. <li><a href="https://devoxx.be/" target="_blank" rel="noopener">Devoxx Belgium</a> – Antwerp, Belgium, October 6–10</li>
  489.  
  490.  
  491.  
  492. <li><a href="https://2025.javacro.hr/eng/" target="_blank" rel="noopener">JavaCro</a> – Rovinj, Croatia, October 12–15</li>
  493.  
  494.  
  495.  
  496. <li><a href="https://baselone.org/" target="_blank" rel="noopener">BaselOne</a> – Basel, Switzerland, October 15–16</li>
  497.  
  498.  
  499.  
  500. <li><a href="https://j-sa.co/" target="_blank" rel="noopener">I Code Java Africa</a> – Johannesburg, South Africa, October 15–16</li>
  501.  
  502.  
  503.  
  504. <li><a href="https://jdd.org.pl/" target="_blank" rel="noopener">{j}DD</a> – Kraków, Poland, October 21–22</li>
  505.  
  506.  
  507.  
  508. <li><a href="https://javadays.cz/cs/" target="_blank" rel="noopener">JavaDays Czech Republic</a> – Prague, Czech Republic, October 22–23</li>
  509. </ul>
  510.  
  511.  
  512.  
  513. <h2 class="wp-block-heading" id="culture-community">Culture and Community</h2>
  514.  
  515.  
  516.  
  517. <p>Get inspired and provoked by the thought-sparking reads below:</p>
  518.  
  519.  
  520.  
  521. <ul>
  522. <li><a href="https://dukescorner.libsyn.com/site/venkat-subramaniam-i-teach-because-i-learn" target="_blank" rel="noopener">Venkat Subramaniam: I Teach Because I Learn</a></li>
  523.  
  524.  
  525.  
  526. <li><a href="https://stitcher.io/blog/impact-charts" target="_blank" rel="noopener">Impact Charts</a></li>
  527.  
  528.  
  529.  
  530. <li><a href="https://martinfowler.com/articles/exploring-gen-ai/to-vibe-or-not-vibe.html" target="_blank" rel="noopener">To Vibe or Not to Vibe</a>&nbsp;</li>
  531.  
  532.  
  533.  
  534. <li><a href="https://cassidoo.co/post/questions-when-i-need-to-finish-something/" target="_blank" rel="noopener">Questions to Ask When You Think You Need to Finish Something</a></li>
  535.  
  536.  
  537.  
  538. <li><a href="https://jamesclear.com/focus" target="_blank" rel="noopener">Focus: The Ultimate Guide on How to Improve Focus and Concentration</a>&nbsp;</li>
  539.  
  540.  
  541.  
  542. <li><a href="https://markmanson.net/how-to-be-patient" target="_blank" rel="noopener">How to Be Patient in an Impatient World</a></li>
  543.  
  544.  
  545.  
  546. <li><a href="https://www.infoq.com/articles/software-engineers-excel-AI/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">How Software Engineers and Team Leaders Can Excel With Artificial Intelligence</a></li>
  547.  
  548.  
  549.  
  550. <li><a href="https://www.infoq.com/news/2025/09/growing-junior-staff/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Lessons Learned From Growing From Junior to Staff and Beyond</a></li>
  551.  
  552.  
  553.  
  554. <li><a href="https://www.infoq.com/podcasts/blameless-culture-transforms-engineering-teams/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">How Blameless Culture Transforms Engineering Teams</a></li>
  555.  
  556.  
  557.  
  558. <li><a href="https://netflixtechblog.com/empowering-netflix-engineers-with-incident-management-ebb967871de4" target="_blank" rel="noopener">Empowering Netflix Engineers With Incident Management</a>&nbsp;</li>
  559.  
  560.  
  561.  
  562. <li><a href="https://markmanson.net/attention-diet" target="_blank" rel="noopener">The Attention Diet</a></li>
  563. </ul>
  564.  
  565.  
  566.  
  567. <h2 class="wp-block-heading">And Finally…</h2>
  568.  
  569.  
  570.  
  571. <p>Don’t miss the fascinating reads on the IntelliJ IDEA Blog:</p>
  572.  
  573.  
  574.  
  575. <ul>
  576. <li><a href="https://blog.jetbrains.com/idea/2025/09/java-25-lts-and-intellij-idea/">Java 25 LTS and IntelliJ IDEA</a></li>
  577.  
  578.  
  579.  
  580. <li><a href="https://blog.jetbrains.com/idea/2025/09/intellij-idea-2025-3-eap/">IntelliJ IDEA 2025.3 Early Access Program Is Open!</a></li>
  581.  
  582.  
  583.  
  584. <li><a href="https://blog.jetbrains.com/idea/2025/09/spring-debugger-applicationcontext-at-your-fingertips/">Spring Debugger: ApplicationContext at Your Fingertips</a></li>
  585.  
  586.  
  587.  
  588. <li><a href="https://blog.jetbrains.com/idea/2025/09/enhanced-vulnerable-api-detection-in-jetbrains-ides-and-qodana/">Enhanced Vulnerable API Detection in JetBrains IDEs and Qodana</a></li>
  589.  
  590.  
  591.  
  592. <li><a href="https://blog.jetbrains.com/idea/2025/09/improved-annotation-handling-in-kotlin-2-2-less-boilerplate-fewer-surprises/">Improved Annotation Handling in Kotlin 2.2: Less Boilerplate, Fewer Surprises</a></li>
  593. </ul>
  594.  
  595.  
  596.  
  597. <p>That’s it for today! We’re always collecting ideas for the next Java Annotated Monthly – 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="noreferrer noopener">email</a> or <a href="https://x.com/intellijidea?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor" target="_blank" rel="noreferrer noopener">X</a> by October 20. Don’t forget to check out our archive of <a href="https://www.jetbrains.com/lp/jam/" target="_blank" rel="noreferrer noopener">past JAM issues</a> for any articles you might have missed!</p>
  598. ]]></content:encoded>
  599. </item>
  600. <item>
  601. <title>IntelliJ IDEA 2025.2.3 Is Out!</title>
  602. <link>https://blog.jetbrains.com/idea/2025/10/intellij-idea-2025-2-3/</link>
  603. <dc:creator><![CDATA[Julia Shashkova]]></dc:creator>
  604. <pubDate>Thu, 02 Oct 2025 18:33:54 +0000</pubDate>
  605. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/10/IJ-social-BlogFeatured-202523.png</featuredImage> <category><![CDATA[releases]]></category>
  606. <category><![CDATA[bug-fix-update]]></category>
  607. <category><![CDATA[intellij-idea]]></category>
  608. <category><![CDATA[intellij-idea-2025-2]]></category>
  609. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=646033</guid>
  610.  
  611. <description><![CDATA[We’ve just released the next minor update for IntelliJ IDEA 2025.2 – v2025.2.3. You can update to this version from inside the IDE, via the Toolbox App, or by using snaps for Ubuntu. You can also download it from our website. This release includes the following improvements: To find out more about the resolved issues, [&#8230;]]]></description>
  612. <content:encoded><![CDATA[
  613. <p>We’ve just released the next minor update for IntelliJ IDEA 2025.2 – v2025.2.3.</p>
  614.  
  615.  
  616.  
  617. <p>You can update to this version from inside the IDE, via the <a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noopener">Toolbox App</a>, or by using snaps for Ubuntu. You can also download it from our <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener">website</a>.</p>
  618.  
  619.  
  620.  
  621. <p>This release includes the following improvements:</p>
  622.  
  623.  
  624.  
  625. <ul>
  626. <li>Jira Task Server integration now works as before when fetching tasks. [<a href="https://youtrack.jetbrains.com/issue/IJPL-208931" target="_blank" rel="noopener">IJPL-208931</a>]</li>
  627.  
  628.  
  629.  
  630. <li>Breakpoints now work as expected in the <em>Services</em> view when the ClassicUI plugin is enabled. [<a href="https://youtrack.jetbrains.com/issue/IDEA-378292" target="_blank" rel="noopener">IDEA-378292</a>]</li>
  631.  
  632.  
  633.  
  634. <li>Opening multiple files at once is again accessible from the <em>Find Usages</em> dialog. [<a href="https://youtrack.jetbrains.com/issue/IJPL-201422" target="_blank" rel="noopener">IJPL-201422</a>]</li>
  635. </ul>
  636.  
  637.  
  638.  
  639. <p>To find out more about the resolved issues, please refer to the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662511/IntelliJ-IDEA-2025.2.3-252.26830.84-build-Release-Notes" target="_blank" rel="noopener">release notes</a>.</p>
  640.  
  641.  
  642.  
  643. <p>If you encounter any issues or would like to make a suggestion or a feature request, please submit them to our <a href="https://youtrack.jetbrains.com/issues/IDEA" target="_blank" rel="noopener">issue tracker</a>.</p>
  644.  
  645.  
  646.  
  647. <p>Happy developing!</p>
  648. ]]></content:encoded>
  649. </item>
  650. <item>
  651. <title>How Java Open-Source Projects Use IntelliJ IDEA: Real-World Examples – Part 2</title>
  652. <link>https://blog.jetbrains.com/blog/2025/09/26/how-java-open-source-projects-use-intellij-idea-real-world-examples-part-2/</link>
  653. <dc:creator><![CDATA[Lena Morozova]]></dc:creator>
  654. <pubDate>Fri, 26 Sep 2025 07:08:04 +0000</pubDate>
  655. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/05/IJ-social-BlogFeatured-1280x720-2x-1.png</featuredImage> <product ><![CDATA[idea]]></product>
  656. <category><![CDATA[community]]></category>
  657. <category><![CDATA[idea]]></category>
  658. <category><![CDATA[community-support]]></category>
  659. <category><![CDATA[intellij-idea]]></category>
  660. <category><![CDATA[open-source-program]]></category>
  661. <category><![CDATA[oss-projects]]></category>
  662. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=blog&#038;p=637769</guid>
  663.  
  664. <description><![CDATA[In Part 1 of this series, we introduced some of the Java community’s most recognized open-source projects. Now, we’re back with more standouts: projects that speed up builds, strengthen testing, and simplify working with modern web stacks. And as always, IntelliJ IDEA helps maintainers move faster, confidently, and with a focus on quality. 🌿 jsoup [&#8230;]]]></description>
  665. <content:encoded><![CDATA[
  666. <figure class="wp-block-image size-full"><img decoding="async" fetchpriority="high" width="2560" height="1440" src="https://blog.jetbrains.com/wp-content/uploads/2025/05/IJ-social-BlogFeatured-1280x720-2x-1.png" alt="" class="wp-image-570146" /></figure>
  667.  
  668.  
  669.  
  670. <p>In <a href="https://blog.jetbrains.com/blog/2025/05/27/how-java-open-source-projects-use-intellij-idea-real-world-examples-part-1/">Part 1</a> of this series, we introduced some of the Java community’s most recognized open-source projects. Now, we’re back with more standouts: projects that speed up builds, strengthen testing, and simplify working with modern web stacks. And as always, IntelliJ IDEA helps maintainers move faster, confidently, and with a focus on quality.</p>
  671.  
  672.  
  673.  
  674. <h2 class="wp-block-heading">🌿 jsoup</h2>
  675.  
  676.  
  677.  
  678. <p><em>A Java library for working with real-world HTML.</em></p>
  679.  
  680.  
  681.  
  682. <p>With a name that reflects the messy “tag soup” of early web content, <a href="https://github.com/jhy/jsoup/" target="_blank" rel="noopener">jsoup</a> was created in 2009 after regex-based HTML parsing proved too fragile and in response to existing Java HTML libraries feeling clunky and limited. Inspired by the simplicity of jQuery, jsoup was designed to make HTML parsing in Java intuitive and enjoyable. Today, it offers easy-to-use tools for parsing, cleaning, and manipulating HTML, with support for HTML5, XML, sanitization, W3C APIs, and more.</p>
  683.  
  684.  
  685.  
  686. <blockquote class="wp-block-quote">
  687. <p>IntelliJ IDEA is my go-to IDE – intuitive, powerful, and great at navigating code, data flows, and tests. Its inspections catch issues early, while built-in tools for testing, profiling, and dependency management have directly improved jsoup’s development.</p>
  688. <cite><em>— Jonathan Hedley, creator of jsoup</em></cite></blockquote>
  689.  
  690.  
  691.  
  692. <p>Even though jsoup is pretty mature at this point, development continues. Recent additions include native HTTP/2 request support for efficient connections and a fast new hybrid DOM+SAX-style StreamParser. Future plans include custom tag support, an improved pretty printer, and an enhanced HTML cleaner. If you’d like to help or have other ideas, visit the jsoup website to get involved!</p>
  693.  
  694.  
  695.  
  696. <h2 class="wp-block-heading">🚀 http4k</h2>
  697.  
  698.  
  699.  
  700. <p><em>A lightweight, functional toolkit for building HTTP services in Kotlin.</em></p>
  701.  
  702.  
  703.  
  704. <p>Inspired by Twitter’s <a href="https://monkey.org/~marius/funsrv.pdf" target="_blank" rel="noopener"><em>Your Server as a Function</em></a> paper, <a href="https://github.com/http4k/http4k" target="_blank" rel="noopener">http4k</a> began as a 40-line script and has grown into 180 modules. Built on pure functions with no dependencies or reflection, it’s fast and highly portable, running in memory, on 14 server backends, 6 serverless platforms, or as a GraalVM binary. With a focus on radical simplicity and extreme testability, http4k is designed to be the most testable web toolkit available today.</p>
  705.  
  706.  
  707.  
  708. <blockquote class="wp-block-quote">
  709. <p>Being power users of IntelliJ IDEA, we are massive fans of JetBrains products. We not only use the refactoring abilities of the IDE to manipulate and remodel code reliably, but can also easily do cross-language development using the same keybindings.</p>
  710. <cite><em>— David Denton and Ivan Sanchez, creators of http4k</em></cite></blockquote>
  711.  
  712.  
  713.  
  714. <p>http4k keeps expanding, with recent additions including a Model Context Protocol (MCP) SDK for stateless, serverless deployment; Datastar integration; the TracerBullet module, which generates sequence diagrams of code behavior by running tests; and an upcoming transactional outbox module. As always, everything is built with composable functions and a strong focus on testability.</p>
  715.  
  716.  
  717.  
  718. <h2 class="wp-block-heading">🧞 Selenide</h2>
  719.  
  720.  
  721.  
  722. <p><em>A concise testing library for stable, readable, and fast UI tests.</em></p>
  723.  
  724.  
  725.  
  726. <p><a href="https://github.com/selenide/selenide" target="_blank" rel="noopener">Selenide</a> was created out of necessity. At the time, there were no mature UI testing libraries for Java, and Selenium WebDriver required extensive boilerplate that made tests harder to read and slowed development. So, Andrei Solntsev distilled his internal automation tools into a concise, expressive library that simplifies the process of writing browser tests.</p>
  727.  
  728.  
  729.  
  730. <blockquote class="wp-block-quote">
  731. <p>IntelliJ IDEA is my favorite IDE in every way – it even influenced the design of Selenide. I built the library so that IntelliJ IDEA could automatically suggest available methods, making it easy for developers to discover functionality without reading extensive documentation. Just type a dot and let the IDE guide you.</p>
  732. <cite>— <em>Andrei Solntsev, creator of Selenide</em></cite></blockquote>
  733.  
  734.  
  735.  
  736. <p>Today, the Selenide team continues to focus on stable and readable tests, fast execution, and a smooth developer experience. They are actively working on BiDi protocol support, better docs, and more integration with evolving Selenium standards.</p>
  737.  
  738.  
  739.  
  740. <h2 class="wp-block-heading">🧠 Flix</h2>
  741.  
  742.  
  743.  
  744. <p><em><em>An effect-oriented programming language with a solid theoretical foundation.</em></em></p>
  745.  
  746.  
  747.  
  748. <p>Developed at Aarhus University, <a href="https://github.com/flix/flix" target="_blank" rel="noopener">Flix</a> combines functional, imperative, and logic programming paradigms. At the heart of Flix is its powerful effect system, featuring algebraic effects and handlers for improved modularity and code clarity, local mutation to isolate side effects within pure functions, and purity reflection, which allows for safe automatic parallelization and lazy evaluation.</p>
  749.  
  750.  
  751.  
  752. <p>Despite its academic roots, Flix is used for real-world applications, with a strong focus on performance, reliability, and the developer experience.</p>
  753.  
  754.  
  755.  
  756. <blockquote class="wp-block-quote">
  757. <p>The Flix compiler is written primarily in Scala, and our development team works almost exclusively in IntelliJ IDEA – its built-in profiler has been instrumental in developing an efficient type inference implementation, and the debugging facilities see daily use in tracking down elusive bugs in the source code.</p>
  758. <cite><em>— Magnus Madsen, Flix core developer</em></cite></blockquote>
  759.  
  760.  
  761.  
  762. <p>The team is actively working toward a 1.0 release, continuing to improve the effect system and the developer experience, and providing more precise and actionable feedback at error sites.</p>
  763.  
  764.  
  765.  
  766. <h2 class="wp-block-heading">🌐 Kobweb</h2>
  767.  
  768.  
  769.  
  770. <p><em>A modern framework for building web applications in Kotlin.</em></p>
  771.  
  772.  
  773.  
  774. <p><a href="https://github.com/varabyte/kobweb" target="_blank" rel="noopener">Kobweb</a> was born out of a desire to bring the power of Compose to web development using Kotlin. At the time, most web frameworks centered around JavaScript and TypeScript, with limited options for Kotlin developers. Compose HTML showed early promise, but the ecosystem was still young. Kobweb emerged as a response to that gap – a bold step toward enabling modern, declarative web development in Kotlin, using familiar tools like IntelliJ IDEA and Compose.</p>
  775.  
  776.  
  777.  
  778. <blockquote class="wp-block-quote">
  779. <p>Kobweb encourages developers to use IntelliJ IDEA – especially for Kotlin, there’s nothing better. It’s packed with powerful features, like best-in-class refactoring tools, code analysis and navigation, and advanced editing features like multiple cursors, that are all worth mastering. If you use an IDE every day, take the time to really learn your tools – they’ll make you faster and better.</p>
  780. <cite><em>— David Herman, creator of Kobweb</em></cite></blockquote>
  781.  
  782.  
  783.  
  784. <p>Kobweb is approaching its 1.0 release, with plans to close remaining API gaps, introduce new UI widgets, enhance its IntelliJ IDEA plugin, and create short video tutorials for the community. You can follow the progress on the<a href="https://github.com/varabyte/kobweb/projects" target="_blank" rel="noopener"> public roadmap</a>. If you’re interested in contributing and have skills that align with any of these areas, the team would love to hear from you!</p>
  785.  
  786.  
  787.  
  788. <hr class="wp-block-separator has-alpha-channel-opacity" />
  789.  
  790.  
  791.  
  792. <p>Whether you’re building frameworks, compilers, or libraries, these OSS projects show what’s possible when developers have the right tools. JetBrains is proud to support these initiatives that help keep the community growing.</p>
  793. ]]></content:encoded>
  794. </item>
  795. <item>
  796. <title>IntelliJ IDEA 2025.2.2 Is Out!</title>
  797. <link>https://blog.jetbrains.com/idea/2025/09/intellij-idea-2025-2-2/</link>
  798. <dc:creator><![CDATA[Maria Kosukhina]]></dc:creator>
  799. <pubDate>Fri, 19 Sep 2025 09:53:11 +0000</pubDate>
  800. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-IDEA-2025.2.2.png</featuredImage> <category><![CDATA[releases]]></category>
  801. <category><![CDATA[bug-fix-update]]></category>
  802. <category><![CDATA[intellij-idea]]></category>
  803. <category><![CDATA[intellij-idea-2025-2]]></category>
  804. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=633633</guid>
  805.  
  806. <description><![CDATA[IntelliJ IDEA 2025.2.2 has arrived with several valuable fixes. You can update to this version from inside the IDE, using the&#160;Toolbox App, or using snaps if you are a Ubuntu user. You can also download it from our&#160;website. Here are the most notable updates included in this version: To find out more details about the [&#8230;]]]></description>
  807. <content:encoded><![CDATA[
  808. <p>IntelliJ IDEA 2025.2.2 has arrived with several valuable fixes.</p>
  809.  
  810.  
  811.  
  812. <p>You can update to this version from inside the IDE, using the&nbsp;<a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noreferrer noopener">Toolbox App</a>, or using snaps if you are a Ubuntu user. You can also download it from our&nbsp;<a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noreferrer noopener">website</a>.</p>
  813.  
  814.  
  815.  
  816. <p>Here are the most notable updates included in this version:</p>
  817.  
  818.  
  819.  
  820. <ul>
  821. <li>The <em>Run Maven Build</em> icon is once again available in the Maven panel toolbar. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376149/" target="_blank" rel="noopener">IDEA-376149</a>]&nbsp;</li>
  822.  
  823.  
  824.  
  825. <li>Remote SSH external tools now work as expected. [<a href="https://youtrack.jetbrains.com/issue/IJPL-200406/" target="_blank" rel="noopener">IJPL-200406</a>]&nbsp;&nbsp;</li>
  826.  
  827.  
  828.  
  829. <li>The IDE again correctly parses environment variables with semicolon values pasted in the <em>Run/Debug</em> dialog. [<a href="https://youtrack.jetbrains.com/issue/IJPL-200754/" target="_blank" rel="noopener">IJPL-200754</a>]&nbsp;</li>
  830.  
  831.  
  832.  
  833. <li>The IDE now properly handles <code>MAVEN_OPTS</code> environment variables. [<a href="https://youtrack.jetbrains.com/issue/IDEA-368366/" target="_blank" rel="noopener">IDEA-368366</a>]&nbsp;</li>
  834.  
  835.  
  836.  
  837. <li>On Windows, the <em>Find in Files</em> dialog again works as expected, closes correctly, and no longer shows a persistent green area. [<a href="https://youtrack.jetbrains.com/issue/IJPL-162798/" target="_blank" rel="noopener">IJPL-162798</a>]&nbsp;</li>
  838.  
  839.  
  840.  
  841. <li>Several issues with the terminal and WSL have been fixed. [<a href="https://youtrack.jetbrains.com/issue/IJPL-201390/" target="_blank" rel="noopener">IJPL-201390</a>], [<a href="https://youtrack.jetbrains.com/issue/IJPL-183051/" target="_blank" rel="noopener">IJPL-183051</a>]&nbsp;</li>
  842.  
  843.  
  844.  
  845. <li>The terminal now starts correctly and works as expected on Windows 10. [<a href="https://youtrack.jetbrains.com/issue/IJPL-200939" target="_blank" rel="noopener">IJPL-200939</a>]&nbsp;</li>
  846.  
  847.  
  848.  
  849. <li>It is once again possible to switch between split editors using the <em>Switch </em>popup. [<a href="https://youtrack.jetbrains.com/issue/IJPL-185383/" target="_blank" rel="noopener">IJPL-185383</a>]&nbsp;</li>
  850.  
  851.  
  852.  
  853. <li>The <code>distributionUrl</code> for Gradle 9 now contains the proper version when creating a new project, preventing sync failures. [<a href="https://youtrack.jetbrains.com/issue/IDEA-378326/" target="_blank" rel="noopener">IDEA-378326</a>]</li>
  854. </ul>
  855.  
  856.  
  857.  
  858. <p></p>
  859.  
  860.  
  861.  
  862. <p>To find out more details about the issues resolved, please refer to the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662504/IntelliJ-IDEA-2025.2.2-252.26199.169-build-Release-Notes" target="_blank" rel="noopener">release notes</a>.</p>
  863.  
  864.  
  865.  
  866. <p>If you encounter any bugs, please report them to our&nbsp;<a href="https://youtrack.jetbrains.com/issues/IDEA" target="_blank" rel="noreferrer noopener">issue tracker</a>.</p>
  867.  
  868.  
  869.  
  870. <p>Happy developing!</p>
  871. ]]></content:encoded>
  872. </item>
  873. <item>
  874. <title>Spring Debugger: ApplicationContext at Your Fingertips</title>
  875. <link>https://blog.jetbrains.com/idea/2025/09/spring-debugger-applicationcontext-at-your-fingertips/</link>
  876. <dc:creator><![CDATA[Siva Katamreddy]]></dc:creator>
  877. <pubDate>Wed, 17 Sep 2025 11:14:19 +0000</pubDate>
  878. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-social-BlogFeatured-1280x720-2x-5.png</featuredImage> <category><![CDATA[idea]]></category>
  879. <category><![CDATA[java]]></category>
  880. <category><![CDATA[debugging]]></category>
  881. <category><![CDATA[intellij-idea]]></category>
  882. <category><![CDATA[springboot]]></category>
  883. <category><![CDATA[springdebugger]]></category>
  884. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=596461</guid>
  885.  
  886. <description><![CDATA[IntelliJ IDEA has great support for debugging Java and Kotlin applications. But if you are building Spring Boot applications, you may want to access Spring components along with their metadata. That&#8217;s where the Spring Debugger plugin comes in. It makes life easier by letting you explore and use the entire Spring ApplicationContext right from your [&#8230;]]]></description>
  887. <content:encoded><![CDATA[
  888. <p>IntelliJ IDEA has great support for debugging Java and Kotlin applications. But if you are building Spring Boot applications, you may want to access Spring components along with their metadata. That&#8217;s where the <a href="https://plugins.jetbrains.com/plugin/25302-spring-debugger" target="_blank" rel="noopener">Spring Debugger</a> plugin comes in. It makes life easier by letting you explore and use the entire Spring ApplicationContext right from your debugger.</p>
  889.  
  890.  
  891.  
  892. <p>Let&#8217;s dive into how this powerful plugin can revolutionize your debugging workflow.</p>
  893.  
  894.  
  895.  
  896. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  897. <iframe title="Spring Debugger: Application Context At Your Finger Tips" width="500" height="281" src="https://www.youtube.com/embed/kjVyyGiUoM0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  898. </div><figcaption class="wp-element-caption">Spring Debugger: ApplicationContext at Your Fingertips </figcaption></figure>
  899.  
  900.  
  901.  
  902. <h2 class="wp-block-heading">Beyond the Scope: Access Any Spring Bean</h2>
  903.  
  904.  
  905.  
  906. <p>Imagine you are building a bookmarks management <a href="https://github.com/sivaprasadreddy/spring-debugger-demo" target="_blank" rel="noopener">application</a> using Spring Boot and you have a Spring bean <code>BookmarkService</code> with <code>createBookmark()</code> method as follows:</p>
  907.  
  908.  
  909.  
  910. <pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Service
  911. public class BookmarkService {
  912.   private final BookmarkRepository bookmarkRepository;
  913.   private final CategoryService categoryService;
  914.  
  915.   public BookmarkService(BookmarkRepository bookmarkRepository,
  916.                          CategoryService categoryService) {
  917.       this.bookmarkRepository = bookmarkRepository;
  918.       this.categoryService = categoryService;
  919.   }
  920.  
  921.   @Transactional
  922.   public Bookmark createBookmark(CreateBookmarkCmd cmd) {
  923.       var bookmark = new Bookmark(cmd.title(), cmd.url());
  924.       if(cmd.categoryName() != null) {
  925.           Category category = categoryService.findByName(cmd.categoryName()).orElse(null);
  926.           if (category == null) {
  927.               category = categoryService.createCategory(new Category(cmd.categoryName()));
  928.           }
  929.           bookmark.setCategory(category);
  930.       }
  931.       bookmarkRepository.save(bookmark);
  932.       return bookmark;
  933.   }
  934. }</pre>
  935.  
  936.  
  937.  
  938. <p>The <code>BookmarkService</code> has <code>BookmarkRepository</code> and <code>CategoryService</code> beans injected. While creating a bookmark, we first check if there is a Category exists with the given name. If not, we will create a new Category and then save Bookmark.</p>
  939.  
  940.  
  941.  
  942. <p>The <code>CategoryService</code> is also a Spring bean with <code>findByName(String)</code> method as follows:</p>
  943.  
  944.  
  945.  
  946. <pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Service
  947. public class CategoryService {
  948.   private final CategoryRepository categoryRepository;
  949.  
  950.   public CategoryService(CategoryRepository categoryRepository) {
  951.       this.categoryRepository = categoryRepository;
  952.   }
  953.  
  954.   @Cacheable("category-by-name")
  955.   public Optional&lt;Category> findByName(String name) {
  956.       return categoryRepository.findByNameEqualsIgnoreCase(name);
  957.   }
  958. }</pre>
  959.  
  960.  
  961.  
  962. <p>The <code>findByName()</code> method is annotated with <code>@Cacheable("category-by-name")</code> to cache the method result so that if you call this method with the same input it will return the cached result instead of executing the method logic again.</p>
  963.  
  964.  
  965.  
  966. <p>Now, Imagine you&#8217;re debugging create bookmark use case. You hit a breakpoint in <code>BookmarkService.createBookmark()</code> method. Usually, you can access objects within the current scope, such as <code>bookmarkRepository</code>, <code>bookmark</code>, or <code>categoryService</code>.&nbsp;</p>
  967.  
  968.  
  969.  
  970. <p>But what if you need to inspect or interact with a bean that isn&#8217;t directly injected into your current class. For example, you may want to clear existing data or insert new data into the database by using a repository directly.</p>
  971.  
  972.  
  973.  
  974. <p>Let’s say while debugging <code>BookmarkService.createBookmark()</code> method, we would like to temporarily delete all the categories using <code>CategoryRepository.deleteAll()</code>? Usually, you&#8217;d be out of luck.</p>
  975.  
  976.  
  977.  
  978. <p>This is where the Spring Debugger plugin shines. It allows you to access any Spring bean that exists within your <code>ApplicationContext</code>. Simply start typing the bean name into the expression input box, and the plugin will show matching beans. You can then invoke any methods on them, like calling <code>categoryRepository.findAll()</code> method and you can view the result.&nbsp;</p>
  979.  
  980.  
  981.  
  982. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/SD-invoke-bean-method.mp4"></video></figure>
  983.  
  984.  
  985.  
  986. <p>This capability extends your debugging reach far beyond the immediate scope.</p>
  987.  
  988.  
  989.  
  990. <h2 class="wp-block-heading">Manipulate Application State On-the-Fly</h2>
  991.  
  992.  
  993.  
  994. <p>Consider a common scenario: you have a service method, like <code>CategoryService.findByName()</code>, that caches its results. If you&#8217;re debugging an issue related to this method and call it repeatedly with the same input, the breakpoint won&#8217;t be hit because the results are served from the cache.</p>
  995.  
  996.  
  997.  
  998. <p>Traditionally, you might need to restart your application or temporarily disable caching to force the breakpoint to hit. With the Spring Debugger plugin, there&#8217;s a much more elegant solution.</p>
  999.  
  1000.  
  1001.  
  1002. <p>You can directly access the <code>cacheManager</code> bean from your <code>ApplicationContext</code>. Inspect the available caches, find the specific cache (e.g., category-by-name), and then invoke the <code>invalidate()</code> method on it.</p>
  1003.  
  1004.  
  1005.  
  1006. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/SD-invalidate-cache.mp4"></video></figure>
  1007.  
  1008.  
  1009.  
  1010. <p>After invalidating the cache, when you resume execution, the breakpoint in <code>CategoryService</code> will now be hit because there&#8217;s no entry in the cache for that name.</p>
  1011.  
  1012.  
  1013.  
  1014. <p>This demonstrates the incredible power to invoke any method on any Spring bean to dynamically control and debug your application&#8217;s flow.</p>
  1015.  
  1016.  
  1017.  
  1018. <h2 class="wp-block-heading">Access Core Spring Components and Properties</h2>
  1019.  
  1020.  
  1021.  
  1022. <p>Sometimes we may get tricky problems due to configuration issues or misunderstanding of conventions. While debugging such issues, we may want to explore the application’s runtime configuration or access low-level components to interact with database or publish application events using <code>ApplicationEventPublisher</code>.</p>
  1023.  
  1024.  
  1025.  
  1026. <p>The utility of the Spring Debugger plugin isn&#8217;t limited to your custom beans. It also provides <strong>direct access to core Spring components</strong> that are part of your <code>ApplicationContext</code>:</p>
  1027.  
  1028.  
  1029.  
  1030. <ul>
  1031. <li><strong>EntityManager</strong>: If you&#8217;re using JPA, you can directly access the <code>entityManager</code> and invoke any methods on it.</li>
  1032.  
  1033.  
  1034.  
  1035. <li><strong>Environment</strong>: Gain access to the <code>environment</code> bean, which provides an abstraction to all application properties. You can query specific property values to see their current configuration.</li>
  1036. </ul>
  1037.  
  1038.  
  1039.  
  1040. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/SD-em-env.mp4"></video></figure>
  1041.  
  1042.  
  1043.  
  1044. <h2 class="wp-block-heading">Streamline Your Debugging Workflow and Save Time</h2>
  1045.  
  1046.  
  1047.  
  1048. <p>The ability to access any Spring bean has significant implications for your overall debugging process.</p>
  1049.  
  1050.  
  1051.  
  1052. <ul>
  1053. <li><strong>Eliminate Temporary Code Changes</strong>: How many times have you temporarily injected a bean, added log statements, or introduced other debugging code, only to have to remove it once the issue is found? With Spring Debugger, you don&#8217;t need to make those temporary changes. You can directly access any bean and explore your use case as needed.</li>
  1054. </ul>
  1055.  
  1056.  
  1057.  
  1058. <ul>
  1059. <li><strong>Effortless Test Data Setup</strong>: Imagine debugging a scenario that requires specific test data, perhaps an action only an administrator can perform. Instead of logging out, and logging in as an administrator, performing the action, and then returning to your debug flow, you can simply access a service bean directly to insert test data into the database, bypassing complex setup steps.<br></li>
  1060. </ul>
  1061.  
  1062.  
  1063.  
  1064. <p>In essence, the Spring Debugger plugin empowers you with all the power of the Spring <code>ApplicationContext</code> right at your fingertips while debugging. It significantly enhances your ability to understand, inspect, and manipulate your Spring Boot application&#8217;s state, making your debugging sessions more efficient and productive.</p>
  1065.  
  1066.  
  1067.  
  1068. <p>Go ahead and install the <a href="https://plugins.jetbrains.com/plugin/25302-spring-debugger" target="_blank" rel="noopener">Spring Debugger</a> plugin to explore its powers yourself!</p>
  1069. ]]></content:encoded>
  1070. </item>
  1071. <item>
  1072. <title>IntelliJ IDEA 2025.3 Early Access Program Is Open!</title>
  1073. <link>https://blog.jetbrains.com/idea/2025/09/intellij-idea-2025-3-eap/</link>
  1074. <dc:creator><![CDATA[Maria Kosukhina]]></dc:creator>
  1075. <pubDate>Tue, 16 Sep 2025 11:46:24 +0000</pubDate>
  1076. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-IDEA-2025.3-EAP.png</featuredImage> <category><![CDATA[eap]]></category>
  1077. <category><![CDATA[2025-3-eap]]></category>
  1078. <category><![CDATA[intellij-idea]]></category>
  1079. <category><![CDATA[intellij-idea-2025-3]]></category>
  1080. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=599251</guid>
  1081.  
  1082. <description><![CDATA[We&#8217;re kicking off the next development cycle and inviting you to join it. The Early Access Program (EAP) for IntelliJ IDEA 2025.3 is now open, offering an early look at the new features and improvements we’re working on. By evaluating new features and sharing constructive feedback, you help us provide you with powerful, reliable tooling [&#8230;]]]></description>
  1083. <content:encoded><![CDATA[
  1084. <p>We&#8217;re kicking off the next development cycle and inviting you to join it.</p>
  1085.  
  1086.  
  1087.  
  1088. <p>The Early Access Program (EAP) for IntelliJ IDEA 2025.3 is now open, offering an early look at the new features and improvements we’re working on. By evaluating new features and sharing constructive feedback, you help us provide you with powerful, reliable tooling for professional development.</p>
  1089.  
  1090.  
  1091.  
  1092. <figure class="wp-block-image size-full"><img decoding="async" width="2560" height="1440" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-IDEA-2025.3-EAP-1.png" alt="" class="wp-image-599279"/></figure>
  1093.  
  1094.  
  1095.  
  1096. <p>As always, EAP builds are free to use and can be installed side by side with your stable IDE version. You can get EAP builds from the <a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noopener">Toolbox App</a>, download them from the <a href="https://www.jetbrains.com/idea/nextversion/" target="_blank" rel="noopener">website</a>, or use snaps for Ubuntu.</p>
  1097.  
  1098.  
  1099.  
  1100. <p align="center"><a class="jb-download-button" href="https://www.jetbrains.com/idea/nextversion/" target="_blank" rel="noopener">Download IntelliJ IDEA 2025.3 EAP</a></p>
  1101.  
  1102.  
  1103.  
  1104. <p><strong>Please note that EAP builds are not fully tested and might be unstable, as the version is still a work in progress. Please keep this in mind when using them.</strong></p>
  1105.  
  1106.  
  1107.  
  1108. <p>In this post, we’d like to share a glimpse of what’s in our planning dashboards for the upcoming release. The list below is neither final nor exhaustive, but it&#8217;s meant to show the direction we&#8217;re heading.</p>
  1109.  
  1110.  
  1111.  
  1112. <p><strong>Single distribution</strong>&nbsp;</p>
  1113.  
  1114.  
  1115.  
  1116. <p>In 2025.3, IntelliJ IDEA will move to <a href="https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/">unified distribution</a>, and several important changes related will appear during the EAP cycle. These include more features becoming available without subscription, such as wizards, basic highlighting for JavaScript, SQL, JPQL, template engines markup, and support database schema exploration. A detailed list of features going free will be published closer to the release.</p>
  1117.  
  1118.  
  1119.  
  1120. <p>Also there will be no IntelliJ IDEA Community Edition EAP builds available in the Toolbox App or from the IntelliJ Platform Gradle plugin. Please use the EAP builds of IntelliJ IDEA Ultimate instead. More information about Gradle builds will be published later on <a href="http://platform.jetbrains.com/" target="_blank" rel="noopener">platform.jetbrains.com</a>.</p>
  1121.  
  1122.  
  1123.  
  1124. <p><strong>Technology updates</strong>&nbsp;</p>
  1125.  
  1126.  
  1127.  
  1128. <p>We&#8217;re continuing our effort to support the latest technologies you may use in your projects. This release brings full support for Java 25, Spring Boot 4, JUnit 6, all expected to be released within the next few months.<br><br><strong>Spring&nbsp;</strong></p>
  1129.  
  1130.  
  1131.  
  1132. <p>In addition to supporting new features introduced for Spring 7, we’re working on significantly improving Spring Data JDBC support and extending the capabilities of the <a href="https://blog.jetbrains.com/idea/2025/06/demystifying-spring-boot-with-spring-debugger/" data-type="link" data-id="https://blog.jetbrains.com/idea/2025/06/demystifying-spring-boot-with-spring-debugger/">Spring Debugger</a> introduced in v2025.2.</p>
  1133.  
  1134.  
  1135.  
  1136. <p><strong>Kotlin</strong></p>
  1137.  
  1138.  
  1139.  
  1140. <p>Kotlin support in the IDE continues to improve, with enhancements to code completion and overall quality in K2 mode. In addition to support for Spring 7, the Kotlin Routing DSL is getting better IDE assistance, along with various quality-of-life improvements for Spring development.</p>
  1141.  
  1142.  
  1143.  
  1144. <p>For Kotlin Notebook, we’re also improving stability and adding more improvements, like support for database integration – one of the most common scenarios in server-side development.</p>
  1145.  
  1146.  
  1147.  
  1148. <p><strong>Kubernetes support</strong></p>
  1149.  
  1150.  
  1151.  
  1152. <p>Starting with 2025.3, we’re improving the experience of working with Kubernetes YAML files. We’re aiming to enable inlay quick actions in the editor for faster port forwarding, resource status updates, current context selection, and easier access to secrets.</p>
  1153.  
  1154.  
  1155.  
  1156. <p><strong>User experience</strong></p>
  1157.  
  1158.  
  1159.  
  1160. <p>In v2025.3, IntelliJ IDEA is getting a visual upgrade – the new <em>Islands</em> theme. Based on the feedback we’ve collected and our experiments in the previous release cycle, we’re now looking into making it the new default. We are going to share more details about the new theme soon.</p>
  1161.  
  1162.  
  1163.  
  1164. <p>Meanwhile, you can try the Islands theme in this EAP build by enabling it in <em>Settings | Appearance &amp; Behavior | Appearance | Theme</em>.</p>
  1165.  
  1166.  
  1167.  
  1168. <p>Another notable change we’re working on is the new<strong> </strong><strong><em>Welcome screen</em></strong> that takes you straight into the IDE, with no extra dialog windows or additional clicks.</p>
  1169.  
  1170.  
  1171.  
  1172. <p>We’re also working on improving how the IDE communicates with you while project indexes are still being built. This includes a clearer overview of background tasks and more transparent, predictable progress indicators so you can stay focused on your code with fewer distractions.</p>
  1173.  
  1174.  
  1175.  
  1176. <p><strong>Remote development</strong></p>
  1177.  
  1178.  
  1179.  
  1180. <p>Following the improvements introduced in the previous release to refine the <a href="https://blog.jetbrains.com/idea/2025/08/whats-fixed-intellij-idea-2025-2/#remote-development">remote development experience</a>, we’re continuing in the same direction. In v2025.3, we plan to enable smoother typing for more languages including CSS, JavaScript, TypeScript, and shell scripts. Additionally, the launch experience is being revamped to accelerate startup and make it more seamless.</p>
  1181.  
  1182.  
  1183.  
  1184. <p><strong>Terminal</strong></p>
  1185.  
  1186.  
  1187.  
  1188. <p>In v2025.3, we’re bringing AI support to the terminal, starting with inline completion as the first step.</p>
  1189.  
  1190.  
  1191.  
  1192. <p><strong>Stability</strong></p>
  1193.  
  1194.  
  1195.  
  1196. <p>A large portion of our team’s workload is dedicated to maintaining the quality and stability of the IDE. We’ll communicate those improvements in a dedicated <em>What’s Fixed</em> post, <a href="https://blog.jetbrains.com/idea/2025/08/whats-fixed-intellij-idea-2025-2">like we did for the previous release</a>.</p>
  1197.  
  1198.  
  1199.  
  1200. <p>For the full list of fixes and improvements already included in the first 2025.3 EAP build, please refer to the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662503/IntelliJ-IDEA-2025.3-EAP-1-253.17525.95-build-Release-Notes" target="_blank" rel="noopener">release notes</a>.</p>
  1201.  
  1202.  
  1203.  
  1204. <p><strong>Share your feedback</strong></p>
  1205.  
  1206.  
  1207.  
  1208. <p>Take part in the Early Access Program by trying out the EAP builds and sharing your feedback with us. You can get in touch with us on <a href="https://x.com/intellijidea" data-type="link" data-id="https://x.com/intellijidea" target="_blank">X</a>, <a href="https://bsky.app/profile/intellijidea.com" data-type="link" data-id="https://bsky.app/profile/intellijidea.com" target="_blank" rel="noopener">BlueSky</a> or <a href="https://www.linkedin.com/showcase/intellijidea" data-type="link" data-id="https://www.linkedin.com/showcase/intellijidea" target="_blank" rel="noopener">LinkedIn</a>, or leave a comment below. If you come across a bug or something that doesn’t work as expected, please report it via our <a href="https://youtrack.jetbrains.com/issues/IDEA" target="_blank" rel="noopener">issue tracker</a>.</p>
  1209.  
  1210.  
  1211.  
  1212. <p>Happy developing!</p>
  1213. ]]></content:encoded>
  1214. </item>
  1215. <item>
  1216. <title>Java 25 LTS and IntelliJ IDEA</title>
  1217. <link>https://blog.jetbrains.com/idea/2025/09/java-25-lts-and-intellij-idea/</link>
  1218. <dc:creator><![CDATA[Marit van Dijk]]></dc:creator>
  1219. <pubDate>Tue, 16 Sep 2025 11:15:34 +0000</pubDate>
  1220. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-social-BlogSocialShare-1280x720-2x-4.png</featuredImage> <category><![CDATA[java]]></category>
  1221. <category><![CDATA[news]]></category>
  1222. <category><![CDATA[tutorials]]></category>
  1223. <category><![CDATA[update]]></category>
  1224. <category><![CDATA[intellij-idea]]></category>
  1225. <category><![CDATA[java-25-2]]></category>
  1226. <category><![CDATA[java-release]]></category>
  1227. <category><![CDATA[java-support]]></category>
  1228. <category><![CDATA[jdk-25]]></category>
  1229. <category><![CDATA[release]]></category>
  1230. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=604053</guid>
  1231.  
  1232. <description><![CDATA[The Java release cadence means we get a new Java version every six months. Java 25 was released on September 16, 2025. At JetBrains, we are committed to supporting new technologies in IntelliJ IDEA and adding useful enhancements for both stable and preview features. In this blog post, we will give you an overview of [&#8230;]]]></description>
  1233. <content:encoded><![CDATA[
  1234. <p>The Java release cadence means we get a new Java version every six months. Java 25 was released on September 16, 2025. At JetBrains, we are committed to supporting new technologies in IntelliJ IDEA and adding useful enhancements for both stable and preview features. In this blog post, we will give you an overview of some changes to the Java language and how they are supported in IntelliJ IDEA. This post is limited to stable features only. Preview features will be covered separately in dedicated blog posts on relevant topics.</p>
  1235.  
  1236.  
  1237.  
  1238. <p><a href="https://openjdk.org/projects/jdk/25/" target="_blank" rel="noopener">Java 25</a> includes several changes to the language that make Java easier to use. Features like <a href="https://openjdk.org/jeps/512" target="_blank" rel="noopener">compact source files and instance main methods</a>, as well as <a href="https://openjdk.org/jeps/511" target="_blank" rel="noopener">module import declarations</a>, make it easier to get started with Java, both for students and when creating small projects like prototypes or hobby projects. <a href="https://openjdk.org/jeps/513" target="_blank" rel="noopener">Flexible constructor bodies</a> allow more flexibility in constructors, giving you the option to calculate or validate data before calling the constructor of the super class. <a href="https://openjdk.org/jeps/506" target="_blank" rel="noopener">Scoped values</a> are a new model for thread-local variables, adapted to virtual threads. They will be more useful with <a href="https://openjdk.org/jeps/505" target="_blank" rel="noopener">structured concurrency</a>, which is currently still in preview.</p>
  1239.  
  1240.  
  1241.  
  1242. <p>Apart from changes to the language itself, there are improvements to both performance and performance insights. <a href="https://openjdk.org/jeps/519" target="_blank" rel="noopener">Compact object headers</a> reduce memory footprint and improve cache efficiency. <a href="https://openjdk.org/jeps/515" target="_blank" rel="noopener">Ahead-of-time method profiling</a> lets the JVM warm up more quickly by using execution data from prior runs, improving startup performance. Improvements to garbage collection (GC) like <a href="https://openjdk.org/jeps/521" target="_blank" rel="noopener">generational Shenandoah</a>, plus better class-loading and linking optimizations, contribute to noticeably smoother server-style workloads.</p>
  1243.  
  1244.  
  1245.  
  1246. <p>As Java 25 is an <a href="https://www.oracle.com/nl/java/technologies/java-se-support-roadmap.html" target="_blank" rel="noopener">LTS (long-term support) release</a>, many people will be migrating to this version from Java 21, 17, 11, or even earlier. If you are coming to Java 25 from Java 21, have a look at the section describing the most relevant changes since Java 21.</p>
  1247.  
  1248.  
  1249.  
  1250. <p>Before diving into the new features, let’s set up IntelliJ IDEA to use Java 25.</p>
  1251.  
  1252.  
  1253.  
  1254. <h1 class="wp-block-heading">Using Java 25 in IntelliJ IDEA (setup)</h1>
  1255.  
  1256.  
  1257.  
  1258. <p>To use Java 25, you will need to download the JDK. You can do so from inside IntelliJ IDEA or by using tools like SDKMAN! To download a JDK from IntelliJ IDEA, open the <em>Project Structure</em>, go to the tab <em>Project Settings | Project</em>, open the drop-down menu in the <em>SDK </em>field, and select <em>Download JDK</em>.&nbsp;</p>
  1259.  
  1260.  
  1261.  
  1262. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image18.png" alt="" class="wp-image-604055"/><figcaption class="wp-element-caption"><em>Downloading JDK from inside IntelliJ IDEA</em></figcaption></figure>
  1263.  
  1264.  
  1265.  
  1266. <p>In the <em>Download JDK</em> popup that opens, set <em>Version</em> to <em>25</em>,<em> </em>and in the <em>Vendor</em> field, select the vendor you want to use.&nbsp;</p>
  1267.  
  1268.  
  1269.  
  1270. <p>You can also download Early Access (EA) versions of the JDK from inside IntelliJ IDEA, for example, when the next release becomes available or if you’d like to try Valhalla (which is based on Java 23). IntelliJ IDEA will warn you that these are not intended for production use.&nbsp;</p>
  1271.  
  1272.  
  1273.  
  1274. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image17.png" alt="" class="wp-image-604066"/><figcaption class="wp-element-caption"><em>Downloading an Early Access version</em></figcaption></figure>
  1275.  
  1276.  
  1277.  
  1278. <p>Next, you need to configure IntelliJ IDEA to use the right language level. To use Java 25 stable features, which is recommended for production code, set <em>Language level</em> to <em>25 &#8211; Compact source files, module imports</em>.</p>
  1279.  
  1280.  
  1281.  
  1282. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image4-2.png" alt="" class="wp-image-604273"/><figcaption class="wp-element-caption"><em>Setting </em>Language level<em> to </em>25</figcaption></figure>
  1283.  
  1284.  
  1285.  
  1286. <p>If you want to try out preview features, set <em>Language level</em> to <em>25 (Preview) &#8211; Primitive Types in Patterns, etc</em>.</p>
  1287.  
  1288.  
  1289.  
  1290. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image5.png" alt="" class="wp-image-604284"/><figcaption class="wp-element-caption"><em>Setting </em>Language level<em> to </em>25 (Preview)</figcaption></figure>
  1291.  
  1292.  
  1293.  
  1294. <h1 class="wp-block-heading">New stable features in Java 25</h1>
  1295.  
  1296.  
  1297.  
  1298. <p>Let’s take a look at some of the features Java 25 introduces and how IntelliJ IDEA can help you use them.</p>
  1299.  
  1300.  
  1301.  
  1302. <h2 class="wp-block-heading">Compact Source Files and Instance Main Methods (JEP 512)</h2>
  1303.  
  1304.  
  1305.  
  1306. <p>Java has been working on the so-called “on-ramp”, making the language easier to use. <a href="https://openjdk.org/jeps/512" target="_blank" rel="noopener">Compact source files and instance main methods</a> are part of that effort. It is now possible for beginners to start writing code without needing to learn about language concepts that they won’t need until they start writing larger programs. For experienced programmers, this feature can help them quickly prototype ideas without needing a lot of boilerplate code. Code can be evolved and expanded as skills and applications grow.&nbsp;</p>
  1307.  
  1308.  
  1309.  
  1310. <p>To quickly see the difference, let’s look at a classic example: <code>HelloWorld</code>. We have probably all written a HelloWorld example when we first started, possibly in a language other than Java or English. The classic <code>HelloWorld.java</code> looks like this:</p>
  1311.  
  1312.  
  1313.  
  1314. <pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class HelloWorld {
  1315.    public static void main(String[] args) {
  1316.        System.out.println("Hello, World!");
  1317.    }
  1318. }</pre>
  1319.  
  1320.  
  1321.  
  1322. <p>To write this code, you had to declare a class and a lengthy main method, including concepts like <code>public</code> and <code>static</code> that are not relevant to beginners. Let’s compare this to the <code>HelloWorld</code> example using new features from compact source files and instance main methods.&nbsp;</p>
  1323.  
  1324.  
  1325.  
  1326. <p>When creating a new Java class via <em>New | Java Class</em>, in the <em>New Java Class</em> popup, select the <em>Compact source file </em>option. Note that this compact source file is created in the root directory of your project, even if you create it from another package. IntelliJ IDEA automatically adds an instance main method – <code>void main()</code> – to the file. Next, you can add a method to print “Hello, World!”. You can now use <code>IO.println()</code> as a convenience method without needing to understand what <code>System.out</code> means and without even needing to add a static import. If you do want to add a static import for <code>java.lang.IO</code>, IntelliJ IDEA offers a quick-fix to do so.</p>
  1327.  
  1328.  
  1329.  
  1330. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_HelloWorld-2.mp4"></video><figcaption class="wp-element-caption"><em>Creating `HelloWorld.java`</em></figcaption></figure>
  1331.  
  1332.  
  1333.  
  1334. <p>Note that different variations of the main method are now possible, as described <a href="https://blog.jetbrains.com/idea/2024/02/helloworld-and-main-meet-minimalistic/#variations-of-the-main-method-in-the-implicit-class">here</a>.</p>
  1335.  
  1336.  
  1337.  
  1338. <p>IntelliJ IDEA has some new <a href="https://www.jetbrains.com/help/idea/using-live-templates.html" target="_blank" rel="noopener">live templates</a> to add a main method to an implicit class, either with or without arguments: <code>main</code>, <code>maina</code>, <code>psvm</code>, and <code>psvma</code>. Using the <code>psvm</code> or <code>main</code> live templates inside a compact source file will add the new main method, while they will continue to add the classic main method inside a class, as you can see in the preview.</p>
  1339.  
  1340.  
  1341.  
  1342. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image15.png" alt="" class="wp-image-604121"/><figcaption class="wp-element-caption"><em>Live templates for the main method in a compact source file</em></figcaption></figure>
  1343.  
  1344.  
  1345.  
  1346. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image1-1.png" alt="" class="wp-image-604110"/><figcaption class="wp-element-caption"><em>Live templates for the main method in a compact source file</em></figcaption></figure>
  1347.  
  1348.  
  1349.  
  1350. <p>Our new version of <code>HelloWorld</code> now looks like this:</p>
  1351.  
  1352.  
  1353.  
  1354. <pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">void main() {
  1355.    IO.println("Hello, World!");
  1356. }</pre>
  1357.  
  1358.  
  1359.  
  1360. <p>Compare this code to the original example. It is much shorter, contains less boilerplate, and is limited to only the things we need: a main method and a call to print a line with the provided “Hello, World!” <code>String</code>.</p>
  1361.  
  1362.  
  1363.  
  1364. <p>As beginners often need to interact with the console, a convenient <code>readln()</code> method was also added. This is an overloaded method which can take a <code>String</code> argument that is printed to the console before reading the input. Let’s expand our previous example to read a name from the console. To help you use these new convenience methods, IntelliJ IDEA introduces two new live templates: <code>iop</code> for <code>println()</code> and <code>ior</code> for <code>readln()</code>.</p>
  1365.  
  1366.  
  1367.  
  1368. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_ReadName-2.mp4"></video><figcaption class="wp-element-caption"><em>Expanding the example to use the convenience method readln()</em></figcaption></figure>
  1369.  
  1370.  
  1371.  
  1372. <p>Note that these changes to the language are also taken into account when creating new projects. When you create a new Java project, set <em>Build system</em> to <em>IntelliJ</em>, and select <em>Add sample code</em>, a compact source file with a <code>void main()</code> method will be added.&nbsp;</p>
  1373.  
  1374.  
  1375.  
  1376. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_NewProject_IJ-1.mp4"></video><figcaption class="wp-element-caption"><em>Creating a new project with the IntelliJ build system</em></figcaption></figure>
  1377.  
  1378.  
  1379.  
  1380. <h3 class="wp-block-heading">Prototyping and teaching</h3>
  1381.  
  1382.  
  1383.  
  1384. <p>While extremely useful for students and teachers, this feature does not just benefit beginners. It also allows experienced developers to quickly try out ideas or create a prototype.&nbsp;</p>
  1385.  
  1386.  
  1387.  
  1388. <p>When you create a new Java project with Maven or Gradle as the selected build system, the generated source code will include a regular class, but with <code>IO.println()</code> instead of <code>System.out.println()</code>. If you are using Maven or Gradle, you’re likely working on something bigger, with actual classes instead of compact source files. Another reason to use classes is that a compact source file needs to be in the default package, and frameworks generally don’t support this.&nbsp;</p>
  1389.  
  1390.  
  1391.  
  1392. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_NewProject_Maven-1.mp4"></video><figcaption class="wp-element-caption"><em>Creating a new project with Maven</em></figcaption></figure>
  1393.  
  1394.  
  1395.  
  1396. <p>To quickly create a prototype, you can create a Java compact file from the <code>src/main/java</code> directory in the <em>Project </em>tool window. IntelliJ IDEA will provide a default name for the file, so your thought process is not disrupted when you want to quickly try something out.</p>
  1397.  
  1398.  
  1399.  
  1400. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_CompactSourceFile-1.mp4"></video><figcaption class="wp-element-caption"><em>Creating a Java compact file</em></figcaption></figure>
  1401.  
  1402.  
  1403.  
  1404. <p>When prototyping, learning, or teaching, you can gradually expand your code to include features you might need when writing code that is part of a larger project, or when introducing new concepts to your students. You can convert an implicit class to a regular class using the <em>Convert an implicitly declared class of a compact source file into a regular class </em>quick-fix.</p>
  1405.  
  1406.  
  1407.  
  1408. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_ConvertFileToClass-1.mp4"></video><figcaption class="wp-element-caption"><em>Converting an implicitly declared class of a compact source file into a regular class</em></figcaption></figure>
  1409.  
  1410.  
  1411.  
  1412. <p>Should you prefer to use an implicit class at any point, the reverse is also possible. Similarly, there are quick-fixes to convert <code>IO.println()</code> to <code>System.out.println()</code>, and vice versa. These are probably not things you would do as part of your daily work. But you might use features like this for coding challenges, like Advent of Code, or other fun side projects.</p>
  1413.  
  1414.  
  1415.  
  1416. <p>The new <code>void main()</code> method does not need <code>String[] args</code>. However, should you decide to use the <code>args</code> in your code, IntelliJ IDEA will help you by adding them to the method, as you can see below. If you like this kind of completion, please let us know in the comments what you are currently missing.&nbsp;</p>
  1417.  
  1418.  
  1419.  
  1420. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_Args-1.mp4"></video><figcaption class="wp-element-caption"><em>Completion to add `args` to the main method</em></figcaption></figure>
  1421.  
  1422.  
  1423.  
  1424. <p>With this feature, we finally have a separation in Java between prototypes and other small projects, and enterprise applications. IntelliJ IDEA supports both small and large applications.&nbsp;</p>
  1425.  
  1426.  
  1427.  
  1428. <p>We have already covered this feature in a previous <a href="https://blog.jetbrains.com/idea/2025/03/java-24-and-intellij-idea/">Java 24 and IntelliJ IDEA</a> post, when it was still in preview. Please have a look at that post to learn about additional support for this feature in IntelliJ IDEA. For a more in-depth explanation of this specific feature, see <a href="https://blog.jetbrains.com/author/malagupta/">Mala Gupta</a>’s previous post <a href="https://blog.jetbrains.com/idea/2024/02/helloworld-and-main-meet-minimalistic/">Java 24: ‘HelloWorld’ and ‘main()’ meet minimalistic</a>. There are examples of practical use cases on when and how to use it to create small programs and prototypes in <a href="https://blog.jetbrains.com/idea/2025/02/java-24-build-games-prototypes-utilities-and-more-with-less-boilerplate/">Java 24: Build Games, Prototypes, Utilities, and More – With Less Boilerplate</a>. Note that (among other things) the following was changed in Java 25: Compact source files were previously called simple source files, and you now need to use the qualified name <code>IO.println()</code> or use an import statement.</p>
  1429.  
  1430.  
  1431.  
  1432. <h2 class="wp-block-heading">Module Import Declarations (JEP 511)</h2>
  1433.  
  1434.  
  1435.  
  1436. <p><a href="https://openjdk.org/jeps/511" target="_blank" rel="noopener">Module import declarations</a> simplify the importing of frequently used classes (<code>java.base</code>) or modular libraries, without having to keep adding individual import statements to keep the compiler happy (even though IntelliJ IDEA can do this for you 😉). This feature makes things easier. You can write code without needing to worry about imports, which is useful when learning or prototyping.</p>
  1437.  
  1438.  
  1439.  
  1440. <p>Alternatively, if you have a class that imports multiple classes from a module, you can replace them with a module import statement. When you perform the <em>Optimize imports </em>action, the individual imports for classes imported by the module will be removed.</p>
  1441.  
  1442.  
  1443.  
  1444. <p>As your codebase grows, you might prefer to add import statements with specific imports, which you can do using the <em>Replace with single class imports </em>quick-fix.</p>
  1445.  
  1446.  
  1447.  
  1448. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_OptimizeImports-1.mp4"></video><figcaption class="wp-element-caption"><em>Optimizing imports</em></figcaption></figure>
  1449.  
  1450.  
  1451.  
  1452. <p>If you would like to remove unused module imports when performing <em>Optimize imports</em>, you can configure this in the settings. Open <em>Settings</em> | <em>Editor | Code Style | Java</em> and go to the <em>Imports</em> tab. Then, select the <em>Delete unused module imports </em>option.</p>
  1453.  
  1454.  
  1455.  
  1456. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1999" height="1125" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image12.png" alt="" class="wp-image-604209"/><figcaption class="wp-element-caption"><em>Configuring the IDE to delete unused module imports</em></figcaption></figure>
  1457.  
  1458.  
  1459.  
  1460. <p>To see which packages are exported by a module, click on the module name in the editor or use the relevant shortcut for <em>Go to Declaration or Usages</em>, as shown <a href="https://blog.jetbrains.com/idea/2025/03/java-24-and-intellij-idea/#which-packages-are-exported-by-the-module-java.base-or-other-modules">here</a>.&nbsp;</p>
  1461.  
  1462.  
  1463.  
  1464. <p>You might wonder what the difference is between module imports and wildcard imports. Wildcard imports in Java allow you to replace the import for multiple classes from the same package with one line, containing an <code>*</code>. Module imports allow you to import classes from different packages. One downside of this is the risk of potential namespace clashes. But don’t worry, IntelliJ IDEA can help you identify and fix these, as described <a href="https://blog.jetbrains.com/idea/2025/07/module-import-declarations-no-more-import-hell/#name-conflicts-compilation-error">here</a>.&nbsp;</p>
  1465.  
  1466.  
  1467.  
  1468. <p>Should you replace your current import statements with module imports? Probably not. In enterprise code, most developers prefer to have single imports. Note that IntelliJ IDEA allows you to configure the number of imports to add before replacing them with a wildcard. By default, this number is set to five. To change it, open <em>Settings</em>, go to <em>Editor | Code Style | Java</em>, and open the <em>Imports</em> tab. Then, set <em>Class count to use import with ‘*’</em> to the desired number. Since most coding standards prefer single imports over wildcard imports, we assume the same will be true for module imports. For this reason, we are not planning to have an inspection to automatically replace existing imports with <code>import module java.base;</code>.&nbsp;</p>
  1469.  
  1470.  
  1471.  
  1472. <p>However, even if you’re not using this feature explicitly, you will use it implicitly when using compact source files (described above). This feature was previously described in <a href="https://blog.jetbrains.com/idea/2025/03/java-24-and-intellij-idea/#module-import-declarations">Java 24 and IntelliJ IDEA</a>. For more background information, see <a href="https://blog.jetbrains.com/idea/2025/07/module-import-declarations-no-more-import-hell/">Module Import Declarations: No More Import Hell</a> by Mala Gupta.</p>
  1473.  
  1474.  
  1475.  
  1476. <h2 class="wp-block-heading" id="jep-513">Flexible Constructor Bodies (JEP 513)</h2>
  1477.  
  1478.  
  1479.  
  1480. <p>With <a href="https://openjdk.org/jeps/513" target="_blank" rel="noopener">flexible constructor bodies</a>, previously known as “statements before super()”, you are now allowed to write statements in the constructor of a derived class before calling the constructor of the super class. This is useful if you want to validate or compute data in your constructor before passing it to <code>super()</code>, or when a superclass calls a method from its constructor that you want to override in the subclass and access a field from the subclass inside this method.&nbsp;</p>
  1481.  
  1482.  
  1483.  
  1484. <p>Previously, the call to <code>super()</code> had to be the first call in the constructor. IntelliJ IDEA would give you a warning if you tried to add statements before <code>super()</code>.</p>
  1485.  
  1486.  
  1487.  
  1488. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1874" height="1046" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image11.png" alt="" class="wp-image-604220"/><figcaption class="wp-element-caption"><em>Warning about a statement before `super()`</em></figcaption></figure>
  1489.  
  1490.  
  1491.  
  1492. <p>A workaround for this restriction is to call static methods inline, as arguments passed to <code>super()</code>. While this is still possible, you now have the flexibility to call these methods before calling <code>super()</code> with the results.</p>
  1493.  
  1494.  
  1495.  
  1496. <p>There are some limitations on which types of statements you can execute before the call to <code>super()</code>. The statements cannot access the object under construction, which means you cannot access instance members of a class before the execution of <code>super()</code> completes or call methods of the derived class.</p>
  1497.  
  1498.  
  1499.  
  1500. <p>This new functionality should be used responsibly. Just because you <em>can</em> put arbitrary code before <code>super()</code> doesn’t mean you should move every possible validation or I/O operation into constructors. Constructors are best kept lightweight, deterministic, and free of heavy side effects. Expensive operations, retries, or external resource access are better handled in factories, builders, or initialization methods.</p>
  1501.  
  1502.  
  1503.  
  1504. <p>In short, this feature lets you model object invariants more naturally through inheritance, but it doesn’t change the golden rule – constructors should remain focused and predictable.</p>
  1505.  
  1506.  
  1507.  
  1508. <p>While this feature might not be that exciting by itself, it is a necessary step to make <a href="https://openjdk.org/jeps/401" target="_blank" rel="noopener">value classes and objects</a> (currently in preview), as well as upcoming <a href="https://openjdk.org/jeps/8316779" target="_blank" rel="noopener">null-restricted value class types</a> (currently in draft), possible. Both of these features are part of <a href="https://openjdk.org/projects/valhalla/" target="_blank" rel="noopener">Project Valhalla</a>. We will discuss this topic later in a separate blog post.</p>
  1509.  
  1510.  
  1511.  
  1512. <p>For a more detailed explanation of this feature and examples of how to use it, have a look at the following video featuring Dr. Venkat Subramaniam:</p>
  1513.  
  1514.  
  1515.  
  1516. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1517. <iframe loading="lazy" title="JEP Explained. JEP 482: Flexible Constructor Bodies" width="500" height="281" src="https://www.youtube.com/embed/3k2bIMFeIp8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1518. </div></figure>
  1519.  
  1520.  
  1521.  
  1522. <p>This feature was previously described in <a href="https://blog.jetbrains.com/idea/2025/03/java-24-and-intellij-idea/#flexible-constructor-bodies">Java 24 and IntelliJ IDEA</a>. For additional details and examples, see Mala Gupta’s previous blog post <a href="https://blog.jetbrains.com/idea/2024/02/constructor-makeover-in-java-22/">Constructor Makeover in Java 22</a>. Note that this post was written when this feature was still in preview. The only significant change since then is that a constructor body is now allowed to initialize fields in the same class before invoking a constructor.&nbsp;</p>
  1523.  
  1524.  
  1525.  
  1526. <h2 class="wp-block-heading">Scoped Values (JEP 506)</h2>
  1527.  
  1528.  
  1529.  
  1530. <p><a href="https://openjdk.org/jeps/506" target="_blank" rel="noopener">Scoped values</a> are a new model for thread-local variables adapted to virtual threads. They make it possible to share immutable data within a thread and with child threads in a convenient, safe, and scalable way.</p>
  1531.  
  1532.  
  1533.  
  1534. <p>In some cases, you want to share data between components of your application or between your application and a framework, such as information about a logged-in user and their permissions. While it is possible to use thread-local variables (variables of type <code>ThreadLocal</code>), there are several downsides to doing so, which might cause potential issues.</p>
  1535.  
  1536.  
  1537.  
  1538. <p><code>ThreadLocal</code> variables are mutable, which makes it hard to keep track of their current value and to reason about the code. The value of a <code>ThreadLocal</code> variable is retained for the lifetime of a thread, unless explicitly removed by calling the <code>remove()</code> method. Developers may forget to do so, which means data might be stored in memory longer than needed, leading to potential performance problems, as well as security issues because data might be visible to unrelated code running on the same thread. <code>ThreadLocal</code> variables can be inherited by a child thread, but each child thread will need to create a copy of the variable, which can add to the memory footprint.</p>
  1539.  
  1540.  
  1541.  
  1542. <p><a href="https://openjdk.org/jeps/444" target="_blank" rel="noopener">Virtual threads</a>, added in Java 21, allow us to create many more threads than platform threads. If they each retain a copy of a thread-local variable, this will impact the memory usage. On the other hand, virtual threads may not live as long as platform threads, which minimizes the potential for memory leaks.&nbsp;</p>
  1543.  
  1544.  
  1545.  
  1546. <p>To use a <code>ScopedValue</code>, you need to first declare it. It makes sense to declare it as final. Next, you need to bind the <code>ScopedValue</code> to some data and pass a <code>Runnable</code> or <code>ScopedValue.CallableOp</code>, which may be realized as a lambda. This is done in the <code>ScopedValue.where()</code> method. The operation – and any code called from it – will be able to get the <code>ScopedValue</code>, but once it is done running, this data will be cleaned up. Scoped values have a clearly defined scope, which makes the code easier to reason about. If you try to use a <code>ScopedValue</code> that is not bound, a <code>NoSuchElementException</code> is thrown, as you can see in the following example.</p>
  1547.  
  1548.  
  1549.  
  1550. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java25_ScopedValue-1.mp4"></video><figcaption class="wp-element-caption"><em>Using `ScopedValue`</em></figcaption></figure>
  1551.  
  1552.  
  1553.  
  1554. <p>While you cannot set a <code>ScopedValue</code>, you can rebind it. In the example below, the variable is bound to the value &#8220;24&#8221; inside the main method. The <code>update()</code> method is called from here, where the value is bound to &#8220;25&#8221; (24 + 1). When printed, it will print the current value, &#8220;25&#8221;.</p>
  1555.  
  1556.  
  1557.  
  1558. <pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class RebindExample {
  1559.    ScopedValue&lt;Integer> JAVA_VERSION = ScopedValue.newInstance();
  1560.    void main() {
  1561.        ScopedValue.where(JAVA_VERSION, 24).run(this::update);
  1562.    }
  1563.  
  1564.    private void update() {
  1565.        ScopedValue.where(JAVA_VERSION, JAVA_VERSION.get() + 1).run(() -> {
  1566.            IO.println("Hello, Java " + JAVA_VERSION.get()); // prints 25
  1567.        });
  1568.    }
  1569. }</pre>
  1570.  
  1571.  
  1572.  
  1573. <p>Scoped values are even more useful with <a href="https://openjdk.org/jeps/505" target="_blank" rel="noopener">structured concurrency</a>, currently in its fifth preview.</p>
  1574.  
  1575.  
  1576.  
  1577. <p>Structured concurrency will make it possible for data to be automatically inherited by any threads that a thread forks. The child threads’ scope will be contained in the parent thread’s scope. With scoped values, it is no longer necessary to make copies of the data, meaning they scale very well with many (virtual) threads. This topic deserves its own blog post, where we can dive deeper into new use cases, migration paths, and performance comparisons between different approaches.&nbsp;</p>
  1578.  
  1579.  
  1580.  
  1581. <p>As we have seen, scoped values solve several problems associated with <code>ThreadLocal</code>.They reduce memory overhead, improve predictability, and make reasoning about concurrent code much easier. Does this mean you should immediately rewrite all your code to use <code>ScopedValue</code>? Not necessarily. Frameworks like Spring and others still rely heavily on <code>ThreadLocal</code>, and migrating all existing components to Java 25 isn’t something that will happen overnight. Also, the intention behind scoped values was never to deprecate or replace <code>ThreadLocal</code> outright, but to offer a cleaner, safer alternative. However, you might consider using scoped values for new code or modules, especially where you are already facing typical <code>ThreadLocal</code> issues: leaks, context propagation, and cleanup.</p>
  1582.  
  1583.  
  1584.  
  1585. <h2 class="wp-block-heading">Performance and profiler improvements</h2>
  1586.  
  1587.  
  1588.  
  1589. <p>Language features are just half of the story. Java 25 also brings significant runtime improvements. Let’s take a brief look at the changes:</p>
  1590.  
  1591.  
  1592.  
  1593. <ul>
  1594. <li><a href="https://openjdk.org/jeps/515" target="_blank" rel="noopener">Ahead-of-Time Method Profiling</a> (JEP 515) speeds up warm-up by using method execution profile data from a prior run. The JVM can use that data immediately at startup so that hot methods are already known, reducing the delay before reaching peak performance.&nbsp;</li>
  1595.  
  1596.  
  1597.  
  1598. <li><a href="https://openjdk.org/jeps/518" target="_blank" rel="noopener">JFR Cooperative Sampling</a> (JEP 518) and <a href="https://openjdk.org/jeps/520" target="_blank" rel="noopener">JFR Method Timing &amp; Tracing</a> (JEP 520) improve observability: Cooperative sampling lets threads report profiling data at safe points to reduce overhead and increase accuracy, and method timing and tracing give more precise, detailed call durations and call stack information.&nbsp;</li>
  1599.  
  1600.  
  1601.  
  1602. <li><a href="https://openjdk.org/jeps/519" target="_blank" rel="noopener">Compact Object Headers</a> (JEP 519) shrink the object header on 64-bit JVMs from its larger experimental form to a compact 64-bit layout. This reduces memory overhead (especially with many small objects) and improves garbage collection (GC) and cache behavior.&nbsp;</li>
  1603.  
  1604.  
  1605.  
  1606. <li><a href="https://openjdk.org/jeps/521" target="_blank" rel="noopener">Generational Shenandoah</a> (JEP 521) adds generational GC support to the Shenandoah garbage collector so that young-generation objects can be collected more efficiently, reducing pause times and improving throughput for workloads with many short-lived objects.</li>
  1607. </ul>
  1608.  
  1609.  
  1610.  
  1611. <h1 class="wp-block-heading">Moving from Java 21 to Java 25</h1>
  1612.  
  1613.  
  1614.  
  1615. <p>If you are upgrading to Java 25 from Java 21, here is an overview of some of the stable features you might not be familiar with yet.</p>
  1616.  
  1617.  
  1618.  
  1619. <h2 class="wp-block-heading">Stream Gatherers (JEP 485)</h2>
  1620.  
  1621.  
  1622.  
  1623. <p><a href="https://openjdk.org/jeps/485" target="_blank" rel="noopener">Stream Gatherers</a> were added in <a href="https://openjdk.org/projects/jdk/24/" target="_blank" rel="noopener">Java 24</a>. They improve the Stream API, added in Java 8. Stream gatherers allow you to add your own custom intermediate operations to a stream.</p>
  1624.  
  1625.  
  1626.  
  1627. <p>For an explanation of this feature and how you can use it, watch the following livestream with José Paumard:</p>
  1628.  
  1629.  
  1630.  
  1631. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1632. <iframe loading="lazy" title="Gatherers: The API Your Stream Was Missing" width="500" height="281" src="https://www.youtube.com/embed/oVdWfU_IObY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1633. </div></figure>
  1634.  
  1635.  
  1636.  
  1637. <p>If you’d like more background information on this feature, you might be interested in the following video we created when this feature was still in preview:</p>
  1638.  
  1639.  
  1640.  
  1641. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1642. <iframe loading="lazy" title="JEP Explained. JEP 473: Stream Gatherers" width="500" height="281" src="https://www.youtube.com/embed/m7PW6fMCrmg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1643. </div></figure>
  1644.  
  1645.  
  1646.  
  1647. <p>Finally, we highly recommend this video from JavaOne by Viktor Klang, the creator of the feature:</p>
  1648.  
  1649.  
  1650.  
  1651. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1652. <iframe loading="lazy" title="Stream Gatherers - Deep Dive with the Expert" width="500" height="281" src="https://www.youtube.com/embed/v_5SKpfkI2U?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1653. </div></figure>
  1654.  
  1655.  
  1656.  
  1657. <h2 class="wp-block-heading">Markdown Documentation Comments (JEP 467)</h2>
  1658.  
  1659.  
  1660.  
  1661. <p><a href="https://openjdk.org/jeps/467" target="_blank" rel="noopener">Markdown documentation comments</a> were added in <a href="https://openjdk.org/projects/jdk/23/" target="_blank" rel="noopener">Java 23</a>. As the name suggests, it is now possible to use Markdown in your JavaDoc. Back when Java was first created, HTML seemed like a logical choice for JavaDoc, but these days you might prefer Markdown.&nbsp;</p>
  1662.  
  1663.  
  1664.  
  1665. <p>IntelliJ IDEA supports the adoption of this feature by offering a quick-fix to convert JavaDoc to Markdown. If you have JavaDoc that you would like to convert, press <em>Alt+Enter</em> when the cursor is on your JavaDoc and select the <em>Convert to Markdown documentation comment </em>option.</p>
  1666.  
  1667.  
  1668.  
  1669. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java_ConvertMarkdown-1.mp4"></video><figcaption class="wp-element-caption"><em>Converting a documentation comment to Markdown</em></figcaption></figure>
  1670.  
  1671.  
  1672.  
  1673. <p>Does this mean you should convert your existing JavaDoc to Markdown? Not necessarily. You might just consider writing your documentation in Markdown from now on. However, should you want to convert it, IntelliJ IDEA can help you.</p>
  1674.  
  1675.  
  1676.  
  1677. <p>For more information on this feature, have a look at <a href="https://blog.jetbrains.com/idea/2025/04/markdown-in-java-docs-shut-up-and-take-my-comments/">Markdown in Java Docs? Shut Up and Take My Comments!</a> by Mala Gupta.</p>
  1678.  
  1679.  
  1680.  
  1681. <p>If you’re interested in more background on this feature, check out the video that was created when it was still in preview:</p>
  1682.  
  1683.  
  1684.  
  1685. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1686. <iframe loading="lazy" title="JEP Explained. JEP 467: Markdown Documentation Comments" width="500" height="281" src="https://www.youtube.com/embed/hEWU2OMtNnw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1687. </div></figure>
  1688.  
  1689.  
  1690.  
  1691. <h2 class="wp-block-heading">Unnamed Variables &amp; Patterns (JEP 456)</h2>
  1692.  
  1693.  
  1694.  
  1695. <p><a href="https://openjdk.org/jeps/456" target="_blank" rel="noopener">Unnamed variables and patterns</a> make it possible to use unnamed variables and unnamed patterns when variable declarations or nested patterns are required but the actual variables or patterns are not used. Denoting unnamed variables and patterns with an <code>_</code> clearly conveys that they are not used elsewhere in the code. IntelliJ IDEA will detect when an unused local variable could be replaced with an underscore <code>_</code> and offer a quick-fix to do so.&nbsp;</p>
  1696.  
  1697.  
  1698.  
  1699. <figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Java_UnnamedVariable-1.mp4"></video><figcaption class="wp-element-caption"><em>Renaming a variable to ‘_’</em></figcaption></figure>
  1700.  
  1701.  
  1702.  
  1703. <p>For more details on this feature, see <a href="https://blog.jetbrains.com/idea/2024/03/drop-the-baggage-use-_-for-unnamed-local-variables-and-patterns-in-java-22/">Drop the Baggage: Use ‘_’ for Unnamed Local Variables and Patterns in Java 22</a> by Mala Gupta.</p>
  1704.  
  1705.  
  1706.  
  1707. <h2 class="wp-block-heading">Virtual Threads (JEP 444) and Synchronize Virtual Threads without Pinning (JEP 491)</h2>
  1708.  
  1709.  
  1710.  
  1711. <p>Added in <a href="https://openjdk.org/projects/jdk/21/" target="_blank" rel="noopener">Java 21</a>, <a href="https://openjdk.org/jeps/444" target="_blank" rel="noopener">virtual threads</a> are lightweight threads. Unlike platform threads, which are limited by the number of cores in your machine, you can create a potentially unlimited number of virtual threads. Virtual threads improve the scalability of your applications. They do need platform threads to perform their work, but can release them when they are waiting for blocking code. Tooling like <a href="https://docs.oracle.com/en/java/javase/24/docs/specs/man/jcmd.html" target="_blank" rel="noopener">jcmd</a> and IntelliJ IDEA can collect thread dumps with virtual threads included.</p>
  1712.  
  1713.  
  1714.  
  1715. <p><a href="https://openjdk.org/jeps/491" target="_blank" rel="noopener">Synchronizing virtual threads without pinning</a> (added in Java 24) improves the scalability of Java code that uses <code>synchronized</code> code. Virtual threads that block in <code>synchronized</code> blocks now release their underlying platform threads so they can be used by other virtual threads. This last improvement comes for free when you upgrade from Java 21 to Java 24 or higher. To see this in action, watch the demo we did in the What’s New in IntelliJ IDEA 2025.2 livestream.</p>
  1716.  
  1717.  
  1718.  
  1719. <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
  1720. <iframe loading="lazy" title="What’s New in IntelliJ IDEA 2025.2 | IntelliJ IDEA Talk" width="500" height="281" src="https://www.youtube.com/embed/_nt-z0FS3tM?start=871&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  1721. </div></figure>
  1722.  
  1723.  
  1724.  
  1725. <h2 class="wp-block-heading">Runtime and security improvements</h2>
  1726.  
  1727.  
  1728.  
  1729. <p>Java 24 introduced some changes related to post-quantum cryptography readiness. The Java platform is preparing for the future of secure computing:&nbsp;</p>
  1730.  
  1731.  
  1732.  
  1733. <ul>
  1734. <li><a href="https://openjdk.org/jeps/496" target="_blank" rel="noopener">Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism</a> (JEP 496) and <a href="https://openjdk.org/jeps/497" target="_blank" rel="noopener">Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm</a> (JEP 497), introduced in Java 24, are NIST-standardized post-quantum algorithms (lattice-based) aimed at replacing or augmenting classic public-key operations like RSA and ECDSA. Java also receives a performance boost. Garbage collection, memory footprint, and startup times all see measurable improvements:</li>
  1735. </ul>
  1736.  
  1737.  
  1738.  
  1739. <ul>
  1740. <li><a href="https://openjdk.org/jeps/423" target="_blank" rel="noopener">Region Pinning for G1</a> (JEP 423) allows the G1 garbage collector to continue collecting parts of the heap even when some regions are in JNI critical sections. Instead of stalling GC during such critical regions, only “pinned” regions are excluded, reducing latency in mixed JNI/native workloads.&nbsp;</li>
  1741.  
  1742.  
  1743.  
  1744. <li>The <a href="https://openjdk.org/jeps/454" target="_blank" rel="noopener">Foreign Function &amp; Memory API</a> (JEP 454), added in <a href="https://openjdk.org/projects/jdk/22/" target="_blank" rel="noopener">Java 22</a>, offers better performance and safety over the old JNI for foreign memory and calling native code. Bulk operations are more efficient, with less overhead in cross-boundary calls.&nbsp;</li>
  1745.  
  1746.  
  1747.  
  1748. <li><a href="https://openjdk.org/jeps/474" target="_blank" rel="noopener">ZGC: Generational Mode by Default</a> (JEP 474). The Z Garbage Collector, which is typically low-pause, uses generational mode by default starting with Java 23. Separation between young and old objects improves GC efficiency for applications that create many short-lived objects.</li>
  1749. </ul>
  1750.  
  1751.  
  1752.  
  1753. <p>Additionally, there are further enhancements to core libraries, previews, and performance ergonomics – for example, improvements to default GC settings, memory management, etc.&nbsp;</p>
  1754.  
  1755.  
  1756.  
  1757. <h2 class="wp-block-heading">Upgrading from Java 21 to 25</h2>
  1758.  
  1759.  
  1760.  
  1761. <p>You can find a video series that covers the <a href="https://www.youtube.com/playlist?list=PLX8CzqL3ArzXJ2_0FIGleUisXuUm4AESE" target="_blank" rel="noopener">Road to Java 25</a> on the official <a href="https://www.youtube.com/@java" target="_blank" rel="noopener">Java YouTube channel</a>. We recommend watching <a href="https://www.youtube.com/watch?v=9azNjz7s1Ck" target="_blank" rel="noopener">How to Upgrade to Java 25</a> by <a href="https://nipafx.dev/" target="_blank" rel="noopener">Nikolai Parlog</a>. The Oracle DevRel team also has a <a href="https://dev.java/community/java-25-launch/" target="_blank" rel="noopener">Java 25 livestream</a> on September 16, 2025.</p>
  1762.  
  1763.  
  1764.  
  1765. <h1 class="wp-block-heading">Conclusion</h1>
  1766.  
  1767.  
  1768.  
  1769. <p>As you have seen, several additions to the language make Java easier to use, both for students and teachers, as well as experienced programmers. In fact, these features completely change the experience of using Java, by no longer requiring boilerplate code like the <code>public static void main(String[] args)</code> method, allowing statements before <code>super()</code>, offering the possibility to add custom intermediary operations in streams using gatherers, allowing underscores as variable names for unused variables, and and providing scoped values as a convenient, safe, and scalable alternative to <code>ThreadLocal</code>. With all of these changes, Java is moving forward fast. IntelliJ IDEA aims to move just as quickly by supporting these new features with relevant inspections and quick-fixes, as well as new live templates, and integrating them into existing features like the <a href="https://www.jetbrains.com/help/idea/debugging-code.html" target="_blank" rel="noopener">debugger</a>. Other than improvements in the language, there are also runtime improvements that you get for free when upgrading your JDK.</p>
  1770.  
  1771.  
  1772.  
  1773. <p>We think Java 25 is the best Java release (so far!) and we recommend you switch to it as soon as you can. Even if you’re not using the Java language features, you will still benefit from using the new JDK. Java 25 offers a new baseline for the language, and the runtime is the fastest it has ever been.</p>
  1774.  
  1775.  
  1776.  
  1777. <p>If you are on Java 21, we have provided an overview of what you might have missed in terms of language features. And if you’re on an even older version of Java, now would be the time to start the process to upgrade, not just because of the benefits to you but also because the ecosystem is moving forward. Java 17 is the current <a href="https://spring.io/blog/2022/03/28/an-update-on-java-17-adoption" target="_blank" rel="noopener">baseline for Spring and Spring Boot</a> as of Spring 6 or Spring Boot 3. The upcoming <a href="https://maven.apache.org/whatsnewinmaven4.html" target="_blank" rel="noopener">Maven 4 will require JDK 17</a> to run. But don’t worry, you can still compile projects with older Java versions! The upcoming <a href="https://github.com/junit-team/junit-framework/issues/4246" target="_blank" rel="noopener">JUnit 6 is also targeting JDK 17</a>. If you are still on Java 8 (or older), now is the time to start upgrading!</p>
  1778.  
  1779.  
  1780.  
  1781. <p>IntelliJ IDEA will continue to support the latest Java features with Java 26. If you would like to try them out, you can download the EA versions from inside IntelliJ IDEA as soon as they become available. And, as always, please let us know if you have any feedback.</p>
  1782. ]]></content:encoded>
  1783. </item>
  1784. <item>
  1785. <title>Java Annotated Monthly – September 2025</title>
  1786. <link>https://blog.jetbrains.com/idea/2025/09/java-annotated-monthly-september-2025/</link>
  1787. <dc:creator><![CDATA[Irina Mariasova]]></dc:creator>
  1788. <pubDate>Fri, 05 Sep 2025 08:24:19 +0000</pubDate>
  1789. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-social-BlogFeatured-1280x720-2x-2.png</featuredImage> <category><![CDATA[java]]></category>
  1790. <category><![CDATA[kotlin]]></category>
  1791. <category><![CDATA[news]]></category>
  1792. <category><![CDATA[ai]]></category>
  1793. <category><![CDATA[ai-agent]]></category>
  1794. <category><![CDATA[java-annotated]]></category>
  1795. <category><![CDATA[java-annotated-monthly]]></category>
  1796. <category><![CDATA[spring]]></category>
  1797. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=596962</guid>
  1798.  
  1799. <description><![CDATA[This month’s Java Annotated Monthly comes with a fresh mix of Java, Kotlin, AI, and tech news, plus a look at some great events you won’t want to miss. We’ve also got a featured section by Marit van Dijk, covering the new Java 25 release, the latest IntelliJ IDEA updates, and a playful take on [&#8230;]]]></description>
  1800. <content:encoded><![CDATA[
  1801. <p>This month’s Java Annotated Monthly comes with a fresh mix of Java, Kotlin, AI, and tech news, plus a look at some great events you won’t want to miss. We’ve also got a featured section by <a href="https://maritvandijk.com/" target="_blank" rel="noopener">Marit van Dijk</a>, covering the new Java 25 release, the latest IntelliJ IDEA updates, and a playful take on learning modern Java.</p>
  1802.  
  1803.  
  1804.  
  1805. <p>Let’s go!&nbsp;</p>
  1806.  
  1807.  
  1808.  
  1809. <h2 class="wp-block-heading">Featured Content</h2>
  1810.  
  1811.  
  1812.    <div class="about-author ">
  1813.        <div class="about-author__box">
  1814.            <div class="row">
  1815.                                                            <div class="about-author__box-img">
  1816.                            <img decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Screenshot-2025-09-05-at-12.32.30.png" alt="" loading="lazy">
  1817.                        </div>
  1818.                                        <div class="about-author__box-text">
  1819.                                                    <h4>Marit van Dijk</h4>
  1820.                                                <p><span style="font-weight: 400;">Marit van Dijk is a software developer, Java Champion and Developer Advocate at JetBrains. She has over 20 years of diverse experience across various roles and companies, and is passionate about building awesome software in collaboration with amazing people, and making developers’ lives better. She is a frequent speaker at international conferences, writes blog posts and tutorials, creates videos, and is a contributor to the book “</span><a href="https://www.oreilly.com/library/view/97-things-every/9781491952689/" target="_blank" rel="noopener"><span style="font-weight: 400;">97 Things Every Java Programmer Should Know</span></a><span style="font-weight: 400;">” (O’Reilly Media).</span></p>
  1821.                    </div>
  1822.                            </div>
  1823.        </div>
  1824.    </div>
  1825.  
  1826.  
  1827.  
  1828. <p>Welcome to Java Annotated Monthly for September. For the folks in Europe / the Northern hemisphere, I hope that you have had a great summer and were able to disconnect from work.</p>
  1829.  
  1830.  
  1831.  
  1832. <p>This month, I’m excited for the start of the conference season with <a href="https://vimeo.com/1115439883" target="_blank" rel="noopener">my first talk</a> at <a href="https://2025.javazone.no/en" target="_blank" rel="noopener">JavaZone</a> and, of course, the release of <a href="https://openjdk.org/projects/jdk/25/" target="_blank" rel="noopener">Java 25</a> on September 16, 2025. This release comes with some nice changes to the language: <a href="https://openjdk.org/jeps/512" target="_blank" rel="noopener">Compact Source Files and Instance Main Methods</a> and <a href="https://openjdk.org/jeps/511" target="_blank" rel="noopener">Module Import Declarations</a> make it easier to get started with Java, <a href="https://openjdk.org/jeps/513" target="_blank" rel="noopener">Flexible Constructor Bodies</a> allow statements in a constructor before calling super(), so you can validate your data before constructing objects, and <a href="https://openjdk.org/jeps/506" target="_blank" rel="noopener">Scoped Values</a> make managing thread-local data more convenient, safe, and scalable. This feature will be even more useful with <a href="https://openjdk.org/jeps/505" target="_blank" rel="noopener">Structured Concurrency</a> (still in preview). In addition, there are improvements in performance and performance insights, as well as several other changes. We will write a blog post with more details later this month.</p>
  1833.  
  1834.  
  1835.  
  1836. <p>Java 25 support was introduced in <a href="https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2/">IntelliJ IDEA 2025.2</a>, with additional support added in <a href="https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2-1/">2025.2.1</a>. IntelliJ IDEA already introduced support for Java 25 in <a href="https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2/">2025.2</a>, and additional support was added in <a href="https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2-1/">2025.2.1</a>. In case you missed it, check out the <a href="https://www.youtube.com/watch?v=_nt-z0FS3tM" target="_blank" rel="noopener">What’s New in IntelliJ IDEA 2025.2 stream</a>, where we show you Java 25 support, Virtual Threads Debugger, Spring Debugger and Spring Modulith support, support for Maven 4 (which may also be released soon), and a sneak peek of a new feature we are working on!</p>
  1837.  
  1838.  
  1839.  
  1840. <p>Java 25 will be an “LTS” version. <a href="https://www.youtube.com/watch?v=x6-kyQCYhNo" target="_blank" rel="noopener">Or is it?</a> If you are updating from Java 21, watch this great video by <a href="https://nipafx.dev/" target="_blank" rel="noopener">Nikolai Parlog</a> on <a href="https://www.youtube.com/watch?v=9azNjz7s1Ck" target="_blank" rel="noopener">How to Upgrade to Java 25</a>, showing you some of the problems you might encounter when upgrading and how to solve them, the overview of <a href="https://www.youtube.com/watch?v=X0-TGhktFnE" target="_blank" rel="noopener">All New Java Language Features Since Java 21</a> by <a href="https://x.com/JosePaumard" target="_blank">José Paumard</a>, and other videos in <a href="https://www.youtube.com/hashtag/roadto25" target="_blank" rel="noopener">the series</a>.</p>
  1841.  
  1842.  
  1843.  
  1844. <p>In <a href="https://www.youtube.com/watch?v=GXAEUVgVAEY" target="_blank" rel="noopener">Learning Modern Java the Playful Way</a>, fellow Java Champion <a href="https://softwaregarden.dev/en/" target="_blank" rel="noopener">Piotr Przybył</a> and I show you how to upgrade your code using live demos (and silly jokes). You can catch a slightly updated version of this talk at several conferences this Fall/Autumn. To find out where I’ll be, check <a href="https://maritvandijk.com/events/" target="_blank" rel="noopener">my website</a>. If you happen to be at any of these events, please come say hi!</p>
  1845.  
  1846.  
  1847.  
  1848. <h2 class="wp-block-heading">Java News</h2>
  1849.  
  1850.  
  1851.  
  1852. <p>Do not miss the latest Java news:&nbsp;</p>
  1853.  
  1854.  
  1855.  
  1856. <ul>
  1857. <li>Java News Roundup <a href="https://www.infoq.com/news/2025/08/java-news-roundup-jul28-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/08/java-news-roundup-aug04-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/08/java-news-roundup-aug11-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/08/java-news-roundup-aug18-2025/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">4</a></li>
  1858.  
  1859.  
  1860.  
  1861. <li><a href="https://inside.java/2025/08/14/newscast-97/" target="_blank" rel="noopener">Java Architects Answer Your Questions &#8211; Inside Java Newscast #97</a></li>
  1862. </ul>
  1863.  
  1864.  
  1865.  
  1866. <h2 class="wp-block-heading">Java Tutorials and Tips</h2>
  1867.  
  1868.  
  1869.  
  1870. <p>Learn more about where Java is heading and how to make the most of its latest features:</p>
  1871.  
  1872.  
  1873.  
  1874. <ul>
  1875. <li><a href="https://foojay.io/today/why-java-is-still-worth-learning-in-2025-a-developers-25-year-journey/" target="_blank" rel="noopener">Why Java is Still Worth Learning in 2025: A Developer’s 25-Year Journey</a></li>
  1876.  
  1877.  
  1878.  
  1879. <li><a href="https://dzone.com/articles/how-to-build-an-mcp-server-with-java-sdk" target="_blank" rel="noopener">How to Build an MCP Server With Java SDK</a></li>
  1880.  
  1881.  
  1882.  
  1883. <li><a href="https://foojay.io/today/pattern-matching-across-different-languages/" target="_blank" rel="noopener">Pattern-Matching Across Different Languages</a></li>
  1884.  
  1885.  
  1886.  
  1887. <li><a href="https://hirt.se/blog/?p=1587" target="_blank" rel="noopener">“Best of Java” Feature Face-off 2025</a></li>
  1888.  
  1889.  
  1890.  
  1891. <li><a href="https://www.selikoff.net/2025/08/10/using-the-java-playground/" target="_blank" rel="noopener">Using the Java Playground</a></li>
  1892.  
  1893.  
  1894.  
  1895. <li><a href="https://inside.java/2025/08/12/jvmls-final-to-immutable/" target="_blank" rel="noopener">The Not-So-Final Word on Final #JVMLS</a></li>
  1896.  
  1897.  
  1898.  
  1899. <li><a href="https://foojay.io/today/domain-driven-design-in-java-a-practical-guide/" target="_blank" rel="noopener">Domain-Driven Design in Java: A Practical Guide</a></li>
  1900.  
  1901.  
  1902.  
  1903. <li><a href="https://inside.java/2025/08/21/jvmls-growing-java-language/" target="_blank" rel="noopener">Growing the Java Language #JVMLS</a></li>
  1904.  
  1905.  
  1906.  
  1907. <li><a href="https://inside.java/2025/08/24/roadto25-upgrade/" target="_blank" rel="noopener">How to Upgrade to Java 25 #RoadTo25</a></li>
  1908.  
  1909.  
  1910.  
  1911. <li><a href="https://inside.java/2025/08/28/roadto25-aot/" target="_blank" rel="noopener">Ahead-of-Time Computation #RoadTo25</a></li>
  1912.  
  1913.  
  1914.  
  1915. <li><a href="https://foojay.io/today/taking-java-arrays-to-another-dimension/" target="_blank" rel="noopener">Taking Java Arrays to Another Dimension</a></li>
  1916.  
  1917.  
  1918.  
  1919. <li><a href="https://inside.java/2025/08/31/roadto25-java-language/" target="_blank" rel="noopener">All New Java Language Features Since Java 21 #RoadTo25</a></li>
  1920.  
  1921.  
  1922.  
  1923. <li><a href="https://marcphilipp.de/blog/2025/08/16/stf-milestone-5-discovery-issues/" target="_blank" rel="noopener">STF Milestone 5: Discovery Issues</a></li>
  1924.  
  1925.  
  1926.  
  1927. <li><a href="https://www.youtube.com/watch?v=n-YK3B4_xPA" target="_blank" rel="noopener">Solving Java’s 1 Billion Row Challenge (Ep. 1) | With ‪@caseymuratori‬</a></li>
  1928. </ul>
  1929.  
  1930.  
  1931.  
  1932. <h2 class="wp-block-heading">Kotlin Corner</h2>
  1933.  
  1934.  
  1935.  
  1936. <p>Check out this section for everything Kotlin, from fresh updates to handy tips and tricks:&nbsp;</p>
  1937.  
  1938.  
  1939.  
  1940. <ul>
  1941. <li><a href="https://blog.jetbrains.com/platform/2025/08/kotlin-notebook-meets-intellij-platform-advancing-ide-plugin-development/">Kotlin Notebook Meets IntelliJ Platform: Advancing IDE Plugin Development</a></li>
  1942.  
  1943.  
  1944.  
  1945. <li><a href="https://blog.jetbrains.com/kotlin/2025/08/how-kotlin-notebook-helps-teach-programming/">How Kotlin Notebook Helps You Teach Programming</a></li>
  1946.  
  1947.  
  1948.  
  1949. <li><a href="https://www.azul.com/webinar/how-to-boost-jvm-scalability-and-performance-with-kotlin-and-azul-runtime/" target="_blank" rel="noopener">How to Boost JVM Scalability and Performance With Kotlin and Azul Runtime</a></li>
  1950.  
  1951.  
  1952.  
  1953. <li><a href="https://blog.jetbrains.com/ai/2025/07/when-tool-calling-becomes-an-addiction-debugging-llm-patterns-in-koog/">When Tool-Calling Becomes an Addiction: Debugging LLM Patterns in Koog&nbsp;</a></li>
  1954.  
  1955.  
  1956.  
  1957. <li><a href="https://blog.jetbrains.com/ai/2025/07/building-better-agents-what-s-new-in-koog-0-3-0/">Building Better Agents: What’s New in Koog 0.3.0&nbsp;</a></li>
  1958.  
  1959.  
  1960.  
  1961. <li><a href="https://www.youtube.com/watch?v=vysVNg4IuUo&amp;t=4526s" target="_blank" rel="noopener">Kickstarting AI Agent Development With Koog&nbsp;</a></li>
  1962.  
  1963.  
  1964.  
  1965. <li><a href="https://www.youtube.com/watch?v=vDtnqQmiyck&amp;t=1s" target="_blank" rel="noopener">Building Smarter AI Agents With Koog</a>&nbsp;</li>
  1966.  
  1967.  
  1968.  
  1969. <li><a href="https://www.youtube.com/watch?v=AGHONAx8gjQ&amp;t=22s" target="_blank" rel="noopener">How to Build Scalable AI Agents With Kotlin, Ktor, &amp; Koog&nbsp;</a></li>
  1970.  
  1971.  
  1972.  
  1973. <li><a href="https://www.youtube.com/watch?v=YIelyGgME5g" target="_blank" rel="noopener">GPT-5 Writes Kotlin! Trying the Newest OpenAI Model in Junie and AI Assistant&nbsp;</a></li>
  1974.  
  1975.  
  1976.  
  1977. <li><a href="https://blog.jetbrains.com/kotlin/2025/07/modular-ktor-building-backends-for-scale/">Modular Ktor: Building Backends for Scale&nbsp;</a></li>
  1978.  
  1979.  
  1980.  
  1981. <li><a href="https://www.youtube.com/watch?v=mB6cJAXxFGk" target="_blank" rel="noopener">Talking Kotlin #140: kotlinx.rpc</a>&nbsp;</li>
  1982.  
  1983.  
  1984.  
  1985. <li><a href="https://rakhman.info/blog/kotlin-emerging-patterns-with-context-parameters/" target="_blank" rel="noopener">Kotlin: Emerging Patterns With Context Parameters</a></li>
  1986.  
  1987.  
  1988.  
  1989. <li><a href="https://blog.jetbrains.com/kotlin/2025/08/exploring-data-science-with-kotlin-a-powerlifting-case-study/">Exploring Data Science With Kotlin: A Powerlifting Case Study</a></li>
  1990. </ul>
  1991.  
  1992.  
  1993.  
  1994. <h2 class="wp-block-heading">AI</h2>
  1995.  
  1996.  
  1997.  
  1998. <p>Stay in the loop with the latest AI news and insights you won’t want to miss:&nbsp;</p>
  1999.  
  2000.  
  2001.  
  2002. <ul>
  2003. <li><a href="https://medium.com/@springrod/you-can-build-better-ai-agents-in-java-than-python-868eaf008493" target="_blank" rel="noopener">You Can Build Better AI Agents in Java Than Python</a></li>
  2004.  
  2005.  
  2006.  
  2007. <li><a href="https://www.infoq.com/presentations/ai-trends/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Presentation: The Form of AI</a></li>
  2008.  
  2009.  
  2010.  
  2011. <li><a href="https://blog.jetbrains.com/ai/2025/08/introducing-next-edit-suggestions-in-jetbrains-ai-assistant/">Introducing Next Edit Suggestions in JetBrains AI Assistant</a></li>
  2012.  
  2013.  
  2014.  
  2015. <li><a href="https://blog.jetbrains.com/ai/2025/08/a-simpler-more-transparent-model-for-ai-quotas/">A Simpler, More Transparent Model for AI Quotas</a></li>
  2016.  
  2017.  
  2018.  
  2019. <li><a href="https://glaforge.dev/posts/2025/08/06/vibe-coding-a-chrome-extension-with-gemini-cli-to-summarize-articles/" target="_blank" rel="noopener">Vibe-Coding a Chrome Extension With Gemini CLI to Summarize Articles</a></li>
  2020.  
  2021.  
  2022.  
  2023. <li><a href="https://www.infoq.com/presentations/microservices-ai-systems/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Presentation: Key Lessons From Shipping AI Products Beyond the Hype</a></li>
  2024.  
  2025.  
  2026.  
  2027. <li><a href="https://www.infoq.com/news/2025/08/figma-ai/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">How Figma Uses AI to Support, Not Replace, the Designer</a></li>
  2028.  
  2029.  
  2030.  
  2031. <li><a href="https://foojay.io/today/do-we-understand-the-value-of-ai-knowledge/" target="_blank" rel="noopener">Do We Understand the Value of AI Knowledge?</a></li>
  2032.  
  2033.  
  2034.  
  2035. <li><a href="https://blog.jetbrains.com/kineto/2025/08/make-your-ideas-clickable-with-kineto-by-jetbrains/">Make Your Ideas Clickable With Kineto by JetBrains</a></li>
  2036.  
  2037.  
  2038.  
  2039. <li><a href="https://www.infoq.com/news/2025/08/language-models-personality/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Anthropic Investigates How Large Language Models Develop a Character</a></li>
  2040.  
  2041.  
  2042.  
  2043. <li><a href="https://www.infoq.com/presentations/ai-coding-agents/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">From Autocomplete to Agents: AI Coding State of Play</a></li>
  2044.  
  2045.  
  2046.  
  2047. <li><a href="https://www.infoq.com/presentations/multi-agent-workflow/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Presentation: 10 Reasons Your Multi-Agent Workflows Fail and What You Can Do About It</a></li>
  2048.  
  2049.  
  2050.  
  2051. <li><a href="https://foojay.io/today/ai-gives-time-not-confidence-developer-productivity-toolkit/" target="_blank" rel="noopener">AI Gives Time, Not Confidence: Developer Productivity Toolkit</a></li>
  2052.  
  2053.  
  2054.  
  2055. <li><a href="https://medium.com/@springrod/build-better-agents-in-java-than-python-embabel-vs-pydantic-ai-ab373c149108" target="_blank" rel="noopener">Build Better Agents in Java Than Python: Embabel vs Pydantic AI</a></li>
  2056. </ul>
  2057.  
  2058.  
  2059.  
  2060. <h2 class="wp-block-heading">Languages, Frameworks, Libraries, and Technologies</h2>
  2061.  
  2062.  
  2063.  
  2064. <p>Explore other technologies and frameworks that help boost productivity and make everyday development smoother:</p>
  2065.  
  2066.  
  2067.  
  2068. <ul>
  2069. <li>This Week in Spring <a href="https://spring.io/blog/2025/08/05/this-week-in-spring-august-5th-2025" target="_blank" rel="noopener">1</a>, <a href="https://spring.io/blog/2025/08/12/this-week-in-spring-august-12th-2025" target="_blank" rel="noopener">2</a>, <a href="https://spring.io/blog/2025/08/19/this-week-in-spring-august-19th-2025" target="_blank" rel="noopener">3</a>, <a href="https://spring.io/blog/2025/08/26/this-week-in-spring-august-26th-2025" target="_blank" rel="noopener">4</a></li>
  2070.  
  2071.  
  2072.  
  2073. <li><a href="https://blog.jetbrains.com/idea/2025/08/debugging-transactions-let-spring-debugger-do-the-heavy-lifting/">Debugging Transactions? Let Spring Debugger Do the Heavy Lifting</a></li>
  2074.  
  2075.  
  2076.  
  2077. <li><a href="https://www.youtube.com/watch?v=fGExm_Rlees" target="_blank" rel="noopener">IntelliJ IDEA 2025.2 and Spring Modulith</a></li>
  2078.  
  2079.  
  2080.  
  2081. <li><a href="https://www.youtube.com/watch?v=zl5U8KO28rM" target="_blank" rel="noopener">Breaking the Architecture Bottleneck • Andrew Harmel-Law &amp; Marit van Dijk</a></li>
  2082.  
  2083.  
  2084.  
  2085. <li><a href="https://foojay.io/today/monolith-vs-microservices-2025/" target="_blank" rel="noopener">🧱 Monolith or 🧩 Microservices in 2025?</a></li>
  2086.  
  2087.  
  2088.  
  2089. <li><a href="https://foojay.io/today/semantic-caching-with-springboot-redis/" target="_blank" rel="noopener">Semantic Caching With SpringBoot &amp; Redis</a></li>
  2090.  
  2091.  
  2092.  
  2093. <li><a href="https://foojay.io/today/new-features-in-jakarta-ee-11-with-examples/" target="_blank" rel="noopener">New Features in Jakarta EE 11, With Examples</a></li>
  2094.  
  2095.  
  2096.  
  2097. <li><a href="https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/" target="_blank" rel="noopener">Preparing for Spring Framework 7 and Spring Boot 4</a></li>
  2098.  
  2099.  
  2100.  
  2101. <li><a href="https://www.infoq.com/presentations/rust-ergonomy-performance/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Fearless Programming With Rust</a></li>
  2102. </ul>
  2103.  
  2104.  
  2105.  
  2106. <h2 class="wp-block-heading">Conferences and Events</h2>
  2107.  
  2108.  
  2109.  
  2110. <p>Visit the coolest events of the month, both offline and online:</p>
  2111.  
  2112.  
  2113.  
  2114. <ul>
  2115. <li><a href="https://www.youtube.com/playlist?list=PLPZy-hmwOdEWDuK3AXXhelJWGUqve1UVT" target="_blank" rel="noopener">The Marco Show</a> – Join a cool new podcast with <a href="https://www.marcobehler.com/" target="_blank" rel="noopener">Marco Behler</a> as a host and the best guests from the development world.&nbsp;</li>
  2116.  
  2117.  
  2118.  
  2119. <li><a href="https://2025.javazone.no/" target="_blank" rel="noopener">JavaZone</a> – Oslo, Norway, September 3–4, JetBrains will host a booth there. You are welcome to come and meet us.&nbsp;</li>
  2120.  
  2121.  
  2122.  
  2123. <li><a href="https://xn--jalapeo-9za.net/" target="_blank" rel="noopener">Jalapeño Unconference by JConfMexico</a> – Puerto Morelos, Mexico, September 13–14.</li>
  2124.  
  2125.  
  2126.  
  2127. <li><a href="https://javaforumnord.de/2025/" target="_blank" rel="noopener">Java Forum Nord</a> – Hannover, Germany, September 16.</li>
  2128.  
  2129.  
  2130.  
  2131. <li><a href="https://jcconf.tw/2025/" target="_blank" rel="noopener">JC Conference Taiwan</a> – Taipei, Taiwan, September 19. Do not miss our booth!</li>
  2132.  
  2133.  
  2134.  
  2135. <li><a href="https://2025.confitura.pl/" target="_blank" rel="noopener">Confitura 2025</a> – Warsaw, September 19–20 , <a href="https://x.com/MaritvanDijk77" target="_blank">Marit van Dijk</a> will give a talk here. </li>
  2136.  
  2137.  
  2138.  
  2139. <li><a href="https://amsterdam.ai4devs.io/" target="_blank" rel="noopener">AI4DEVS</a> – September 19, <a href="https://x.com/antonarhipov?lang=en" target="_blank">Anton Arhipov</a> will talk about building AI agents in Kotlin</li>
  2140.  
  2141.  
  2142.  
  2143. <li><a href="https://jugsaxony.org/day/" target="_blank" rel="noopener">JUG Saxony Day</a> – Dresden, Germany, September 25–26.</li>
  2144.  
  2145.  
  2146.  
  2147. <li><a href="https://crete.voxxeddays.com/" target="_blank" rel="noopener">Voxxed Days Crete</a> – Crete, Greece, September 26–27.</li>
  2148.  
  2149.  
  2150.  
  2151. <li><a href="https://www.dev2next.com/" target="_blank" rel="noopener">Dev2Next</a> – Colorado Springs, USA, September 29 – October 2.</li>
  2152.  
  2153.  
  2154.  
  2155. <li><a href="https://jaxlondon.com/" target="_blank" rel="noopener">JAX London</a> – London, United Kingdom, September 29 – October 3.</li>
  2156.  
  2157.  
  2158.  
  2159. <li><a href="https://gotocph.com/2025" target="_blank" rel="noopener">GOTO Copenhagen</a> – Copenhagen, Denmark, September 29 – October 3.</li>
  2160.  
  2161.  
  2162.  
  2163. <li><a href="https://www.youtube.com/playlist?list=PLPZy-hmwOdEV1aAV4qqXkqde7OpjsVLfb" target="_blank" rel="noopener">All talks from IntelliJ IDEA Conf 2025</a> – A lot of useful content and insights.</li>
  2164.  
  2165.  
  2166.  
  2167. <li><a href="https://thegeekgathering.org/" target="_blank" rel="noopener">The Geek Gathering</a> – Osijek, 2-3 Oct 2025. Marit van Dijk will share her thoughts on learning modern Java the playful way.&nbsp;</li>
  2168. </ul>
  2169.  
  2170.  
  2171.  
  2172. <h2 class="wp-block-heading">Culture and Community</h2>
  2173.  
  2174.  
  2175.  
  2176. <p>Find articles on developer life, career growth, and the lighter side of working in tech:</p>
  2177.  
  2178.  
  2179.  
  2180. <ul>
  2181. <li><a href="https://queen-of-questions.kit.com/posts/how-do-you-ask-questions" target="_blank" rel="noopener">How Do You Ask Questions?</a></li>
  2182.  
  2183.  
  2184.  
  2185. <li><a href="https://www.infoq.com/news/2025/08/empathy-driven-platform-teams/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">How Empathy-Driven Platform Teams Can Support Software Development</a></li>
  2186.  
  2187.  
  2188.  
  2189. <li><a href="https://www.infoq.com/podcasts/lean-software-delivery-without-jira/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Continuous Deployment and Pair Programming for Lean Software Delivery Even Without Jira</a></li>
  2190.  
  2191.  
  2192.  
  2193. <li><a href="https://www.infoq.com/news/2025/08/european-cloud-sovereignty/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">The European Cloud Dilemma: Innovation Versus Digital Sovereignty</a></li>
  2194.  
  2195.  
  2196.  
  2197. <li><a href="https://mkedemo.wordpress.com/2025/08/18/testability-is-about-people-not-just-code/" target="_blank" rel="noopener">Testability Is About People, Not Just Code</a></li>
  2198.  
  2199.  
  2200.  
  2201. <li><a href="https://dukescorner.libsyn.com/trisha-gee-its-all-about-relationships-and-people" target="_blank" rel="noopener">Trisha Gee: It’s All About Relationships and People</a></li>
  2202. </ul>
  2203.  
  2204.  
  2205.  
  2206. <h2 class="wp-block-heading">And Finally…</h2>
  2207.  
  2208.  
  2209.  
  2210. <p>Check out IntelliJ IDEA’s latest content picks for tips, updates, and inspiration:</p>
  2211.  
  2212.  
  2213.  
  2214. <ul>
  2215. <li><a href="https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2/">IntelliJ IDEA 2025.2 Is Here!</a></li>
  2216.  
  2217.  
  2218.  
  2219. <li><a href="https://blog.jetbrains.com/idea/2025/08/whats-fixed-intellij-idea-2025-2/">What’s Fixed in IntelliJ IDEA 2025.2</a></li>
  2220.  
  2221.  
  2222.  
  2223. <li><a href="https://www.youtube.com/watch?v=_nt-z0FS3tM" target="_blank" rel="noopener">What’s New in IntelliJ IDEA 2025.2 | IntelliJ IDEA Talk</a></li>
  2224. </ul>
  2225.  
  2226.  
  2227.  
  2228. <p>That’s it for today! We’re always collecting ideas for the next Java Annotated Monthly – 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 September 20. Don’t 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>
  2229. ]]></content:encoded>
  2230. </item>
  2231. <item>
  2232. <title>Improved Annotation Handling in Kotlin 2.2: Less Boilerplate, Fewer Surprises </title>
  2233. <link>https://blog.jetbrains.com/idea/2025/09/improved-annotation-handling-in-kotlin-2-2-less-boilerplate-fewer-surprises/</link>
  2234. <dc:creator><![CDATA[Teodor Irkhin]]></dc:creator>
  2235. <pubDate>Thu, 04 Sep 2025 11:56:15 +0000</pubDate>
  2236. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/08/IJ-social-BlogFeatured-1280x720-2x-4.png</featuredImage> <category><![CDATA[kotlin]]></category>
  2237. <category><![CDATA[annotations]]></category>
  2238. <category><![CDATA[boilerplate]]></category>
  2239. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=595295</guid>
  2240.  
  2241. <description><![CDATA[Many developers have run into subtle issues with annotations when working with Kotlin and frameworks like Spring or JPA-based persistence frameworks. For instance, an annotation applied to a constructor parameter might not always end up in the property or backing field where the framework expects it. This often means annotations don’t land where they’re needed. [&#8230;]]]></description>
  2242. <content:encoded><![CDATA[
  2243. <p>Many developers have run into subtle issues with annotations when working with Kotlin and frameworks like Spring or JPA-based persistence frameworks. For instance, an annotation applied to a constructor parameter might not always end up in the property or backing field where the framework expects it.</p>
  2244.  
  2245.  
  2246.  
  2247. <p>This often means annotations don’t land where they’re needed. For example, bean validation checks might only happen when the object was first created, but not when its properties were later updated. The result? Confusing bugs, surprising runtime behavior, and sometimes even the need to dig into bytecode to see what’s really going on. For example, validation might not be enforced when entities are loaded or updated from the database.</p>
  2248.  
  2249.  
  2250.  
  2251. <p>With Kotlin 2.2, we’re addressing this problem. A new default rule makes annotations land where developers expect them to, reducing boilerplate and aligning better with popular frameworks.</p>
  2252.  
  2253.  
  2254.  
  2255. <p>Consider this simple JPA entity:</p>
  2256.  
  2257.  
  2258.  
  2259. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Entity
  2260. class Order(
  2261.     @Id
  2262.     @GeneratedValue
  2263.     val id: Long,
  2264.  
  2265.     @NotBlank
  2266.     var name: String,
  2267.  
  2268.     @Email
  2269.     var email: String
  2270. )</pre>
  2271.  
  2272.  
  2273.  
  2274. <p>At first glance this looks correct. But in Kotlin versions before 2.2, the default rule applied these annotations only to the constructor parameter (<code>@param</code>).</p>
  2275.  
  2276.  
  2277.  
  2278. <p>If we look at the decompiled code, it actually becomes:</p>
  2279.  
  2280.  
  2281.  
  2282. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Order {
  2283.   @Id
  2284.   @GeneratedValue
  2285.   private final long id;
  2286.  
  2287.   @NotNull
  2288.   private String name;
  2289.  
  2290.   @NotNull
  2291.   private String email;
  2292.  
  2293.  public Order(long id, @NotBlank @NotNull String name, @Email @NotNull String email) {
  2294.      Intrinsics.checkNotNullParameter(name, "name");
  2295.      Intrinsics.checkNotNullParameter(email, "email");
  2296.      super();
  2297.      this.id = id;
  2298.      this.name = name;
  2299.      this.email = email;
  2300.   }
  2301. }</pre>
  2302.  
  2303.  
  2304.  
  2305. <p>Validation annotations like <code>@NotBlank</code> and <code>@Email</code> weren’t placed on the field/property – they only validated object construction, not property updates.</p>
  2306.  
  2307.  
  2308.  
  2309. <p>This mismatch has been a common source of confusion.</p>
  2310.  
  2311.  
  2312.  
  2313. <p><strong>Previous workaround: Explicit use-site targets</strong></p>
  2314.  
  2315.  
  2316.  
  2317. <p>The fix was to explicitly mark the targets, for example with <code>@field</code>:</p>
  2318.  
  2319.  
  2320.  
  2321. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Entity
  2322. class Order(
  2323.     @field:Id
  2324.     @GeneratedValue
  2325.     val id: Long,
  2326.  
  2327.     @field:NotNull
  2328.     var name: String,
  2329.  
  2330.     @field:Email
  2331.     var email: String
  2332. )</pre>
  2333.  
  2334.  
  2335.  
  2336. <p>so that becomes:</p>
  2337.  
  2338.  
  2339.  
  2340. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Order {
  2341.   @Id
  2342.   @GeneratedValue
  2343.   private final long id;
  2344.  
  2345.   @NotBlank
  2346.   @NotNull
  2347.   private String name;
  2348.  
  2349.   @Email
  2350.   @NotNull
  2351.   private String email;
  2352. }</pre>
  2353.  
  2354.  
  2355.  
  2356. <p>This approach works, but clutters the code with extra syntax. It also requires developers to know about Kotlin’s use-site targets and remember which one each framework expects.</p>
  2357.  
  2358.  
  2359.  
  2360. <p><strong>Kotlin 2.2: A new default that just works</strong></p>
  2361.  
  2362.  
  2363.  
  2364. <p>Starting with Kotlin 2.2, annotations without an explicit use-site target are applied to the constructor parameter and the property or field, aligning behavior with what most frameworks expect.</p>
  2365.  
  2366.  
  2367.  
  2368. <p>That means our original code now works as expected, without requiring any additional annotations:</p>
  2369.  
  2370.  
  2371.  
  2372. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@Entity
  2373. class Order(
  2374.     @Id
  2375.     @GeneratedValue
  2376.     val id: Long,
  2377.  
  2378.     @NotBlank
  2379.     var name: String,
  2380.  
  2381.     @Email
  2382.     var email: String
  2383. )</pre>
  2384.  
  2385.  
  2386.  
  2387. <p><strong>With the new rule:</strong></p>
  2388.  
  2389.  
  2390.  
  2391. <ul>
  2392. <li>Bean validation annotations are present on the property, so validation applies on updates as well as on constructions.</li>
  2393.  
  2394.  
  2395.  
  2396. <li>The code looks like clean and idiomatic Kotlin, without repetitive <code>@field</code>: syntax or surprising behavior.</li>
  2397. </ul>
  2398.  
  2399.  
  2400.  
  2401. <p><strong>How to enable the new behavior</strong></p>
  2402.  
  2403.  
  2404.  
  2405. <p>🔗 Kotlin 2.2 is required.</p>
  2406.  
  2407.  
  2408.  
  2409. <p>By default, the compiler issues warnings if your code’s behavior may change under the new rule.</p>
  2410.  
  2411.  
  2412.  
  2413. <p>In IntelliJ IDEA, you can also use the quick-fix on a warning to enable the new default project-wide.</p>
  2414.  
  2415.  
  2416.  
  2417. <figure class="wp-block-image"><img decoding="async" loading="lazy" width="1600" height="248" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/image-3.png" alt="" class="wp-image-596599"/></figure>
  2418.  
  2419.  
  2420.  
  2421. <p>To switch fully to the new behavior in your project, enable it in IntelliJ IDEA via Gradle’s settings.</p>
  2422.  
  2423.  
  2424.  
  2425. <p>Add the following to your <code>build.gradle.kts</code>:</p>
  2426.  
  2427.  
  2428.  
  2429. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kotlin {
  2430.     compilerOptions {
  2431.         freeCompilerArgs.add("-Xannotation-default-target=param-property")
  2432.     }
  2433. }
  2434.  
  2435. If you prefer to keep the old behavior, you can use:
  2436.  
  2437. kotlin {
  2438.     compilerOptions {
  2439.         freeCompilerArgs.add("-Xannotation-defaulting=first-only")
  2440.     }
  2441. }</pre>
  2442.  
  2443.  
  2444.  
  2445. <p>Or stay in a transitional mode with warnings:</p>
  2446.  
  2447.  
  2448.  
  2449. <pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kotlin {
  2450.     compilerOptions {
  2451.         freeCompilerArgs.add("-Xannotation-defaulting=first-only-warn")
  2452.     }
  2453. }</pre>
  2454.  
  2455.  
  2456.  
  2457. <p><strong>Why this matters</strong></p>
  2458.  
  2459.  
  2460.  
  2461. <p>This change makes annotation behavior more predictable, reduces boilerplate, and eliminates a class of subtle bugs that Spring and JPA developers have faced for years. It’s also a step toward making Kotlin’s integration with major frameworks smoother.</p>
  2462.  
  2463.  
  2464.  
  2465. <p>More details can be found in<a href="https://youtrack.jetbrains.com/issue/KT-73255" target="_blank" rel="noopener"> KT-73255</a> and <a href="https://github.com/Kotlin/KEEP/blob/main/proposals/KEEP-0402-annotation-target-in-properties.md" target="_blank" rel="noopener">KEEP-402</a>.</p>
  2466.  
  2467.  
  2468.  
  2469. <p>This update is part of our broader initiative to improve the Kotlin + Spring experience. Stay tuned for more inspections, tooling improvements, and language updates that make working with Spring even better.</p>
  2470.  
  2471.  
  2472.  
  2473. <p>Happy coding!</p>
  2474. ]]></content:encoded>
  2475. </item>
  2476. <item>
  2477. <title>Enhanced Vulnerable API Detection in JetBrains IDEs and Qodana</title>
  2478. <link>https://blog.jetbrains.com/idea/2025/09/enhanced-vulnerable-api-detection-in-jetbrains-ides-and-qodana/</link>
  2479. <dc:creator><![CDATA[Dmitry Protsenko]]></dc:creator>
  2480. <pubDate>Wed, 03 Sep 2025 08:20:35 +0000</pubDate>
  2481. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/09/IJ-social-BlogFeatured-1280x720-2x.png</featuredImage> <category><![CDATA[news]]></category>
  2482. <category><![CDATA[plugins]]></category>
  2483. <category><![CDATA[package-checker]]></category>
  2484. <category><![CDATA[security-checks]]></category>
  2485. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=596245</guid>
  2486.  
  2487. <description><![CDATA[At the start of the year, we announced a partnership with Mend.io to maximize code security in JetBrains tools. The partnership provided us with quality data about vulnerable and malicious packages, allowing our IDEs and Qodana to spot them for you in your projects. Over the last few months, we have been working on integrating [&#8230;]]]></description>
  2488. <content:encoded><![CDATA[
  2489. <p>At the start of the year, we <a href="https://blog.jetbrains.com/idea/2025/01/maximize-code-security-in-jetbrains-ides-and-qodana-with-mend-io/" target="_blank" rel="noreferrer noopener">announced</a> a partnership with <a href="http://mend.io" target="_blank" rel="noreferrer noopener">Mend.io</a> to maximize code security in JetBrains tools. The partnership provided us with quality data about vulnerable and malicious packages, allowing our IDEs and <a href="https://www.jetbrains.com/qodana/?source=google&amp;medium=cpc&amp;campaign=EMEA_en_DE_Qodana_Branded&amp;term=qodana&amp;content=700237781266&amp;adgroup=&amp;gad_source=1&amp;gad_campaignid=21312253082&amp;gbraid=0AAAAADloJzigxa4UK63wopjFE-UY98RoR&amp;gclid=Cj0KCQjwzt_FBhCEARIsAJGFWVm_tPhEHwHIEn7xr_zST5jNgh0EZAzyHU1ctk88fmYyTFS0yBxiPQ8aAjV9EALw_wcB" target="_blank" rel="noopener">Qodana</a> to spot them for you in your projects.</p>
  2490.  
  2491.  
  2492.  
  2493. <p>Over the last few months, we have been working on integrating additional data about vulnerable APIs in open-source libraries, provided by the software composition analysis (SCA) data provider. That data has now been delivered to our <a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noreferrer noopener">Package Checker</a> plugin, making it an even more effective tool for maintaining code security.</p>
  2494.  
  2495.  
  2496.  
  2497. <h2 class="wp-block-heading">The <em>Vulnerable API</em> feature</h2>
  2498.  
  2499.  
  2500.  
  2501. <p>The <a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noreferrer noopener">Package Checker</a> plugin is powered by data from <a href="http://mend.io" target="_blank" rel="noreferrer noopener">Mend.io</a> about vulnerable APIs and provides code security analysis to detect the usage of vulnerable methods from open-source libraries.&nbsp;</p>
  2502.  
  2503.  
  2504.  
  2505. <p>Our team has recently been working on enriching <a href="http://mend.io" target="_blank" rel="noreferrer noopener">Mend.io</a> data to cover more public methods from open-source libraries by analyzing call graphs. This means that the plugin has more data at its disposal than ever before, covering more cases.</p>
  2506.  
  2507.  
  2508.  
  2509. <p>The plugin’s <em>Vulnerable API</em> feature works for various languages, including Java, Kotlin, C# (in Rider and ReSharper), JavaScript, TypeScript, and Python. Here’s how to make sure all the necessary inspections are enabled in the active inspection profile:</p>
  2510.  
  2511.  
  2512.  
  2513. <ul>
  2514. <li>First, open the IDE settings (⌘, on macOS or <em>Ctrl+Alt+S</em> on Windows/Linux) and go to <em>Editor </em>|<strong> </strong><em>Inspections</em>.<strong>&nbsp;</strong></li>
  2515.  
  2516.  
  2517.  
  2518. <li>In the search bar, type “Vulnerable API” and you’ll see the list of related inspections (the final list depends on the plugins you have installed).&nbsp;</li>
  2519.  
  2520.  
  2521.  
  2522. <li>Simply select the ones you need from the list.</li>
  2523. </ul>
  2524.  
  2525.  
  2526.  
  2527. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="1964" height="1446" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/CleanShot-2025-09-02-at-12.49.00-2x.png" alt="The Settings window" class="wp-image-596177"/></figure>
  2528.  
  2529.  
  2530.  
  2531. <p><em>The Settings window</em></p>
  2532.  
  2533.  
  2534.  
  2535. <h2 class="wp-block-heading">How to use it</h2>
  2536.  
  2537.  
  2538.  
  2539. <p>The inspections provided by the <em>Vulnerable API</em> feature will highlight vulnerable methods from open-source libraries in your code. When you hover over the highlighted code, you’ll see a list of vulnerabilities found in a given API call. To address the problem, pull up the context actions (⌥⏎ on macOS or <em>Alt+Enter</em> on Windows/Linux) and select <em>Go to file with declared dependency</em> from the menu.&nbsp;</p>
  2540.  
  2541.  
  2542.  
  2543. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="3008" height="1668" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Vulnerable-API-highlighting.png" alt="Vulnerable API highlighting" class="wp-image-596130"/></figure>
  2544.  
  2545.  
  2546.  
  2547. <p><em>Vulnerable API highlighting&nbsp;</em></p>
  2548.  
  2549.  
  2550.  
  2551. <p>This will take you to the place in the build file where the dependency is declared. There, you can again use ⌥⏎ (on macOS) or <em>Alt+Enter</em> (on Windows/Linux) and select <em>Update to unaffected version</em>. The vulnerability list contains links to additional information in the <a href="http://mend.io" target="_blank" rel="noreferrer noopener">Mend.io</a> vulnerability database.</p>
  2552.  
  2553.  
  2554.  
  2555. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="3817" height="2110" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Vulnerable-dependencies-highlighting.png" alt="Vulnerable dependency highlighting" class="wp-image-596141"/></figure>
  2556.  
  2557.  
  2558.  
  2559. <p><em>Vulnerable dependency highlighting</em></p>
  2560.  
  2561.  
  2562.  
  2563. <p>The Package Checker plugin also provides a way to see the list of vulnerabilities in a dedicated window inside the IDE without opening a browser. You can simply use the <em>Show all…</em> link. This will take you to the <em>Vulnerable Dependencies </em>window, which shows the overall state of the project and provides information about every detected vulnerable dependency.</p>
  2564.  
  2565.  
  2566.  
  2567. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="3819" height="2109" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Vulnerable-dependencies-window.png" alt="The Vulnerable Dependencies window" class="wp-image-596152"/></figure>
  2568.  
  2569.  
  2570.  
  2571. <p><em>The Vulnerable Dependencies window</em></p>
  2572.  
  2573.  
  2574.  
  2575. <p>The <em>Vulnerable API</em> and <em>Vulnerable Dependencies</em> features are available in Qodana and can be used in CI/CD or security assessment processes.</p>
  2576.  
  2577.  
  2578.  
  2579. <figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="2387" height="2421" src="https://blog.jetbrains.com/wp-content/uploads/2025/09/Vulnerable-dependencies-in-Qodana.png" alt="Vulnerable API feature in Qodana" class="wp-image-596163"/></figure>
  2580.  
  2581.  
  2582.  
  2583. <p><em>Vulnerable API feature in Qodana</em></p>
  2584.  
  2585.  
  2586.  
  2587. <h2 class="wp-block-heading">Looking ahead</h2>
  2588.  
  2589.  
  2590.  
  2591. <p>These improvements strengthen the existing code security features in JetBrains IDEs and Qodana by providing enhanced vulnerability detection capabilities. Update your IDE to the latest version and enable the <em>Vulnerable API</em> inspections to identify security risks in your codebase.</p>
  2592.  
  2593.  
  2594.  
  2595. <p>You can learn more about the Package Checker plugin from <a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noreferrer noopener">its page</a> on JetBrains Marketplace, and you can find more information about how to use it in <a href="https://www.jetbrains.com/help/idea/package-analysis.html#find-vulnerable-api" target="_blank" rel="noreferrer noopener">the documentation</a>. For more details about our collaboration with <a href="http://mend.io" target="_blank" rel="noreferrer noopener">Mend.io</a>, check out this <a href="https://blog.jetbrains.com/idea/2025/01/maximize-code-security-in-jetbrains-ides-and-qodana-with-mend-io/" target="_blank" rel="noreferrer noopener">blog post</a>.</p>
  2596. ]]></content:encoded>
  2597. </item>
  2598. <item>
  2599. <title>IntelliJ IDEA 2025.2.1 Is Out!</title>
  2600. <link>https://blog.jetbrains.com/idea/2025/08/intellij-idea-2025-2-1/</link>
  2601. <dc:creator><![CDATA[Julia Shashkova]]></dc:creator>
  2602. <pubDate>Fri, 29 Aug 2025 09:34:49 +0000</pubDate>
  2603. <featuredImage>https://blog.jetbrains.com/wp-content/uploads/2025/08/IJ-social-BlogFeatured-202521.png</featuredImage> <category><![CDATA[releases]]></category>
  2604. <category><![CDATA[bug-fix-update]]></category>
  2605. <category><![CDATA[intellij-idea-2025-2]]></category>
  2606. <guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=594278</guid>
  2607.  
  2608. <description><![CDATA[We’ve just released the first minor update for IntelliJ IDEA 2025.2 – v2025.2.1. You can update to this version from inside the IDE, via the Toolbox App, or by using snaps for Ubuntu. You can also download it from our website. This release includes the following improvements: To find out more about the resolved issues, [&#8230;]]]></description>
  2609. <content:encoded><![CDATA[
  2610. <p>We’ve just released the first minor update for IntelliJ IDEA 2025.2 – v2025.2.1.</p>
  2611.  
  2612.  
  2613.  
  2614. <p>You can update to this version from inside the IDE, via the <a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noopener">Toolbox App</a>, or by using snaps for Ubuntu. You can also download it from our <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener">website</a>.</p>
  2615.  
  2616.  
  2617.  
  2618. <p>This release includes the following improvements:</p>
  2619.  
  2620.  
  2621.  
  2622. <ul>
  2623. <li>The IDE correctly interprets and manages EAR artifact configurations as expected. [<a href="https://youtrack.jetbrains.com/issue/IDEA-373295" target="_blank" rel="noopener">IDEA-373295</a>]</li>
  2624.  
  2625.  
  2626.  
  2627. <li>The <em>Create Branch</em> action is now accessible from all parts of the UI again. [<a href="https://youtrack.jetbrains.com/issue/IJPL-199191" target="_blank" rel="noopener">IJPL-199191</a>]</li>
  2628.  
  2629.  
  2630.  
  2631. <li>Exporting diagrams as SVG now works as intended. [<a href="https://youtrack.jetbrains.com/issue/IJPL-174653" target="_blank" rel="noopener">IJPL-174653</a>]</li>
  2632.  
  2633.  
  2634.  
  2635. <li>Maven Runner now properly recognizes and handles JVM options starting with the -X prefix in the <em>VM Options</em> field as expected. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376845" target="_blank" rel="noopener">IDEA-376845</a>]</li>
  2636.  
  2637.  
  2638.  
  2639. <li>Terminal processes again terminate correctly on Windows. [<a href="https://youtrack.jetbrains.com/issue/IJPL-159752" target="_blank" rel="noopener">IJPL-159752</a>]</li>
  2640.  
  2641.  
  2642.  
  2643. <li>The IDE again correctly recognizes valid WebLogic server home paths and runs the WebLogic server. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376172" target="_blank" rel="noopener">IDEA-376172</a>, <a href="https://youtrack.jetbrains.com/issue/IDEA-377454" target="_blank" rel="noopener">IDEA-377454</a>]</li>
  2644.  
  2645.  
  2646.  
  2647. <li>The IDE now correctly runs the main() functions in Kotlin projects built with Gradle 9.0. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376030" target="_blank" rel="noopener">IDEA-376030</a>]</li>
  2648.  
  2649.  
  2650.  
  2651. <li>Maven run configurations again properly recognize and execute custom POM files specified with the -f option. [<a href="https://youtrack.jetbrains.com/issue/IDEA-376875" target="_blank" rel="noopener">IDEA-376875</a>]&nbsp;</li>
  2652. </ul>
  2653.  
  2654.  
  2655.  
  2656. <p>To find out more about the resolved issues, please refer to the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662491/IntelliJ-IDEA-2025.2.1-252.25557.131-build-Release-Notes" data-type="link" data-id="https://youtrack.jetbrains.com/articles/IDEA-A-2100662491/IntelliJ-IDEA-2025.2.1-252.25557.131-build-Release-Notes" target="_blank" rel="noopener">release notes</a>.</p>
  2657.  
  2658.  
  2659.  
  2660. <p>If you encounter any issues or would like to make a suggestion or a feature request, please submit them to our <a href="https://youtrack.jetbrains.com/issues/IDEA" target="_blank" rel="noopener">issue tracker</a>.</p>
  2661.  
  2662.  
  2663.  
  2664. <p>Happy developing!</p>
  2665. ]]></content:encoded>
  2666. </item>
  2667. </channel>
  2668. </rss>
  2669.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda