GraalVM是由Oracle Labs发起的高性能JDK发行版,2011年源于其内部研究项目,核心目标是突破单一语言运行限制,同时提升Java及多语言应用的执行效率,适配云原生等现代应用场景。以下是其核心特性与关键信息的详细介绍:

  1. 多语言融合能力
    它借助Truffle语言实现框架,能同时支持Java、Scala等JVM系语言,以及JavaScript、Python、Ruby等非JVM语言,甚至还能运行C/C++、Rust等编译为LLVM字节码的语言。更关键的是不同语言可在同一应用中无缝互操作,比如JavaScript代码能直接调用Java方法,且无需额外的跨语言通信开销,数据可在同一内存空间传递,无需拷贝。
  2. 多样化运行模式
    • JVM运行模式:默认将Graal编译器作为顶级即时(JIT)编译器集成在HotSpot虚拟机中。该模式下应用正常在JVM加载执行,JVM将字节码传递给Graal编译器,由其编译为机器码后返回JVM,凭借激进内联、多态内联等优化手段,让高抽象度的Java程序大幅提升性能。
    • 原生镜像(Native Image):这是其极具创新性的功能,可在构建时将Java字节码及依赖的类库、JDK必要组件提前编译为特定系统和架构的独立原生可执行文件。该文件无需JVM即可运行,还具备启动快、内存占用低、打包紧凑的优势,很适合云原生微服务场景。
    • Truffle上的Java(Java on Truffle):基于Truffle框架实现的Java虚拟机规范,是完整的Java虚拟机,复用GraalVM的相关库和组件,不过目前属于实验性技术。
  3. 核心优势突出
    • 资源占用少:原生可执行文件仅包含应用必需的类、方法和字段,避免了JIT编译带来的额外资源消耗,降低了内存与CPU占用。
    • 安全性更高:剔除无用代码和JIT编译相关架构,且通过“封闭世界假设”限制动态加载未知代码,减少了应用的攻击面,还可嵌入软件物料清单,方便检测漏洞。
    • 适配性强:不仅获得Spring Boot、Quarkus等主流微服务框架的一等支持,还能适配AWS、谷歌云、Azure等主流云平台,便于开发和部署云原生应用。
  4. 良好的工具兼容性
    开发过程中可兼容常见Java IDE和开发工具,也支持JUnit测试框架;构建环节提供Maven、Gradle的构建插件;监控方面能适配Java飞行记录器(JFR)、JMX等常用监控工具,无需大幅调整现有开发和运维流程。

标签: none 阅读量: 4

添加新评论