Unter Java6 kompilierte Klassen mit JRE1.5 ausführen?

Status
Nicht offen für weitere Antworten.

0xdeadbeef

Top Contributor
Die unter Java6 kompilierten Klassen laden ja erheblich schneller als die unter Java5 kompilierten, aber es ist halt auch nicht so toll, dadurch die Abwärtskompatiblität zu verlieren, selbst wenn man keinerlei neue Features von Java6 benutzt.
Gibt es da irgendwelche Tricks oder Tools wie RetroWeaver, mit denen man bei einer verfügbaren JRE6 scheller lädt, aber die gleichen Klassen auch unter der JRE1.5 ausführen kann?
 
R

Roar

Gast
die klassen laden nicht schneller, weil sie mit 1.6 kompiliert sind, sondern weil sie mit der 1.6 jre ausgeführt werden ;)
kompilier dein programm mit 1.5, dann laufen sie auf 1.5 und auf 1.6 und werden natürlich auf einer 1.6er jvm genauso schnell ausgeführt wie mit 1.6 kompilierte klassen :)
 

Ariol

Top Contributor
Roar hat gesagt.:
die klassen laden nicht schneller, weil sie mit 1.6 kompiliert sind, sondern weil sie mit der 1.6 jre ausgeführt werden ;)
kompilier dein programm mit 1.5, dann laufen sie auf 1.5 und auf 1.6 und werden natürlich auf einer 1.6er jvm genauso schnell ausgeführt wie mit 1.6 kompilierte klassen :)

Soweit ich weiss sitimmt das so nicht:

nur mit Java 6 kompilierte Klassen lassen sich mit Java 6 auch schnell ausführen.
Die mit Java 1.5 kompilierten Klassen laufen aber unter Java 6 genausoschnell wie unter Java 5
 

0xdeadbeef

Top Contributor
Wie gesagt: es geht um das schnelle Laden. Der Compiler der 6er-Version fügt dazu "StackMapTable"-Attribute in den ByteCode ein, wodurch der Code beim Laden schneller verifiziert werden kann. Eine mit der 1.5er kompilierte Class-Datei hat diese Attribute definitiv nicht, wodurch die JRE6 sie auch nicht schneller laden kann.
Mal abgesehen davon, daß das gar nicht funktionieren kann, zeigt auch jeder Test sofort, daß dem nicht so ist: die mit dem 6er-Compiler erzeugten Programme laden erheblich schneller unter der JRE6 als mit älteren Compilern erzeugte Programme.

Was mich zurück zu meiner ursprünglichen Frage bringt: gibt es eine Möglichkeit, diese Attribute in meine kompilierten Klassen zu bekommen, ohne dabei die 1.5er-Kompatibilität zu verlieren?
 

JPKI

Top Contributor
Wenn diese "StackMapTable"-Attribute den 6er-Bytecode so schnell machen und es diese vorher nicht gab, bezweifle ich, das die 5er VM diese interpretieren kann, auch wenn sie zum 5er-Bytecode noch nachträglich hinzugefügt wurden.
 

Ariol

Top Contributor
Ums wirklich testen zu können würd ich ein Backup machen und es dann einfach mal testen.

Dann siehstes
 

0xdeadbeef

Top Contributor
JPKI hat gesagt.:
Wenn diese "StackMapTable"-Attribute den 6er-Bytecode so schnell machen und es diese vorher nicht gab, bezweifle ich, das die 5er VM diese interpretieren kann, auch wenn sie zum 5er-Bytecode noch nachträglich hinzugefügt wurden.
Und nochmal: es geht nicht um's "schnell machen". Durch diese Attribute können Klassen schneller geladen werden, weil sie beim Laden nicht mehr komplett verifiziert werden müssen. Da es ja Attribute und kein ausführbarer Code sind, wäre es prinzipiell sehr wohl möglich, daß eine ältere JRE sie einfach ignoriert.

Ums wirklich testen zu können würd ich ein Backup machen und es dann einfach mal testen.
Dann siehstes
Was sehe ich dann? Daß ein mit dem 6er-Compiler kompiliertes Programm mit der JRE1.5 nicht ausführbar ist, weiß ich längst. Weil dem so ist, habe ich ja erst den Thread gestartet. Und ein "Backup" brauche ich dazu auch nicht, weil man ja mehrere JREs parallel benutzen kann - was ich auch tue.
Allerdings weisen die Fehlermeldungen auf die Klassenbibliothek hin und nicht auf die StackMapTable-Attribute. Genau deshalb frage ich ja, ob es irgendwelche Tricks gibt, ein 6er-Kompilat trotzdem mit der 6er JRE laufen zu lassen. Immerhin kann man ja mit Retroweaver sogar Sprachmerkmale der 5er-Version benutzen und trotzdem auf der 1.4er laufen lassen. Wenn also nicht die StackMapTable-Attribute selber zu einer Inkompatibität führen, bestünde durchaus die Möglichkeit.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java unter Win 10 Allgemeine Java-Themen 1
M Eclipse unter Linux Lite Allgemeine Java-Themen 2
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
MarekLanger Filebeat in Docker unter Windows Allgemeine Java-Themen 1
H Java SDK unter 32 Bit Allgemeine Java-Themen 5
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J jar Dateien unter Windows 7 mit spezifischer jdk öffnen Allgemeine Java-Themen 2
I GUI für kleine Pop-Ups unter Windows Allgemeine Java-Themen 1
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
E Erfahrungen mit Java/JS Bridge unter nodejs und NodeJS/C++ Bridge Allgemeine Java-Themen 0
Neumi5694 Task-Name unter Windows Allgemeine Java-Themen 4
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
K USB infos unter Linux abfragen? Allgemeine Java-Themen 2
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
N Lizenzensierung von Java Programmen unter Linux Allgemeine Java-Themen 3
H Summe aller Vielfachen von 3 oder 5 unter 1000. Allgemeine Java-Themen 7
krgewb LookAndFeel unter Mac OS Allgemeine Java-Themen 1
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D JRE in .jar verpacken unter Windows Allgemeine Java-Themen 4
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
C Windows RCP Application unter Linux bauen lassen Allgemeine Java-Themen 3
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
F URI-Scheme mit Java unter MacOS erstellen? Allgemeine Java-Themen 0
E Drucken einer Pdf Datei unter Java. Allgemeine Java-Themen 1
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
F Mencoder unter Java Ausführen Allgemeine Java-Themen 0
G Methoden HashMap speichert unter falschen Schlüsseln Allgemeine Java-Themen 6
G IR Fernbedienung unter Java Allgemeine Java-Themen 0
G Wie installiere ich javax-usb unter windows? Allgemeine Java-Themen 0
S JAAS unter Ubuntu? Allgemeine Java-Themen 0
J Compiler-Fehler Compiliert unter Eclipse aber nicht mit javac Allgemeine Java-Themen 0
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
Guybrush Threepwood Kein user.home unter Windows8 Allgemeine Java-Themen 7
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
R Java-Progamm über Icon starten unter Windows Allgemeine Java-Themen 9
C JasperReports, PDF und "Speichern unter"-Dialog Allgemeine Java-Themen 7
P Eclipse Unter Windows erstelle .jar unter Linux (Ubuntu) funktioniert nicht Allgemeine Java-Themen 5
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
C Darstellungsproblem unter Debian und OpenJDK Allgemeine Java-Themen 5
R Umlautproblem unter Linux Allgemeine Java-Themen 10
C derby db unter mac os Allgemeine Java-Themen 8
B File Seperator unter verschiedenen OS Allgemeine Java-Themen 2
T Jar File läuft unter Windows aber nicht unter linux Allgemeine Java-Themen 10
B Methode läuft nicht unter UNIX Allgemeine Java-Themen 6
F Process.getInputStream unter Linux Allgemeine Java-Themen 7
S Java-Installation unter Sun OS Allgemeine Java-Themen 3
K Xattr Mac unter Java ansprechen Allgemeine Java-Themen 17
D Clipboard getSystemSelection() funktioniert unter Windows* nicht Allgemeine Java-Themen 3
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
T Javaprogramm unter Linux auf bestimmten Kern starten/laufen lassen ? Allgemeine Java-Themen 22
J Path-Eintrag unter Windows 7 Allgemeine Java-Themen 11
F Eclipse JAVAMAIL läuft nur unter Eclipste Applet Viewer Allgemeine Java-Themen 4
C .jar unter Windows7 über den Explorer starten Allgemeine Java-Themen 6
S (Doppel)Klick-Verhalten vom Desktop unter Java imitieren. Allgemeine Java-Themen 5
Z Probleme mit Java unter Vista/ Windows 7 Allgemeine Java-Themen 12
M Realisierung einer dynamischen Tabelle unter Android Allgemeine Java-Themen 3
C Datei auslesen wie unter Linux mit "tail -f" Allgemeine Java-Themen 3
J Java-Datei unter Mac OS X öffnen - eine Frage der Klasse Allgemeine Java-Themen 2
G Textdatei einlesen unter Windows 7 Allgemeine Java-Themen 4
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
H String spliten unter berücksichigung von " und \" Allgemeine Java-Themen 7
V linuxprogramm unter java aufrufen??? Allgemeine Java-Themen 4
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
N JAR Datei ausführen unter Angabe einer speziellen Klasse Allgemeine Java-Themen 2
J Eclipse unter Windows 7 Allgemeine Java-Themen 5
T Pfad Anwendungsdaten unter Windows ermitteln Allgemeine Java-Themen 3
B Java Applet unter Mac wird nicht angezeigt Allgemeine Java-Themen 6
A CLASSPATH unter Debian Lenny Allgemeine Java-Themen 4
A Umgebungsvariable unter Windows Vista setzen Allgemeine Java-Themen 60
M Log4J funktioniert nicht unter anderem Benutzer Allgemeine Java-Themen 5
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
J dialogys unter linux Allgemeine Java-Themen 4
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
R Sound unter Java Allgemeine Java-Themen 12
I Fehler unter 64Bit JDK Allgemeine Java-Themen 4
S Jar und Exe verhalten sich unterschiedlich unter Vista Allgemeine Java-Themen 8
D Botschaftssendung unter Klassen Allgemeine Java-Themen 4
H JDIC unter 1.5 Allgemeine Java-Themen 2
G Generics - W.card unter Nutzung von Annotationsklasse? Allgemeine Java-Themen 6
B Frage zu Sichtbarkeit in (Unter)Paketen Allgemeine Java-Themen 9
F Document öffnen unter Linux Allgemeine Java-Themen 4
0 kein Java unter Server 2008 ? Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
L dateizugriff unter windows nicht behindern Allgemeine Java-Themen 2
W Deployment unter Linux Allgemeine Java-Themen 17
M Drag and Drop FileListFlavor unter Ubuntu - Nautilus Allgemeine Java-Themen 5
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
G Problem mit Serialisiertem Objekt (unter Objekte fehlen?) Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben