Um die Startzeit der JVM zu beschleunigen, entschieden sich die Sun-Entwickler dafür, die Standardlaufzeitklassen für eine Plattform während der Installation der JVM vorzukompilieren. Diese vorkompilierten Klassen können z.B. an:Beschleunigen Sie den Anwendungsstart durch Hinzufügen eigener Anwendungsklassen zu classes.jsa
$ JAVA_HOME \ jre \ bin \ client \ classes.jsa
derzeit Meine Firma eine Anwendung Java Standalone entwickelt, die ihre eigene JRE bringt, so wäre es eine fantastische Möglichkeit, unsere Anwendung zu beschleunigen Startzeit durch Hinzufügen eigener Anwendungsklassen zu dieser jsa-Datei.
Ich glaube nicht, dass die JSA-Datei durch Magie erstellt wurde, also: Wie wird es erstellt? Und wie kann ich die JVM dazu bringen, meine eigenen Klassen zu integrieren?
EDIT: Ich fand schon folgendes heraus:
Die classes.jsa durch den Befehl erstellt wird
java -Xshare:dump
Die Liste der Klassen in der Deponie integrieren in $JAVA_HOME/jre/lib/classlist
finden.
Ich habe es sogar geschafft, meine eigenen Klassen hier hinzuzufügen (und sie in die rt.jar für java hinzuzufügen, um sie zu finden) und meine eigene Prüfsumme unterhalb der classlist-Datei zu erzeugen.
Das letzte Problem ist: Nur Klassen in den Paketen java, com.sun und org.w3c scheinen erkannt zu werden, wenn ich dieselben Klassen in ihren ursprünglichen Paketen belasse, werden sie nicht geladen. Ich habe die gesamte OpenJDK-Quelle nach einem Zeiger dazu durchsucht, aber es scheint etwas mit Schutzdomänen zu tun zu haben. Wenn jemand genug an diesem Thema interessiert und ausreichend informiert ist, fügen Sie bitte einige Hinweise für mich hinzu, um weiter zu untersuchen.
Können Sie teilen, wie Sie die Prüfsumme neu berechnet? – coppit
Ich habe meine Antwort in einem Slide-Deck für Embedded Java gefunden - es gibt ein Hilfsprogramm namens AddJsum in der openjdk Source-Struktur. http://www.oracle.com/technetwork/jp/ondemand/java/20110519-java-a-1-greg-400531-ja.pdf – coppit
Danke, ich könnte dies ausprobieren, wenn ich die Zeit bekomme. – Daniel