支持多语言的通用虚拟机GraalVM问世 可提供一致性能

甲骨文发布支持多语言的通用虚拟机GraalVM 1.0,该公司表示,GraalVM实现了为所有开发语言提供一致性能的目标,其新颖的架构所提供的语言独立性,不只能促进程序间的互通性,也提高了程序可维护性。

甲骨文表示,当前用于产品阶段的虚拟机,都仅针对特定语言或是一小群程序语言提供高性能执行,而编译、内存管理以及工具的使用都违反了一次且仅一次原则(Don’ t repeat yourself,DRY)。这样不只会给虚拟机实做工作带来庞大的困难,而且不一致的性能表现以及工具配置也会带给开发者沉重负担。况且不同语言撰写的程序间沟通,串行化及反串行化成本极高,而笨重庞大的高性能虚拟机又难用以嵌入。

甲骨文实验室为了解决现存虚拟机的缺陷,数年前启动了虚拟机研究计划,期望以新颖的架构找到新出路,而GraalVM 1.0便是这项研究的最新结果。

GraalVM其强大的功能之一,便是能让程序语言互相调用访问对方的对象,而不需要事先进行转换。例如开发者可以用Node.js访问Java函数库,还是以Java调用Python程序,抑或是用R语言访问其他语言维护的数据以创建复杂的SVG。甲骨文认为,这种开发弹性,能让开发人员使用最适合的语言完成任务。

目前发布的GraalVM 1.0已经能够支持多类开发语言,像是Java、Scala、Groovy或Kotlin的JVM语言,还有Javascript或是Node.js也可以,另外,由C、C++或是Rust产生的LLVM比特代码,以及Ruby,R和Python都不是问题。

GraalVM可以独立执行,也可以嵌入OpenJDK或Node.js作为平台的一部分,甚至是嵌入MySQL或Oracle RDBMS等数据库中。应用程序可以通过标准化的GraalVM执行环境,灵活的跨堆栈部署,而在数据处理引擎中,GraalVM能让程序以自定义格式访问,而不需要付出任何结构转换成本。

而对于JVM的语言来说,GraalVM提供了创建预编译原生镜像文件的机制,不只能立即启动应用程序,而且还具有低内存消耗的优点。产生镜像文件的过程,GraalVM会执行静态分析,从主要Java方法搜索可用的程序代码,并进行完整预编译(Ahead-of-Time,AOT),最后产生原生的二元执行码,能立即启动并执行。

GraalVM提供开发语言虚拟化的概念,让所有语言以及工具都能嵌入使用。甲骨文表示,接下来会特别强化GraalVM对Python,R和Ruby的支持。