Overview

sat-adapter is a tool used to bridge the sat tool and the AppCDS, AOT, and Pre-initialize features of OpenJDK.

Because these features are designed independently and depend on different inputs:

  • AppCDS: A list containing class id, dependency information, and interfaces
  • AOT: A list of methods that need to be compiled
  • Pre-initialize: A list of classes that can be safely initialized

The sat-adapter converts the json output generated by sat into the input file of each feature mentioned above.

Here is a sample json data:

[
  {
    "className": "Ljava/io/EOFException;",
    "source": "/java.base/java/io/EOFException.class",
    "super": "Ljava/io/IOException;",
    "interfaces": [],
    "safeForPreinit": "true",
    "invokedMethods": [
      "<init>()V",
      "<init>(Ljava/lang/String;)V"
    ]
  }
]

Build & Usage

Build:

mvn clean package
# or native image
mvn clean package -P native-image 

Usage:

java -jar sat-adapter.jar --input input.json\
        --aot compile-command.txt\
        --appcds classlist\
        --preinit preinit-classes.txt 
# or native image
./sat-adapter --input input.json # other paramaters