native-image
是将class
、jar
包重新编译成机器二进制码,以提高他们的运行速度。
查看native-image
命令的使用帮助。
将class
文件编译成机器二进制码。
class
不是您的XX.class
文件在文件系统中的路径,而是类路径,比如 一个文件系统中的类~/Test.class
,我们假设它没有包,那么它的class
就是Test
, 那么ClassLoader
如何找到它的呢?答案是CLASSPATH
,这就是我们安装JDK
的时候一定要 设置CLASSPATH
环境变量,如果你不设置,它找不到JDK
自带的那些类。
-cp
就是用来指定你要使用的那个class
的CLASSPATH
。
示例:
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
命令用来统计程序的各项运行指标的。
将jar
文件编译成机器二进制码。
-jar jarfile
指定jar
包在文件系统中的路径。
示例:
1、下载jenkins的war
包:
curl -LO https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
2、使用native-image
将jenkins.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
命令用来统计程序的各项运行指标的。