Spring Native提升Java应用百倍启动速度 - 知乎

1、Spring Webflux示例项目

示例代码在这里:https://gitee.com/kimmking/native

代码很简单,就是建了一个Spring Boot项目(用了基于netty的Spring Webflux,而不是基于嵌入式tomcat的Spring Web):

application.yml里配置:

然后使用OpenJDK11(可以在此下载:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/)运行 NativeApplication:

可以看到启动花了3.219s。

然后可以浏览器或者命令行访问。

% curl 'http://localhost:8888/user/findById?id=1'
{"id":1,"name":"KK1"}%

2、在linux上编译项目为native image

找一台Linux机器(比如Ubuntu/RedHat/CentOS),这里用了一台腾讯云的CentOS,然后安装git/OpenJDK11/maven/docker这几个软件。

yum install -y git
yum install -y java-11-openjdk.x86_64 
yum install -y docker-ce
wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
unzip apache-maven-3.6.3-bin.zip

接着设置JAVA_HOME和M2_HOME,并加入到PATH变量,然后下载编译native代码。

git clone https://gitee.com/kimmking/native 
cd native
mv pom.xml pom1.xml
mv native-pom.xml pom.xml // 用这个添加了native的pom
mvn spring-boot:build-image

一直到看到如下画面:

此时就已经把native的程序打包成了一个docker镜像:

然后可以运行这个镜像:

docker run --name native -p 8888:8888 -d native:0.0.1-SNAPSHOT

接着使用命令查看docker容器:

此时也可以使用curl访问一下:

效果跟上面使用JVM运行相同。

最后我们进入容器内部看一下:

docker run -it native:0.0.1-SNAPSHOT  /bin/bash

可以看到,启动原生应用程序,只用了0.022s,比之前的方式快了146倍。

本文使用 文章同步助手 同步

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容