GraalVM 19.3 发布,支持 JDK 11 与 ARM64 架构
时间:2019-11-28 16:25 来源:linux.it.net.cn 作者:IT
GraalVM 19.3 发布了。GraalVM 是一个高性能跨语言虚拟机,用于运行 JavaScript、Python 3、Ruby、R、基于 JVM 的语言,如 Java、Scala、Kotlin 和基于 LLVM 的语言,如 C 和 C++。
GraalVM 消除了编程语言之间的隔离,并支持共享运行时的互操作性。它可以独立运行,也可以在 OpenJDK、Node、Oracle 或者 MySQL 上运行。
GraalVM 19.3 是从项目主线构建的第一个计划长期支持(LTS)版本,也是一个主要功能版本,建议所有用户升级。LTS 状态可以确保稳定性、安全性和性能修复程序将从当前分支向后移植,直到下一个 LTS 版本出现为止。
此版本基于 JDK 11,同时也是第一个支持 JDK 11 的 GraalVM 版本,考虑到 JDK 8 和 JDK 11 之间比较大的区别,这其实代表了一个重要的里程碑。特别是 JDK 9 中引入的 Java 平台模块系统(JPMS,Java Platform Module System)意味着 GraalVM 现在使用模块封装来隔离代码以隔离诸如 JVMCI、GraalVM 编译器和应用程序代码中的 Truffle API。此外,这也意味着 JDK 11 上的 GraalVM 包含自 JDK 8 以来的所有 JDK 更改。
关于 JDK 11,此次发布还提供了基于 JDK 11 的支持 ARM64 架构的 GraalVM 社区版的预览,它包括对所有 JVM 语言的支持,其它语言支持将在不久后提供。
该发行版包括现成的 GraalVM 本地镜像,可立即构建启动应用程序,这些应用程序在 ARM64 环境中消耗的内存更少,不过目前存在一些限制,比如 npm 和 node 不支持 runtime 代码安装。
GraalVM 19.3 切换为使用 JDK 本地代码,而不是手动替换。GraalVM 本地镜像切换到 Java 本地接口(JNI)平台使它有可能提供对 JDK 11 的支持以及对 Windows OS 的扩展支持。这对启动时间或内存占用量没有影响,并且消除了将 JDK 库(例如 libsunec.so)与使用 Java 加密服务的本地镜像一起交付的需要。GraalVM 现在附带了 JDK 库的可静态链接版本。
同时,通过本地镜像 Maven 插件支持将 GraalVM 本地镜像与 Maven 一起使用,这意味着用户可以使用 mvn package 命令直接使用 Maven 构建项目及其本地镜像。从 GraalVM 19.3 开始,用于 GraalVM 本地镜像相关工件(包括插件)的 Maven <groupId> 从 com.oracle.substratevm 更改为 org.graalvm.nativeimage:
<plugin>
<groupId>org.graalvm.nativeimage</groupId>
<artifactId>native-image-maven-plugin</artifactId>
<version>19.3.0</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<skip>false</skip>
<buildArgs>
--no-fallback
</buildArgs>
</configuration>
</plugin>
GraalVM 编译器方面的改进包括:
-
改进了 System.arraycopy,以消除复制到 Object[] 时的存储检查。这项改进解决了某些 Eclipse Collections 基准测试的速度下降(相对于 C2)的问题。
-
通过更优化的内联修复了在 Scala 中创建列表值时的性能下降。
-
修复了可能阻止包含旧版 Javac 版本产生的 JSR 字节码的方法被编译的问题。
此外关于各个语言的支持与工具支持的变化,详情查看更新说明:
https://www.graalvm.org/docs/release-notes/19_3
(责任编辑:IT)
GraalVM 19.3 发布了。GraalVM 是一个高性能跨语言虚拟机,用于运行 JavaScript、Python 3、Ruby、R、基于 JVM 的语言,如 Java、Scala、Kotlin 和基于 LLVM 的语言,如 C 和 C++。 GraalVM 消除了编程语言之间的隔离,并支持共享运行时的互操作性。它可以独立运行,也可以在 OpenJDK、Node、Oracle 或者 MySQL 上运行。
GraalVM 19.3 是从项目主线构建的第一个计划长期支持(LTS)版本,也是一个主要功能版本,建议所有用户升级。LTS 状态可以确保稳定性、安全性和性能修复程序将从当前分支向后移植,直到下一个 LTS 版本出现为止。 此版本基于 JDK 11,同时也是第一个支持 JDK 11 的 GraalVM 版本,考虑到 JDK 8 和 JDK 11 之间比较大的区别,这其实代表了一个重要的里程碑。特别是 JDK 9 中引入的 Java 平台模块系统(JPMS,Java Platform Module System)意味着 GraalVM 现在使用模块封装来隔离代码以隔离诸如 JVMCI、GraalVM 编译器和应用程序代码中的 Truffle API。此外,这也意味着 JDK 11 上的 GraalVM 包含自 JDK 8 以来的所有 JDK 更改。
关于 JDK 11,此次发布还提供了基于 JDK 11 的支持 ARM64 架构的 GraalVM 社区版的预览,它包括对所有 JVM 语言的支持,其它语言支持将在不久后提供。 该发行版包括现成的 GraalVM 本地镜像,可立即构建启动应用程序,这些应用程序在 ARM64 环境中消耗的内存更少,不过目前存在一些限制,比如 npm 和 node 不支持 runtime 代码安装。 GraalVM 19.3 切换为使用 JDK 本地代码,而不是手动替换。GraalVM 本地镜像切换到 Java 本地接口(JNI)平台使它有可能提供对 JDK 11 的支持以及对 Windows OS 的扩展支持。这对启动时间或内存占用量没有影响,并且消除了将 JDK 库(例如 libsunec.so)与使用 Java 加密服务的本地镜像一起交付的需要。GraalVM 现在附带了 JDK 库的可静态链接版本。 同时,通过本地镜像 Maven 插件支持将 GraalVM 本地镜像与 Maven 一起使用,这意味着用户可以使用 mvn package 命令直接使用 Maven 构建项目及其本地镜像。从 GraalVM 19.3 开始,用于 GraalVM 本地镜像相关工件(包括插件)的 Maven <groupId> 从 com.oracle.substratevm 更改为 org.graalvm.nativeimage: <plugin> <groupId>org.graalvm.nativeimage</groupId> <artifactId>native-image-maven-plugin</artifactId> <version>19.3.0</version> <executions> <execution> <goals> <goal>native-image</goal> </goals> <phase>package</phase> </execution> </executions> <configuration> <skip>false</skip> <buildArgs> --no-fallback </buildArgs> </configuration> </plugin> GraalVM 编译器方面的改进包括:
此外关于各个语言的支持与工具支持的变化,详情查看更新说明: https://www.graalvm.org/docs/release-notes/19_3 (责任编辑:IT) |