<?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/zh-cn/categories/java/</link><description>Recent content in Java on Neat Guy Coding</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>© 2026 NeatGuyCoding</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://neatguycoding.com/zh-cn/categories/java/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 年重回 Java：一条面向有经验工程师的现代化路径</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-how-to-re-start-your-java-journey-in-2026/</guid><description>2026 年重回 Java：一条面向有经验工程师的现代化路径</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>Java 平台横切面问答：模块、构建工具、Lombok 与兼容纪律</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-module-adoption-jdk-build-tool-lombok-backwards-compatibility-ask-the-ar/</guid><description>Java 平台横切面问答：模块、构建工具、Lombok 与兼容纪律</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>Java 平台与后量子密码：从威胁模型到 JDK 交付路径</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-java-and-post-quantum-cryptography/</guid><description>Java 平台与后量子密码：从威胁模型到 JDK 交付路径</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>JavaFX 26：桌面 UI 的工程基线与选型边界</title><link>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-javafx-26-today/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/2026-05-18-javaone-2026-javafx-26-today/</guid><description>JavaFX 26：桌面 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>JDK 26 如何改善 G1 吞吐：写屏障同步与默认收集器路线</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-how-jdk-26-improves-g1-s-throughput-inside-java-podcast-54/</guid><description>JDK 26 如何改善 G1 吞吐：写屏障同步与默认收集器路线</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>JDK 桌面客户端在 2026：三十年栈上的维护、现代化与交付转型</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-the-jdk-client-desktop-2026-and-still-swinging/</guid><description>JDK 桌面客户端在 2026：三十年栈上的维护、现代化与交付转型</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>把 Copilot 嵌进 Java 工具链：从终端 CLI 到 SDK 与插件</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-copilot-in-your-java-tooling-from-cli-to-sdk-to-plugins/</guid><description>把 Copilot 嵌进 Java 工具链：从终端 CLI 到 SDK 与插件</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>摆脱多栈陷阱：用 Java 现代化桌面 UI，而不必拥抱全量 React 重写</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-modernizing-java-uis-without-javascript-escape-the-multi-stack-trap/</guid><description>摆脱多栈陷阱：用 Java 现代化桌面 UI，而不必拥抱全量 React 重写</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>超大规模 Java 平台：从联邦 GraphQL 到 JVM 默认项</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-how-netflix-uses-java-2026-edition/</guid><description>超大规模 Java 平台：从联邦 GraphQL 到 JVM 默认项</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>从 JDK 8 到 25：把跨 seventeen 个版本的升级当成平台工程</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-jdk-8-to-25-without-the-pain-engineering-a-modern-java-platform/</guid><description>从 JDK 8 到 25：把跨 seventeen 个版本的升级当成平台工程</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>从 Record 到可解构类型：Amber 的解构—重建路线与语法治理</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-carrier-classes-discussing-syntax-inside-java-podcast-52/</guid><description>当 &lt;a
href="https://openjdk.org/jeps/395"
target="_blank"
>JEP 395&lt;/a> 把不可变载体、名义元组与 &lt;a
href="https://openjdk.org/jeps/440"
target="_blank"
>record pattern&lt;/a> 绑在一起时，任何超出其约束的演进都会同时失去紧凑语法与模式匹配侧的表达能力。&lt;a
href="https://openjdk.org/projects/amber/"
target="_blank"
>Project Amber&lt;/a> 正把「可按固定组件形状解构」提升为类型的顶层性质，</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>泛型代码在 JVM 上如何变快：擦除、剖析与「坠崖」之后的攀爬</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-how-the-jvm-optimizes-generic-code-a-deep-dive/</guid><description>泛型代码在 JVM 上如何变快：擦除、剖析与「坠崖」之后的攀爬</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>开放模型上生产：Java 团队的 LangChain4j 集成路径</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-production-ready-genai-with-open-models-for-java-teams/</guid><description>开放模型上生产：Java 团队的 LangChain4j 集成路径</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>死后 JVM 崩溃分析：用 jcmd 读 core，而不是重学一套工具</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-post-mortem-jvm-crash-analysis-with-jcmd/</guid><description>死后 JVM 崩溃分析：用 jcmd 读 core，而不是重学一套工具</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>用 Spring Debugger 拆穿 Spring Boot「魔法」：属性、Bean 与事务的真实链路</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-spring-debugger-new-power-where-should-i-click-to-demystify-spring-boot/</guid><description>用 Spring Debugger 拆穿 Spring Boot「魔法」：属性、Bean 与事务的真实链路</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>用代码反射把 Java 内核送到 GPU：HAT 与 Project Babylon 的工程切面</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-reflecting-on-hat-a-project-babylon-case-study/</guid><description>用代码反射把 Java 内核送到 GPU：HAT 与 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>用领域建模把 Java AI Agent 从「能跑」做到「可控」</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-reliable-ai-agents-using-domain-modeling-with-koog-in-java/</guid><description>用领域建模把 Java AI Agent 从「能跑」做到「可控」</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>与 Agent 无关的 Java 质量护栏：用 AGENTS.md 与静态分析把标准写进仓库</title><link>https://neatguycoding.com/zh-cn/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/zh-cn/posts/2026-05-18-javaone-2026-agent-agnostic-guardrails-universal-java-code-quality-with-agents-md-and/</guid><description>与 Agent 无关的 Java 质量护栏：用 AGENTS.md 与静态分析把标准写进仓库</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>浅尝辄止 JEP - JEP-502：Stable Value（预览）</title><link>https://neatguycoding.com/zh-cn/posts/brief-look-jep-502/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/brief-look-jep-502/</guid><description>探索 JEP 502 的 StableValue API，它解决了 Java 开发中不变性与初始化灵活性之间的根本权衡。本文涵盖 API 设计、核心实现细节（包括双重检查锁定模式、内存语义）以及使用 @Stable 注解的 JIT 优化策略。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/brief-look-jep-502/featured.jpg"/></item><item><title>为什么应该避免在生产环境中启用 HeapDumpOnOutOfMemoryError</title><link>https://neatguycoding.com/zh-cn/posts/java-oom/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/java-oom/</guid><description>全面指南，探讨为什么启用 HeapDumpOnOutOfMemoryError 会在生产环境中导致严重的性能问题，哪些 OutOfMemoryError 类型实际触发堆转储，以及使用 JFR 进行内存泄漏检测和自动服务重启策略等更好的替代方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/java-oom/featured.jpg"/></item><item><title>GraalVM Native Image 进程能否被 jps 检测到？以及我们的生产策略</title><link>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/graalvm-jvm/</guid><description>了解 GraalVM Native Image 进程何时会在 jps 中显示，并学习我们在生产环境中在 GraalVM Native Image 和 JVM 之间选择的经过实战验证的方法。我们详细介绍了针对 Lambda 风格任务与长期运行的微服务的策略。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/graalvm-jvm/featured.jpg"/></item><item><title>解决 JVM Safepoint 延迟：从 EFS 集成到异步日志的探索之旅</title><link>https://neatguycoding.com/zh-cn/posts/async-log-issue/</link><pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/async-log-issue/</guid><description>深入调查升级到 Java 17 并实施 AWS EFS 集中式日志收集后出现的神秘 JVM safepoint 延迟问题。我们发现日志输出期间的文件 I/O 阻塞如何冻结整个 JVM 进程，并通过异步日志和正确的 WebFlux 实现解决了这个问题。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/async-log-issue/featured.jpg"/></item><item><title>全网最硬核 JDK 分析 - 2. Java 随机数演进</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-2-java-random/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-2-java-random/</guid><description>全面探索 Java 中的伪随机数生成器，涵盖从基本线性同余算法到 Java 17 中高级 LXM 实现的所有内容。了解算法性能、安全考虑以及如何为你的特定用例选择合适的随机数生成器。</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 分析 - 3. Java 新内存模型解析与实验</title><link>https://neatguycoding.com/zh-cn/posts/tough-jdk-3-jmm/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/tough-jdk-3-jmm/</guid><description>从规范到实现深入探讨 Java 内存模型（JMM），涵盖内存屏障、CPU 重排序和 Java 9+ VarHandle API。了解一致性、因果性、共识性，以及 volatile、final 和其他同步机制在底层的工作原理，并提供实用的 jcstress 示例。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/tough-jdk-3-jmm/featured.jpg"/></item><item><title>隐藏的性能杀手：为什么日志中的代码位置会摧毁你的微服务性能</title><link>https://neatguycoding.com/zh-cn/posts/log-with-position/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-with-position/</guid><description>了解在日志中启用代码位置如何导致微服务中的严重 CPU 性能问题，特别是响应式应用。这个深入分析揭示了 Log4j2 中堆栈遍历的隐藏成本，并为高吞吐量系统提供了可行的解决方案。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/log-with-position/featured.jpg"/></item><item><title>Spring Boot 升级后内存问题排查：深入探讨 ResolvableType 对象创建</title><link>https://neatguycoding.com/zh-cn/posts/spring-5-regression/</link><pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/spring-5-regression/</guid><description>调查升级到 Spring Boot 2.4.6 + Spring Cloud 2020.0.x 后过度内存分配和 YoungGC 频率增加的问题，揭示 BeanUtils.copyProperties 如何在 Spring 5.3.x 版本中创建大量 ResolvableType 对象而不进行缓存。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/spring-5-regression/featured.jpg"/></item><item><title>一个奇怪的 Bug 追踪：当异常失去声音时</title><link>https://neatguycoding.com/zh-cn/posts/log-exception/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/log-exception/</guid><description>深入探讨一个神秘的生产问题，其中异常日志神秘消失，引导我们通过 Arthas 调试、Log4j2 内部机制，以及发现异常的 getMessage() 方法本身由于 Guava-Guice 版本不兼容而抛出异常。</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 日志：新统一配置完整指南</title><link>https://neatguycoding.com/zh-cn/posts/jvm-log/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://neatguycoding.com/zh-cn/posts/jvm-log/</guid><description>了解 OpenJDK 11 如何通过其统一配置系统彻底改变 JVM 日志记录。学习用于 GC 分析、类加载和运行时编译的基本日志标签，以及使用 jcmd 进行实时性能调优的动态日志配置。</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://neatguycoding.com/posts/jvm-log/featured.jpg"/></item></channel></rss>