<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog</title>
	<atom:link href="https://blog.jetbrains.com/idea/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.jetbrains.com</link>
	<description>Developer Tools for Professionals and Teams</description>
	<lastBuildDate>Fri, 17 Jul 2026 20:47:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.jetbrains.com/wp-content/uploads/2024/01/cropped-mstile-310x310-1-32x32.png</url>
	<title>IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog</title>
	<link>https://blog.jetbrains.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What&#8217;s New in IntelliJ IDEA 2026.2</title>
		<link>https://blog.jetbrains.com/idea/2026/07/intellij-idea-2026-2/</link>
		
		<dc:creator><![CDATA[Maria Kosukhina]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 16:00:50 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/07/IJ-IDEA-2026.1.png</featuredImage>		<category><![CDATA[releases]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=723179</guid>

					<description><![CDATA[IntelliJ IDEA 2026.2 is here! This version brings updates designed to streamline your workflows and help you confidently adopt the latest innovations across the Java ecosystem.&#160; You can download this latest release from our&#160;website&#160;or update to it directly from inside the IDE, via the free&#160;Toolbox App, or using snap packages for Ubuntu. Explore the What’s [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>IntelliJ IDEA 2026.2 is here! </p>



<p>This version brings updates designed to streamline your workflows and help you confidently adopt the latest innovations across the Java ecosystem.&nbsp;</p>



<p>You can download this latest release from our&nbsp;<a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noreferrer noopener">website</a>&nbsp;or update to it directly from inside the IDE, via the free&nbsp;<a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noreferrer noopener">Toolbox App</a>, or using snap packages for Ubuntu.</p>



<p>Explore the <strong><a href="https://www.jetbrains.com/idea/whatsnew/" target="_blank" rel="noopener">What’s New page</a></strong> for a complete overview of the key new features, including detailed explanations and demos.</p>



<p align="center"><a class="jb-download-button" href="https://www.jetbrains.com/idea/whatsnew/" target="_blank" rel="noopener">Explore the What&#8217;s New page</a></p>



<p>In addition, our developer advocates have recorded a walkthrough video covering all the release highlights. Check it out!</p>



<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">
<iframe title="What&#039;s New in IntelliJ IDEA 2026.2" src="https://www.youtube.com/embed/1wzW-gM9OZE?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>
</div></figure>



<p>IntelliJ IDEA 2026.2 adds day-one support for Java 27 and the latest Kotlin 2.4 language features, helping you stay up to date with the newest JVM technologies. This release also streamlines Spring development with improved database migration workflows and richer Spring Security insights, while making debugging more powerful with new logpoints and enhanced navigation from runtime output to source code. </p>



<p>Here are the key highlights of this release:</p>



<p>AI upgrades:</p>



<ul class="wp-block-list">
<li>Native GitHub Copilot integration</li>



<li>Agent skills</li>



<li>AI completion support for third-party providers</li>
</ul>



<p></p>



<p>Productivity-enhancing features:</p>



<ul class="wp-block-list">
<li>Logpoints</li>



<li>Dependency completion</li>



<li>Early Gradle 10 support and migration assistance</li>



<li>Streamlined Git conflict resolution flow</li>



<li>Docker Compose improvements</li>
</ul>



<p></p>



<p>Support for new technologies:</p>



<ul class="wp-block-list">
<li>Java 27</li>



<li>Kotlin 2.4 Stable features</li>



<li>Spring support improvements </li>



<li>Terraform testing framework </li>



<li>TypeScript 7.0 </li>
</ul>



<p></p>



<p>Version 2026.2 also delivers numerous stability, performance, and usability improvements across the platform. These are described in a separate <a href="https://blog.jetbrains.com/idea/2026/07/whats-fixed-intellij-idea-2026-2/">What’s Fixed blog post</a>.</p>



<p>Let us know what you think about the new features in this release, as your feedback helps us shape the product so it works even better for you.</p>



<p><a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener">Update to IntelliJ IDEA 2026.2 now</a> to try out these new features. Don&#8217;t forget to join us on <a href="https://x.com/IntelliJIDEA">X</a>, <a href="https://bsky.app/profile/intellijidea.com/" target="_blank" rel="noopener">Bluesky</a>, or <a href="https://www.linkedin.com/showcase/intellijidea" target="_blank" rel="noopener">LinkedIn</a>, and be sure to share your favorite updates.</p>



<p>Thank you for using IntelliJ IDEA!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What’s fixed in IntelliJ IDEA 2026.2</title>
		<link>https://blog.jetbrains.com/idea/2026/07/whats-fixed-intellij-idea-2026-2/</link>
		
		<dc:creator><![CDATA[Dmitriy Smirnov]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 15:57:45 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/07/Whats-Fixed-in-IntelliJ-IDEA-2026.2.png</featuredImage>		<category><![CDATA[releases]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=721935</guid>

					<description><![CDATA[Welcome to an overview of the most important fixes and usability improvements in IntelliJ IDEA 2026.2. This release brings more than 1,300 bug fixes and usability improvements, and it addresses 140 freezes and other performance issues identified through internal diagnostics and user reports. Below is a recap of the most impactful updates. Performance Responsiveness remains [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Welcome to an overview of the most important fixes and usability improvements in IntelliJ IDEA 2026.2.</p>
<p>This release brings more than <a href="https://youtrack.jetbrains.com/issues?q=Project:%20IDEA,%20IJPL,%20WEB,%20KTIJ%20%20Available%20in:%202026.2*%20%23resolved%20sort%20by:%20votes%20visible%20to:%20%7Bissue%20readers%7D%20Type:%20Bug,%20%7BUsability%20Problem%7D&amp;page=2" target="_blank" rel="noopener">1,300 bug fixes and usability improvements</a>, and it addresses <a href="https://youtrack.jetbrains.com/issues?q=project:%20%7BIntelliJ%20Platform%7D,%20%7BIntelliJ%20IDEA%7D%20,%20%7BKotlin%20IntelliJ%20IDEA%20plugin%7D,%20WebStorm%20%20%23%7BPerformance%20Problem%7D%20%7BAvailable%20in%7D:%202026.2*%20%23Resolved%20" target="_blank" rel="noopener">140 freezes and other performance issues</a> identified through internal diagnostics and user reports. Below is a recap of the most impactful updates.</p>
<h2><strong>Performance</strong></h2>
<p>Responsiveness remains a top priority. IntelliJ IDEA 2026.2 includes fixes for more <a href="https://youtrack.jetbrains.com/issues?q=project:%20%7BIntelliJ%20Platform%7D,%20%7BIntelliJ%20IDEA%7D%20,%20%7BKotlin%20IntelliJ%20IDEA%20plugin%7D,%20WebStorm%20%20%23%7BPerformance%20Problem%7D%20%7BAvailable%20in%7D:%202026.2*%20%23Resolved%20" target="_blank" rel="noopener">than 140 freezes and other performance issues</a>.</p>
<p>When editing Markdown files, the IDE is now much more responsive, improving the experience of writing specifications for agents</p>
<p>Projects opened natively in WSL or Docker environments should stall less often.</p>
<p>Editor file saves are now asynchronous. Writing a file to disk no longer blocks the UI thread, reducing the likelihood of freezes during save operations. If you develop IDE plugins, please refer to this <a href="https://blog.jetbrains.com/platform/2026/06/async-vfs-content-writes-what-plugin-authors-need-to-know/">dedicated blog post</a> for migration guidance.</p>
<p>The custom file chooser now loads directories using asynchronous I/O and lazily expandable nodes, reducing UI freezes and making navigation more responsive in large or remote directory structures. The custom file chooser is primarily used in WSL, Dev Containers, and remote development environments, but you can also use it more broadly by disabling the <em>Use native file chooser dialog</em> option in <em>Advanced Settings</em> on Windows or macOS.</p>
<p>The loading of Spring configuration metadata is also faster and more stable. We resolved issues that could cause excessive memory consumption, endless metadata collection loops, and exceptions during Spring Boot configuration analysis.</p>
<h2><strong>Spring</strong></h2>
<p>To ensure readability and help you better understand code written by others, whether humans or agents, we are doubling down on fixes related to code resolution, navigation, and usage detection.</p>
<p>Note that some of these improvements are planned for the IntelliJ IDEA 2026.2.1 update.</p>
<h3><strong>Spring Boot configuration properties</strong></h3>
<p>IntelliJ IDEA now handles more configuration patterns correctly in <code>application.properties</code> files, YAML files, annotations, test configurations, Kotlin classes, Java records, nested objects, maps, lists, and custom configuration classes. Resolution, highlighting, completion, navigation, and <code>@ConfigurationProperties</code> mapping have all been improved.</p>
<p>See YouTrack issue <a href="https://youtrack.jetbrains.com/issue/IDEA-370087/Spring-Boot-configuration-design-time-support" target="_blank" rel="noopener"><strong>IDEA-370087</strong></a> for the full list of fixes.</p>
<h3><strong>Spring Security <span class="release-tag" style="display: inline-block; padding: 0.1em 0.5em; border: 1px solid currentColor; border-radius: 999px; font-size: 0.8em; font-weight: 600; line-height: 1.4; white-space: nowrap; vertical-align: baseline;">2026.2.1</span></strong></h3>
<p>IntelliJ IDEA recognizes more ways to define request matchers, including paths supplied as arrays, the <code>requestMatchers(RequestMatcher...)</code> overload, and matchers created with <code>PathPatternRequestMatcher.pathPattern(...)</code>. For example, the IDE will recognize and highlight <code>new RegexRequestMatcher(pattern, method)</code> as a regular expression. SpEL expressions in <code>@PreAuthorize</code> and other security annotations will correctly understand all usages of <code>this</code>.</p>
<p>New inspections will help identify ordering problems in a <code>SecurityFilterChain</code>, warning you, for example, when <code>requestMatchers()</code> are placed after <code>anyRequest()</code>.</p>
<p>See YouTrack issue <a href="https://youtrack.jetbrains.com/issue/IDEA-391028" target="_blank" rel="noopener"><strong>IDEA-391028</strong></a> for the complete list of improvements.</p>
<h3><strong>Spring Cache <span class="release-tag" style="display: inline-block; padding: 0.1em 0.5em; border: 1px solid currentColor; border-radius: 999px; font-size: 0.8em; font-weight: 600; line-height: 1.4; white-space: nowrap; vertical-align: baseline;">2026.2.1</span></strong></h3>
<p>Support for Spring Cache annotations, including <code>@Cacheable</code>, <code>@CachePut</code>, <code>@CacheEvict</code>, and <code>@Caching</code>, is becoming more accurate, with better SpEL expression validation and proper usage detection for methods referenced only through a <code>#root.target</code> expression</p>
<p>Additionally, inspections for conflicting <code>@Cacheable</code> and <code>@CachePut</code>, for <code>#</code> prefixes missing from <code>root</code> or <code>result</code>, and others no longer produce false positives.</p>
<p>See YouTrack issue <a href="https://youtrack.jetbrains.com/issue/IDEA-390707/Spring-Cache-improve-plugin-quality" target="_blank" rel="noopener"><strong>IDEA-390707</strong></a> for the full list of fixes.</p>
<h3><strong>Spring Events <span class="release-tag" style="display: inline-block; padding: 0.1em 0.5em; border: 1px solid currentColor; border-radius: 999px; font-size: 0.8em; font-weight: 600; line-height: 1.4; white-space: nowrap; vertical-align: baseline;">2026.2.1</span></strong></h3>
<p>Improvements to the Spring Events support provide more reliable navigation between event publishers and listeners, including <code>ApplicationListener</code> implementations that listen for a base event type, events published through generic methods, custom generic events implementing <code>ResolvableTypeProvider</code>, and <code>publishEvent</code> calls made through method references</p>
<p>New inspections warn you when an <code>@EventListener</code> method listens for an early Spring Boot lifecycle and detect potentially incorrect combinations of <code>@TransactionalEventListener</code> and <code>@Transactional</code> that can otherwise fail only at runtime.</p>
<p>See YouTrack issue <a href="https://youtrack.jetbrains.com/issue/IDEA-390826/Spring-Events-plugin-quality" target="_blank" rel="noopener"><strong>IDEA-390826</strong></a> for the full list of improvements.</p>
<h3><strong>Thymeleaf</strong></h3>
<p>IntelliJ IDEA’s Thymeleaf support is now more reliable across expressions, tags, attributes, JavaScript inlining, completion, and property resolution. The IDE recognizes more expression forms, including inline output, bracket-based map access, nested selections, and <code>T()</code> references, while eliminating false warnings for common Thymeleaf and Layout dialect constructs. JavaScript expressions inside <code>&lt;script th:inline="javascript"&gt;</code> are handled correctly, numeric property keys now resolve as expected, and the <em>Empty tag</em> inspection can be disabled for Thymeleaf templates.</p>
<p>See YouTrack issue <a href="https://youtrack.jetbrains.com/issue/IDEA-370051/Thymeleaf-improve-plugin-quality" target="_blank" rel="noopener"><strong>IDEA-370051</strong></a> for the complete list of updates.</p>
<h2><strong>Kotlin</strong></h2>
<h3><strong>Server-side</strong></h3>
<p>We’re continuing to close the gaps between the Java and Kotlin support in Spring-based server-side projects.</p>
<p>IntelliJ IDEA can now configure Kotlin support for Lombok and other annotation processors through <code>kapt</code> automatically, reducing the amount of manual project setup required. These changes should make mixed Java and Kotlin projects more predictable.</p>
<h3><strong>Kotlin completion in Java code</strong></h3>
<p>IntelliJ IDEA’s Java code completion now also suggest Kotlin extension functions and companion object members. More complete and better sorted suggestions make working in mix-language codebases easier.</p>
<h3><strong>Removal of K1</strong></h3>
<p>With K2 adoption now above 99% across IntelliJ IDEA and Android Studio, we have removed the remaining K1-mode options and relevant code from the product.</p>
<h2><strong>Editor and navigation</strong></h2>
<p>The Markdown integration now supports standard footnotes, allowing the proper use of <code>[^label]</code> syntax. This resolves a long-standing feature request and makes it easier to work with technical documentation, articles, and other reference-heavy content directly in the IDE.</p>
<p>The IDE now knows how to keep your bookmarks when you switch Git branches. If you want to have your bookmarks preserved, disable the <em>Enable bookmark context restoration on branch switching</em> option in <em>Settings | Advanced Settings</em>.</p>
<p>When searching for classes, files, or symbols in <em>Search Everywhere</em>, IntelliJ IDEA now remembers the scope you selected, such as <em>Project Files</em>, <em>Project and Libraries</em>, or a custom scope. The same selection is restored automatically the next time you start a search.</p>
<p>Double-press shortcuts, such as <em>Shift+Shift</em> for <em>Search Everywhere</em> and <em>Ctrl+Ctrl</em> for <em>Run Anything</em>, are now fully customizable in <em>Settings | Keymap</em>.</p>
<h2><strong>User interface</strong></h2>
<p><em><strong>Islands</strong></em> <strong>theme color coding</strong></p>
<p>Colors assigned to scopes, such as test files or non-project files, remain visible when the tab is active, making it easier to identify the type of file you are currently editing at a glance.</p>
<h2><strong>Bundled plugins</strong></h2>
<h3><strong>Deprecation of the Machine Learning Code Completion (Ranking) plugin</strong></h3>
<p>The Machine Learning Code Completion plugin, which improved ranking, is being deprecated and will no longer be bundled with IntelliJ IDEA.</p>
<p>As AI completion, next edit suggestions, and coding agents have become the main forms of intelligent development assistance, the benefits of ML-based completion ranking have declined significantly.</p>
<p>The plugin <a href="https://plugins.jetbrains.com/plugin/28632-machine-learning-code-completion" target="_blank" rel="noopener">remains available</a> from JetBrains Marketplace, so you can install it separately and continue using it where needed.</p>
<h3><strong>Unbundling of the Task Management and Time Tracking plugins</strong></h3>
<p>The <a href="http://plugins.jetbrains.com/plugin/11545-task-management/versions" target="_blank" rel="noopener">Task Management</a> and <a href="https://plugins.jetbrains.com/plugin/11546-time-tracking" target="_blank" rel="noopener">Time Tracking</a> plugins have also been removed from the default IntelliJ IDEA distribution.</p>
<p>Both plugins saw relatively low usage, and unbundling them helps keep the standard installation leaner. Their functionality has not changed, and both plugins can still be installed directly from JetBrains Marketplace.</p>
<h3><strong>More relevant plugin search results</strong></h3>
<p>Plugins will be easier to find, as searching for them in <em>Settings | Plugins</em> now produces better-ranked results.</p>
<p>Previously, all plugins containing the search text in either their name or description could appear in an arbitrary order, but now name matches are prioritized.</p>
<h2><strong>Conclusion</strong></h2>
<p>Let us know which fixes make the biggest difference in your workflow and where you still encounter friction. Your reports, feedback, and sample projects help us understand which issues have the greatest impact and what we should prioritize next.</p>
<p>Try IntelliJ IDEA 2026.2 and share your favorite improvements with us on X, Bluesky, or LinkedIn.</p>
<p>Thank you for using IntelliJ IDEA!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IntelliJ Scala Plugin 2026.2 Is Out!</title>
		<link>https://blog.jetbrains.com/scala/2026/07/14/scala-plugin-2026-2/</link>
		
		<dc:creator><![CDATA[Maciej Gorywoda]]></dc:creator>
		<pubDate>Tue, 14 Jul 2026 11:00:00 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/07/cover-1.png</featuredImage>		<product ><![CDATA[idea]]></product>
		<product ><![CDATA[scala]]></product>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[scala-programming]]></category>
		<category><![CDATA[2026-2]]></category>
		<category><![CDATA[intellij-idea]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=scala&#038;p=720459</guid>

					<description><![CDATA[Hello everyone, The new release of IntelliJ IDEA introduces a few new features for Scala developers that we’ve been working on for some time, as well as a number of fixes and improvements. We hope that they will make your Scala experience even better than before. Build tool support The logic behind sbt tasks in [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>Hello everyone,</p>



<p>The new release of IntelliJ IDEA introduces a few new features for Scala developers that we’ve been working on for some time, as well as a number of fixes and improvements. We hope that they will make your Scala experience even better than before.</p>



<p></p>



<h2 class="wp-block-heading">Build tool support</h2>



<p>The logic behind sbt tasks in run/debug configurations has been reworked and now allows for a wider range of sbt commands. This enabled us to fix an issue where passing multiple parameters to an sbt command was either interpreted as a single parameter or caused the command name to be treated as an additional parameter. To work around this, developers had to run the task in the sbt shell instead. The new logic is much simpler: We no longer modify the user input. Instead, the input is expected to be a valid sbt command, e.g. tasks must be separated with semicolons, and we do not unquote the input.</p>



<figure class="wp-block-image size-full"><img style="width:100% !important; height:auto !important; max-width:100% !important;" fetchpriority="high" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/07/RunConfig.png" alt="" class="wp-image-720466"/></figure>



<p>Additionally, we’ve fixed a bug in the sbt shell where sync failed after waiting for user input. Also, previously, sbt import would not work if the <strong>.jvmopts</strong> file contained key-value pairs separated by a whitespace, such as <code>--add-exports java.base/sun.nio.ch=ALL-UNNAMED</code> – we’ve fixed this, too.</p>



<p>Separate ScalaTest tests can now be run through Bazel. Previously, this functionality was implemented on the Bazel side, but with the introduction of the new official JetBrains Bazel plugin, it made more sense to move it to the Scala plugin. And, by the way, this is an external contribution from one of our users!</p>



<p></p>



<h2 class="wp-block-heading">WSL and Docker</h2>



<p>Starting with IntelliJ IDEA 2026.2, WSL and Docker support covers not only sbt projects, but also BSP projects and projects built with other BSP-based tools, such as Mill, Scala CLI, and Bloop. On top of that, we’ve stabilized WSL support and fixed several bugs where sbt imports and re-running tests used to fail in WSL.</p>



<p></p>



<h2 class="wp-block-heading">Scala 3</h2>



<p>The new release includes full support for <a href="https://docs.scala-lang.org/sips/clause-interleaving.html" target="_blank" rel="noopener">Clause Interleaving (SIP-47)</a>, which is a standard feature as of Scala 3.6. This allows IntelliJ IDEA to support previously impossible combinations of type parameters and regular parameters. This is illustrated in the <code>getOrElse</code> method declaration below, where it is necessary to know the instance of the <code>key</code> parameter to properly calculate the type bound of the <code>default</code> parameter:</p>



<figure class="wp-block-image size-full"><img style="width:100% !important; height:auto !important; max-width:100% !important;" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/07/scala3.png" alt="" class="wp-image-720519"/></figure>



<p>The update method in that code example also shows that we now support dependent parameter types belonging to the same clause. Previously, the example would have worked only if <code>key</code> and <code>value</code> had been placed in separate, single-parameter clauses.</p>



<p>On the error-highlighting front, we’re working on improving support for match types in the built-in highlighting. This new release supports type-level operations, as shown in the code example below. We’re working on expanding this support to cover some missing corner cases.</p>



<figure class="wp-block-image size-full"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/07/matchtypes.png" alt="" class="wp-image-720530"/></figure>



<p>We’ve also fixed a bug where calling a synthetic companion object could not be resolved, and another one where a wrong number of indents could lead to changed semantics.</p>



<p></p>



<h2 class="wp-block-heading">Code completion</h2>



<p>In v2026.2, we introduce support for Scala in a recently added IntelliJ IDEA feature, command completion. You are likely already familiar with the behavior where, if you type a dot (.) after a symbol (be it a class, a method, or a value name), IntelliJ IDEA opens a code completion window. Now, if you type two dots quickly one after another, another popup will appear with suggestions for commands that might be useful in the situation. You can learn more from <a href="https://blog.jetbrains.com/idea/2025/11/universal-entry-point-a-single-entry-point-for-context-aware-coding-assistance/">our blog post dedicated to command completion</a> or watch the screen recording below.</p>



<figure class="wp-block-video"><video controls src="https://blog.jetbrains.com/wp-content/uploads/2026/07/CommandCompletion.mp4"></video></figure>



<p></p>



<h2 class="wp-block-heading">Other improvements</h2>



<p>Additionally, we’ve improved the handling of <code>@throws</code> directives and of link references in ScalaDoc. The <code>@Language</code> injection annotation is now recognized on <code>apply</code> methods in case classes and implicit classes, and we’ve fixed an issue with how single tests are discovered in mUnit. Further improvements include a new version of the quick-fix for using <code>scala.compiletime.uninitialized</code> instead of <code>null</code> in null-initialized variables, as well as improved handling of nullable variables.</p>



<p>As always, we welcome your feedback. Please report any issues you find in<a href="https://youtrack.jetbrains.com/issues/SCL" target="_blank" rel="noopener"> YouTrack</a>. If you have any questions, feel free to ask us on<a href="https://discord.com/channels/931170831139217469" target="_blank" rel="noopener"> Discord</a>.</p>



<p></p>



<p>Happy developing!</p>



<p class="has-text-align-right">The Scala team at JetBrains</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Java Annotated Monthly – July 2026 </title>
		<link>https://blog.jetbrains.com/idea/2026/07/java-annotated-monthly-july-2026/</link>
		
		<dc:creator><![CDATA[Irina Mariasova]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 09:15:19 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/07/IJ-social-BlogFeatured-1280x720-1.png</featuredImage>		<category><![CDATA[news]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[ai-in-ij]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java-annotated]]></category>
		<category><![CDATA[java-annotated-monthly]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[spring]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=719980</guid>

					<description><![CDATA[Welcome back to another edition of Java Annotated Monthly! As always, we&#8217;ve rounded up the best reads from across the ecosystem so you don&#8217;t have to go hunting yourself. This month&#8217;s lineup spans the usual favorites: fresh finds from the Java and Kotlin worlds, a healthy dose of AI developments worth your attention, and a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Welcome back to another edition of Java Annotated Monthly! As always, we&#8217;ve rounded up the best reads from across the ecosystem so you don&#8217;t have to go hunting yourself.</p>



<p>This month&#8217;s lineup spans the usual favorites: fresh finds from the Java and Kotlin worlds, a healthy dose of AI developments worth your attention, and a few detours into other technologies that caught our eye.&nbsp;</p>



<p>We&#8217;re also delighted that Tom Cools is sharing his content highlight of the month with us!</p>



<p>As always, we&#8217;ve found the upcoming events you&#8217;ll want on your calendar, plus a handful of topics worth debating or quietly thinking about on your next coffee break.</p>



<p>So grab a coffee, give your AI agents a moment to finish coding, and dig in – there&#8217;s a lot of good stuff below!</p>



<h2 class="wp-block-heading">Featured Content&nbsp;</h2>



<h3 class="wp-block-heading">Tom Cools&nbsp;</h3>


    <div class="about-author ">
        <div class="about-author__box">
            <div class="row">
                                                            <div class="about-author__box-img">
                            <img style="width:100% !important; height:auto !important; max-width:100% !important;" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/07/image2-1.png" alt="" loading="lazy">
                        </div>
                                        <div class="about-author__box-text">
                                                    <h4>Tom Cools </h4>
                                                <p><span style="font-weight: 400;">Tom regularly presents at conferences and organizes the Belgian Java User Group (</span><a href="https://www.bejug.org/" target="_blank" rel="noopener"><span style="font-weight: 400;">BeJUG</span></a><span style="font-weight: 400;">). He works for </span><a href="https://timefold.ai/" target="_blank" rel="noopener"><span style="font-weight: 400;">Timefold</span></a><span style="font-weight: 400;">, a Java-rooted planning optimization company solving complex problems like employee shift scheduling, vehicle routing, and task assignment. The team recently shipped </span><a href="https://timefold.ai/blog/timefold-solver-2.0-release" target="_blank" rel="noopener"><span style="font-weight: 400;">Timefold Solver 2.0</span></a><span style="font-weight: 400;">, its first major version in three years.</span></p>
                    </div>
                            </div>
        </div>
    </div>



<p>June kicked off with <a href="https://jspring.nl/" target="_blank" rel="noopener">J-Spring</a>, the international Java conference organized by NLJUG, which took place on June 4 in Utrecht. I gave a talk there, <em>LLMs Can&#8217;t Optimize Schedules, but AI Can</em>, but the real highlights of the day for me were other people&#8217;s sessions.</p>



<p>At the top of that list was the keynote from <a href="https://www.felienne.nl/" target="_blank" rel="noopener">Felienne Hermans</a>, one of my favorite people in our field and the author of one of my favorite books, <a href="https://www.manning.com/books/the-programmers-brain" target="_blank" rel="noopener"><em>The Programmer&#8217;s Brain</em></a> (Manning). If you haven&#8217;t read it yet, go do it.</p>



<p>Another session that stuck with me was <a href="https://hollycummins.com/" target="_blank" rel="noopener">Holly Cummins</a>’s talk on benchmarking, <a href="https://speakerdeck.com/hollycummins/when-benchmarks-go-bad-what-i-learned-from-measuring-performance-wrong?slide=166" target="_blank" rel="noopener"><em>When benchmarks go bad: what I learned from measuring performance wrong</em></a>. It was a great reality check that you can&#8217;t have it all in life, and that &#8220;benchmarking&#8221; can mean wildly different things depending on what you&#8217;re trying to measure and who&#8217;s doing the measuring. Well worth a click through the slides.</p>



<p>June was also a big month for the Java platform itself – Valhalla is finally coming. On June 15, <a href="https://openjdk.org/jeps/401" target="_blank" rel="noopener">JEP 401</a> (Value Classes and Objects) was confirmed for integration into mainline OpenJDK, targeting JDK 28. <a href="https://www.linkedin.com/in/arturskowronski/" target="_blank" rel="noopener">Artur Skowroński</a> wrote an excellent deep-dive in JVM Weekly, <a href="https://www.jvm-weekly.com/p/project-valhalla-explained-how-a" target="_blank" rel="noopener"><em>Project Valhalla, Explained: How a Decade of Work Arrives in JDK 28</em></a>. Go read it!&nbsp;</p>



<p>Looking ahead, I&#8217;m excited to spend the summer really experimenting with agentic frameworks, <a href="https://www.jetbrains.com/koog/" target="_blank" rel="noopener">Koog</a>, <a href="https://pi.dev/" target="_blank" rel="noopener">Pi</a>, and others to see how we can deliver better software&#8230;faster is a nice extra.</p>



<h2 class="wp-block-heading">Java News</h2>



<p>Let&#8217;s kick things off with the latest from the Java world:&nbsp;</p>



<ul class="wp-block-list">
<li>Java News Roundup <a href="https://www.infoq.com/news/2026/06/java-news-roundup-may25-2026/?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/2026/06/java-news-roundup-jun01-2026/?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/2026/06/java-news-roundup-jun08-2026/?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/2026/06/java-news-roundup-jun15-2026/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">4</a>, <a href="https://www.infoq.com/news/2026/06/java-news-roundup-jun22-2026/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">5</a></li>



<li><a href="https://inside.java/2026/06/05/jep538-target-jdk27/" target="_blank" rel="noopener">JEP targeted to JDK 27: 538: PEM Encodings of Cryptographic Objects (3rd Preview)</a></li>



<li><a href="https://inside.java/2026/06/07/java-next-language-features" target="_blank" rel="noopener">JavaNext Language Features</a></li>



<li><a href="https://inside.java/2026/06/09/jdk-26-performance-improvements" target="_blank" rel="noopener">Performance Improvements in JDK 26</a></li>
</ul>



<h2 class="wp-block-heading">Java Tutorials and Tips</h2>



<p>Next up, a handful of tutorials and tips to sharpen your skills and maybe teach an old codebase a few new tricks:&nbsp;</p>



<ul class="wp-block-list">
<li><a href="https://inside.java/2026/06/02/jfr-ai-monitor/" target="_blank" rel="noopener">Intelligent JVM Monitoring: Combining JDK Flight Recorder with AI</a></li>



<li><a href="https://inside.java/2026/05/28/podcast-059/" target="_blank" rel="noopener">Episode 59 “Java *is* Memory Efficient” [AtA]</a> </li>



<li><a href="https://donraab.medium.com/ternary-predicate-and-pattern-matching-for-fizzbuzz-with-java-26-646c812a137b" target="_blank" rel="noopener">Ternary, Predicate, and Pattern Matching for FizzBuzz with Java 26</a></li>



<li><a href="https://www.youtube.com/watch?v=xfl2NfNSj4Y" target="_blank" rel="noopener">GeeCON 2026: Discussion panel &#8211; Java 27 and Beyond: What Excites You, and Which Myths Need to Die</a></li>



<li><a href="https://www.youtube.com/watch?v=tpz-FSs6oO4" target="_blank" rel="noopener">Nulls are dead &#8211; Moritz Halbritter | IntelliJ IDEA Tech Talks</a></li>



<li><a href="https://dzone.com/articles/ai-powered-java-apps-jakarta" target="_blank" rel="noopener">Building AI-Powered Java Applications With Jakarta EE and LangChain4j</a></li>



<li><a href="https://dzone.com/articles/agentic-workflows-java-quarkus" target="_blank" rel="noopener">Getting Started With Agentic Workflows in Java and Quarkus</a></li>



<li><a href="https://blog.vanillajava.blog/2026/06/why-you-should-tun-code-before-your.html" target="_blank" rel="noopener">Why You Should Tune Code Before Your Garbage Collector</a></li>



<li><a href="https://foojay.io/today/jakarta-ee-is-ready-for-ai-but-dont-just-take-my-word-for-it/" target="_blank" rel="noopener">Jakarta EE is Ready for AI – But Don’t Just Take My Word for It!</a></li>



<li><a href="https://foojay.io/today/tiberius-a-security-testing-framework-for-llm-applications-in-java/" target="_blank" rel="noopener">Tiberius: A Security Testing Framework for LLM Applications in Java</a></li>



<li><a href="https://www.infoq.com/presentations/java-aws-serverless/" target="_blank" rel="noopener">Practical Performance Tuning for Serverless Java on AWS</a> </li>



<li><a href="https://inside.java/2026/06/25/podcast-060/" target="_blank" rel="noopener">Episode 60 “How JEPs Drive Java&#8217;s Evolution” [AtA]</a></li>



<li><a href="https://stripe.dev/blog/modern-java-at-stripe-language-upgrades-as-a-service" target="_blank" rel="noopener">Modern Java at Stripe: Language upgrades as a service</a></li>
</ul>



<h2 class="wp-block-heading">Kotlin Corner</h2>



<p>Here&#8217;s what&#8217;s been keeping the Kotlin community busy this month:</p>



<ul class="wp-block-list">
<li><a href="https://kotlinlang.org/kotlin-effect/" target="_blank" rel="noopener">Kotlin turns 15 </a></li>



<li><a href="https://blog.jetbrains.com/kotlin/2026/07/kotlin-comes-to-bluej/">Kotlin comes to BlueJ </a></li>



<li><a href="https://kotlinfoundation.org/news/grant-program-for-library-authors-2026/" target="_blank" rel="noopener">Apply for the 2026 Kotlin Foundation Grant Program for Library Authors</a></li>



<li><a href="https://blog.jetbrains.com/amper/2026/06/kotlin-toolchain-0-11/">Kotlin Toolchain 0.11: The Next Step for Amper</a></li>
</ul>



<h2 class="wp-block-heading">AI&nbsp;</h2>



<p>In AI, this month brought plenty of new tools, ideas, and developments worth a closer look:&nbsp;</p>



<ul class="wp-block-list">
<li><a href="https://glaforge.dev/posts/2026/06/07/customizing-antigravity-cli-title-and-statusline/" target="_blank" rel="noopener">Customizing Antigravity CLI: Title and Status Line</a></li>



<li><a href="https://skamille.medium.com/guidelines-for-respectful-use-of-ai-affcc85d7072" target="_blank" rel="noopener">Guidelines for Respectful Use of AI</a></li>



<li><a href="https://charitydotwtf.substack.com/p/ai-enthusiasts-are-in-a-race-against" target="_blank" rel="noopener">AI enthusiasts are in a race against time, AI skeptics are in a race against entropy</a></li>



<li><a href="https://blog.frankel.ch/ai-gateways/" target="_blank" rel="noopener">AI gateways: why and how</a> </li>



<li><a href="https://rabauer.dev/en/blog/junie-intellij-spec-driven/" target="_blank" rel="noopener">Junie, IntelliJ, and Spec-Driven Development</a></li>



<li><a href="https://yusufaytas.com/vibe-coder-vs-software-engineer" target="_blank" rel="noopener">Vibe Coder vs Software Engineer</a></li>



<li><a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/" target="_blank" rel="noopener">Building an AI-Powered Operations Assistant with Spring AI and MongoDB Atlas — Part 2: </a></li>



<li><a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-2-conversational-memory/" target="_blank" rel="noopener">Conversational Memory</a></li>



<li><a href="https://www.youtube.com/watch?v=Qt8kLAQQYJE" target="_blank" rel="noopener">Stop Pasting Tokens: OAuth2 for JetBrains IDE Plugins</a></li>



<li><a href="https://henrikwarne.com/2026/05/31/with-claude-less-coding-more-testing/" target="_blank" rel="noopener">With Claude: Less Coding, More Testing</a></li>



<li><a href="https://www.infoq.com/news/2026/06/claude-code-harnesses/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Anthropic Explains How Claude Builds Its Own Execution Harnesses</a></li>



<li><a href="https://krasserm.github.io/2026/05/31/ml-research-workflow/" target="_blank" rel="noopener">Building an autonomous ML researcher with Claude Code dynamic workflows</a></li>



<li><a href="https://www.infoq.com/news/2026/06/stack-overflow-for-agents/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">AI Coding Agents Get a Stack Overflow of Their Own</a></li>



<li><a href="https://ai.baeldung.com/" target="_blank" rel="noopener">Foundations of AI Coding</a></li>



<li><a href="https://foojay.io/today/did-ai-just-break-software-security-for-ever/" target="_blank" rel="noopener">Did AI Just Break Software Security For Ever?</a></li>



<li><a href="https://www.infoq.com/news/2026/06/oracle-genai-policies/" target="_blank" rel="noopener">Oracle’s OpenJDK Bans Generative AI Contributions While Oracle’s GraalVM Allows Them</a></li>



<li><a href="https://foojay.io/today/systematic-ai-coding-my-takeaways-from-the-eclipse-foundation-workshop-in-brussels/" target="_blank" rel="noopener">Systematic AI Coding: My Takeaways from the Eclipse Foundation Workshop in Brussels</a></li>



<li><a href="https://www.infoq.com/presentations/5-principles-llm-behavior/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Rules for Understanding Language Models</a></li>



<li><a href="https://coding-is-like-cooking.info/2026/06/i-stopped-coding-and-started-architecting-agents-and-why-you-should-too/" target="_blank" rel="noopener">I Stopped Coding and Started Architecting Agents (And Why You Should Too)</a></li>
</ul>



<h2 class="wp-block-heading">Languages, Frameworks, Libraries, and Technologies</h2>



<p>Beyond Java and Kotlin, here&#8217;s a roundup of the languages, frameworks, libraries, and technologies that caught our eye this month:&nbsp;</p>



<ul class="wp-block-list">
<li>This Week in Spring <a href="https://spring.io/blog/2026/06/02/this-week-in-spring-june-2-2026" target="_blank" rel="noopener">1</a>, <a href="https://spring.io/blog/2026/06/09/this-week-in-spring-june-9-2026" target="_blank" rel="noopener">2,</a> <a href="https://spring.io/blog/2026/06/16/this-week-in-spring-june-16-2026" target="_blank" rel="noopener">3</a>, <a href="https://spring.io/blog/2026/06/23/this-week-in-spring-june-23-2026" target="_blank" rel="noopener">4</a>, <a href="https://spring.io/blog/2026/06/30/this-week-in-spring-june-30-2026" target="_blank" rel="noopener">5</a></li>



<li><a href="https://spring.io/blog/2026/06/01/spring_and_security_in_the_times_of_ai" target="_blank" rel="noopener">Spring and Security In The Times Of AI</a></li>



<li><a href="https://foojay.io/today/what-is-sharding-in-mongodb-and-when-should-you-use-it/" target="_blank" rel="noopener">What is Sharding in MongoDB and When Should You Use It?</a></li>



<li><a href="https://blog.gradle.org/gradle-is-javamaxxing" target="_blank" rel="noopener">How Gradle Is Javamaxxing</a></li>



<li><a href="https://in.relation.to/2026/05/29/hibernate-json-dirty-checking-performance/" target="_blank" rel="noopener">Two Hibernate Annotations That Cut Our JSON Processing Time in Half</a></li>



<li><a href="https://spring.io/blog/2026/06/04/a-bootiful-podcast-marit-van-dijk" target="_blank" rel="noopener">A Bootiful Podcast: JetBrains&#8217; Marit van Dijk</a></li>



<li><a href="https://www.youtube.com/watch?v=yRWTnhK4ER0" target="_blank" rel="noopener">Snake in 10 Lines: Learning More by Coding Less by Guus de Wit &#8211; JNation 2026</a></li>



<li><a href="https://quarkus.io/blog/ai-skills-migration/" target="_blank" rel="noopener">Empower your AI migrations to Quarkus with Skills</a></li>



<li><a href="https://foojay.io/today/spring-boot-migration-and-the-cra-when-good-enough-isnt/" target="_blank" rel="noopener">Spring Boot Migration and the CRA: When Good Enough Isn’t</a></li>



<li><a href="https://foojay.io/today/why-spring-teams-dont-need-a-second-runtime-for-ai-agents/" target="_blank" rel="noopener">Why Spring Teams Don’t Need a Second Runtime for AI Agents</a></li>



<li><a href="https://inside.java/2026/06/15/java-microservices-fast-go-2026-benchmark/" target="_blank" rel="noopener">Can Java Microservices Be As Fast As Go? A 2026 Benchmark Update</a> </li>



<li><a href="https://spring.io/blog/2026/06/11/a-bootiful-podcast-rob-winch-answers-everything" target="_blank" rel="noopener">A Bootiful Podcast: Spring Security lead Rob Winch answers some security questions for me</a></li>



<li><a href="https://foojay.io/today/on-device-debugging-and-junit-5/" target="_blank" rel="noopener">Codename One: On-Device Debugging And JUnit 5</a></li>



<li><a href="https://www.infoq.com/presentations/refactoring-ai-agents/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Moving Mountains: Migrating Legacy Code in Weeks instead of Years</a></li>



<li><a href="https://foojay.io/today/spring-quarkus-jooby-vertx-java-framework-comparison/" target="_blank" rel="noopener">Spring vs Quarkus vs Jooby vs Vert.x: Pick Your Next Java Framework</a></li>



<li><a href="https://blog.sandra-parsick.de/2026/06/23/maven-central-relocation/" target="_blank" rel="noopener">Relocation of Maven Package in Maven Central</a></li>



<li><a href="https://foojay.io/today/quarkus-unpacked-insights-from-the-foojay-podcast/" target="_blank" rel="noopener">Quarkus Unpacked: Insights from the Foojay Podcast</a></li>



<li><a href="https://mehmandarov.com/unknown-json-fields-in-java-rest-clients/" target="_blank" rel="noopener">Unknown JSON fields in Java REST clients: JSON-B, Jackson, Quarkus, and Spring Boot</a></li>



<li><a href="https://foojay.io/today/ai-assisted-unused-dead-code-removal/" target="_blank" rel="noopener">AI-Assisted Unused &amp; Dead Code Removal</a></li>



<li><a href="https://www.youtube.com/watch?v=G4lGJshbEmg" target="_blank" rel="noopener">Sebastien Deleuze on Spring AI 2.0, Kotlin, and more</a></li>



<li><a href="https://www.youtube.com/watch?v=ToY_yyJ6YDE" target="_blank" rel="noopener">Spring Boot team member Moritz Halbritter</a></li>
</ul>



<h2 class="wp-block-heading">Conferences and Events</h2>



<p>Here&#8217;s what&#8217;s coming up on the calendar: the conferences and events worth marking down in the months ahead.</p>



<ul class="wp-block-list">
<li><a href="https://www.wearedevelopers.com/world-congress" target="_blank" rel="noopener">WeAreDevelopers</a> – Berlin, Germany, July 8-10</li>



<li><a href="https://www.java-forum-stuttgart.de" target="_blank" rel="noopener">Java Forum Stuttgart</a> – Stuttgart, Germany, July 9</li>



<li><a href="https://uberconf.com" target="_blank" rel="noopener">ÜberConf</a> – Denver, USA, July 14-17</li>



<li><a href="https://jconfdominicana.org" target="_blank" rel="noopener">JConf Dominicana</a> – Santiago, Dominican Republic, July 17-18</li>



<li><a href="https://www.jcrete.org" target="_blank" rel="noopener">JCRETE</a> – Crete, Greece, July 27-31; Come meet Marit van Dijk and Anton Arhipov from JetBrains. </li>
</ul>



<figure class="wp-block-image size-full"><a href="https://lp.jetbrains.com/intellij-idea-conf-2026/?utm_source=newsletter&amp;utm_medium=jam&amp;utm_campaign=intellijideaconf" target="_blank" rel="noopener"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/07/image-5.png" alt="" class="wp-image-719982"/></a></figure>



<p><a href="https://lp.jetbrains.com/intellij-idea-conf-2026/?utm_source=newsletter&amp;utm_medium=jam&amp;utm_campaign=intellijideaconf" target="_blank" rel="noopener"></a></p>



<h2 class="wp-block-heading">Culture and Community</h2>



<p>The people, conversations, and ideas that make our corner of tech worth being part of:&nbsp;</p>



<ul class="wp-block-list">
<li><a href="https://www.infoq.com/presentations/incident-response-mitigate/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">The Human Toll of Incidents &amp; Ways To Mitigate It</a></li>



<li><a href="https://www.satisfice.com/blog/archives/488130" target="_blank" rel="noopener">Humans In The Way</a></li>



<li><a href="https://www.infoq.com/news/2026/06/data-driven-platform-engineering/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">How a Culture of Data-Driven Conversations Can Support Platform Engineering</a></li>



<li><a href="https://www.infoq.com/articles/adoption-curve-twenty/" target="_blank" rel="noopener">The Technology Adoption Curve, Twenty Years On</a></li>



<li><a href="https://foojay.io/today/context-is-code-a-tour-of-apm-and-agentrc/" target="_blank" rel="noopener">Context Is Code: A Tour of APM and AgentRC</a></li>



<li><a href="https://www.infoq.com/podcasts/mcp-vibe-coding-harness-engineering/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">From MCP and Vibe Coding to Harness Engineering: How Did AI Native Engineering Evolve in One Year</a></li>



<li><a href="https://spring.io/blog/2026/06/25/a-bootiful-podcast-francesco-ciulla" target="_blank" rel="noopener">A Bootiful Podcast: My friend Francesco Ciulla on developer advocacy and more</a></li>



<li><a href="https://www.infoq.com/podcasts/team-operating-system-ai-era/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Craig McLuckie on Culture as a Team&#8217;s Operating System in the AI Era</a></li>



<li><a href="https://foojay.io/today/ask-a-lille-dev-what-java-developers-really-think-about-quality-frameworks-communities-and-careers/" target="_blank" rel="noopener">Ask a Lille Dev: What Java Developers Really Think About Quality, Frameworks, Communities, and Careers</a></li>



<li><a href="https://www.paulgraham.com/sun.html" target="_blank" rel="noopener">General and Surprising</a> </li>
</ul>



<h2 class="wp-block-heading">And Finally…</h2>



<p>A few fresh posts from the IntelliJ IDEA and JetBrains blogs to close out this month&#8217;s edition:</p>



<ul class="wp-block-list">
<li><a href="https://blog.jetbrains.com/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/">Your JetBrains IDE Expertise, Now on LinkedIn</a></li>



<li><a href="https://blog.jetbrains.com/idea/2026/05/hibernate-7-4-new-features/">Hibernate 7.4 New Features</a></li>



<li><a href="https://blog.jetbrains.com/platform/2026/06/stop-pasting-tokens-oauth2-login-for-jetbrains-ide-plugins/">Stop Pasting Tokens: OAuth2 Login for JetBrains IDE Plugins</a></li>



<li><a href="https://blog.jetbrains.com/idea/2026/06/kotlin-notebook-sunset/">Kotlin Notebook Sunset</a></li>
</ul>



<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">X</a> by July 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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IntelliJ IDEA 2026.1.4 Is Out!</title>
		<link>https://blog.jetbrains.com/idea/2026/07/intellij-idea-2026-1-4/</link>
		
		<dc:creator><![CDATA[Maria Kosukhina]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 13:02:39 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/07/IJ-IDEA-2026.1.4.png</featuredImage>		<category><![CDATA[releases]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=719278</guid>

					<description><![CDATA[IntelliJ IDEA 2026.1.4 is out with some useful 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>
										<content:encoded><![CDATA[
<p>IntelliJ IDEA 2026.1.4 is out with some useful fixes.</p>



<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>



<p>The latest update brings the following improvements:</p>



<ul class="wp-block-list">
<li>The active Git branch now updates correctly. [<a href="https://youtrack.jetbrains.com/issue/IJPL-240184/Git-update-is-disabled-on-the-active-branch" target="_blank" rel="noopener">IJPL-240184</a>]</li>



<li>Fixed an issue where using pull_policy in Docker Compose files prevented the PHP interpreter from being created. [<a href="https://youtrack.jetbrains.com/issue/IJPL-189121/" target="_blank" rel="noopener">IJPL-189121</a>]</li>



<li>The IDE no longer erroneously marks successful Gradle syncs as failed when running Gradle 9.5.0 on WSL. [<a href="https://youtrack.jetbrains.com/issue/IDEA-388949/Gradle-Successful-sync-shown-as-failed-since-Gradle-9.5.0-on-WSL" target="_blank" rel="noopener">IDEA-388949</a>]</li>



<li>Fixed an error that caused Dev Container connections to fail with an <em>Unknown Docker endpoint schema</em> message. [<a href="https://youtrack.jetbrains.com/issue/IJPL-240184/Git-update-is-disabled-on-the-active-branch" target="_blank" rel="noopener">IJPL-240184</a>]</li>
</ul>



<p></p>



<p>For a comprehensive overview of the fixes, see the release notes. If you spot any issues, let us know via the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662699" data-type="link" data-id="https://youtrack.jetbrains.com/articles/IDEA-A-2100662699" target="_blank" rel="noreferrer noopener">issue tracker</a>.</p>



<p>Happy developing!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kotlin Notebook Sunset</title>
		<link>https://blog.jetbrains.com/idea/2026/06/kotlin-notebook-sunset/</link>
		
		<dc:creator><![CDATA[Marco Behler]]></dc:creator>
		<pubDate>Mon, 29 Jun 2026 12:02:16 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/IJ-social-BlogFeatured-1280x720-1-3.png</featuredImage>		<product ><![CDATA[idea]]></product>
		<product ><![CDATA[kotlin]]></product>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[kotlin-news-2]]></category>
		<category><![CDATA[kotlin-notebook]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=717314</guid>

					<description><![CDATA[Starting from IntelliJ IDEA 2026.2, JetBrains will sunset Kotlin Notebook as a product and will no longer maintain it. The plugin will remain available on an open-source model so the community can continue its development.&#160; Below, we explain why we’re making this change, how it affects current Kotlin Notebook users, what comes next, and how [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Starting from IntelliJ IDEA 2026.2, JetBrains will sunset Kotlin Notebook as a product and will no longer maintain it.</p>



<p>The plugin will remain available on an open-source model so the community can continue its development.&nbsp;</p>



<p>Below, we explain why we’re making this change, how it affects current Kotlin Notebook users, what comes next, and how Kotlin DataFrame will continue to exist beyond Kotlin Notebook.</p>



<h2 class="wp-block-heading">Why we’re making this change</h2>



<p>Demand for built-in interactive tooling has shifted since we launched the plugin, and Kotlin Notebook didn&#8217;t reach the level of adoption we expected. AI tools have changed how developers explore code, prototype, and iterate, and many of the workflows that originally drove notebook adoption have evolved along with that shift.</p>



<p>After reviewing usage trends, we’ve decided to move Kotlin Notebook out of our internal roadmap and into the open. Going forward, our team will devote its time to projects with a broader impact on Kotlin developers.</p>



<h2 class="wp-block-heading">Timeline and what to expect</h2>



<p>Here&#8217;s what to expect during the transition:</p>



<p><strong>v2026.1 and earlier:</strong></p>



<p>• Kotlin Notebook remains bundled with IntelliJ IDEA.</p>



<p><strong>v2026.2:</strong></p>



<ul class="wp-block-list">
<li>Kotlin Notebook will be unbundled from IntelliJ IDEA.</li>



<li>JetBrains will no longer develop new features for Kotlin Notebook.</li>



<li>The <a href="https://plugins.jetbrains.com/plugin/16340-kotlin-notebook" target="_blank" rel="noopener">Kotlin Notebook</a> plugin will still be available for installation from the marketplace. It is compatible with v2026.2. However, we do not maintain it anymore. Future development will happen in the open-source repository only. </li>



<li>The plugin source will be published on <a href="https://github.com/Kotlin/kotlin-notebook" target="_blank" rel="noopener">GitHub</a> under the Apache License 2.0. Users can build the plugin from GitHub and install it manually. The README walks you through the steps.</li>
</ul>



<p><strong>V2026.3 and further:</strong></p>



<ul class="wp-block-list">
<li>JetBrains won&#8217;t publish a compatible plugin for v2026.3 and beyond.</li>
</ul>



<p><strong>During the transition to community ownership:</strong></p>



<ul class="wp-block-list">
<li>We plan to continue maintaining the Kotlin Jupyter kernel on a best-effort basis, as capacity allows.</li>



<li>If you’re interested in maintaining or contributing to Kotlin Notebook, please share your interest in the Kotlin Slack <a href="https://kotlinlang.slack.com/archives/C05333T208Y" target="_blank" rel="noopener"><strong>#notebooks</strong></a> channel. </li>



<li>Our Support team will be available during the transition for compatibility questions.</li>
</ul>



<h2 class="wp-block-heading">Kotlin DataFrame beyond notebooks</h2>



<p>If you’re using Kotlin DataFrame, recent releases have made it much easier to bring notebook-style, type-safe data transformations into regular Kotlin projects. With the Kotlin DataFrame compiler plugin, schema-aware APIs and generated column accessors are now available directly in Gradle and Maven projects and can be used in ordinary .kt files.</p>



<p>To get started, see the setup guides for Gradle and Maven:</p>



<ul class="wp-block-list">
<li>Gradle:<a href="https://kotlin.github.io/dataframe/setupgradle.html" target="_blank" rel="noopener"> https://kotlin.github.io/dataframe/setupgradle.html</a></li>



<li>Maven:<a href="https://kotlin.github.io/dataframe/setupmaven.html" target="_blank" rel="noopener"> https://kotlin.github.io/dataframe/setupmaven.html</a></li>
</ul>



<p>We also recently released Kotlin DataFrame 1.0.0-Beta5, with numerous improvements across the library. See the release notes <a href="https://github.com/Kotlin/dataframe/releases/tag/v1.0.0-Beta5" target="_blank" rel="noopener">here</a>. </p>



<p>If you have questions about migrating existing workflows or adopting Kotlin DataFrame in your projects, feel free to reach out in the Kotlin Slack <a href="https://kotlinlang.slack.com/archives/C4W52CFEZ" target="_blank" rel="noopener">#datascience</a> channel.</p>



<h2 class="wp-block-heading">Thank you note</h2>



<p>We’re grateful to everyone who used Kotlin Notebook, filed issues, and shared feedback over the years. Thank you!</p>



<p>The JetBrains team</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Open-Sourcing the LSP Client API in IntelliJ IDEA 2026.2</title>
		<link>https://blog.jetbrains.com/platform/2026/06/open-sourcing-the-lsp-client-api-in-intellij-idea-2026-2/</link>
		
		<dc:creator><![CDATA[Jakub Chrzanowski]]></dc:creator>
		<pubDate>Fri, 26 Jun 2026 12:38:50 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/IJ-social-BlogFeatured-1280x720-1-1.png</featuredImage>		<product ><![CDATA[idea]]></product>
		<product ><![CDATA[platform]]></product>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[intellij-platform]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[android-studio]]></category>
		<category><![CDATA[intellij-idea]]></category>
		<category><![CDATA[lsp]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[plugin-development]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=platform&#038;p=716667</guid>

					<description><![CDATA[Language Server Protocol (LSP) solves a real problem: before, each IDE or editor had to implement support for a specific language separately. A language server puts that work in one place and exposes it through a common protocol, providing completion, formatting, documentation, and related features. That common protocol is only a part of the IDE [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Language Server Protocol (LSP) solves a real problem: before, each IDE or editor had to implement support for a specific language separately. A language server puts that work in one place and exposes it through a common protocol, providing completion, formatting, documentation, and related features.</p>



<p>That common protocol is only a part of the IDE integration. The IDE still has to decide how to start the server, handle the code, and assist in development. That is where plugin authors spend their time.<br>Product availability is one of the areas they struggle with, and the author of the Azure DevOps Pipeline plugin recently faced it. Even though the plugin registered <code>platform.lsp.serverSupportProvider</code>, opening the <code>azure-pipelines.yml</code> file should have started the language server through the IntelliJ Platform LSP client. In Android Studio, it didn&#8217;t happen because the LSP integration is a commercial IDE extension, not part of the open-source IntelliJ Platform used by Android Studio. No visible error, no fallback, users are left all alone.</p>



<p>Another plugin author took the more drastic route. For Noctule, a Swift plugin, they wrote their own LSP client from scratch because the available options did not fit the plugin they wanted to ship. They needed control over where the plugin worked, how it behaved across IDE versions, and how deeply it integrated with the editor. At that point, a custom client was not over-engineering, but it was the only way to make the plugin behave consistently.</p>



<p>That is the gap we want to close.</p>



<p>With the 2026.2 release cycle, we are open-sourcing the LSP client API, making the stable and battle-tested platform client available to JetBrains IDEs, Android Studio, and other products based on the public<a href="https://github.com/JetBrains/intellij-community" target="_blank" rel="noopener"> IntelliJ Open Source</a> project.</p>



<h2 class="wp-block-heading">What comes next?</h2>



<p>The public API is being renamed before it becomes widely available. The old names made the IDE side sound like the server side. That gets confusing once the code is open and used outside JetBrains IDEs. The platform owns the LSP client and the IDE integration; the language server is the external process. So <code>LspServer</code> becomes <code>LspClient</code>, and the provider moves to <code>LspIntegrationProvider</code>.</p>


                    <div class="alert ">
            <p><strong>Note:</strong> The open-source LSP API work is planned for the 2026.1.4 stable build, not only 2026.2. That also means Android Studio support may arrive earlier than 2026.2; JetBrains is working with the Google team to make that happen.</p>
        </div>
    






<p>If your plugin already uses the JetBrains LSP API, watch both updates and adjust to the new names.</p>



<p>If your plugin uses LSP4IJ or a custom client, do not migrate just for the sake of it. Check minimum IDE version, Android Studio support, feature coverage, customization hooks, and remote or split-mode needs. Make sure to share your feedback on the<a href="https://platform.jetbrains.com/c/intellij-platform/5" target="_blank" rel="noopener"> JetBrains Platform forum</a>.</p>



<p>For a new language integration, start with the<a href="https://plugins.jetbrains.com/docs/intellij/language-server-protocol.html" target="_blank" rel="noopener"> LSP article in the IntelliJ Platform SDK Docs</a>, if a good language server already exists. To bootstrap a plugin, use the<a href="https://plugins.jetbrains.com/generator" target="_blank" rel="noopener"> IntelliJ Platform Plugin generator</a> or the reworked Project wizard inside IntelliJ IDEA with the <a href="https://plugins.jetbrains.com/plugin/22851-plugin-devkit/edit" target="_blank" rel="noopener">Plugin DevKit plugin</a> installed.</p>



<figure class="wp-block-image size-full"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/06/Pasted-image-20260615142517.png" alt="" class="wp-image-716706"/></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Your JetBrains IDE Expertise, Now on LinkedIn</title>
		<link>https://blog.jetbrains.com/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</link>
		
		<dc:creator><![CDATA[Ekaterina Ryabukha]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 13:11:02 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/Blog-Featured-1280x720-4.png</featuredImage>		<product ><![CDATA[clion]]></product>
		<product ><![CDATA[dotnet]]></product>
		<product ><![CDATA[education]]></product>
		<product ><![CDATA[go]]></product>
		<product ><![CDATA[idea]]></product>
		<product ><![CDATA[phpstorm]]></product>
		<product ><![CDATA[pycharm]]></product>
		<product ><![CDATA[ruby]]></product>
		<product ><![CDATA[rust]]></product>
		<product ><![CDATA[webstorm]]></product>
		<category><![CDATA[news]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=blog&#038;p=711459</guid>

					<description><![CDATA[Every developer has tools they rely on daily. The workflows they&#8217;ve built around them, the ways they&#8217;ve learned to move faster, debug smarter, and write better code – that kind of hands-on experience can be hard to put into words. We’re collaborating with LinkedIn to make it easier for you to showcase your expertise with [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Every developer has tools they rely on daily. The workflows they&#8217;ve built around them, the ways they&#8217;ve learned to move faster, debug smarter, and write better code – that kind of hands-on experience can be hard to put into words.</p>



<p>We’re collaborating with LinkedIn to make it easier for you to showcase your expertise with JetBrains IDEs on the world’s largest professional network. You can now connect your IDE to LinkedIn and let your real tool usage speak for itself.</p>



<p align="center"><a class="jb-download-button" href="https://plugins.jetbrains.com/plugin/32011-linkedin-connected-apps" target="_blank" rel="noopener" data-test="blog-article-cta"><i class="download-icon"></i>Connect your IDE</a></p>



<p>IntelliJ IDEA, PyCharm, WebStorm, PhpStorm, Rider, GoLand, CLion, RustRover, and RubyMine are already supported via a free plugin, while support for DataGrip is coming soon.</p>



<p>In this blog post, we’ll explain what LinkedIn connected apps are, what they mean for your profile, and how to get started.</p>



<h2 class="wp-block-heading">What this is about</h2>



<p>Building on early <a href="https://www.linkedin.com/pulse/title-newways-stand-out-verify-skills-unlock-new-hari-srinivasan-zhtvc/" target="_blank" rel="noopener">collaboration</a> with Descript, Duolingo, Lovable, Relay.app, and Replit, LinkedIn is expanding the range of apps you can feature on your LinkedIn profile, turning real-world product usage into a credible, visible signal of practical tool experience. We’re glad to join forces with them to bring this to JetBrains IDE users.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p></p>
<cite>“We&#8217;re building new ways for members to show real, credible proof of what they&#8217;re capable of, right on their LinkedIn profile. And for the brands behind these tools, there&#8217;s no better endorsement than a customer who&#8217;s actively using and loving your product.”<br>– Dan Shapero, CEO of LinkedIn</cite></blockquote>



<p>Connected apps let you link the tools you use in your daily work directly to your LinkedIn profile, where they appear prominently, helping you stand out to your professional network. Once connected, each app generates a simple statement based on how you actually use it. Unlike manually added skills, this is based on real usage and updates automatically as your experience evolves.</p>



<figure class="wp-block-image size-full is-style-default"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/06/In-LinkedIn-4.png" alt="" class="wp-image-713887"/></figure>



<h2 class="wp-block-heading">How to get started</h2>



<p>Open your JetBrains IDE, go to <em>Settings | Plugins</em>, search for the <em>LinkedIn Connected Apps</em> plugin under the <em>Marketplace</em> tab, and install it.&nbsp;</p>



<p>Once installed, the plugin starts collecting data locally about how you use your IDE. Depending on your usage history, you may receive an initial statement right away, which will then be updated once the plugin has collected enough data to better reflect your real IDE expertise.</p>



<figure class="wp-block-image size-full"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/06/LinkedIn-integration-in-JetBrains-IDEs-example-1.png" alt="LinkedIn-integration-in-JetBrains-IDEs-example " class="wp-image-713131"/></figure>



<p><strong>Your IDE usage data stays on your machine</strong>. When you are ready, you can connect your LinkedIn account and share your IDE expertise badge there. If you keep the plugin installed, your badge will update automatically as your IDE usage evolves.</p>



<p>The plugin is free for all JetBrains IDE users.</p>



<h2 class="wp-block-heading">What’s included in this release</h2>



<p>This is the first version of the integration, delivered as a standalone plugin rather than being built directly into the IDE. It covers IntelliJ IDEA, PyCharm, WebStorm, GoLand, PhpStorm, Rider, CLion, RustRover, and RubyMine; DataGrip is not yet supported.&nbsp;</p>



<p>Usage is detected within the IDE itself, so if you use AI features via an external tool or terminal, those won&#8217;t be reflected yet.</p>



<h2 class="wp-block-heading">How your IDE expertise is determined</h2>



<p>The model is intentionally simple for now. It is designed to represent your practical use of JetBrains tools, <em>not </em>to rank developers or certify skill levels. Our goal was to provide a solid starting point, but we know there&#8217;s more to capture about how developers work with their IDEs.</p>



<p>Statements map to different levels of experience and are generated based on how you interact with your IDE – from writing and editing code using basic features to working with debugging tools, version control, and AI-assisted workflows. For more information, see <a href="https://www.jetbrains.com/help/idea/linkedin-connected-apps.html" target="_blank" rel="noopener">our documentation</a>.</p>



<h2 class="wp-block-heading">What’s coming next</h2>



<p>We’re already working on the next version, planned for later this year. We’ll focus on improving how IDE usage, including AI feature usage, is represented, expanding support to DataGrip, and making the overall experience feel more integrated.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Which JetBrains IDEs are supported?</h3>



<p>IntelliJ IDEA, PyCharm, WebStorm, GoLand, PhpStorm, Rider, CLion, RustRover, and RubyMine. Support for DataGrip is coming soon.</p>



<h3 class="wp-block-heading">Why isn’t DataGrip supported yet?</h3>



<p>DataGrip is designed for working with databases and includes workflows that differ from our other IDEs. We plan to support it soon.</p>



<h3 class="wp-block-heading">Can I connect multiple IDEs?</h3>



<p>Yes, if you use multiple supported JetBrains IDEs, you can connect each of them. You’ll get a badge for all connected IDEs.</p>



<p><strong>Note</strong>: If you use multiple JetBrains accounts across different IDE instances but link them all to the same LinkedIn profile, IDE usage statements from each account will be displayed on that LinkedIn profile.</p>



<h3 class="wp-block-heading">Do I need to keep the plugin installed after connecting?&nbsp;</h3>



<p>You can share your IDE usage statement once and then remove the plugin, but note that it must remain installed if you want to track your ongoing progress and have any changes reflected on LinkedIn.</p>



<h3 class="wp-block-heading">Is this feature free?</h3>



<p>Yes, it’s available to all JetBrains IDE users at no cost.</p>



<h3 class="wp-block-heading">Is this a certification?</h3>



<p>Connected apps reflect real IDE usage and are designed to showcase applied experience, not to act as a formal certification or skill ranking. Certifications, degrees, and licenses remain important markers of professional achievement. Connected apps on LinkedIn add a different kind of signal: partner-validated tool usage that reflects practical work and can update over time.</p>



<h3 class="wp-block-heading">What data is shared with LinkedIn and JetBrains?</h3>



<p>Only the information required to represent your connected account and IDE usage statement.&nbsp;</p>



<h3 class="wp-block-heading">Will this help me get hired?</h3>



<p>Having connected apps on your LinkedIn profile is extra proof of your practical experience with leading tools. While connected apps make your expertise visible, they are just one part of your profile. Think of it as a way to let your tooling speak for itself.</p>



<p>Give it a try and let us know what you think in the comments below. We&#8217;re continuing to develop this integration, and your feedback will help shape what comes next.</p>
]]></content:encoded>
					
		
		
		                    <language>
                        <code><![CDATA[zh-hans]]></code>
                        <url>https://blog.jetbrains.com/zh-hans/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[pt-br]]></code>
                        <url>https://blog.jetbrains.com/pt-br/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[ko]]></code>
                        <url>https://blog.jetbrains.com/ko/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[ja]]></code>
                        <url>https://blog.jetbrains.com/ja/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[fr]]></code>
                        <url>https://blog.jetbrains.com/fr/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[es]]></code>
                        <url>https://blog.jetbrains.com/es/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                                    <language>
                        <code><![CDATA[de]]></code>
                        <url>https://blog.jetbrains.com/de/blog/2026/06/17/your-jetbrains-ide-expertise-now-on-linkedin/</url>
                    </language>
                	</item>
		<item>
		<title>Java Annotated Monthly – June 2026 </title>
		<link>https://blog.jetbrains.com/idea/2026/06/java-annotated-monthly-june-2026/</link>
		
		<dc:creator><![CDATA[Irina Mariasova]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 10:46:22 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/IJ-social-BlogFeatured-1280x720-1.png</featuredImage>		<category><![CDATA[ai]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[spring-2]]></category>
		<category><![CDATA[java-annotated]]></category>
		<category><![CDATA[java-annotated-monthly]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=711733</guid>

					<description><![CDATA[A fresh edition of Java Annotated Monthly has landed! The world of software development keeps moving at full speed, and this month&#8217;s selection helps you keep up without drowning in tabs. Inside, you&#8217;ll find hand-picked articles, podcasts, videos, and thought-provoking reads covering Java, Kotlin, AI, and the technologies shaping the next generation of development. Grab [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>A fresh edition of Java Annotated Monthly has landed!</p>



<p>The world of software development keeps moving at full speed, and this month&#8217;s selection helps you keep up without drowning in tabs. Inside, you&#8217;ll find hand-picked articles, podcasts, videos, and thought-provoking reads covering Java, Kotlin, AI, and the technologies shaping the next generation of development.</p>



<p>Grab a coffee, pick a topic that catches your eye, and get ready to discover what&#8217;s new in the world of software development.</p>



<p>Let’s go!</p>



<h2 class="wp-block-heading">Java News</h2>



<p>The latest from the Java world is here. Let&#8217;s see what&#8217;s new, what&#8217;s changing, and what&#8217;s next:&nbsp;</p>



<ul class="wp-block-list">
<li>Java News Roundup <a href="https://www.infoq.com/news/2026/05/java-news-roundup-may04-2026/?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/2026/05/java-news-roundup-may11-2026/?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/2026/05/jdk-news-roundup-may18-2026/?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/2026/06/java-news-roundup-may25-2026/" target="_blank" rel="noopener">4</a>&nbsp;</li>



<li><a href="https://inside.java/2026/05/08/jep532-target-jdk27/" target="_blank" rel="noopener">JEP targeted to JDK 27: 532: Primitive Types in Patterns, instanceof, and switch (5th Preview)</a></li>



<li><a href="https://inside.java/2026/05/11/jep533-target-jdk27/" target="_blank" rel="noopener">JEP targeted to JDK 27: 533: Structured Concurrency (7th Preview)</a></li>



<li><a href="https://www.infoq.com/news/2026/05/jep-533-jdk-27/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">JEP 533 Tightens Exception Handling in Java&#8217;s Structured Concurrency for JDK 27</a></li>



<li><a href="https://inside.java/2026/05/13/quality-heads-up/" target="_blank" rel="noopener">Quality Outreach Heads-up &#8211; JDK 27: Removal of Deprecated Java Launcher Options</a></li>



<li><a href="https://inside.java/2026/05/19/javaone-better-jdk26/" target="_blank" rel="noopener">Java 26: Better Language, Better APIs, Better Runtime</a></li>



<li><a href="https://inside.java/2026/05/20/quality-heads-up/" target="_blank" rel="noopener">Quality Outreach Heads-Up &#8211; JDK 27: Numeric Fields in JSON Thread Dumps</a></li>



<li><a href="https://foojay.io/today/skills-java-17-and-theme-accents-with-codename-one/" target="_blank" rel="noopener">Skills, Java 17, and Theme Accents With Codename One</a></li>
</ul>



<h2 class="wp-block-heading">Java Tutorials and Tips</h2>



<p>From quick tips to deep dives, here are some Java tutorials worth adding to your reading list:</p>



<ul class="wp-block-list">
<li><a href="https://tidyfirst.substack.com/p/genie-tarpit" target="_blank" rel="noopener">Genie Tarpit</a></li>



<li><a href="https://inside.java/2026/05/03/jdk-client-desktop/" target="_blank" rel="noopener">The JDK Client Desktop: 2026 and Still Swinging</a></li>



<li><a href="https://foojay.io/today/java-is-not-the-dark-side-why-learning-java-is-easier-than-you-think/" target="_blank" rel="noopener">Java is Not the Dark Side: Why Learning Java Is Easier Than You Think</a></li>



<li><a href="https://dzone.com/articles/top-genai-java-frameworks" target="_blank" rel="noopener">Comparing Top Gen AI Frameworks for Java in 2026</a></li>



<li><a href="https://foojay.io/today/foojay-podcast-95/" target="_blank" rel="noopener">Foojay Podcast #95: Is Your Java App Actually Secure, Or Does It Just Look That Way?</a></li>



<li><a href="https://inside.java/2026/05/12/javaone-post-native-interop/" target="_blank" rel="noopener">Native Interoperability With JDK 25 and the FFM API</a></li>



<li><a href="https://inside.java/2026/05/28/podcast-059/" target="_blank" rel="noopener">Episode 59 “Java Is Memory Efficient” [AtA]</a></li>



<li><a href="https://www.youtube.com/watch?v=jm7o2I_QOpM" target="_blank" rel="noopener">The Legendary Marit van Dijk</a></li>



<li><a href="https://donraab.medium.com/fat-free-lambdas-in-java-bf228da0613b" target="_blank" rel="noopener">“Fat-Free” Lambdas in Java</a></li>
</ul>



<h2 class="wp-block-heading">Kotlin Corner</h2>



<p>From ecosystem updates to productivity-boosting tricks, here&#8217;s what&#8217;s happening in the world of Kotlin:</p>



<ul class="wp-block-list">
<li><a href="https://blog.jetbrains.com/kotlin/2026/05/kotlinconf26-keynote-highlights/">KotlinConf&#8217;26 Keynote Highlights&nbsp;</a></li>



<li><a href="https://blog.jetbrains.com/ai/2026/05/koog-1-0-is-out-stable-core-better-interop-and-multiplatform-observability/">Koog 1.0 Is Out!&nbsp;</a></li>



<li><a href="https://blog.jetbrains.com/kotlin/2026/05/official-kotlin-support-for-visual-studio-code-is-now-available-in-alpha/">Official Kotlin Support for Visual Studio&nbsp;</a></li>



<li><a href="https://blog.jetbrains.com/kotlin/2026/05/the-road-to-name-based-destructuring/">The Road to Name-Based Destructuring&nbsp;</a></li>
</ul>



<h2 class="wp-block-heading">AI&nbsp;</h2>



<p>Here&#8217;s what caught our eye in the world of AI this month:</p>



<ul class="wp-block-list">
<li><a href="https://adamtornhill.substack.com/p/compressed-cognition-the-hidden-cost" target="_blank" rel="noopener">Compressed Cognition: The Cost of Faster Coding</a></li>



<li><a href="https://www.infoq.com/presentations/ai-products/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">The Next Generation of AI Products</a></li>



<li><a href="https://blog.jetbrains.com/idea/2026/05/teaching-an-ai-agent-to-debug-flaky-tests/">Teaching an AI Agent to Debug Flaky Tests</a></li>



<li><a href="https://inside.java/2026/05/26/openjdk-ai-agents/" target="_blank" rel="noopener">Agentic AI Workflows for OpenJDK Development</a></li>



<li><a href="https://foojay.io/today/enterprise-java-quality-gates-ai/" target="_blank" rel="noopener">Why Enterprise Java Teams Need Quality Gates Even More in the Age of AI</a></li>



<li><a href="https://nolanlawson.com/2026/05/25/using-ai-to-write-better-code-more-slowly/" target="_blank" rel="noopener">Using AI to Write Better Code More Slowly</a></li>
</ul>



<h2 class="wp-block-heading">Languages, Frameworks, Libraries, and Technologies</h2>



<p>The tech world is bigger than just Java and Kotlin. Explore the latest updates and happenings across technologies:&nbsp;</p>



<ul class="wp-block-list">
<li>This Week in Spring <a href="https://spring.io/blog/2026/05/05/this-week-in-spring-may-05-2026" target="_blank" rel="noopener">1</a>, <a href="https://spring.io/blog/2026/05/12/this-week-in-spring-may-12-2026" target="_blank" rel="noopener">2</a>, <a href="https://spring.io/blog/2026/05/19/this-week-in-spring-may-19-2026" target="_blank" rel="noopener">3</a>, <a href="https://spring.io/blog/2026/05/26/this-week-in-spring-may-26-2026" target="_blank" rel="noopener">4</a></li>



<li><a href="https://www.youtube.com/watch?v=0Gb1z-2SjHY" target="_blank" rel="noopener">How a Group of Developers Took Back Control from Enterprise Java | Spring: The Documentary</a></li>



<li><a href="https://micronaut.io/2026/05/20/micronaut-framework-5-0-0-released/" target="_blank" rel="noopener">Micronaut Framework 5.0.0 Released!</a></li>



<li><a href="https://www.youtube.com/watch?v=Y8M70rOo2P0" target="_blank" rel="noopener">Kubernetes Made Easy. Deploy. Monitor. Debug. All From IntelliJ IDEA</a></li>



<li><a href="https://www.infoq.com/articles/platform-reliability-cycle/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Three Pillars of Platform Engineering: A Virtuous Cycle</a></li>



<li><a href="https://foojay.io/today/ai-shepherd-senior-developer/" target="_blank" rel="noopener">The Code Was Always the Door</a></li>



<li><a href="https://foojay.io/today/when-should-you-use-a-cache-with-mongodb/" target="_blank" rel="noopener">When Should You Use a Cache With MongoDB?</a></li>



<li><a href="https://foojay.io/today/building-an-ai-powered-operations-assistant-with-spring-ai-and-mongodb-atlas-part-1-rag-foundation/" target="_blank" rel="noopener">Building an AI-Powered Operations Assistant With Spring AI and MongoDB Atlas – Part 1: RAG Foundation</a></li>



<li><a href="http://hollycummins.com/quarkus-cool-things-riviera-dev/" target="_blank" rel="noopener">Five (and a Half) Cool Things You Can Do With Quarkus</a></li>



<li><a href="https://spring.io/blog/2026/05/14/a-bootiful-podcast-daniel-adib-saikali" target="_blank" rel="noopener">A Bootiful Podcast: The Legendary Adib Saikali</a></li>



<li><a href="https://www.infoq.com/news/2026/05/ai-agents-kubernetes-rag/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Benchmarking AI Agents on Kubernetes</a></li>



<li><a href="https://www.infoq.com/presentations/product-cloud-native/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Product Thinking for Cloud Native Engineers</a></li>



<li><a href="https://spring.io/blog/2026/05/21/a-bootiful-podcast-hadi-hariri" target="_blank" rel="noopener">A Bootiful Podcast: Hadi Hariri, JetBrains Legend</a></li>



<li><a href="https://spring.io/blog/2026/05/28/a-bootiful-podcast-martijn-verburg" target="_blank" rel="noopener">A Bootiful Podcast: Microsoft&#8217;s Martijn Verburg</a></li>
</ul>



<h2 class="wp-block-heading">Conferences and Events</h2>



<p>Mark your calendar:&nbsp;</p>



<ul class="wp-block-list">
<li><a href="https://jprime.io" target="_blank" rel="noopener">JPrime</a> – Sofia, Bulgaria, June 3–4</li>



<li><a href="https://jspring.nl" target="_blank" rel="noopener">JSpring</a> – Utrecht, Netherlands, June 4</li>



<li><a href="https://jsail.ijug.eu" target="_blank" rel="noopener">JSail Unconference</a> – Hemelum, Netherlands, June 8–12</li>



<li><a href="https://www.devbcn.com/2026" target="_blank" rel="noopener">DevBcn</a> – Barcelona, Spain, June 16–17</li>



<li><a href="https://devoxx.pl/" target="_blank" rel="noopener">Devoxx Poland</a> – Kraków, Poland, June 17–19</li>



<li><a href="https://luxembourg.voxxeddays.com/en/" target="_blank" rel="noopener">Voxxed Days Luxembourg</a> – Mondorf-les-Bains, Luxembourg, June 18–19</li>
</ul>



<figure class="wp-block-image size-full"><a href="https://lp.jetbrains.com/intellij-idea-conf-2026/?utm_source=newsletter&amp;utm_medium=jam&amp;utm_campaign=intellijideaconf" target="_blank" rel="noopener"><img style="width:100% !important; height:auto !important; max-width:100% !important;" loading="lazy" decoding="async" src="https://blog.jetbrains.com/wp-content/uploads/2026/06/image-4.png" alt="" class="wp-image-711734"/></a></figure>



<h2 class="wp-block-heading">Culture and Community</h2>



<p>Code is only part of the story. Explore the ideas, conversations, and people shaping the developer community:</p>



<ul class="wp-block-list">
<li><a href="https://www.infoq.com/podcasts/some-developers-thrive-while-others-struggle/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">The AI Joy Gap: Why Some Developers Thrive While Others Struggle</a></li>



<li><a href="https://www.infoq.com/presentations/ai-assisted-engineering/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">Leadership in AI-Assisted Engineering</a></li>



<li><a href="https://www.infoq.com/presentations/ai-native-engineering/?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=global" target="_blank" rel="noopener">AI Native Engineering</a></li>
</ul>



<h2 class="wp-block-heading">And Finally…</h2>



<p>Check out the latest blog posts from IntelliJ IDEA:&nbsp;</p>



<ul class="wp-block-list">
<li><a href="https://blog.jetbrains.com/platform/2026/05/improving-accessibility-in-jetbrains-ides-what-s-new-and-what-s-next-in-2026/">Improving Accessibility in JetBrains IDEs: What’s New and What’s Next in 2026</a></li>



<li><a href="https://blog.jetbrains.com/idea/2026/05/hibernate-7-4-new-features/">Hibernate 7.4 New Features</a></li>



<li><a href="https://blog.jetbrains.com/idea/2026/05/teaching-an-ai-agent-to-debug-flaky-tests/">Teaching an AI Agent to Debug Flaky Tests</a></li>
</ul>



<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">X</a> by June 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>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IntelliJ IDEA 2026.1.3 Is Out!</title>
		<link>https://blog.jetbrains.com/idea/2026/06/intellij-idea-2026-1-3/</link>
		
		<dc:creator><![CDATA[Julia Shashkova]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 13:24:16 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/IJ-social-BlogFeatured-2026-1-3.png</featuredImage>		<category><![CDATA[releases]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=711393</guid>

					<description><![CDATA[We’ve just released IntelliJ IDEA 2026.1.3. You can update to this version from inside the IDE, using the Toolbox App, or using snaps if you are a Ubuntu user. You can also download it from our website. The latest update brings the following improvements: For a comprehensive overview of the fixes, see the release notes. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>We’ve just released IntelliJ IDEA 2026.1.3. You can update to this version from inside the IDE, using the <a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noopener">Toolbox App</a>, or using snaps if you are a Ubuntu user. You can also download it from our <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener">website</a>.</p>



<p>The latest update brings the following improvements:</p>



<ul class="wp-block-list">
<li>In tmux, the terminal cursor is no longer rendered above the current line. [<a href="https://youtrack.jetbrains.com/issue/IJPL-102697" target="_blank" rel="noopener">IJPL-102697</a>]</li>



<li>The Markdown preview now correctly displays images when referencing files outside the project directory. [<a href="https://youtrack.jetbrains.com/issue/IJPL-171896" target="_blank" rel="noopener">IJPL-171896</a>]</li>



<li>Custom colors are rendered correctly in various UI components in the <em>Database</em> tool window. [<a href="https://youtrack.jetbrains.com/issue/DBE-25711" target="_blank" rel="noopener">DBE-25711</a>]</li>



<li>Launching WSL via <code>wsl.exe -d &lt;distribution&gt;</code> no longer causes shell integration and process detection issues. [<a href="https://youtrack.jetbrains.com/issue/IJPL-236576" target="_blank" rel="noopener">IJPL-236576</a>]</li>
</ul>



<p>For a comprehensive overview of the fixes, see the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662689/IntelliJ-IDEA-2026.1.3-261.25134.95-build-Release-Notes" data-type="link" data-id="https://youtrack.jetbrains.com/articles/IDEA-A-2100662689/IntelliJ-IDEA-2026.1.3-261.25134.95-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="noopener">issue tracker</a>.</p>



<p>Happy developing!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IntelliJ IDEA 2025.3.6 Is Out!</title>
		<link>https://blog.jetbrains.com/idea/2026/06/intellij-idea-2025-3-6/</link>
		
		<dc:creator><![CDATA[Julia Shashkova]]></dc:creator>
		<pubDate>Wed, 03 Jun 2026 13:12:33 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/06/IJ-social-BlogFeatured-2025-3-6.png</featuredImage>		<category><![CDATA[releases]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=711482</guid>

					<description><![CDATA[IntelliJ IDEA 2025.3.6 is now available with the latest Oracle critical patch update for Java 21. The update includes the corresponding JetBrains Runtime changes and fixes the issue [IDEA-389015], providing improved reliability and security. You can update to this version from inside the IDE, using the Toolbox App, or using snaps if you are a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>IntelliJ IDEA 2025.3.6 is now available with the latest Oracle critical patch update for Java 21. The update includes the corresponding JetBrains Runtime changes and fixes the issue [<a href="https://youtrack.jetbrains.com/issue/IDEA-389015/jbr25.0.3-resourcemanager.sketchImporter.ResourceFileGeneratorTest-throws-ComparisonFailure" target="_blank" rel="noopener">IDEA-389015</a>], providing improved reliability and security.</p>



<p>You can update to this version from inside the IDE, using the <a href="https://www.jetbrains.com/toolbox-app/" target="_blank" rel="noopener">Toolbox App</a>, or using snaps if you are a Ubuntu user. You can also download it from our <a href="https://www.jetbrains.com/idea/download/" target="_blank" rel="noopener">website</a>.</p>



<p>For a comprehensive overview of the fixes, see the <a href="https://youtrack.jetbrains.com/articles/IDEA-A-2100662688" data-type="link" data-id="https://youtrack.jetbrains.com/articles/IDEA-A-2100662688" 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="noopener">issue tracker</a>.</p>



<p>Happy developing!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hibernate 7.4 New Features</title>
		<link>https://blog.jetbrains.com/idea/2026/05/hibernate-7-4-new-features/</link>
		
		<dc:creator><![CDATA[Siva Katamreddy]]></dc:creator>
		<pubDate>Fri, 29 May 2026 14:29:53 +0000</pubDate>
		<featuredImage>https://blog.jetbrains.com/wp-content/uploads/2026/05/IJ-social-BlogFeatured-1280x720-1-1.png</featuredImage>		<category><![CDATA[java]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jpa]]></category>
		<guid isPermaLink="false">https://blog.jetbrains.com/?post_type=idea&#038;p=709833</guid>

					<description><![CDATA[Hibernate 7.4 introduced several improvements that simplify loading a page of data along with their associated child collection, historical data access, and audit logging. The article will focus on the following features: You can check out the sample code for this article in this GitHub repository. Limits and Fetch Joins One common requirement in data-driven [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Hibernate 7.4 introduced <a href="https://docs.hibernate.org/orm/7.4/whats-new/" target="_blank" rel="noopener">several improvements</a> that simplify loading a page of data along with their associated child collection, historical data access, and audit logging.</p>



<p>The article will focus on the following features:</p>



<ul class="wp-block-list">
<li><strong>Limits and Fetch Joins</strong>: How Hibernate 7.4 improves working with paginated queries that include fetched associations.</li>



<li><strong>History and Audit Tables</strong>: How the new capabilities support querying entity state across time and working with historical data.</li>
</ul>



<p><br><strong>You can check out the sample code for this article in this </strong><a href="https://github.com/sivaprasadreddy/hibernate-7.4-demo" target="_blank" rel="noopener"><strong>GitHub repository</strong></a><strong>.</strong></p>



<h2 class="wp-block-heading">Limits and Fetch Joins</h2>



<p>One common requirement in data-driven applications is loading a page of parent entities along with an associated child entity collection. For example, suppose an application has an <code>Order</code> entity with a <code>Set&lt;OrderItem&gt;</code> collection, and we want to load the first few orders together with their order items.</p>



<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="">List&lt;Order> orders = session
        .createSelectionQuery(
            "select o from Order o join fetch o.items order by o.id",
            Order.class
        )
        .setMaxResults(10)
        .getResultList();</pre>



<p>In Hibernate versions before 7.4, applying a limit to a query that used a collection fetch join could not be safely pushed down to the database. Because each <code>Order</code> may have multiple <code>OrderItem</code> rows, limiting the SQL result directly could cut off part of an order&#8217;s item collection. To avoid returning incomplete collections, Hibernate loaded all matching rows from the database and applied pagination in memory at the application layer.</p>



<p>That behavior was correct, but it could be expensive. A query intended to load only 10 orders might still read many more rows if the table contained a large number of orders and order items.</p>



<p>Before Hibernate 7.4, the generated SQL would look like the following:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">select
    o1_0.id, i1_0.order_id, i1_0.id, i1_0.product_code,
    i1_0.quantity, o1_0.order_number, o1_0.status
from
    orders o1_0
        join
    order_items i1_0
    on o1_0.id=i1_0.order_id</pre>



<p>As you can see, the limit(pagination) is not applied at the SQL query level. So, it will load all the <code>orders</code> and their associated <code>order_items</code>, which could be a very expensive operation and may result in <em>OutOfMemoryException</em>.</p>



<p>You can see a WARNING logged by Hibernate as follows:</p>



<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="">[WARN] HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory</pre>



<p>One option to prevent Hibernate performing pagination in memory is by setting the following property:</p>



<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="">hibernate.query.fail_on_pagination_over_collection_fetch=true</pre>



<p>By configuring this property, Hibernate throws an exception instead of performing pagination in memory.</p>



<p>Hibernate 7.4 fixes this problem by using nested queries. Instead of applying the limit directly to the joined result set, Hibernate first determines the limited set of parent entity identifiers and then fetches the associated collection for only those parent rows.&nbsp;</p>



<p>This allows pagination to happen in the database while still returning complete items collections for each selected Order.</p>



<p>With Hibernate 7.4, the SQL will be generated as follows:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">select
        o1_0.id, i1_0.order_id, i1_0.id, i1_0.product_code,
        i1_0.quantity, o1_0.order_number,o1_0.status 
    from
        (select
            o1_0.id, o1_0.order_number, o1_0.status 
        from
            orders o1_0 
        where
            exists(select
                1 from order_items i1_0 
            where
                o1_0.id=i1_0.order_id) 
        offset
            ? rows 
        fetch
            first ? rows only) o1_0(id, order_number, status) 
    join
        order_items i1_0 
            on o1_0.id=i1_0.order_id</pre>



<p>This improvement makes fetch joins more practical for paginated screens, such as an order listing page that displays each order with its line items, without forcing the application to load the full result set first.</p>



<h2 class="wp-block-heading">History and Audit Tables</h2>



<p>Hibernate 7.4 adds built-in support for temporal history tables and audit tables. Both features help track changes to entity data, but they serve slightly different use cases: history tables let us query the state of an entity at a point in time, while audit tables record the sequence of changes that happened to an entity.</p>



<p>Consider the following <code>Product</code> entity:</p>



<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="">@Entity
@Table(name = "products")
class Product {
    //fields id, code, name, price
}</pre>



<h3 class="wp-block-heading">History Tables</h3>



<p>To enable temporal history for <code>Product</code>, annotate the entity with <code>@Temporal</code> and optionally specify the history table name using <code>@Temporal.HistoryTable</code>.</p>



<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="">@Entity
@Table(name = "products")
@Temporal
@Temporal.HistoryTable(name="products_history")
class Product {
    //fields id, code, name, price
}</pre>



<p>With this mapping, Hibernate stores previous versions of product rows in the <code>products_history</code> table. The table includes the entity columns plus two temporal columns: <strong><em>effective</em></strong>, which marks when a version became active, and <strong><em>superseded</em></strong>, which marks when that version was replaced.</p>



<p><strong>products_history</strong> table:</p>



<figure class="wp-block-table"><table><thead><tr><th><strong>id</strong></th><th><strong>code</strong></th><th><strong>name</strong></th><th><strong>price</strong></th><th><strong>effective</strong></th><th><strong>superseded</strong></th></tr></thead><tbody><tr><td>2251</td><td>P1000</td><td>Product-1000</td><td>40.00</td><td>2026-05-15 08:21:39.949001 +00:00</td><td>null</td></tr><tr><td>2301</td><td>P1001</td><td>Product-1001</td><td>90.00</td><td>2026-05-15 08:22:24.765883 +00:00</td><td>2026-05-15 08:22:24.778067 +00:00</td></tr><tr><td>2301</td><td>P1001</td><td>Product-1001</td><td>100.00</td><td>2026-05-15 08:22:24.778067 +00:00</td><td>null</td></tr></tbody></table></figure>



<p>We can get the Product entity data at a given point of time as follows:</p>



<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="">Instant someTime = ...
try (var session = sessionFactory.withOptions().asOf(someTime).open()) {
    var product = session.find(Product.class, productId);
    
}</pre>



<p>This makes temporal queries feel like normal entity lookups while Hibernate resolves the correct historical row behind the scenes.</p>



<p>Hibernate offers several different strategies(NATIVE, SINGLE_TABLE, HISTORY_TABLE) for mapping temporal entities. For more info check out the <a href="https://docs.hibernate.org/orm/7.4/introduction/html_single/#temporal-data" target="_blank" rel="noopener">Temporal data</a> section.</p>



<h3 class="wp-block-heading">Audit Tables</h3>



<p>Previously, Hibernate-based applications typically used the separate <a href="https://hibernate.org/orm/envers/" target="_blank" rel="noopener">Hibernate Envers</a> library for auditing entity changes. Hibernate 7.4 brings audit table support into Hibernate ORM itself, so applications can use auditing features natively without adding <strong>Envers</strong> for this use case.</p>



<p>Audit support is enabled by adding <code>@Audited</code> and can be mapped to a custom table using <code>@Audited.Table</code>.</p>



<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="">@Entity
@Table(name = "products")
@Audited
@Audited.Table(name="products_aud_log")
class Product {
    //fields id, code, name, price
}</pre>



<p>When auditing is enabled, Hibernate writes one row per change into the audit table. Unlike the history table, the audit table focuses on recording what operation happened and when.</p>



<figure class="wp-block-table"><table><thead><tr><th><strong>id</strong></th><th><strong>code</strong></th><th><strong>name</strong></th><th><strong>price</strong></th><th><strong>rev</strong></th><th><strong>revtype</strong></th></tr></thead><tbody><tr><td>2001</td><td>P1002</td><td>Product-1002</td><td>90.00</td><td>2026-05-13 14:58:17.505775 +00:00</td><td>0</td></tr><tr><td>2001</td><td>P1002</td><td>Product-1002</td><td>100.00</td><td>2026-05-13 14:58:17.518194 +00:00</td><td>1</td></tr></tbody></table></figure>



<p>The <code>rev</code> values are the timestamps at which the change happened. The <code>revtype</code> values are represented using <code>ModificationType</code> enum as follows:</p>



<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 enum ModificationType {
    /**
    * Creation, encoded as 0
    */
    ADD,
    /**
    * Modification, encoded as 1
    */
    MOD,
    /**
    * Deletion, encoded as 2
    */
    DEL
}</pre>



<p>For more info check out the <a href="https://docs.hibernate.org/orm/7.4/introduction/html_single/#audit-logs" target="_blank" rel="noopener">Audit logs</a> section.</p>



<h2 class="wp-block-heading">Summary</h2>



<p>Most of the applications use pagination to show a list of resources, and we used to write custom logic to load paginated data along with the associated child collection. Now this is being handled at the framework level itself. Also, we used to rely on external libraries like <strong>Envers</strong> to implement auditing, which is now provided by Hibernate itself.</p>



<p>Hibernate 7.4 brings practical improvements that address real problems in JPA/ Hibernate-based applications. Whether we are optimizing pagination query behavior or tracking historical data, Hibernate 7.4 reduces the amount of custom infrastructure needed and provides better support out of the box without requiring additional libraries.</p>



<p>Go ahead and explore these new features using this <a href="https://github.com/sivaprasadreddy/hibernate-7.4-demo" target="_blank" rel="noopener"><strong>GitHub repository</strong></a><strong>.</strong></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
