4年前 (2021-05-24)  jvm |   抢沙发  1177 
文章评分 0 次,平均分 0.0

GraalVM:更高效的编译器

GraalVM是开发人员编写和执行Java代码的工具。具体来说,GraalVM是由Oracle创建的Java虚拟机(JVM)和Java开发工具包(JDK)。它是一个高性能的运行时,可以提高应用程序的性能和效率。

GraalVM的目标包括:编写一个更快、更易于维护的编译器,提高在JVM上运行的语言的性能,减少应用程序启动时间,将多语言支持集成到Java生态系统中,以及为此提供一组编程工具。

GraalVM向JDK添加了一个优化编译器,它为各种语言提供性能优化,并为多语言应用程序提供互操作性。除了支持Java代码,GraalVM还支持其他编程语言,包括ScalaKotlinGroovyClojureRPythonJavaScriptRuby。从本质上讲,GraalVM允许开发人员在单个应用程序中以多种语言和库高效地运行代码。

GraalVM组件

三个组件构成了GraalVM的核心:一个高性能优化的即时编译器,一个用于构建本机可执行文件的提前编译器,以及对多种语言的支持。

更具体地说,GraalVM Enterprise的组件包括:

  • GraalVM编译器。一个即时编译器JIT。
  • 提前编译器。用于将基于JVM的应用程序编译为本机可执行的二进制文件。
  • 通过语言实现对多种语言的支持提供了实现语言解释器的能力。这使得GraalVM可以被扩展以向Java生态系统添加其他语言。它还支持诸如与语言无关的调试器、探查器和堆查看器等工具。
  • 全天候Oracle Premiere支持(MOS)

GraalVM是怎么工作的?

GrallVM即时编译器用于加速任何基于Java和JVM的应用程序的性能,而无需更改代码。grallvm还可以使用其提前的本机映像编译器将Java和JVM应用程序转换为本机平台可执行文件。企业版编译器包括62个编译器优化算法,也称为阶段。在这些算法中,有些包括复杂程序的矢量化技术、代码专门化技术和大规模转义分析技术。编译器的各个阶段都是通过使用攻击性内联和多态内联等技术来优化的。

通过优化内存分配,对象分配也得到了改善。例如,GrallVM将对此类任务使用部分转义分析和标量替换。一般来说,GraalVM可以用更少的内存获得更好的性能。

当提前编译器将Java代码编译成本机可执行文件时,潜在的攻击面也被最小化。这是因为只包含执行应用程序所需的代码。为此,GrallVM将分析应用程序代码、其依赖项、依赖JDK库和VM组件。

GraalVM安装

GraalVM 20有两种不同的产品:社区版和企业版。这两个版本都设计用于Windows、Linux和macOS平台以及x86 64位系统。GraalVM基于jdk8或jdk11。

GraalVM还附带了JavaScript和包管理器。名为gu的包管理器允许用户安装其他语言。这些组件可以从GitHub或直接从Oracle下载。

除了当前可供下载的GraalVM版本外,新版本也正在开发中,并可在GitHub上进行测试。

GraalVM定价

GraalVM的定价取决于所使用的版本。社区版是开源的。此版本是从GitHub上可用的源代码构建的。根据Oracle GraalVM OTN许可协议和Oracle主许可协议,可以从Oracle获得GraalVM Enterprise。企业版的价格可能因许可证而异。

根据Oracle主许可协议,必须购买GraalVM Enterprise用于生产。GraalVM Enterprise的价格可能因许可证而异。具体来说,订阅价格将取决于订阅指标和数量——例如,使用的处理器数量。根据OTN条款,GraalVM企业可以免费进行评估、测试和开发非生产应用程序。

GraalVM的缘由

Graal一词来自古法语中Grail的意思。“Graal”Oracle项目最初是Oracle实验室内部的一个研究项目,它试图在快速且易于维护的同时制作一个Java编译器。“GraalVM”中的“VM”来自于它在JVM中运行的事实。

这项研究扩展到包括执行准时和提前(AOT)编译的能力。此AOT功能称为本机映像。随着项目的发展,研究扩展到为其他非JVM语言(如Python、Ruby和WebAssembly)构建解释器的能力。这成为语言实现框架。

GraalVM Enterprise的第一个生产就绪版本是19.0版,由Oracle于2019年5月发布。2020年2月,GraalVM Enterprise 20.0.0发布。这个版本专注于改进对Windows系统的支持,并引入了增强的本机映像工具和改进的工具支持。还对编译器和支持的语言进行了更改。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/1945.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册