一、 GraalVM Maven整体介绍

GraalVM 的宏伟目标:成为一个通用的、高性能的、安全的多语言运行时平台。它不仅仅是简单地将多个语言虚拟机塞进 JVM,而是通过统一的基础设施(Truffle, Polyglot API)、统一的工具链和统一的安全模型,真正将这些语言融合在一起,使得开发者能够为任务选择最合适的语言,同时享受无缝互操作和卓越性能,最终解决复杂应用开发中的“语言壁垒”问题。

GraalVM 生态系统的 Maven 构件涉及了以下几个核心方面,共同构成了一个完整的高性能多语言平台解决方案:

1. 核心运行时与多语言引擎 (Core Runtimes & Language Engines)

这是最基础的部分,提供了直接在 JVM 上运行各种语言的能力。

  • 涉及构件polyglotjspythonrubyjava (Espresso), wasmllvm-nativellvm-managed
  • 摘要说明:解决了在 Java 虚拟机中无缝嵌入和执行其他流行语言(如 JavaScript、Python、Ruby)以及非 JVM 语言(如通过 WebAssembly 或 LLVM bitcode 的 C/C++/Rust)的根本问题。其核心价值在于通过 Truffle 框架实现了这些语言之间的高性能、零序列化成本的互操作,打破了传统语言间调用(如 JNI)的性能壁垒。

2. 安全与隔离 (Security & Isolation)

提供了运行不可信代码或需要资源隔离的多租户应用的能力。

  • 涉及构件:所有 *-isolate 和平台特定的隔离构件(如 js-isolatewasm-isolate-linux-amd64python-isolate-darwin-aarch64 等)。
  • 摘要说明:解决了在同一个 JVM 进程中安全、可靠地运行多个独立用户或服务的代码的问题。通过提供资源可控的沙箱环境(Isolates),确保了代码执行的隔离性、安全性和稳定性,是构建云函数、插件系统、多租户 SaaS 应用的关键技术。

3. 开发者工具与体验 (Developer Tooling & Experience)

提供了现代化的开发、调试、分析和测试工具链,极大提升多语言应用的开发效率。

  • 涉及构件toolsdaplspinspectcoverageprofilerheap
  • 摘要说明:解决了为多种语言提供统一、高效的开发环境难题。通过适配行业标准协议(DAP, LSP, Chrome DevTools),使得开发者可以使用熟悉的 IDE(如 VS Code, IntelliJ)和浏览器开发者工具来调试、分析所有 GraalVM 支持的语言,无需为每种语言学习不同的工具。覆盖了调试、性能剖析、代码覆盖率、内存分析等整个开发生命周期。

4. 可观察性与洞察 (Observability & Insight)

提供了在生产和开发环境中深入洞察应用程序运行时行为的能力。

  • 涉及构件insightheap
  • 摘要说明:解决了动态监控和诊断复杂多语言应用程序行为的挑战。允许开发者以低开销的方式实时跟踪函数执行、调用链、参数传递等,无需修改源代码,非常适合进行故障诊断、性能分析和行为理解。

5. 兼容性与质量保证 (Compatibility & Quality Assurance)

确保了整个生态系统的一致性和可靠性。

  • 涉及构件polyglot-tck (来自两个 groupId)
  • 摘要说明:解决了不同语言实现与 GraalVM 平台标准保持一致性的问题。TCK 为语言实现者提供了一套测试规范,是保证所有 GraalVM 语言都能提供高质量、可预测行为和性能的基石。

6. 便捷部署与项目搭建 (Deployment & Project Setup)

简化了用户采用该技术的过程。

  • 涉及构件graalpy-archetype-polyglot-applanguages
  • 摘要说明:解决了开发者快速入门和构建多语言项目的配置复杂度问题。聚合依赖(POM)和 Maven 原型(Archetype)通过“一键式”配置,大幅降低了尝试和使用多语言技术的门槛。

7. 版本与发行管理 (Edition Management)

反映了项目从社区版到正式版的演进过程。

  • 涉及构件:所有标有 -community 且已弃用的构件。
  • 摘要说明:这些构件标志着 GraalVM 从早期的、许可更宽松的“社区”发行版向成熟的、有商业支持的“正式”发行版的过渡。指导用户从旧版迁移到当前推荐的标准构件。

二、 org.graalvm.polyglot 包说明

1.  org.graalvm.sdk

所属组名Java 包名包描述
org.graalvm.sdkpolyglot-tckGraalVM 技术兼容性工具包 (TCK) 的服务提供者接口 (SPI) 。它为语言实现者提供了一套标准化的测试接口和规范,用于验证其语言实现是否与 GraalVM 多语言生态系统完全兼容。这解决了确保不同语言在 GraalVM 平台上具有一致的行为、性能和互操作性的问题,是 GraalVM 语言生态的质量保证基石。

2. org.graalvm

所属组名Java 包名包描述
org.graalvmpolyglot-tckGraalVM 技术兼容性工具包 (TCK) 的服务提供者接口 (SPI) 。此构件是 GraalVM 核心发行版的一部分,功能与 org.graalvm.sdk:polyglot-tck 相同,为集成到 GraalVM 本身中的语言实现提供兼容性测试标准。

3.  org.graalvm.polyglot (核心与正式版构件)

所属组名Java 包名包描述
org.graalvm.polyglotpolyglotGraalVM 多语言应用程序的核心 API 和运行时。它提供了一个统一的框架,允许在单个 JVM 进程中无缝嵌入和互操作多种编程语言(如 JavaScript、Python、Ruby、R、WebAssembly)。它解决了传统 Java 应用中与其他语言交互时的复杂性和性能开销问题,通过高性能的 Truffle 框架实现语言间的零开销互操作。
org.graalvm.polyglotwasmGraalWasm:高性能的 WebAssembly (Wasm) 运行时。它允许在 JVM 中安全、高效地执行符合 WASI 标准的 WebAssembly 二进制模块。解决了将用 C/C++/Rust 等语言编写并编译为 Wasm 的代码嵌入到 Java 应用程序中的需求,适用于插件系统、沙箱环境和高性能计算场景。此依赖包含了运行所需的 Truffle 框架。
org.graalvm.polyglotlanguages所有 GraalVM 语言实现的聚合依赖。通过引入此 POM 依赖,可以一次性获取所有官方支持的 GraalVM 语言(如 JS, Python, Ruby, R, Wasm)以及底层的 Truffle 框架。它简化了项目配置,解决了开发者需要手动添加多种语言依赖的麻烦,便于快速构建和试验多语言应用。
org.graalvm.polyglottools所有 Truffle 语言工具的聚合依赖。此 POM 提供了用于支持 GraalVM 语言开发的全套工具,包括调试器、分析器、覆盖率工具等。它解决了开发者需要为每种语言单独配置开发工具的复杂性,通过单一依赖即可获得完整的多语言开发调试能力。
org.graalvm.polyglotjsGraalJS:高性能、符合 ECMAScript 标准的 JavaScript 运行时。它提供了一个可嵌入 Java 的现代 JavaScript 引擎,性能优异且与 Node.js 生态兼容。解决了在 JVM 上运行 JS 代码、在 Java 应用中集成脚本功能、以及构建基于 JS 的服务器端应用的需求。包含 Truffle 框架。
org.graalvm.polyglotrubyTruffleRuby:高性能的 Ruby 实现。它提供了与 CRuby 的高度兼容性,并能在 GraalVM 上实现极高的执行性能。解决了在 JVM 平台上运行 Ruby on Rails 等 Ruby 应用、以及让 Ruby 代码与 Java 和其他语言高效互操作的问题。
org.graalvm.polyglotpythonGraalPy:高性能的 Python 3 运行时。它支持在 JVM 上运行 Python 代码,兼容流行的 Python 科学计算库(如 NumPy, Pandas)。解决了在 Java 生态中集成 Python 机器学习/数据科学库、编写高性能 Python 应用、以及实现 Python 与 Java 代码无缝互操作的需求。
org.graalvm.polyglotjavaEspresso:在 Truffle 框架上实现的 Java 字节码解释器。它允许在 GraalVM 上运行 Java 应用程序,并与其他支持的语言进行语言级的深度互操作(而不仅仅是 JNI)。解决了在非标准 JVM(如 Native Image)中运行 Java、或将 Java 作为多语言应用中的一环进行集成的特殊需求。
org.graalvm.polyglotllvm-managed托管模式的 LLVM 解释器。它允许在 GraalVM 的安全沙箱中执行已编译的 LLVM 位码(来自 C、C++、Rust 等),内存由 Java 虚拟机完全管理。解决了安全地执行本地代码而不依赖不安全的 JNI、以及实现跨语言互操作的需求。
org.graalvm.polyglotllvm-native原生模式的 LLVM 解释器。它通过预构建的原生库和 JNI 来执行 LLVM 位码,以获得比托管模式更高的性能。解决了需要以接近原生的速度运行现有 C/C++ 库,同时又能与 Java 和其他 GraalVM 语言交互的需求。
org.graalvm.polyglotdap基于调试适配器协议 (DAP) 的多语言调试器后端。它实现了 DAP 标准,使得像 VS Code、IntelliJ IDEA 这样的 IDE 能够以统一的方式调试所有 GraalVM 支持的语言。解决了为不同语言配置和维护不同调试器的复杂性,提供了现代化的调试体验。
org.graalvm.polyglotlsp基于语言服务器协议 (LSP) 的多语言后端。它实现了 LSP 标准,为所有 GraalVM 语言提供代码补全、定义跳转、悬停提示、重构等智能编辑功能。解决了为多种语言提供一致的 IDE 支持难题,极大地增强了开发效率。
org.graalvm.polyglotinspect基于 Chrome DevTools 协议的多语言调试器后端。它允许开发者使用熟悉的 Chrome 浏览器开发者工具来调试 GraalVM 应用程序。解决了开发者希望使用图形化界面进行调试的需求,特别适用于调试复杂的 JavaScript 和 Node.js 应用。
org.graalvm.polyglotcoverageTruffle 代码覆盖率工具。用于收集和统计多语言代码在测试中的执行覆盖率数据。它解决了评估测试用例的完备性、识别未测试代码块的问题,是保证软件质量的重要工具。
org.graalvm.polyglotprofilerTruffle 性能分析器。提供 CPU 采样和精确跟踪功能,用于分析应用程序的性能瓶颈。实验性功能包括内存跟踪。它解决了优化多语言应用程序性能、定位热点方法和内存分配问题的需求。
org.graalvm.polyglotinsight运行时洞察与监控框架。允许动态地跟踪应用程序的执行流、函数调用、参数和返回值,而无需修改源代码。它解决了在生产或开发环境中对应用行为进行动态观察、故障诊断和性能分析的问题。
org.graalvm.polyglotheap堆转储生成与分析工具。用于生成 GraalVM 语言运行时(如 JavaScript、Python)的堆内存快照,并进行分析以发现内存泄漏或优化内存使用。它解决了诊断内存相关问题的难题。

4. org.graalvm.polyglot (隔离环境构件 - Isolates)

所属组名Java 包名包描述
org.graalvm.polyglotwasm-isolateWebAssembly 隔离环境的通用抽象层。为 Wasm 模块提供资源隔离、内存限制和独立上下文的沙箱环境。解决了运行不可信代码、确保应用主体稳定性、以及实现多租户架构的安全需求。
org.graalvm.polyglotjs-isolateJavaScript 隔离环境的通用抽象层。为 JS 代码提供独立的执行上下文和资源控制。解决了在同一 JVM 中运行多个互不干扰的 JS 脚本、安全执行第三方代码以及服务器端隔离(如云函数)的需求。
org.graalvm.polyglotpython-isolatePython 隔离环境的通用抽象层。为 Python 解释器提供独立的运行环境。解决了在同一个应用中运行多个不同版本的 Python 脚本、或隔离不同任务的 Python 执行以避免全局状态冲突的问题。
(以下为平台特定的原生隔离环境实现,提供更高性能)
org.graalvm.polyglotwasm-isolate-linux-amd64为 Linux x86-64 平台预构建的高性能 WebAssembly 隔离环境原生支持库。
org.graalvm.polyglotwasm-isolate-linux-aarch64为 Linux ARM64 平台预构建的高性能 WebAssembly 隔离环境原生支持库。
org.graalvm.polyglotwasm-isolate-windows-amd64为 Windows x86-64 平台预构建的高性能 WebAssembly 隔离环境原生支持库。
org.graalvm.polyglotwasm-isolate-darwin-amd64为 macOS x86-64 平台预构建的高性能 WebAssembly 隔离环境原生支持库。
org.graalvm.polyglotwasm-isolate-darwin-aarch64为 macOS ARM64 (Apple Silicon) 平台预构建的高性能 WebAssembly 隔离环境原生支持库。
org.graalvm.polyglotjs-isolate-linux-amd64为 Linux x86-64 平台预构建的高性能 JavaScript 隔离环境原生支持库。
org.graalvm.polyglotjs-isolate-linux-aarch64为 Linux ARM64 平台预构建的高性能 JavaScript 隔离环境原生支持库。
org.graalvm.polyglotjs-isolate-windows-amd64为 Windows x86-64 平台预构建的高性能 JavaScript 隔离环境原生支持库。
org.graalvm.polyglotjs-isolate-darwin-amd64为 macOS x86-64 平台预构建的高性能 JavaScript 隔离环境原生支持库。
org.graalvm.polyglotjs-isolate-darwin-aarch64为 macOS ARM64 (Apple Silicon) 平台预构建的高性能 JavaScript 隔离环境原生支持库。
org.graalvm.polyglotpython-isolate-linux-amd64为 Linux x86-64 平台预构建的高性能 Python 隔离环境原生支持库。
org.graalvm.polyglotpython-isolate-linux-aarch64为 Linux ARM64 平台预构建的高性能 Python 隔离环境原生支持库。
org.graalvm.polyglotpython-isolate-windows-amd64为 Windows x86-64 平台预构建的高性能 Python 隔离环境原生支持库。
org.graalvm.polyglotpython-isolate-darwin-amd64为 macOS x86-64 平台预构建的高性能 Python 隔离环境原生支持库。
org.graalvm.polyglotpython-isolate-darwin-aarch64为 macOS ARM64 (Apple Silicon) 平台预构建的高性能 Python 隔离环境原生支持库。

5. org.graalvm.polyglot (已弃用的社区版构件 - Deprecated Community Editions)

所属组名Java 包名包描述
org.graalvm.polyglotwasm-community(已弃用) GraalWasm 的社区版。请改用正式版 wasm。社区版通常功能与正式版相同,但可能有不同的许可协议或发布周期。
org.graalvm.polyglotjs-community(已弃用) GraalJS 的社区版。请改用正式版 js
org.graalvm.polyglotpython-community(已弃用) GraalPy 的社区版。请改用正式版 python
org.graalvm.polyglotruby-community(已弃用) TruffleRuby 的社区版。请改用正式版 ruby
org.graalvm.polyglotjava-community(已弃用) Espresso 的社区版。请改用正式版 java
org.graalvm.polyglotllvm-native-community(已弃用) 原生 LLVM 引擎的社区版。请改用正式版 llvm-native
org.graalvm.polyglotllvm-community(已弃用) LLVM 引擎的旧社区版。请根据需求改用 llvm-native 或 llvm-managed
org.graalvm.polyglottools-community(已弃用) 工具集的社区版。请改用正式版 tools
org.graalvm.polyglotlanguages-community(已弃用) 语言集的社区版。请改用正式版 languages
org.graalvm.polyglotdap-community(已弃用) 调试适配器的社区版。请改用正式版 dap
org.graalvm.polyglotlsp-community(已弃用) 语言服务器的社区版。请改用正式版 lsp
org.graalvm.polyglotinsight-community(已弃用) 洞察工具的社区版。请改用正式版 insight
org.graalvm.polyglotcoverage-community(已弃用) 覆盖率工具的社区版。请改用正式版 coverage
org.graalvm.polyglotprofiler-community(已弃用) 分析器的社区版。请改用正式版 profiler
org.graalvm.polyglotheap-community(已弃用) 堆转储工具的社区版。请改用正式版 heap

6. org.graalvm.python

所属组名Java 包名包描述
org.graalvm.pythongraalpy-archetype-polyglot-appMaven 项目原型 (Archetype) 。用于快速生成一个集成了 GraalPy (Python) 和 Java 的多语言应用程序项目骨架。它解决了开发者手动配置 Maven 项目以支持 GraalPy 多语言开发的繁琐过程,通过一条命令即可创建结构规范、配置完备的起步项目。

7. org.graalvm.espresso

所属组名Java 包名包描述
org.graalvm.espressopolyglotEspresso (Java on Truffle) 的多语言 API。此构件提供了从 Espresso 内部访问其他 GraalVM 语言的 API。它解决了在 Espresso 实现的 Java 虚拟机中直接互操作 JavaScript、Python 等其他语言的问题,实现了 Java 代码与其他语言的深度双向调用。
本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]