设为首页 加入收藏

TOP

GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动(一)
2023-07-25 21:43:15 】 浏览:53
Tags:GraalVM Spring Native 尝鲜 步步让 Springboot 66ms 成启动

简介

GraalVM是高性能的JDK,支持Java/Python/java script等语言。它可以让Java变成二进制文件来执行,让程序在任何地方运行更快。这或许是Java与Go的一场战争?

下载安装GraalVM

安装GraalVM

首先到官网下载,我是直接到GitHub Release Page下载的,请下载对应的系统包,我下载如下:

graalvm-ce-java11-darwin-amd64-22.3.0.tar.gz

下载后解压到某个目录,我的如下:

/Users/larry/Software/graalvm-ce-java11-22.3.0

接着测试对应的程序是否可以正常执行,如java --version。在Mac上会报错如下:

is damaged and can’t be opened.

所以需要执行下面语句:

$ sudo xattr -r -d com.apple.quarantine /Users/larry/Software/graalvm-ce-java11-22.3.0

注意修改对应的目录。

然后就可以执行了:

$ ./java --version
openjdk 11.0.17 2022-10-18
OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 11.0.17+8-jvmci-22.3-b08)
OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 11.0.17+8-jvmci-22.3-b08, mixed mode, sharing)

安装native-image

这个工具用来把Java程序转化为本地二进制包,安装如下:

$ ./gu install native-image
Downloading: Component catalog from www.graalvm.org
Processing Component: Native Image
Downloading: Component native-image: Native Image from github.com
Installing new component: Native Image (org.graalvm.native-image, version 22.3.0)

配置环境

配置环境变量

因为这个GraalVM还不够成熟,我不想一直使用,就通过一个命令来切换,配置如下:

export GraalVM_HOME=/Users/larry/Software/graalvm-ce-java11-22.3.0/Contents/Home
alias switchOnGraalVM='export PATH=$GraalVM_HOME:$PATH'
alias switchOnGraalVMJavaHome='export JAVA_HOME=/Users/larry/Software/graalvm-ce-java11-22.3.0/Contents/Home'

alias switchOffGraalVM='export PATH=`echo $PATH | tr ":" "\n" | grep -v "graalvm" | tr "\n" ":"`'
alias switchOffGraalVMJavaHome='export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home'

配置IDEA

可以在IDEA上配置对应的JDK,这样开发的时候可以使用:

整合Spring Native与Spring Boot

普通Spring Boot程序

新来创建一个普通的Spring Boot Web程序,主要Java代码如下:

@SpringBootApplication
@RestController
@RequestMapping("/")
public class SpringbootNativeGraalVMMain {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootNativeGraalVMMain.class, args);
    }

    @GetMapping("/hi-graalvm")
    public String hi() {
        return "This message is from Spring Boot built/run by GraalVM/Spring Native";
    }
}

启动时长为1.193秒,还不错。我电脑还不错。

整合Spring Native

添加依赖:

<dependency>
  <groupId>org.springframework.experimental</groupId>
  <artifactId>spring-native</artifactId>
  <version>${spring-native.version}</version>
</dependency>

添加插件,这个插件非常重要,不然会有各种错误:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.experimental</groupId>
      <artifactId>spring-aot-maven-plugin</artifactId>
      <version>0.11.5</version>
      <executions>
        <execution>
          <id>test-generate</id>
          <goals>
            <goal>test-generate</goal>
          </goals>
        </execution>
        <execution>
          <id>generate</id>
          <goals>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

添加以下插件来打包生成可执行程序:

<profiles>
  <profile>
    <id>native</id>
    <properties>
      <repackage.classifier>exec</repackage.classifier>
      <native-buildtools.versio
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇对于Java平台的理解 下一篇责任链和策略设计模式-基于Java编..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目