<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IntelliJ IDEA on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/category/intellij-idea/</link><description>Recent content in IntelliJ IDEA on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 16 Sep 2026 06:30:16 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/intellij-idea/index.xml" rel="self" type="application/rss+xml"/><item><title>Can You Explain the Diff Your AI Agent Just Wrote?</title><link>https://foojay.io/today/can-you-explain-the-diff-your-ai-agent-just-wrote/</link><pubDate>Tue, 15 Sep 2026 14:12:01 +0000</pubDate><guid>https://foojay.io/today/can-you-explain-the-diff-your-ai-agent-just-wrote/</guid><description>&lt;p&gt;Every Java developer has been in a code review where the question is simple: &amp;ldquo;What does this method do?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The answer used to tell you something. The developer who wrote it would describe the intent, the edge cases, the trade-off they considered and rejected. The code review was a conversation about the invariant the code protects.&lt;/p&gt;&#10;&lt;p&gt;Now the answer is sometimes: &amp;ldquo;The agent wrote it.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The code compiles. The tests pass. The linter is clean. Nobody in the review can explain the architecture of the PR, including the person who submitted it.&lt;/p&gt;</description></item><item><title>One Base URL, Many Coding Agents: What an OpenAI-Compatible Gateway Looks Like From java.net.http</title><link>https://foojay.io/today/one-base-url-many-coding-agents-what-an-openai-compatible-gateway-looks-like-from-java-net-http/</link><pubDate>Wed, 09 Sep 2026 16:09:53 +0000</pubDate><guid>https://foojay.io/today/one-base-url-many-coding-agents-what-an-openai-compatible-gateway-looks-like-from-java-net-http/</guid><description>&lt;p&gt;Somewhere in every coding agent there is an HTTP client. Claude Code, Codex, Cursor, Cline, OpenCode: strip away the terminal UI or the editor pane and each of them serializes a conversation into JSON, POSTs it to a base URL with an API key in a header, and streams the answer back. The client owns the prompt assembly, the tool loop and the rendering; the model sits on the far side of that socket.&lt;/p&gt;</description></item><item><title>Getting Started with Exposed: Kotlin ORM Made Simple</title><link>https://foojay.io/today/exposed-kotlin-orm-complete-guide/</link><pubDate>Mon, 06 Jul 2026 03:39:00 +0000</pubDate><guid>https://foojay.io/today/exposed-kotlin-orm-complete-guide/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;For quite some time, I have been a huge fan of and fascinated by JetBrains products, tools, and libraries because of their masterful craftsmanship in product creation and their pristine focus on building high-quality developer tools.&lt;/p&gt;&#10;&lt;p&gt;Even more excitingly, JetBrains Java Annotated Monthly newsletters have featured most of the technical articles I wrote for Foojay on topics such as Java, Spring, Spring Boot 4, and OpenRewrite.&lt;/p&gt;&#10;&lt;p&gt;Recently, one Kotlin Domain-Specific Language (DSL) library caught my attention. I immediately tried converting my existing Spring Boot 4 application from Java to Kotlin using Exposed, an ORM framework for Kotlin.&#10;&lt;img src="https://foojay.io/today/exposed-kotlin-orm-complete-guide/Exposed-1024x683.jpg" alt="Exposed" width="1024" height="683" loading="lazy" decoding="async"&gt; Kotlin SQL Libary&lt;/p&gt;</description></item><item><title>You’re invited to IntelliJ IDEA Conf 2026!</title><link>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</link><pubDate>Mon, 29 Jun 2026 18:35:08 +0000</pubDate><guid>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2026/</guid><description>&lt;p&gt;&lt;strong&gt;We are excited to invite you to IntelliJ IDEA Conf 2026, a free virtual event on September 8-9, 2026.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on September 8-9, 2026.&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll be able to learn about a broad range of topics relevant to modern Java and Kotlin development, including language evolution, enterprise Java, Spring-based applications, build tooling, containerized workflows, JVM performance, and data access technologies. For more details, see the agenda below.&lt;/p&gt;</description></item><item><title>Ask a Lille Dev</title><link>https://foojay.io/today/ask-a-lille-dev-what-java-developers-really-think-about-quality-frameworks-communities-and-careers/</link><pubDate>Tue, 16 Jun 2026 00:35:19 +0000</pubDate><guid>https://foojay.io/today/ask-a-lille-dev-what-java-developers-really-think-about-quality-frameworks-communities-and-careers/</guid><description>&lt;p&gt;During the DevLille 2026 conference in Lille, I interviewed several Java developers and tech professionals with one simple goal: collecting authentic and spontaneous insights from the Java ecosystem. ☕🎤&lt;/p&gt;&#10;&lt;p&gt;The result became &lt;strong&gt;&amp;ldquo;Ask a Lille Dev&amp;rdquo;&lt;/strong&gt;, a mini podcast made of short interviews recorded directly during the conference. Instead of long talks or polished marketing speeches, the idea was simple: ask practical questions to people working in tech every day.&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK – Amazon Bedrock AgentCore – Part 3</title><link>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/</link><pubDate>Sun, 10 May 2026 09:09:00 +0000</pubDate><guid>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/</guid><description>&lt;p&gt;In &lt;a href="https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;Part 1&lt;/a&gt; and &lt;a href="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/"&gt;Part 2&lt;/a&gt;, we explored the Spring AI SDK and Amazon Bedrock AgentCore features, including the agentcore runtime starter and integration of agentcore memory. In this article, we will explore the integration of AgentCore built-in tools, including the Browser and Code Interpreter features.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Repository containing the companion code for the tutorial. &lt;a href="https://github.com/bsmahi/simple-spring-boot-agent" target="_blank" rel="noopener noreferrer"&gt;Go to GitHub&lt;/a&gt;.&lt;/strong&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/AgentcoreBrowser.jpg" alt="AgentCore Built-In Tool Browser" width="1024" height="576" loading="lazy" decoding="async"&gt; Built-In Tool Browser&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;The use case I am trying to build here is for the given URL; it navigates the entire website and retrieves the content and gives key points and the summary of the page using &lt;strong&gt;the AgentCore Browser&lt;/strong&gt; tool.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK – Amazon Bedrock AgentCore – Part 2</title><link>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</link><pubDate>Mon, 27 Apr 2026 09:09:00 +0000</pubDate><guid>https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</guid><description>&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re joining us from &lt;a href="https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;Part 1&lt;/a&gt; or need a quick refresher on the architecture, listen to this brief overview of how Spring AI and Amazon Bedrock work together.&lt;/em&gt;&#10;&lt;em&gt;Generated using Notebook LLM for my previous &lt;a href="https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;article&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;In this article, we explore one of the AgentCore capabilities i.e., &lt;em&gt;&lt;strong&gt;memory&lt;/strong&gt;&lt;/em&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/ac_overviewchart_04_07-7f591d25.png" alt="" width="1600" height="329" loading="lazy" decoding="async"&gt; &lt;em&gt;&lt;strong&gt;Source: Amazon&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;To begin, enable &lt;strong&gt;AgentCore memory&lt;/strong&gt; for the agent you built earlier.&lt;br&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/SpringAISDK.jpg" alt="SpringAI SDK" width="1024" height="576" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h3 id="step-1-add-the-ai-model-and-agentcore-memory-dependencies"&gt;Step 1: Add the Ai model and AgentCore memory dependencies&lt;/h3&gt;&#10;&lt;pre class="EnlighterJSRAW" data-enlighter-language="xml"&gt;&amp;lt;dependency&amp;gt;&#10; &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;&#10; &amp;lt;artifactId&amp;gt;spring-ai-model&amp;lt;/artifactId&amp;gt;&#10;&amp;lt;/dependency&amp;gt;&#10;&amp;lt;dependency&amp;gt;&#10; &amp;lt;groupId&amp;gt;org.springaicommunity&amp;lt;/groupId&amp;gt;&#10; &amp;lt;artifactId&amp;gt;spring-ai-agentcore-memory&amp;lt;/artifactId&amp;gt;&#10;&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;h3 id="step-2-create-shortlong-term-in-aws-management-console"&gt;Step 2: Create Short/Long Term in AWS Management Console&lt;/h3&gt;&#10;&lt;p&gt;&lt;em&gt;Navigate to &lt;strong&gt;Amazon Bedrock AgentCore &amp;gt; Memory&lt;/strong&gt; to create short/long-term memories.&lt;/em&gt;&#10;&lt;img src="https://foojay.io/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/AgentCoreMemory-1024x441.jpg" alt="AgentCore Memory" width="1024" height="441" loading="lazy" decoding="async"&gt; AgentCore Memory&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK - Amazon Bedrock AgentCore - Part 1</title><link>https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/</link><pubDate>Mon, 20 Apr 2026 13:44:54 +0000</pubDate><guid>https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Artificial intelligence has rapidly expanded across every industry since the inception of ChatGPT. It represents a breakthrough in how we build and use software. Moreover, this breakthrough technology has driven major transformation. At the same time, it has created significant noise and hype.&lt;/p&gt;&#10;&lt;p&gt;Today, AI is no longer experimental. Instead, it has become essential, much like electricity and the internet. As a result, it now plays a key role in our daily lives. Overall, this shift reflects strong technological acceleration across industries.&lt;/p&gt;</description></item><item><title>25 Years of IntelliJ IDEA: The IDE That Grew Up With Java</title><link>https://foojay.io/today/foojay-podcast-91/</link><pubDate>Mon, 02 Mar 2026 07:21:06 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-91/</guid><description>&lt;p&gt;In this Foojay Podcast, we&amp;rsquo;re celebrating a major milestone in Java development history: 25 years of IntelliJ IDEA.&lt;/p&gt;&#10;&lt;p&gt;Think about it: IntelliJ IDEA launched in 2000, and since then, it has become the go-to IDE for millions of Java developers worldwide. From its revolutionary code completion and refactoring tools to AI-powered features and the recent unified Community and Ultimate release, IntelliJ has shaped how we write Java, and keeps reinventing itself to stay ahead.&lt;/p&gt;</description></item><item><title>Command completion (..) in IntelliJ IDEA</title><link>https://foojay.io/today/command-completion-intellij-idea/</link><pubDate>Tue, 20 Jan 2026 07:31:35 +0000</pubDate><guid>https://foojay.io/today/command-completion-intellij-idea/</guid><description>&lt;p&gt;How many shortcuts can you remember? Three? Five? More? I try to learn as many as I can and still forget some of them…&lt;/p&gt;&#10;&lt;p&gt;What if you could unlock IntelliJ IDEA features, without having to remember shortcuts? You can still use shortcuts if you want. But you don&amp;rsquo;t &lt;em&gt;&lt;strong&gt;have&lt;/strong&gt;&lt;/em&gt;to.&lt;/p&gt;&#10;&lt;p&gt;Command completion (..) is a new feature in IntelliJ IDEA that lets you discover and execute IDE actions right from your editor.&lt;/p&gt;</description></item><item><title>TornadoInsight - Compatibility with TornadoVM SDK 2.0+ &amp; Configuration Guide</title><link>https://foojay.io/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</link><pubDate>Tue, 30 Dec 2025 09:00:00 +0000</pubDate><guid>https://foojay.io/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</guid><description>&lt;figure class="size-full is-resized"&gt;&#10; &lt;img src="https://foojay.io/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/tornado-insight.webp" alt="" width="298" height="298" style="width:138px;height:auto" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;This blog updates the previously published &lt;strong&gt;TornadoInsight&lt;/strong&gt; configuration &lt;a href="https://www.tornadovm.org/post/introducing-tornadoinsight-unleashing-the-power-of-tornadovm-in-intellij-idea" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;++guidelines++&lt;/strong&gt;&lt;/a&gt; and explains how to configure the required environment variable to ensure that TornadoInsight correctly detects the TornadoVM SDK when IntelliJ IDEA is launched from a graphical environment.&lt;/p&gt;&#10;&lt;h2 id="overview"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;&#10;&lt;p&gt;TornadoInsight requires access to a compatible Java Development Kit (JDK) and the TornadoVM SDK.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Important update:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Since version &lt;a href="https://github.com/beehive-lab/tornado-insight/releases/tag/v1.4.0" target="_blank" rel="noopener noreferrer"&gt;++v1.4.0++&lt;/a&gt;, TornadoInsight can also use the &lt;strong&gt;JDK configured directly in IntelliJ IDEA&lt;/strong&gt; via &lt;strong&gt;Project Structure&lt;/strong&gt;. This means that, in many cases, users no longer need to configure the Java SDK in the plugins settings.&lt;/p&gt;</description></item><item><title>Java developer's guide: Sync Rules &amp; Stop CI Failures</title><link>https://foojay.io/today/developers-guide-to-sonarqube-part-2/</link><pubDate>Tue, 16 Dec 2025 15:53:28 +0000</pubDate><guid>https://foojay.io/today/developers-guide-to-sonarqube-part-2/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;&#10;&lt;p&gt;Welcome back. In &lt;a href="https://foojay.io/today/developers-guide-to-sonarqube-part-1/"&gt;&lt;strong&gt;Part 1&lt;/strong&gt;&lt;/a&gt;, we installed &lt;strong&gt;SonarQube for IDE&lt;/strong&gt; in IntelliJ. You are now catching those nasty NullPointerExceptions and Optional.get() risks &lt;em&gt;before&lt;/em&gt; they leave your keyboard.&lt;/p&gt;&#10;&lt;p&gt;But&amp;hellip; you are not working alone. You are part of a team pushing code to a repo full of XML configs, DTOs, and Services.&lt;/p&gt;&#10;&lt;p&gt;Here is the nightmare scenario: You spend all day refactoring your &lt;strong&gt;Spring Boot&lt;/strong&gt; service. It looks perfect. You run your tests. They pass. You push it to Git. You grab a coffee. ☕ And then&amp;hellip; &lt;strong&gt;FAIL.&lt;/strong&gt; 🔴&lt;/p&gt;</description></item><item><title>SonarQube for IDE in IntelliJ: The Ultimate Java Developer’s Guide</title><link>https://foojay.io/today/developers-guide-to-sonarqube-part-1/</link><pubDate>Fri, 12 Dec 2025 15:43:00 +0000</pubDate><guid>https://foojay.io/today/developers-guide-to-sonarqube-part-1/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s be honest. We have all been there. You write a piece of code, it compiles perfectly, the unit tests pass, and you think: &lt;em&gt;&amp;ldquo;This is solid.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Then&amp;hellip; boom. The CI/CD pipeline fails 20 minutes later because of a security vulnerability. Or worse, a NullPointerException wakes you up on the weekend because you forgot to check if that Optional was actually present.&lt;/p&gt;&#10;&lt;p&gt;We want to deliver &lt;strong&gt;High&lt;/strong&gt; &lt;strong&gt;Code Quality and Security&lt;/strong&gt;, but we are humans. We get tired, we lose focus.&lt;/p&gt;</description></item><item><title>Spring Boot 4 - OpenTelemetry Guide</title><link>https://foojay.io/today/spring-boot-4-opentelemetry-explained/</link><pubDate>Wed, 10 Dec 2025 09:09:58 +0000</pubDate><guid>https://foojay.io/today/spring-boot-4-opentelemetry-explained/</guid><description>&lt;p&gt;In my previous &lt;a href="https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/"&gt;article&lt;/a&gt;, I outlined a comprehensive list of features introduced in Spring Framework 7 and Spring Boot 4.&lt;/p&gt;&#10;&lt;p&gt;In this series of articles, we will explore these features in detail using a pragmatic approach. In this second article, I will dive deep into integration of Observability framework i.e., &lt;em&gt;&lt;strong&gt;OpenTelemetry with SpringBoot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;As an architect and developer, when I engage in system design—whether it involves monolithic architecture, microservices, or contemporary cloud-native applications—I have made the integration of &lt;strong&gt;observability&lt;/strong&gt; patterns utilizing &lt;strong&gt;open-telemetry&lt;/strong&gt; tools a standard practice. Through observability, we can monitor application behavior via &lt;strong&gt;metrics, logs, and traces&lt;/strong&gt; that we trigger&lt;/p&gt;</description></item><item><title>Spring Framework 7 API Versioning Explained</title><link>https://foojay.io/today/explore-spring-framework-7-features-api-versioning/</link><pubDate>Wed, 29 Oct 2025 06:45:53 +0000</pubDate><guid>https://foojay.io/today/explore-spring-framework-7-features-api-versioning/</guid><description>&lt;p&gt;In my previous &lt;a href="https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/"&gt;article&lt;/a&gt;, I outlined a comprehensive list of features introduced in Spring Framework 7 and Spring Boot 4.&lt;/p&gt;&#10;&lt;p&gt;In this series of articles, we will explore these features in detail using a pragmatic approach. To begin, I will deep dive into the &lt;em&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;&lt;strong&gt;versioning&lt;/strong&gt;&lt;/em&gt; feature introduced in Spring Framework 7.&#10;&lt;img src="https://foojay.io/today/explore-spring-framework-7-features-api-versioning/Sb4version_1.png" alt="API Versioning" width="1024" height="576" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h2 id="why-api-versioning"&gt;Why API Versioning?&lt;/h2&gt;&#10;&lt;p&gt;Any architectural or feature change stems from evolving business requirements, and API versioning is no exception. In today&amp;rsquo;s app-driven ecosystem, APIs are central to product integration and user experience.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream for Real-Time Event-Driven Systems</title><link>https://foojay.io/today/spring-cloud-stream-event-driven-architecture-part-1/</link><pubDate>Mon, 21 Jul 2025 13:33:34 +0000</pubDate><guid>https://foojay.io/today/spring-cloud-stream-event-driven-architecture-part-1/</guid><description>&lt;h2 id="spring-cloud-stream-event-driven-architecture--part-1"&gt;Spring Cloud Stream: Event-Driven Architecture – Part 1&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Envision operating a successful e-commerce platform where every moment is crucial. Customers make purchases, adjust inventory levels, process payments, and dispatch shipping alerts—all in real time. In the background, microservices diligently function to guarantee seamless operations. However, how do these services interact effectively, particularly during peak traffic occurrences such as flash sales or holiday shopping events?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;An efficient method to execute this use case involves utilizing Spring Cloud Stream (SCS) as the messaging infrastructure. SCS facilitates seamless interaction among microservices, enhancing the system&amp;rsquo;s responsiveness and scalability. A significant benefit of SCS is that it provides an abstraction layer, allowing developers to transition between messaging technologies such as Kafka or RabbitMQ or Pulsar or Amazon Kinesis without altering their fundamental business logic.&lt;/p&gt;</description></item><item><title>You’re Invited to IntelliJ IDEA Conf 2025!</title><link>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2025/</link><pubDate>Mon, 05 May 2025 10:20:30 +0000</pubDate><guid>https://foojay.io/today/youre-invited-to-intellij-idea-conf-2025/</guid><description>&lt;h2 id="we-are-excited-to-invite-you-to-intellij-idea-conf-2025-a-free-virtual-event"&gt;We are excited to invite you to IntelliJ IDEA Conf 2025, a free virtual event.&lt;/h2&gt;&#10;&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on June 3–4, 2025.&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll be able to learn about a variety of topics, including Core Java, Kotlin, Java and AI, Spring Boot, GraalVM, Gradle, Junit and Kafka. For more details, see the agenda below.&#10;&lt;img src="https://foojay.io/today/youre-invited-to-intellij-idea-conf-2025/IntelliJ-IDEA-Conf-2025.jpg" alt="" width="1600" height="899" loading="lazy" decoding="async"&gt;&lt;/p&gt;</description></item><item><title>Code Reviews with AI a developer guide</title><link>https://foojay.io/today/code-reviews-with-ai-a-developer-guide/</link><pubDate>Fri, 07 Mar 2025 12:10:37 +0000</pubDate><guid>https://foojay.io/today/code-reviews-with-ai-a-developer-guide/</guid><description>&lt;p&gt;Code reviews are a cornerstone of software development. They&amp;rsquo;re where we share knowledge, catch bugs early, and ensure our code meets the highest standards.&lt;/p&gt;&#10;&lt;p&gt;But let&amp;rsquo;s be honest&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;Traditional code reviews can be time-consuming and tedious and sometimes even miss subtle yet critical issues. Enter the age of AI-powered code review, a game-changer that addresses these challenges and elevates code quality to new heights.&lt;/p&gt;&#10;&lt;p&gt;This article dives into the common pitfalls of code reviews and explores how AI tools can revolutionize each phase of the development lifecycle.&lt;/p&gt;</description></item><item><title>Review of Junie, a coding agent by JetBrains – Revie</title><link>https://foojay.io/today/checking-out-junie-a-coding-agent-by-jetbrains/</link><pubDate>Wed, 26 Feb 2025 01:38:47 +0000</pubDate><guid>https://foojay.io/today/checking-out-junie-a-coding-agent-by-jetbrains/</guid><description>&lt;p&gt;Other languages: &lt;a href="https://flounder.dev/es/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/ko/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt; &lt;a href="https://flounder.dev/zh/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Recently, I talked about &lt;a href="https://flounder.dev/duplicate-finder/" target="_blank" rel="noopener noreferrer"&gt;Duplicate Finder&lt;/a&gt; on the &lt;a href="https://foojay.io/today/category/podcast/"&gt;Foojay Podcast&lt;/a&gt; hosted by &lt;a href="https://foojay.social/@frankdelporte" target="_blank" rel="noopener noreferrer"&gt;Frank Delporte&lt;/a&gt;. We briefly touched upon implementing support for other formats, and Frank asked if I&amp;rsquo;m planning on adding AsciiDoc, as it could be useful for his technical writing at Azul.&lt;/p&gt;&#10;&lt;p&gt;We agreed to think about adding the support soon. At the same time I got access to &lt;a href="https://www.jetbrains.com/junie/" target="_blank" rel="noopener noreferrer"&gt;Junie&lt;/a&gt;, a newly announced coding agent by JetBrains, which is currently in early access. After a while, a thought came to me that this is a great opportunity to try it in action.&lt;/p&gt;</description></item><item><title>More Free Shells for your Java IDE</title><link>https://foojay.io/today/more-free-shells-for-your-java-ide/</link><pubDate>Tue, 31 Dec 2024 14:30:57 +0000</pubDate><guid>https://foojay.io/today/more-free-shells-for-your-java-ide/</guid><description>&lt;p&gt;You may be using one of the terminal applications installed on your operating system or use the included terminal panel of the IDE.&lt;/p&gt;&#10;&lt;p&gt;Not all shells are included in your IDE. Here is a list of shells by default supported for the IDE&amp;rsquo;s based on my &lt;strong&gt;Windows&lt;/strong&gt; computer.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Shell&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;IntelliJ IDEA&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Eclipse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apache NetBeans&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Command Prompt&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Powershell&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;WSL (Windows Subsystem for Linux)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Git Bash&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cygwin&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(1)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SSH (Secure SHell)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;(1) Even though IntelliJ IDEA doesn&amp;rsquo;t offer Cygwin and Git Bash as option, it&amp;rsquo;s possible to use one of them by going to the settings and provide a different default shell path.&lt;/p&gt;</description></item><item><title>Build and Run TornadoVM with IntelliJ IDEA</title><link>https://foojay.io/today/build-and-run-tornadovm-with-intellij-idea/</link><pubDate>Wed, 20 Nov 2024 19:08:13 +0000</pubDate><guid>https://foojay.io/today/build-and-run-tornadovm-with-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt; is an open-source Java technology that is developed to aid Java programmers in adapting their code bases for hardware acceleration.&lt;/p&gt;&#10;&lt;p&gt;This blog aims to explain how Java programmers can build TornadoVM with IntelliJ IDEA, and how they can run TornadoVM unit-tests or other Java programs.&lt;/p&gt;&#10;&lt;h2 id="prerequisites"&gt;&lt;em&gt;Prerequisites&lt;/em&gt;&lt;/h2&gt;&#10;&lt;p&gt;This blog uses IntelliJ IDEA 2024.2.4 version and the list of required plugins are as follows:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Python &lt;a href="https://plugins.jetbrains.com/plugin/631-python" target="_blank" rel="noopener noreferrer"&gt;++plugin++&lt;/a&gt; to be installed in IntelliJ. This plugin allows python scripting from the IDE.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Additionally, the following commands must be installed in your system and should be added in your PATH in order to enable IDE to use them:&lt;/p&gt;</description></item><item><title>Spring Boot: Java Template Engine (JTE)</title><link>https://foojay.io/today/spring-boot-java-template-engine-jte/</link><pubDate>Wed, 13 Nov 2024 09:03:00 +0000</pubDate><guid>https://foojay.io/today/spring-boot-java-template-engine-jte/</guid><description>&lt;h3 id="hello-to-all-java-and-spring-enthusiasts-i-am-the-java-template-engine-a-fresh-newcomer-to-the-spring-initializer-ecosystem"&gt;Hello to all Java and Spring enthusiasts. I am the Java Template Engine, a fresh newcomer to the Spring Initializer Ecosystem.&lt;/h3&gt;&#10;&lt;p&gt;I have gained popularity as a template engine for developing user interface applications that use Java syntax within Spring Boot applications, alongside other engines such as Freemarker, Thymeleaf, Mustache, and Velocity. Many developers widely use Spring Boot, a framework that simplifies Java application development, and incorporating a template engine like mine streamlines the process of creating dynamic and responsive user interfaces.&lt;/p&gt;</description></item><item><title>Book Review: Mastering the Java Virtual Machine</title><link>https://foojay.io/today/book-review-mastering-the-java-virtual-machine/</link><pubDate>Fri, 18 Oct 2024 13:54:49 +0000</pubDate><guid>https://foojay.io/today/book-review-mastering-the-java-virtual-machine/</guid><description>&lt;p&gt;&lt;strong&gt;Otávio Santana&amp;rsquo;s&lt;/strong&gt; &lt;strong&gt;&amp;ldquo;Mastering the Java Virtual Machine&amp;rdquo;&lt;/strong&gt; takes readers on an insightful journey through the inner workings of the JVM. As I read this book, I found myself reconnecting with the fundamentals of Java programming while also discovering new depths of understanding.&lt;/p&gt;&#10;&lt;p&gt;The book strikes a perfect balance between nostalgia and innovation. It reminded me of my early programming days, while also introducing cutting-edge concepts that are crucial for modern Java development. Santana uses clever technical metaphors to make complex JVM internals more accessible, bridging the gap between theory and practical application.&lt;/p&gt;</description></item><item><title>Profile IntelliJ IDEA with its own profiler</title><link>https://foojay.io/today/profile-intellij-idea-with-its-own-profiler/</link><pubDate>Wed, 16 Oct 2024 15:49:38 +0000</pubDate><guid>https://foojay.io/today/profile-intellij-idea-with-its-own-profiler/</guid><description>&lt;p&gt;Other languages: &lt;a href="https://flounder.dev/es/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/ko/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt; &lt;a href="https://flounder.dev/zh/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Just like my &lt;a href="https://foojay.io/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/"&gt;previous post&lt;/a&gt;, this one is going to be slightly meta. Obviously, you can use IntelliJ IDEA &lt;a href="https://flounder.dev/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;to profile another process&lt;/a&gt;, but did you know IntelliJ IDEA can profile itself?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This might be useful if you are writing an &lt;a href="https://plugins.jetbrains.com/docs/intellij/sdk.html" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA plugin&lt;/a&gt; and need to address issues related to your plugin&amp;rsquo;s performance.&lt;/p&gt;&#10;&lt;p&gt;Also, regardless of whether you are a plugin author, the described case might be interesting to you because the profiling strategy that I&amp;rsquo;ll cover is not exclusive to IntelliJ IDEA – you can use it to troubleshoot similar bottlenecks in other types of projects and using other tools.&lt;/p&gt;</description></item><item><title>Allocation Profiling in Java</title><link>https://foojay.io/today/get-started-with-allocation-profiling/</link><pubDate>Fri, 09 Aug 2024 08:44:59 +0000</pubDate><guid>https://foojay.io/today/get-started-with-allocation-profiling/</guid><description>&lt;p&gt;&lt;strong&gt;Read in other languages&lt;/strong&gt; : &lt;a href="https://flounder.dev/zh/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt; &lt;a href="https://flounder.dev/es/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;We often find ourselves in situations when code is not working properly, and we have no idea where to even begin investigating.&lt;/p&gt;&#10;&lt;p&gt;Can&amp;rsquo;t we just stare at the code until the solution eventually comes to us? Sure, but this method probably won&amp;rsquo;t work without deep knowledge of the project and a lot of mental effort. A smarter approach would be to use the tools you have at hand. They can point you in the right direction.&lt;/p&gt;</description></item><item><title>A Beginner's Guide to IntelliJ Profiler</title><link>https://foojay.io/today/beginners-guide-to-java-profiler/</link><pubDate>Thu, 04 Jul 2024 06:26:35 +0000</pubDate><guid>https://foojay.io/today/beginners-guide-to-java-profiler/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt; &lt;a href="https://flounder.dev/es/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Sometimes your app works, but you want to increase performance by boosting its throughput or reducing latency. Other times, you just want to know how code behaves at runtime, determine where the hot spots are, or figure out how a framework operates under the hood.&lt;/p&gt;&#10;&lt;p&gt;This is a perfect use case for profilers. They offer a bird&amp;rsquo;s eye view of arbitrarily large execution chunks, which helps you see problems at scale.&lt;/p&gt;</description></item><item><title>Hack a Java application with the debugger</title><link>https://foojay.io/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/</link><pubDate>Thu, 13 Jun 2024 04:58:03 +0000</pubDate><guid>https://foojay.io/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt; &lt;a href="https://flounder.dev/es/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Back in the day, computer games were different. Not only have graphics and mechanics evolved since, but there&amp;rsquo;s also one characteristic that doesn&amp;rsquo;t seem very common in games today: nearly all of them had cheat codes.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Cheat codes were sequences of keys that would give you something extraordinary, such as infinite ammo or the ability to walk through walls. The most common and powerful of them was &amp;lsquo;god mode&amp;rsquo; – it made you invincible.&lt;/p&gt;</description></item><item><title>Foojay Podcast #50: JCON Report, Part 2 - Maven, Software Security, Code Quality</title><link>https://foojay.io/today/foojay-podcast-50/</link><pubDate>Mon, 27 May 2024 08:07:54 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-50/</guid><description>&lt;p&gt;This is part 2 of the interviews we recorded at the JCON conference earlier this month in Germany. In this episode, you get two main topics: &lt;strong&gt;Maven and Code Quality&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;In the first part, you&amp;rsquo;ll hear Karl Heinz Marbaise and Steve Poole discuss the Maven project, the repository, Sonaytype, and the security impact of dependencies.&lt;/p&gt;&#10;&lt;p&gt;But next to security, we developers are also responsible for creating readable and maintainable code. Miro Wengner, Marit van Dijk, and Hinse ter Schuur dive into this topic, in the second part!&lt;/p&gt;</description></item><item><title>Learn how to debug unresponsive Java/JVM applications, then reload the fix on the fly, using a hands-on example</title><link>https://foojay.io/today/debug-unresponsive-apps/</link><pubDate>Thu, 23 May 2024 07:14:31 +0000</pubDate><guid>https://foojay.io/today/debug-unresponsive-apps/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt; &lt;a href="https://flounder.dev/es/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;There are a lot of debugger tutorials out there that teach you how to set line breakpoints, log values, or evaluate expressions. While this knowledge alone gives you a lot of tools for debugging your application, real-world scenarios may be somewhat trickier and require a more advanced approach.&lt;/strong&gt;&#10;&lt;img src="https://foojay.io/today/debug-unresponsive-apps/debug-unresponsive-apps-banner-3e5418c2.jpg" alt="Debug Unresponsive Apps – post banner" width="1600" height="840" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this article, we will learn how to locate code that causes a UI freeze without much prior knowledge of the project and fix faulty code on the fly.&lt;/p&gt;</description></item><item><title>Debug Without Breakpoints – Guide to IntelliJ IDEA's Pause</title><link>https://foojay.io/today/debug-without-breakpoints/</link><pubDate>Mon, 22 Apr 2024 06:59:28 +0000</pubDate><guid>https://foojay.io/today/debug-without-breakpoints/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt; &lt;a href="https://flounder.dev/es/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt; &lt;a href="https://flounder.dev/pt/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a typical debugging scenario, you would set breakpoints to tell the debugger when to suspend your program. A breakpoint usually corresponds to the moment that marks the starting point of the further investigation.&lt;/p&gt;&#10;&lt;p&gt;However, in some situations you aren&amp;rsquo;t certain about where to set a breakpoint. Other times, you might prefer to suspend the program at a particular &lt;em&gt;time&lt;/em&gt; rather than aiming at a specific &lt;em&gt;line&lt;/em&gt;.&#10;&lt;img src="https://foojay.io/today/debug-without-breakpoints/debug-without-breakpoints-banner-1024x538.jpg" alt="post banner" width="1024" height="538" loading="lazy" decoding="async"&gt;&lt;/p&gt;</description></item></channel></rss>