Search code examples
javajava-9jaotc

How do I run a class compiled with jaotc?


I compiled a simple class using the Java 9 Ahead-Of-Time Compiler jaotc using the following command:

javac Test.java
jaotc Test.class

This produces a file named unnammed.so. How do I run the compiled program? Do I need to write a bootstrap program to link with the .so file?


Solution

  • After executing an AOT compilation, you need to specify generated AOT library during application execution:

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

    You should also compile java.base to gain real improvement, performance wise:

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

    Note that the same java runtime configuration should be used during AOT compilation and execution.

    For Example:

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

    Take a look at this, for more information.