native-image
1.0、参考
1.1、native-image简介

native-image是将classjar包重新编译成机器二进制码,以提高他们的运行速度。

1.2、native-image --help

查看native-image命令的使用帮助。

1.3、native-image [options] class [imagename]

class文件编译成机器二进制码。

class不是您的XX.class文件在文件系统中的路径,而是类路径,比如 一个文件系统中的类~/Test.class,我们假设它没有包,那么它的class就是Test, 那么ClassLoader如何找到它的呢?答案是CLASSPATH,这就是我们安装JDK的时候一定要 设置CLASSPATH环境变量,如果你不设置,它找不到JDK自带的那些类。

-cp就是用来指定你要使用的那个classCLASSPATH

示例:

1、编写如下的Java代码:

public class Test {

    public static void main(String[] args) {
        int sum = 0;
        for(int i = 0; i < 10000; i++) {
            sum += i;
            System.out.println(i);
        }
        System.out.println(sum);
    }
}

2、使用javac命令编译:

javac -cp ~ ~/Test.java

3、使用native-image~/Test.class编译成机器二进制码:

native-image -cp ~ Test test

native-image编译的过程耗时非常长,可能会持续1分钟左右。请耐心等待。

4、执行test可执行文件:

./test

可以通过如下方式运行对比一下差异:

time ./test
time ./java -cp ~ Test
time java -cp ~ Test

time命令用来统计程序的各项运行指标的。

1.4、native-image [options] -jar jarfile [imagename]

jar文件编译成机器二进制码。

-jar jarfile指定jar包在文件系统中的路径。

示例:

1、下载jenkinswar包:

curl -LO https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war

2、使用native-imagejenkins.war编译成机器二进制码:

native-image --auto-fallback -jar jenkins.war jenkins

native-image编译的过程耗时非常长,可能会持续10分钟左右。请耐心等待。

4、执行jenkins可执行文件:

./jenkins

可以通过如下方式运行对比一下差异:

time ./jenkins
time ./java -jar jenkins.war
time java -jar jenkins.war

time命令用来统计程序的各项运行指标的。