RedHat 推出了一个新的 Java 发行版,Mandrel,它可以直接将 Java 应用程序编译成本机代码,从而可以在较低的内存中更快地启动。
Mandrel 是一个基于 Oracle 的GraalVM,由社区支持的额外的构建,两者只是略有不同。RedHat 的高级工程总监 Mark Little 解释说:“最好将 Mandrel 描述成一个特别封装了 GraalVM 原生镜像的常规 OpenJDK 的发行版。”RedHat 推出 Mandrel 背后的主要驱动因素是通过其“超音速亚原子 Java”来驱动 Quarkus 框架的速度和效率。Quarkus 是一个为云供应商提供快速重载本地开发以及容器化或无服务器分发的框架。自 2019 年首次推出以来,Quarkus一直强调其可以构建启动速度更快、云运营成本和资源更低的本地可执行文件的能力。
GraalVM 的负责人 Thomas Wuerthinger,在回应Mandrel发布时说:“感谢 @maxandersen 和同事们积极参与 @graalvmcommunity!”
Andres Dinn 在 Quarkus Insights 系列视频的第 7 集中解释了GraalVM和Mandrel的作用。该视频介绍了用法以及各种技术细节,并提出了一些问题,比如即时编译和提前编译之间的区别。 Dinn 解释了它们各自的优点和缺点以及最适合使用它们的地方。
Mandrel的GitHub仓库是 GraalVM 的一个分支,但它尚未提供二进制发行版本。但是用户可以按照提供的说明自行编译 JDK。
在性能基准测试方面,GraalVM的启动时间快了50倍,内存使用减少了5倍。测试是针对 Java 的 HotSpot 模式使用 Quarkus 框架的早期版本完成的。虽然这一改进需要额外的提前编译时间,但它可以与 Quarkus 的原生Lambda和Azure函数部署一起使用。
James Ward 还提供了其他更多的技巧和窍门,他已经用本机编译的形式对多个框架进行了基准测试。Ward 介绍了性能改进的好处以及一些难题,比如依赖反射的应用程序。”这给 GraalVM 原生镜像带来了问题,因为反射是在运行时发生的,这使得 AOT 编译器很难找出执行路径。“ Quarkus的主页直接受益于此:RAM 从 73MB 降到 12MB(降低了 83%),首次响应时间从 0.943 降为 0.016 秒(降低了 98%)。
开发人员现在可以在自己的构建中使用 Mandrel,或者利用 GraalVM 社区版或任何 JDK 11+发行版。感兴趣的开发人员也可以使用这些工具来参加Quarkus黑客马拉松。
原文链接:
https://www.infoq.com/news/2020/07/mandrel-graalvm/
评论