10 votes

Comment exécuter une classe compilée avec jaotc ?

J'ai compilé une classe simple en utilisant le Java 9 Compilateur Ahead-Of-Time jaotc en utilisant la commande suivante :

javac Test.java
jaotc Test.class

Cela produit un fichier nommé unnammed.so . Comment exécuter le programme compilé ? Dois-je écrire un programme d'amorçage pour le lier au fichier .so ?

15voto

Ahmad Alsanie Points 1888

Après avoir exécuté une compilation AOT, vous devez spécifier la bibliothèque AOT générée pendant l'exécution de l'application :

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

Vous devez également compiler java.base pour obtenir une réelle amélioration, en termes de performances :

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

Notez que la même configuration du runtime java doit être utilisée lors de la compilation et de l'exécution de l'AOT.

Par exemple :

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

Jetez un coup d'œil à este pour plus d'informations.

5voto

Speakjava Points 1280

Vous devriez consulter le document JEP 295, qui décrit la compilation AOT dans le JDK 9, http://openjdk.java.net/jeps/295 . Vous devez utiliser l'indicateur de ligne de commande --XX::AOTLibrary.

Pour exécuter votre application :

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

Vous devrez évidemment copier le fichier libjava.base.so depuis la distribution du JDK 9 ou modifier le chemin d'accès où il se trouve.

Lors de la compilation, vous devez également utiliser l'option --output pour jaotc afin de ne pas obtenir 'unnamed.so'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X