如何运行用jaotc编译的类?
我使用Java 9 Ahead-Of-Time Compiler jaotc
使用以下命令编译了一个简单的类:
javac Test.java jaotc Test.class
这会生成一个名为unnammed.so
的文件。 如何运行已编译的程序? 我是否需要编写一个引导程序来链接.so文件?
执行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
看看这个 ,了解更多信息。
您应该看一下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,这样你就不会得到’unnamed.so’。