如何运行用jaotc编译的类?

时间:2017-07-25 08:37:13

标签: java java-9 jaotc

我使用Java 9 Ahead-Of-Time Compiler jaotc使用以下命令编译了一个简单的类:

javac Test.java
jaotc Test.class

这会生成一个名为unnammed.so的文件。如何运行已编译的程序?我是否需要编写一个引导程序来链接.so文件?

2 个答案:

答案 0 :(得分:11)

执行AOT编译后,需要在应用程序执行期间指定生成的AOT库:

java -XX:AOTLibrary=./Test.so Test

你还应该编译java.base以获得真正的改进,性能明智:

jaotc --output libjava.base.so --module java.base

请注意,在AOT编译和执行期间应使用相同的Java运行时配置。

例如:

jaotc -J-XX:+UseParallelGC -J-XX:-UseCompressedOops --output libTest.so Test.class 
java -XX:+UseParallelGC -XX:-UseCompressedOops -XX:AOTLibrary=./libTest.so Test

有关详细信息,请查看this

答案 1 :(得分:5)

您应该看一下JEP 295,它描述了JDK 9中的AOT编译,http://openjdk.java.net/jeps/295。您需要使用--XX :: AOTLibrary命令行标志。

执行你的应用:

java -XX::AOTLibrary=./unnamed.so,./libjava.base.so Test

您显然必须从JDK 9发行版中复制libjava.base.so文件或将路径更改为它所在的位置。

编译时,你也应该使用-output标志来jaotc,这样你就不会得到“未命名。”'。

相关问题