近日,JetBrains官方发布了一篇题为“How to use a module from Jetbrains Runtime”的技术文档,引发了开发者社区的广泛关注。作为基于OpenJDK定制的高性能运行时环境,JetBrains Runtime(简称JBR)长期以来为IntelliJ IDEA、PyCharm等IDE提供底层支持,但其模块化特性此前并未被充分挖掘。此次官方文档的释出,意味着开发者可以更灵活地调用JBR内置的专属模块,以优化应用性能、增强图形渲染能力或集成特定功能。本文将从技术背景、核心步骤与行业影响三个维度,对这一新动态进行深入解读。

一、JetBrains Runtime:不止是IDE的影子

对于大多数Java开发者而言,JetBrains Runtime或许只是一个“附赠品”——每当安装IntelliJ IDEA时,JBR便自动配置于IDE目录下。然而,JBR并非普通JRE的简单克隆:它集成了JetBrains针对桌面应用场景的深度优化,包括改进的字体渲染、窗口合成器(Window Compositor)支持、以及对HiDPI屏幕的完善适配。更为关键的是,JBR内部包含了一系列专属模块(如jbr.cefjbr.fsjbr.jcef),这些模块封装了Chromium Embedded Framework、文件系统增强等能力,但默认情况下仅被IDE自身使用。

“过去,开发者若想调用JBR的图形加速模块,往往需要手动修改类加载器或依赖IDE的未公开API,过程繁琐且极易出错。”一位参与过JBR逆向工程的资深工程师向记者透露。如今,JetBrains正式开放了模块调用规范,使得第三方应用也能像IDE一样享受JBR的定制化能力。

二、三步走:从依赖配置到模块调用

根据JetBrains官方指南,使用JBR模块主要分为三个步骤,但开发者须注意,该流程仅适用于基于JBR运行时的项目,即启动参数中需指定-javaagent或明确依赖jbr/sdk目录。

第一步:确认JBR版本与模块清单。
不同版本的JBR所包含的模块存在差异。开发者可通过命令行执行java -version,并观察输出中是否包含“JetBrains Runtime”字样。随后,在JBR安装目录的lib/modules子目录下,可找到以.jmod后缀存在的模块文件,例如jbr.cef.jmod即对应Chromium嵌入模块。官方建议优先使用JBR 17或更高版本,以获取完整的模块支持。

第二步:添加模块路径与依赖声明。
在构建工具(如Maven或Gradle)中,需将JBR的lib目录加入模块路径。例如在Maven的pom.xml中配置插件参数:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgs>
            <arg>--module-path</arg>
            <arg>${env.JBR_HOME}/lib</arg>
        </compilerArgs>
    </configuration>
</plugin>

若使用模块化项目(module-info.java),则需显式添加requires jbr.cef;等语句。

第三步:通过API实例化模块对象。
jbr.cef为例,开发者可通过CefApp类的工厂方法启动CEF渲染进程。JetBrains在文档中特别强调,所有模块API均位于com.jetbrains.jbr.*包下,且必须通过ModuleLayer而非传统类路径加载。示例代码如下:

ModuleLayer layer = ModuleLayer.boot();
Optional<Module> module = layer.findModule("jbr.cef");
if (module.isPresent()) {
    // 使用反射或已公开的ServiceLoader接口
}

官方同时警告,部分模块仍处于实验阶段(标记为@ApiStatus.Experimental),生产环境需谨慎评估。

三、行业影响:桌面应用开发的新变量

JetBrains Runtime模块的开放,对Java桌面生态将产生深远影响。一方面,开发者不再需要为了集成浏览器控件(如CEF)而引入庞大的Electron或原生库,JBR作为“操作系统层”提供了更轻量的选择。某跨平台IDE插件开发者表示:“以前我们在IDEA插件中嵌入Web页面,需要依赖JCEF的独立分发版,现在直接调用JBR内置模块即可,安装体积缩减了约30%。”

另一方面,该举措也可能加剧Java桌面运行时领域的分化。目前Oracle JDK和OpenJDK均未提供类似的原生图形加速模块,而JetBrains凭借IDE生态的统治地位,有望将JBR塑造成事实上的“桌面Java标准运行时”。但法律层面的风险同样存在:JBR采用商业许可证(需与JetBrains IDE绑定),开发者若将其用于独立商业发行,可能面临授权争议。对此,JetBrains官方回应称,将近期发布更详尽的模块使用许可条款,以确保合规性。

四、结语:从幕后走向台前

从IDE的内核组件到开发者手中的通用工具,JetBrains Runtime的模块化开放是一次自然演进。正如官方文档所述:“我们相信,让社区直接使用这些模块,将催生更多创新的桌面Java应用。”对于正在寻求性能突破或功能集成的Java工程师而言,现在正是深入探索JBR模块的最佳时机。但需牢记:技术红利与潜在风险并存,谨慎评估、充分测试,方能让JetBrains Runtime真正成为你工具箱中的利器。