The IntelliJ IDEA Blog

Java 27 in IntelliJ IDEA

8.5内容质量
Java 27 in IntelliJ IDEA

TL;DR · AI 摘要

IntelliJ IDEA全面支持Java 27,提供JDK下载、语言级别设置及LSP扩展功能。

核心要点

  • IntelliJ IDEA 2026.2支持Java 27的JDK下载与配置
  • 通过SDKMAN!或asdf可自动同步JDK版本到IDE
  • LSP扩展使VS Code等编辑器获得Java 27智能支持

结构提纲

按章节快速跳转。

  1. §Java 27发布背景

    介绍Java 27按照六个月发布周期于2026年9月15日发布。

  2. 详细说明通过IntelliJ IDEA下载和配置JDK 27的三种方式。

  3. 指导如何在Project Structure中将语言级别设置为Java 27。

  4. ·LSP扩展支持

    阐述IntelliJ IDEA通过LSP将Java智能支持扩展到VS Code等编辑器。

  5. 说明SDKMAN!自动配置功能对Windows用户的兼容性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • IntelliJ IDEA与Java 27支持
    • JDK配置
      • Download JDK
      • Add JDK from Disk
      • SDKMAN!/asdf自动配置
    • 语言设置
      • Language level 27
      • Preview features支持
    • LSP扩展
      • VS Code支持
      • Cursor集成
      • Agentic Flows兼容

金句 / Highlights

值得收藏与分享的关键句。

#Java#IntelliJ IDEA#JDK#LSP#开发工具
打开原文

IntelliJ IDEA 中的 Java 27 - JetBrains 博客

IntelliJ IDEA

IntelliJ IDEA – Java 和 Kotlin 专业开发的领先 IDE

关注

  • 关注:
  • LinkedIn LinkedIn
  • Bluesky Bluesky
  • X X
  • Facebook Facebook
  • YouTube YouTube
  • RSS RSS

下载

Java

新闻

IntelliJ IDEA 中的 Java 27

Marit van Dijk

遵循每六个月一次的发布周期,Java 27 于 2026 年 9 月 15 日发布。在本文中,我们将探讨此版本包含哪些内容,IntelliJ IDEA 如何持续支持最新的 Java 版本,甚至 IntelliJ IDEA 如何从部分 JDK 改动中受益。

Java 27 包含九个 JEP,其中四个已最终确定。此外,四个预览功能继续成熟,一个 JEP 仍作为孵化功能。

即使你没有使用 IntelliJ IDEA,也可以在其他地方获得其智能支持:IntelliJ IDEA 接入 LSP:Java 和 Kotlin 智能功能扩展至 VS Code、Cursor 和 Agentic Flows。这为最新 Java 版本和功能(包括早期访问版本和预览功能)提供了相同级别的支持。

对于本文,让我们首先设置 IntelliJ IDEA 以使用最新 Java 版本。

在 IntelliJ IDEA 中使用 Java 27(设置)

首先,你需要下载 JDK 27。有多种方式可以实现:你可以通过 IntelliJ IDEA 内部下载,使用 SDKMAN! 或 asdf 等工具,或者自行安装。

下载 JDK

要从 IntelliJ IDEA 下载 JDK 27,请打开项目结构,进入项目设置 | 项目标签页,在 SDK 字段的下拉菜单中选择下载 JDK。在弹出的下载 JDK 窗口中,将版本设置为 27,并在供应商字段中选择你希望使用的供应商。

下载 JDK

下载 JDK – 选择供应商

如果你已经安装了 JDK,可以将 IntelliJ IDEA 指向你的安装目录。此时,从下拉菜单中选择从磁盘添加 JDK。

从磁盘添加 JDK

JDK 版本将自动从项目设置传播到终端,这意味着你和你的代理都可以在 IntelliJ IDEA 的终端中使用适合项目的正确 JDK。该功能的演示在 IntelliJ IDEA 2026.2 新功能视频中有所展示。

如果你使用 SDKMAN! 或 asdf 管理 JDK,IntelliJ IDEA 可以读取项目中的 .sdkmanrc 或 .tool-versions 文件,并在你已安装 JDK 的情况下自动配置 JDK。

如果你使用 SDKMAN! 且 .sdkmanrc 文件中指定的 JDK 版本尚未安装,文件中会出现一个内联提示,允许你通过运行相关 SDKMAN! 命令直接从 IDE 下载。即使你没有安装 SDKMAN!,此功能也有效,这意味着 Windows 用户也可以使用此功能。

有关如何设置 JDK 的更多信息,请参见文档。

设置语言级别

IntelliJ IDEA 从第一天起就支持 Java 27。在项目结构中,将语言级别设置为 27 – 没有新语言特性。

27 – 没有新语言特性

如果你使用预览功能,请设置为 27(预览)– 模式中的原始类型、instanceof 和 switch(第五次预览)。请注意,IntelliJ IDEA 会在编辑器中突出显示预览功能的使用情况,以便你清楚了解预览功能的使用位置。

27(预览)– 模式中的原始类型、instanceof 和 switch(第五次预览)

Java 27 中的新稳定特性

Java 27 引入了 4 个新的稳定特性。让我们快速了解一下。

JEP 523:在所有环境中将 G1 设为默认垃圾收集器

垃圾优先(G1)垃圾收集器自 Java 9 起成为默认垃圾收集器,有一个例外:仅配备 1 个 CPU 或内存不足 1,792 MB 的机器会回退到 Serial GC。该 JEP 使 G1 成为 HotSpot JVM 在所有环境中的默认垃圾收集器,而不仅限于服务器环境,取代了 Serial 收集器。

对 G1 垃圾收集器进行了改进(包括 JEP 522:G1 GC:通过减少同步提高吞吐量 Java 26),使其性能现已足够替代 Serial。对于在受限环境中使用 Serial 表现更佳的应用程序,可以通过选项 -XX:+UseSerialGC 显式启用。

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 的预览功能。要启用预览功能,请将语言级别设置为 27(预览)– 模式中的原始类型、instanceof 和 switch(第五次预览)。

Java 27 包含四个预览功能和一个孵化功能。这些功能本身与 Java 26 中的相同,但其中一些在 Java 27 中进行了修订。

JEP 531:惰性常量(第三次预览)

惰性常量是保存不可变数据的对象。顾名思义,它们是惰性求值的。这相对于急切求值的 final 字段具有优势。使用惰性常量时,字段仅在需要时才被求值,这可以提高启动时间。

对于更详细的解释,请参见 IntelliJ IDEA 中 Java 26 的“延迟常量”部分。

延迟常量最早在 Java 25 中引入(作为稳定值),并在 Java 26 中经历了重大变更。Java 27 进一步修订了该 API。

JEP 532:模式、instanceof 和 switch 中的原始类型(第五次预览)

如 IntelliJ IDEA 中 Java 26 的描述,此功能增强了模式匹配,使其支持所有原始类型在模式上下文中使用,包括 instanceof 和 switch。该功能消除了模式匹配的一些现有限制,使得可以在这些结构中匹配、测试并安全地转换原始值。去除对不安全手动类型转换(可能导致细微错误)和范围检查的需求,从而提升了代码安全性和可读性。该功能在 Java 27 中仍处于预览阶段,与 Java 26 版本无任何变更。

快速示例

让我们快速看一下在 switch 表达式中使用原始类型和守卫模式的示例。

code
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 或更高版本,IntelliJ IDEA 在使用上下文操作“添加 Javadoc”时,默认会插入 Markdown 文档注释。

添加 JavaDoc

附注:如果更倾向于使用传统注释而非 Markdown,请打开设置,进入 Editor | Code Style | Java | Code Generation | Comment Code,然后取消勾选“Prefer documentation line comments”选项。

Prefer documentation line comments

IntelliJ IDEA 可以通过上下文操作“Convert to Markdown documentation comment”将现有 Javadoc 转换为 Markdown 格式。

Convert to Markdown documentation comment

您可以在 Java 23 和 IntelliJ IDEA 的这一部分找到该功能的更详细说明。

JEP 533:结构化并发(第七次预览)

如 IntelliJ IDEA 中 Java 26 的描述,结构化并发为我们提供了更优的多线程代码“惯用法”,这意味着代码更贴近用户的思维模型。

结构化并发将不同线程中运行的相关任务组视为单个工作单元。这提升了可读性和可观测性,使并发代码更易于理解和推理。它还有助于消除线程泄漏和取消延迟。

有关结构化并发的更多细节及其如何与 Project Loom 的其他功能协同工作,请参见我之前的博客文章《IntelliJ IDEA 中的 Project Loom:虚拟线程、作用域值和结构化并发》。

如该博客文章中所述,有一个现成模板可用于快速搭建 StructuredTaskScope。您可以通过快捷键(macOS 上为 ⌘J / Windows 和 Linux 上为 Ctrl+J)在 IntelliJ IDEA 中调出可用的现成模板列表。或者,您可以使用命令补全功能:输入 .. – 系统将显示与当前上下文相关的所有命令列表。您甚至可以输入命令名称的部分内容(例如输入“live”以显示“Show live templates”),相关命令将作为常规补全的一部分显示出来。

现成模板列表可以通过名称和描述进行搜索。如果我们搜索“structured”,将找到现成模板 sts。

使用命令补全显示实时模板

有关命令补全的更多信息,请参阅我之前的博客文章《通用入口点:面向上下文的代码辅助单一入口点》。

JEP 538:密码对象的PEM编码(第三次预览)

如《IntelliJ IDEA中的Java 26》所述,此JEP为编码和解码密码对象(密钥、证书和证书吊销列表)到隐私增强邮件(PEM)格式提供了预览API。

与上一版本相比,Java 27中该API经历了进一步修改。

Java 27中的孵化器功能

孵化器模块是实验性API。这些API和工具明确属于非最终版本,仅供开发者尝试使用。与预览功能不同,孵化器功能在未来版本中可能会发生重大变更,甚至可能被移除。它们不适用于生产环境。

要使用孵化器功能,您需要在运行代码时显式添加模块,通过为特定模块添加--add-modules命令行选项实现。

如果您使用IntelliJ IDEA运行代码,可以通过为应用程序的运行配置添加命令行选项来实现。选择您的程序运行配置,点击“更多操作”旁边的三个点。选择“编辑”以打开“运行/调试配置”。点击“修改选项”链接,在弹出的“添加运行选项”窗口中,选择“添加VM选项”。会出现一个带有“VM选项”提示的新字段,将命令行选项添加到该字段中。

添加VM选项

JEP 537:向量API(第十二次孵化器)

如《IntelliJ IDEA中的Java 26》所述,此JEP引入了一个API,允许开发者表达可以在支持的CPU上可靠编译为最佳向量指令的向量计算。向量操作可以在单个CPU周期内执行更多工作,从而带来显著的性能提升。

由于这是一个孵化器模块,您必须按照上述说明提供命令行选项以显式添加模块。要使用向量API,请添加以下命令行选项:--add-modules jdk.incubator.vector。

与Java 26相比,Java 27中向量API没有变化。该功能将一直作为孵化器功能,直到Project Valhalla所需功能作为预览功能可用。

其他变更:调试器改进

除了JEP之外,JDK 27还包含错误修复,例如JDK-6960970。在单步调试期间,调试器速度非常慢。此问题已在JDK 27中修复,这意味着现在通过调试器进行单步调试速度更快。我们的工程师已将此修复回溯到JetBrains运行时(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 不是长期支持版本,但它带来了安全性和性能改进,并继续推进多项重要预览功能的演进。IntelliJ IDEA 从一开始便全面支持 Java 27,并将持续支持最新的 Java 特性。如果您有任何反馈,欢迎随时告知。

IntelliJ IDEA

Java 27

  • 分享
  • Facebook
  • Twitter
  • LinkedIn

上一篇

绕过 HTTP 403 错误调试而不破坏 Spring Security

IntelliJ IDEA 2026.2.3 已发布!

下一篇