Categories
程式開發

RedHat推出Mandrel:使Java本地化


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的原生LambdaAzure函数部署一起使用。

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/