IntelliJ IDEA
IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin
IntelliJ IDEA 中的 Java 27
遵照六个月一次的发布节奏,Java 27 于 2026 年 9 月 15 日发布。在这篇博文中,我们将介绍此版本包含的内容、IntelliJ IDEA 如何持续支持最新的 Java 版本,以及 IntelliJ IDEA 如何从 JDK 的一些变化中受益。
Java 27 带来了 9 个 JEP,其中 4 个已达到最终状态。此外,4 项预览功能持续完善,另有 1 个 JEP 继续作为孵化器功能。
即使您不使用 IntelliJ IDEA,也可以在其他环境中领略它的智能功能:IntelliJ IDEA 支持 LSP:Java 和 Kotlin 智能功能现已登陆 VS Code、Cursor 和智能体化流程。这为最新的 Java 版本和功能(包括抢先体验版本和预览功能)提供了同等水平的支持。
在这篇博文中,我们先来设置 IntelliJ IDEA,以使用最新的 Java 版本。
在 IntelliJ IDEA 中使用 Java 27(设置)
首先,您需要下载 JDK 27。可以通过多种方式下载:直接在 IntelliJ IDEA 中下载,使用 SDKMAN! 等工具或使用 asdf,也可以自行安装。
下载 JDK
要从 IntelliJ IDEA 下载 JDK 27,请打开 Project Structure(项目结构),转到 Project Settings | Project(项目设置 | 项目)标签页,打开 SDK 字段中的下拉菜单,然后选择 Download JDK(下载 JDK)。在打开的 Download JDK(下载 JDK)弹出窗口中,将 Version(版本)设为 27,然后在 Vendor(供应商)字段中选择要使用的供应商。


如果您已安装 JDK,可以将 IntelliJ IDEA 指向安装位置。请改为从下拉菜单中选择 Add JDK from Disk(从磁盘添加 JDK)。

JDK 版本将从项目设置自动传递到终端,这意味着您和智能体都可以在 IntelliJ IDEA 的终端上使用适合项目的 JDK。此功能的演示可以在 IntelliJ IDEA 2026.2 最新变化视频中查看。
如果您使用 SDKMAN! 或 asdf 管理 JDK,IntelliJ IDEA 可以读取项目中的 .sdkmanrc 或 .tool-versions 文件,如果已安装相应 JDK,则可以自动进行配置。
如果您使用的是 SDKMAN!,而 .sdkmanrc 文件中指定的 JDK 版本尚未安装,该文件中会显示嵌入提示,您可以通过运行相关的 SDKMAN! 命令,直接从 IDE 下载该版本。即使您尚未安装 SDKMAN! 也可以,这意味着 Windows 用户也可以使用此功能。
有关 JDK 设置方式的更多信息,请参阅文档。
设置语言级别
IntelliJ IDEA 从 Java 27 发布首日起便提供支持。在 Project Structure(项目结构)中,将 Language level(语言级别)设为 27 – No new language features。

如果您使用预览功能,请将其设为 27 (Preview) – Primitive types in patterns, instanceof, and switch (5th preview)。请注意,IntelliJ IDEA 将在编辑器中高亮显示预览功能的使用,以便您了解预览功能的具体使用位置。

Java 27 中新增的稳定功能
Java 27 新引入了 4 项稳定功能。我们来快速了解一下。
JEP 523:在所有环境中将 G1 设为默认垃圾收集器
Garbage-First (G1) 垃圾收集器自 Java 9 起就一直是默认垃圾收集器,但有一个例外情况:仅有一个 CPU 或 RAM 不足 1,792 MB 的计算机会回退到 Serial GC。此 JEP 在所有环境中将 G1 设为 HotSpot JVM 的默认垃圾收集器,而不再仅限于服务器环境,从而取代了 Serial 收集器。
G1 垃圾收集器经过多项改进(包括 JEP 522:G1 GC:通过减少同步提高 Java 26 中的吞吐量),现在其性能已足以取代 Serial。对于在受限环境中使用 Serial 可以达到更佳性能的应用程序,可以通过选项 `-XX:+UseSerialGC` 显式启用 Serial。
JEP 527:用于 TLS 1.3 的后量子混合密钥交换
此 JEP 通过为 TLS 1.3 实现混合密钥交换算法,增强了需要安全网络通信的 Java 应用程序的安全性。这有助于防范“先收集、后解密”攻击,即攻击者现在记录加密流量,打算等量子计算机功能足够强大时再进行解密。
JEP 534:默认使用紧凑对象头
此 JEP 将紧凑对象头设为 HotSpot JVM 中的默认对象头布局。
通过在 64 位架构上将对象头从 96 位缩减到 64 位,紧凑对象头可以缩减堆大小、提高部署密度,以及增强数据局部性。
紧凑对象头在 Java 24 中作为实验性功能引入,并在 Java 25 中成为可以启用的功能。由于紧凑对象头现已成为默认设置,您无需再像使用 JDK 25 时那样通过命令行选项启用它们。
包含大量对象的应用程序将从这项变化中受益,因为紧凑对象头可以减少 JVM 内存占用。JetBrains IDE 正在使用此功能,并在启用后观察到持续稳定的内存节省。了解详情。
JEP 536:JFR 进程内数据脱敏
此 JEP 增强了 JDK Flight Recorder (JFR):在记录离开进程之前,对其中的命令行实参以及环境变量和系统属性的初始值进行脱敏,从而防止敏感信息泄露。
Java 27 中的预览功能
利用预览功能,开发者有机会在新功能最终交付前进行试用并提供反馈。预览功能在最终交付并成为语言标准组成部分之前,可能会经历多轮迭代,期间可能有更改,也可能没有更改。
IntelliJ IDEA 致力于为预览功能提供支持,让您可以在它们成为标准之前进行试验。由于这些功能始终可能发生变化,IntelliJ IDEA 仅支持当前 JDK 的预览功能。要启用预览功能,请将 Language level(语言级别)设为 27 (Preview) – Primitive types in patterns, instanceof, and switch (5th preview)。
Java 27 包含 4 项预览功能和 1 项孵化器功能。这些功能本身与 Java 26 中相同,但其中一些在 Java 27 中进行了修订。
JEP 531:延迟常量(第 3 轮预览)
延迟常量是保存不可变数据的对象。顾名思义,它们采用延迟求值方式。与立即求值的 final 字段相比,这种方式更具优势。使用延迟常量时,仅会在需要时对字段求值,从而可以缩短启动时间。
如需更详细的说明,请参阅 IntelliJ IDEA 中 Java 26 的延迟常量部分。
延迟常量最初在 Java 25 中引入(作为稳定值),并在 Java 26 中经历了重大改动。该 API 在 Java 27 中又进行了进一步修订。
JEP 532:模式中的基元类型,instanceof 和 switch(第 5 轮预览)
正如 IntelliJ IDEA 中的 Java 26 中所述,此功能增强了模式匹配,使其能够在模式上下文中支持所有基元类型,包括 instanceof 和 switch。此功能消除了模式匹配的一些现有限制,从而可以在这些构造中对基元值进行匹配、测试和安全转换。无需再进行不安全的手动转换(可能导致难以察觉的 bug)和范围检查,从而提高了代码的安全性和可读性。此功能在 Java 27 中仍处于预览阶段,与 Java 26 版本相比没有变化。
一个快速示例
下面我们来快速了解一个在 switch 表达式中配合 guard 模式使用基元类型的示例。
int itemDiscountPercentage(int items) {
return switch (items) {
case 2 -> 5;
case 3, 4 -> 10;
case int i when i >= 5 -> 20;
default -> 0;
};
}
我们可以将 Javadoc 添加到此方法,以说明它的运作方式。自 Java 23 (JEP 467) 起,Javadoc 便可以使用 Markdown 编写。如果您的项目使用 JDK 23 或更高版本,在使用上下文操作 Add Javadoc(添加 Javadoc)时,IntelliJ IDEA 默认会插入 Markdown 文档注释。
旁注:如果您倾向于使用传统注释,而非 Markdown,请打开 Settings(设置),转到 Editor | Code Style | Java | Code Generation | Comment Code(编辑器 | 代码样式 | Java | 代码生成 | 注释代码),然后取消选择 Prefer documentation line comments(首选文档行注释)选项。

IntelliJ IDEA 可以使用上下文操作 Convert to Markdown documentation comment(转换为 Markdown 文档注释),将现有 Javadoc 转换为 Markdown。
有关此功能的更多详细说明,请参阅 Java 23 和 IntelliJ IDEA 的 此部分。
JEP 533:结构化并发(第 7 轮预览)
正如 IntelliJ IDEA 中的 Java 26 中所述,结构化并发为多线程代码提供了更好的“惯用法”,这意味着代码会更贴合用户的思维模式。
结构化并发将在不同线程中运行的相关任务组视为单个工作单元。这提高了可读性和可观测性,从而使并发代码更容易理解和推理。它还有助于消除线程泄漏和取消延迟。
有关结构化并发及其如何与 Project Loom 的其他功能协同工作的更多详细信息,请查看我之前的博文:IntelliJ IDEA 中的 Project Loom:虚拟线程、作用域值和结构化并发。
如该博文所述,IntelliJ IDEA 提供了一个实时模板,可以快速搭建 StructuredTaskScope 的框架。您可以在 IntelliJ IDEA 中使用快捷键(macOS 上为 ⌘J / Windows 和 Linux 上为 Ctrl+J)调出可用的实时模板列表。或者,您也可以使用命令补全:输入 .. –,随即会显示与当前上下文相关的所有命令列表。您甚至可以输入命令名称的一部分(例如,输入“live”可显示实时模板),相关命令会作为常规补全结果出现。
实时模板列表可以按名称和描述进行搜索。如果搜索“structured”,将会找到实时模板 sts。
有关命令补全的更多信息,请查看我之前的博文:通用入口:上下文感知编码辅助的单一入口。
JEP 538:加密对象的 PEM 编码(第 3 轮预览)
正如 IntelliJ IDEA 中的 Java 26中所述,此 JEP 提供的预览 API 可用于在隐私增强邮件 (PEM) 格式与加密对象(密钥、证书和证书吊销列表)之间进行编码和解码。
与上一版本相比,该 API 在 Java 27 中又发生了一些变化。
Java 27 中的孵化器功能
孵化器模块属于实验性 API。它们是明确的非最终 API 和工具,仅供开发者试用。与预览功能不同,孵化器功能在今后的版本中可能发生重大变化,甚至可能被移除。它们不适用于生产用途。
要使用孵化器功能,需要在运行代码时显式添加相应模块,即为该特定模块添加 --add-modules 命令行选项。
如果通过 IntelliJ IDEA 运行代码,可以为应用程序的运行配置添加命令行选项。选择程序的运行配置,然后点击 More Actions(更多操作)的三个点。选择 Edit(编辑),打开 Run/Debug Configurations(运行/调试配置)。点击 Modify Options(修改选项)链接,然后在 Add Run Options(添加运行选项)弹出窗口中选择 Add VM Options(添加虚拟机选项)。将出现一个新字段,提示 VM Options(虚拟机选项)。将命令行选项添加到该字段。
JEP 537:Vector API(第 12 个孵化器)
正如 IntelliJ IDEA 中的 Java 26 所述,此 JEP 引入的 API 使开发者能够表示可以在支持的 CPU 上可靠编译为最优向量指令的向量计算。向量运算可以在单个 CPU 周期中完成更多工作,这可能带来显著的性能提升。
由于这是一个孵化器模块,您需要按上文所述提供命令行选项才能显式添加该模块。要使用 Vector API,请添加以下命令行选项:--add-modules jdk.incubator.vector。
与 Java 26 相比,Java 27 中的 Vector API 没有变化。此功能将继续孵化,直至 Project Valhalla 所需的功能作为预览功能提供。
其他更改:调试器改进
除 JEP 外,JDK 27 还包含 bug 修正,例如 JDK-6960970。调试器在单步执行时速度非常慢。此问题已在 JDK 27 中得到修正,这意味着现在调试器逐步执行速度更快。我们的工程师已将此修正向后移植到 JetBrains Runtime (JBR) 25,因此他们可以在调试 IntelliJ IDEA 自身代码时使用。这表明可以将此更改向后移植到 Java 25,并且更改能够正常运行。如果您希望利用此更改,可以使用 JBR 25,或请求供应商向后移植此更改。
展望未来
Project Valhalla 的功能已开始逐步进入 Java。值对象 (JEP 401) 和 JVM 中的严格字段初始化 (JEP 539) 均已作为预览功能纳入 JDK 28。这意味着如果您想试用这些功能,无需再下载专用的 Valhalla 发行版。您可以下载 JDK 28 EA(抢先体验)版本。此版本可以直接从 IntelliJ IDEA 中下载。
如果您已经下载 JDK 28 EA,也可以让 IntelliJ IDEA 指向安装位置。
结论
Java 27 虽然不是 LTS 版本,却带来了安全性和性能方面的改进,并持续推进几项重要预览功能的演进。IntelliJ IDEA 自 Java 27 发布首日起便为其提供支持,并将继续支持最新的 Java 功能。如有任何反馈,请告诉我们。
本博文英文原作者:
