GraalVM 究竟是怎样的虚拟机?

629 阅读7分钟

GraalVM : www.graalvm.org/

slogan : 构建更快、更小、更精简的应用程序

跟上技术革新的步伐,让自己无可替代!!!Stay foolish stay hungry!!!

GraalVM特性

低资源占用

本机可执行文件只使用JVM所需的一小部分内存和CPU资源,这提高了利用率并降低了成本。

快速启动

提前编译的本机可执行文件立即启动,不需要预热即可以最佳性能运行。

框架支持

Spring Boot、Micronaut、Helidon和Quarkus等流行框架为GraalVM提供了一流的支持。

提高安全性

本机可执行文件只包含应用程序所需的类、方法和字段,从而减少了攻击面。

打包压缩

本机可执行文件很小,并且提供了一系列链接选项,这使得它们很容易部署到最小的容器映像中。

互联网头部云平台支持

来自头部云平台(如AWS、Microsoft Azure、GCP和Oracle cloud Infrastructure)的sdk集成并支持GraalVM。

云原生支持

编写高效、更安全、高度可伸缩的云原生Java应用程序。

构建

www.graalvm.org/latest/guid…

配置

www.graalvm.org/latest/guid…

容器化

www.graalvm.org/latest/guid…

调试

www.graalvm.org/latest/guid…

微服务

www.graalvm.org/latest/guid…

监控

www.graalvm.org/latest/guid…

优化

www.graalvm.org/latest/guid…

GraalVM 使用

开发

IDE和Java工具支持

使用您最喜欢的Java IDE和开发工具,然后使用GraalVM Native Image提前将您的应用程序编译为可执行文件。这只是你开发过程中一个无缝的额外步骤。

开始学习

构建

Maven和Gradle插件

原生构建工具提供了Maven和Gradle插件,可以让你在构建过程中轻松地提前编译应用程序。

开始学习

测试

JUnit 5支持

使用提前编译的JUnit测试支持测试您的本地应用程序。

Maven

Gradle

调试

使用GDB进行原生调试

设置断点,逐行遍历Java源代码,使用GDB和受支持的ide检查本地可执行文件中的变量。

开始学习

打包部署

小而高效的容器

原生可执行文件非常适合与轻量级的容器映像一起使用,可以最小化攻击面以提高安全性。静态链接的本地可执行文件甚至可以在临时容器映像中运行!

开始学习

监控

支持JFR、JMX等

使用与部署在JVM上的应用程序相同的工具监视本机可执行文件。原生可执行文件可以选择支持JFR、JMX、堆转储、jvmstat等。

开始学习

谁在使用?

  • 迪斯尼
  • Oracle
  • Facebook
  • 阿里巴巴
  • 英伟达
  • 推特
  • ...

1.png

GraalVM技术

Graal JIT编译器

使用GraalVM JDK和优化的Graal即时(JIT)编译器来提高Java应用程序的性能。

开始学习

其他语言

使用其他语言编写的代码扩展Java应用程序或使用GraalVM加速其他语言。

Python iconJavaScript iconJava iconRuby iconR icon

下载

www.graalvm.org/downloads

也可至github下载: github.com/graalvm/gra…

支持版本

  • Java17
  • Java20

支持平台

  • Linux(X64)
  • Linux(AArch64)
  • MacOs(X64)
  • MacOs(AArch64)
  • Windows(X64)

Oracle 配套JDK下载

最新JDK下载: www.oracle.com/cn/java/tec…

即刻开始

GraalVM提前将您的Java应用程序编译为独立的二进制文件,这些二进制文件可以立即启动,无需预热即可提供最高性能,并且使用更少的资源。

在这里,您将找到有关安装GraalVM和使用它运行基本应用程序的信息。

如果您不熟悉GraalVM,我们建议从GraalVM的介绍开始,在那里您将找到有关GraalVM的优点、可用的发行版、支持的平台、功能支持和许可的信息。

如果你已经安装了GraalVM并且有使用它的经验,你可以跳过这一页,继续深入阅读参考手册。

选择您的操作系统,然后根据您的特定平台执行安装步骤:

开始运行应用程序

GraalVM的核心发行版包括Java开发工具包(JDK)、即时编译器(Graal编译器)、本地映像等。你可以像使用IDE中的任何其他JDK一样使用GraalVM JDK,所以安装了GraalVM,你就可以不加修改地运行任何Java应用程序。

java启动器运行JVM, Graal作为最后一层编译器。检查安装的Java版本:

$JAVA_HOME/bin/java -version

使用GraalVM本地镜像,您可以将Java字节码编译为特定于平台的、自包含的本机可执行文件,以实现更快的启动和更小的应用程序占用空间。

将这个简单的HelloWorld.java应用编译为字节码,然后构建一个本地可执行文件:

public class HelloWorld { 

  public static void main(String[] args) { 
    System.out.println("Hello, World!"); 
  } 
}

javac HelloWorld.java

native-image HelloWorld

最后一个命令在当前工作目录中生成一个名为helloworld的可执行文件。调用它将运行HelloWorld类的本机编译代码,如下所示:

./helloworld 
Hello, World!

注意:对于编译,本地镜像依赖于本地工具链。确保您的系统满足先决条件。

接下来读什么

新用户

有关该技术的更多信息,请继续阅读原生镜像基础。对于熟悉GraalVM原生映像但可能没有使用经验的用户,请继续阅读用户指南

有关Graal编译器的更多信息,请参阅编译器文档。更大的Java示例可以在GitHub上的GraalVM演示库中找到。

高级用户

对GraalVM更有经验或想要使用GraalVM做更多工作的开发人员可以直接参考手册以获得深入的文档。

您可以在安全指南中找到有关GraalVM安全模型的信息,并在GraalVM SDK JavadocTruffle Javadoc中找到丰富的API文档。

我们还建议查看我们的GraalVM团队博客

GraalVM 安装使用

Windows GraalVM 安装

我们基于jenv来管理多个jdk.

` C:\Users\Administrator>jenv list All avaible versions of java

name path


jdk8 C:\Program Files\Java\jdk1.8.0_333 jdk11 C:\Program Files\Java\jdk-11.0.15.1

All locally specified versions

C:\Users\Administrator>jenv add jdk17 "C:\Program Files\Java\graalvm-jdk-17.0.7+8.1" Successfully added the new JEnv: jdk17

C:\Users\Administrator>jenv add jdk20 "C:\Program Files\Java\graalvm-jdk-20.0.1+9.1" Successfully added the new JEnv: jdk20

C:\Users\Administrator>jenv list All avaible versions of java

name path


jdk8 C:\Program Files\Java\jdk1.8.0_333 jdk11 C:\Program Files\Java\jdk-11.0.15.1 jdk17 C:\Program Files\Java\graalvm-jdk-17.0.7+8.1 jdk20 C:\Program Files\Java\graalvm-jdk-20.0.1+9.1

All locally specified versions

C:\Users\Administrator>jenv use jdk17 JEnv changed for the current shell session. Careful this overwrites jenv local

C:\Users\Administrator>java -version java version "17.0.7" 2023-04-18 LTS Java(TM) SE Runtime Environment Oracle GraalVM 17.0.7+8.1 (build 17.0.7+8-LTS-jvmci-23.0-b12) Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.7+8.1 (build 17.0.7+8-LTS-jvmci-23.0-b12, mixed mode, sharing)

C:\Users\Administrator> ` 如图所示:

2.png

可以看到我们的GraalVM jdk环境已经安装成功。