<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java on Neat Guy Coding</title><link>https://neatguycoding.com/categories/java/</link><description>Recent content in Java on Neat Guy Coding</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 NeatGuyCoding</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://neatguycoding.com/categories/java/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent-Agnostic Java Quality Guardrails: Put Standards in the Repo with AGENTS.md and Static Analysis</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/</guid><description>Agent-agnostic Java quality guardrails: use AGENTS.md and static analysis to encode standards in the repository.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/cover.png"/></item><item><title>Demystifying Spring Boot with Spring Debugger: The Real Chain of Properties, Beans, and Transactions</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/</guid><description>Demystifying Spring Boot with Spring Debugger: The Real Chain of Properties, Beans, and Transactions</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/cover.png"/></item><item><title>Embedding Copilot in the Java Toolchain: From the CLI to the SDK and Plugins</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/</guid><description>Embedding Copilot in the Java toolchain: from the terminal CLI to the SDK and IDE plugins.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/cover.png"/></item><item><title>Escape the Multi-Stack Trap: Modernize Desktop UIs in Java Without a Full React Rewrite</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/</guid><description>Escape the Multi-Stack Trap: Modernize Desktop UIs in Java Without a Full React Rewrite</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/cover.png"/></item><item><title>From 'It Runs' to 'It's Controlled': Reliable Java AI Agents with Domain Modeling and Koog</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/</guid><description>Use domain modeling to move Java AI agents from &amp;lsquo;it runs&amp;rsquo; to &amp;lsquo;it&amp;rsquo;s controlled&amp;rsquo;—orchestration, contracts, and type-safe pipelines with Koog.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/cover.png"/></item><item><title>From JDK 8 to 25: Treating a Seventeen-Version Upgrade as Platform Engineering</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/</guid><description>From JDK 8 to 25: Treating a Seventeen-Version Upgrade as Platform Engineering</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/cover.png"/></item><item><title>From Records to Deconstructible Types: Amber's Deconstruction–Reconstruction Path and Syntax Governance</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/</guid><description>When &lt;a
href="https://openjdk.org/jeps/395"
target="_blank"
>JEP 395&lt;/a> bundles immutable carriers, nominal tuples, and &lt;a
href="https://openjdk.org/jeps/440"
target="_blank"
>record patterns&lt;/a>, any evolution beyond its constraints loses both compact syntax and expressive power on the pattern-matching side. &lt;a
href="https://openjdk.org/projects/amber/"
target="_blank"
>Project Amber&lt;/a> is elevating fixed-component-shape deconstruction to a top-level type property, narrowing the narrative to &lt;strong>deconstructible class&lt;/strong> in &lt;a
href="https://mail.openjdk.org/pipermail/amber-spec-experts/2026-February/004351.html"
target="_blank"
>mail #2&lt;/a>; &lt;a
href="https://openjdk.org/jeps/468"
target="_blank"
>JEP 468&lt;/a> (&lt;strong>Candidate&lt;/strong>, preview) has long awaited a broader class-level deconstruction path. This article explains motivation, terminology alignable with public documentation, and how engineers should read preview features and the upcoming &lt;strong>Pattern Assignment&lt;/strong> (no Preview JEP yet; see &lt;a
href="https://mail.openjdk.org/pipermail/amber-spec-experts/2026-January/004306.html"
target="_blank"
>Amber features 2026 mail&lt;/a>) in dependency order.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/cover.png"/></item><item><title>Getting Back to Java in 2026: A Modernization Path for Experienced Engineers</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/</guid><description>Getting Back to Java in 2026: A Modernization Path for Experienced Engineers</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/cover.png"/></item><item><title>How Generic Code Gets Fast on the JVM: Erasure, Profiling, and Climbing Back After the Cliff</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/</guid><description>How generic code speeds up on the JVM: erasure, profiling, and climbing back after the performance cliff.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/cover.png"/></item><item><title>How JDK 26 Improves G1 Throughput: Write-Barrier Synchronization and the Default Collector Roadmap</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/</guid><description>How JDK 26 Improves G1 Throughput: Write-Barrier Synchronization and the Default Collector Roadmap</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/cover.png"/></item><item><title>Hyperscale Java Platform: From Federated GraphQL to JVM Defaults</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/</guid><description>Hyperscale Java Platform: From Federated GraphQL to JVM Defaults</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/cover.png"/></item><item><title>Java Platform Cross-Cutting Q&amp;A: Modules, Build Tools, Lombok, and Compatibility Discipline</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/</guid><description>Java Platform Cross-Cutting Q&amp;amp;A: Modules, Build Tools, Lombok, and Compatibility Discipline</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/cover.png"/></item><item><title>JavaFX 26: Engineering Baseline and Selection Boundaries for Desktop UI</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-javafx-26-today/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-javafx-26-today/</guid><description>JavaFX 26: Engineering Baseline and Selection Boundaries for Desktop UI</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-javafx-26-today/cover.png"/></item><item><title>Post-Mortem JVM Crash Analysis: Read Cores with jcmd, Not a Second Toolchain</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/</guid><description>Post-Mortem JVM Crash Analysis: Read Cores with jcmd, Not a Second Toolchain</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/cover.png"/></item><item><title>Production-Ready GenAI with Open Models: LangChain4j Integration Path for Java Teams</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/</guid><description>Production-Ready GenAI with Open Models: LangChain4j Integration Path for Java Teams</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/cover.png"/></item><item><title>Shipping Java Kernels to the GPU with Code Reflection: An Engineering Slice of HAT and Project Babylon</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/</guid><description>Shipping Java kernels to the GPU with code reflection: an engineering slice of HAT and Project Babylon.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/cover.png"/></item><item><title>The Java Platform and Post-Quantum Cryptography: From Threat Models to JDK Delivery</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/</guid><description>The Java platform and post-quantum cryptography: from threat models through standards naming, JCA APIs, protocol rollout, and operations—with JDK version gates aligned to JEPs.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/cover.png"/></item><item><title>The JDK Desktop Client in 2026: Maintenance, Modernization, and Delivery on a Thirty-Year Stack</title><link>https://neatguycoding.com/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/</guid><description>The JDK Desktop Client in 2026: Maintenance, Modernization, and Delivery on a Thirty-Year Stack</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/cover.png"/></item><item><title>A Brief Look at JEP - JEP-502: Stable Value (Preview)</title><link>https://neatguycoding.com/posts/brief-look-jep-502/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/brief-look-jep-502/</guid><description>An exploration of JEP 502&amp;rsquo;s StableValue API, which addresses the fundamental trade-off between immutability and initialization flexibility in Java. This article covers the API design, core implementation details including double-checked locking patterns, memory semantics, and JIT optimization strategies using the @Stable annotation.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/brief-look-jep-502/featured.jpg"/></item><item><title>Why HeapDumpOnOutOfMemoryError Should Be Avoided in Production</title><link>https://neatguycoding.com/posts/java-oom/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/java-oom/</guid><description>A comprehensive guide exploring why enabling HeapDumpOnOutOfMemoryError can cause significant performance issues in production environments, which OutOfMemoryError types actually trigger heap dumps, and better alternatives like JFR for memory leak detection and automatic service restart strategies.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/java-oom/featured.jpg"/></item><item><title>Can GraalVM Native Image Processes Be Detected by jps? Plus Our Production Strategy</title><link>https://neatguycoding.com/posts/graalvm-jvm/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/graalvm-jvm/</guid><description>Discover when GraalVM Native Image processes show up in jps and learn our battle-tested approach for choosing between GraalVM Native Image and JVM in production environments. We break down our strategy for Lambda-style tasks versus long-running microservices.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/graalvm-jvm/featured.jpg"/></item><item><title>Solving JVM Safepoint Delays: A Journey from EFS Integration to Async Logging</title><link>https://neatguycoding.com/posts/async-log-issue/</link><pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/async-log-issue/</guid><description>An in-depth investigation into mysterious JVM safepoint delays after upgrading to Java 17 and implementing centralized log collection with AWS EFS. We discovered how file I/O blocking during log output can freeze entire JVM processes and solved it using async logging and proper WebFlux implementation.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/async-log-issue/featured.jpg"/></item><item><title>JDK Tough Way - 2. A Complete Guide to Java's PRNG Evolution</title><link>https://neatguycoding.com/posts/tough-jdk-2-java-random/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/tough-jdk-2-java-random/</guid><description>A comprehensive exploration of pseudo-random number generators in Java, covering everything from basic Linear Congruential algorithms to advanced LXM implementations in Java 17. Learn about algorithm performance, security considerations, and how to choose the right random number generator for your specific use case.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-2-java-random/featured.jpg"/></item><item><title>JDK Tough Way - 3. Java Memory Model - A Comprehensive Guide to Concurrency and Memory Barriers</title><link>https://neatguycoding.com/posts/tough-jdk-3-jmm/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/tough-jdk-3-jmm/</guid><description>A deep dive into Java Memory Model (JMM) from specification to implementation, covering memory barriers, CPU reordering, and Java 9+ VarHandle APIs. Learn about coherence, causality, consensus, and how volatile, final, and other synchronization mechanisms work under the hood with practical jcstress examples.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-3-jmm/featured.jpg"/></item><item><title>The Hidden Performance Killer: Why Code Location in Logs Can Destroy Your Microservice Performance</title><link>https://neatguycoding.com/posts/log-with-position/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/log-with-position/</guid><description>Discover how enabling code location in logs can cause severe CPU performance issues in microservices, especially reactive applications. This deep-dive analysis reveals the hidden costs of stack walking in Log4j2 and provides actionable solutions for high-throughput systems.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-with-position/featured.jpg"/></item><item><title>Troubleshooting Memory Issues After Spring Boot Upgrade: A Deep Dive into ResolvableType Object Creation</title><link>https://neatguycoding.com/posts/spring-5-regression/</link><pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/spring-5-regression/</guid><description>An investigation into excessive memory allocation and YoungGC frequency after upgrading to Spring Boot 2.4.6 + Spring Cloud 2020.0.x, revealing how BeanUtils.copyProperties creates massive ResolvableType objects without caching in Spring 5.3.x versions.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-5-regression/featured.jpg"/></item><item><title>A Peculiar Bug Hunt: When Exceptions Lose Their Voice</title><link>https://neatguycoding.com/posts/log-exception/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/log-exception/</guid><description>A deep dive into a mysterious production issue where exception logs mysteriously disappeared, leading us through Arthas debugging, Log4j2 internals, and the discovery that an exception&amp;rsquo;s getMessage() method was itself throwing exceptions due to Guava-Guice version incompatibility.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-exception/featured.jpg"/></item><item><title>OpenJDK 11 JVM Logging: A Comprehensive Guide to the New Unified Configuration</title><link>https://neatguycoding.com/posts/jvm-log/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/posts/jvm-log/</guid><description>Discover how OpenJDK 11 revolutionized JVM logging with its unified configuration system. Learn about essential log tags for GC analysis, class loading, and runtime compilation, plus master dynamic log configuration using jcmd for real-time performance tuning.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jvm-log/featured.jpg"/></item></channel></rss>