Hat sich der Bytecode von 1.5 nach 1.6 geändert?

Status
Nicht offen für weitere Antworten.

Leroy42

Top Contributor
In einem anderen Thread habe ich erfahren,
daß sich der erzeugte Bytecode zu Java 1.6 schon wieder geändert haben soll.

Das hieße, das unter Java 1.6 kompilierte Programme,
auch wenn sie nur Sprachmittel und API von 1.5 verwenden,
nicht mehr unter einer JRE 1.5 lauffähig seien.

Frage: Stimmt das?

Und wenn ja, WIESO?
 

Leroy42

Top Contributor
Ich kann auf Arbeit z.Z. leider kein 1.6 installieren und ausprobieren.

Ein Link auf die Feststellung, daß sich der Bytecode tatsächlich unter
1.6 verändert hat, wäre mir schon ausreichend.
 

thE_29

Top Contributor
Ich verstehe nicht wirklikch wozu der 2te Thread da ist?!

Und was solls, ich kompiliere das meiste sogar noch unter 1.4!

Und wennst ne gute IDE hast, kannst sowieso die Targetlevel (im Notfall mit -target:<version> angeben!)

Und warum es so ist, kann man allg. net sagen.. Vielleicht hat die VM nen 1.6 PowerMode und der geht nur mit 1.6 Byte Code! Falls du etwas ältere SW in der 1.6 VM laufen lässt, wirds dem auch nix machen, aber umgekehrt gehts halt nicht!
 

Wildcard

Top Contributor
Leroy42 hat gesagt.:
Ein Link auf die Feststellung, daß sich der Bytecode tatsächlich unter
1.6 verändert hat, wäre mir schon ausreichend.
Das ist völlig Pustekuchen. DIe Version mit der kompiliert wird ist in der Class File vermerkt. Die JRE erkennt das, und wenn die Versionsnummer zu hoch ist wirft sie dich raus.
 
R

Roar

Gast
Leroy42 hat gesagt.:
thE_29 hat gesagt.:
Ich verstehe nicht wirklikch wozu der 2te Thread da ist?!

Weil der Thread-Titel: Wieso finden andere nicht die main .class irgendwie nicht passt. :cool:
wenn du nicht in jedem thread offtopic posten würdest, würde sowas auch nicht passieren :!: :toll: :bloed: :autsch: :roll: :lol:
 

Wildcard

Top Contributor
Narf... was reicht dir an meiner Aussage nicht?
Hast du Eclipse? Stell das Compliance Level auf 6 und für die .class ausserhalb von Eclipse mit deiner 1.5er JRE aus.
Das gleiche kannst du auch mit einer 1.4er für eine 1.3er wiederholen and so on.
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Narf... was reicht dir an meiner Aussage nicht?

Deine Aussagen reichen mir eigentlich schon. :D
Ich werd' aber das Gefühl nicht los, das du dich bzgl. des ByteCodes vertan hast.
(siehe unten)
Wildcard hat gesagt.:
Stell das Compliance Level auf 6
Mein Eclipse geht leider nur bis 1.5 :(

Wildcard hat gesagt.:
Das gleiche kannst du auch mit einer 1.4er für eine 1.3er wiederholen and so on.

Dem widerspreche ich aber eindeutig.

1.4er erzeugte Bytecode ist auf einer 1.3er JVM ausführbar.
 

Wildcard

Top Contributor
Leroy42 hat gesagt.:
1.4er erzeugte Bytecode ist auf einer 1.3er JVM ausführbar.
Nein, nur wenn 1.3 oder kleiner als Target angegeben wurde.

* 1.1 (major version: 45 minor: 3)
* 1.2 (major version: 46 minor: 0)
* 1.3 (major version: 47 minor: 0)
* 1.4 (major version: 48 minor: 0)
* 1.5, 5 or 5.0 (major version: 49 minor: 0)
* 1.6, 6 or 6.0 (major version: 50 minor: 0)
 

L-ectron-X

Gesperrter Benutzer
*Leroy42 zustimm*

Zumindest solange keine neu in Version 1.4 hinzugekommenen Klassen benutzt wurden.
 

Wildcard

Top Contributor
Wenn du in den 1.4er Docs nachschaust wirst du das finden:
-target version
Generate class files that will work on VMs with the specified version. The default is to generate class files to be compatible with the 1.2 VM in the Java 2 SDK, with one exception. When the -source 1.4 option is used, the default target is 1.4. The versions supported by javac are:

1.1
Ensure that generated class files will be compatible with 1.1 and VMs in the Java 2 SDK.
1.2
Generate class files that will run on VMs in the Java 2 SDK, v 1.2 and later, but will not run on 1.1 VMs. This is the default.
1.3
Generate class files that will run on VMs in the Java 2 SDK, v 1.3 and later, but will not run on 1.1 or 1.2 VMs.
1.4
Generate class files that are compatible only with 1.4 VMs.
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Leroy42 hat gesagt.:
1.4er erzeugte Bytecode ist auf einer 1.3er JVM ausführbar.
Nein, nur wenn 1.3 oder kleiner als Target angegeben wurde

:shock: Bin ich jetzt vollkommen Balle? :shock:

Der Bytecode hat sich doch von 1.3 auf 1.4 gar nicht verändert!

Ohne Link glaub' ich euch jetzt einfach gar nichts mehr :meld:
( :cool: )
 

Wildcard

Top Contributor
Link ist beigelegt und ich wüßte nicht was ich dazu noch mehr zusagen habe.
Wie schon mehrmals erwähnt hat der Bytecode damit nüscht direkt zu tun.
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Link ist beigelegt und ich wüßte nicht was ich dazu noch mehr zusagen habe.
Wie schon mehrmals erwähnt hat der Bytecode damit nüscht direkt zu tun.

Dein Link (Zitat) sagt aber nichts bzgl. Bytecode-Änderungen aus.

Ensure that generated class files will be compatible with 1.1 and VMs in the Java 2 SDK.
bedeutet für mich, daß gewährleistet ist, daß die Programme auch auf
einer 1.1 JVM laufen, also daß auch nur Methoden dieser API genutzt werden.

Es sagt nichts darüber aus, daß auch von höheren Java-Versionen generierte
Programme laufen lkönnten.

Der Punkt ist, daß sich seit Java 1.5 der generierte Byte-Code
dermaßen geändert hat, daß er auf < 1.5-JVMs prinzipiell
nicht lauffähig ist; auch wenn man nur 1.4er API nutzt.

Ich bin nachwievor der Meinung, das sich diesbezüglich
von 1.5 ==> 1.6 nichts getan hat und hoffe, daß ich
mit meiner Meinung bald nicht mehr allein auf weiter Flur sein werde. :?
(Langsam wird's zu einer persönlichen Angelegenheit :cool: )

Wildcard hat gesagt.:
ich wüßte nicht was ich dazu noch mehr zusagen habe.

Brauchst du auch nicht mehr!

Hab' aber trotzdem vielen Dank für deine Bemühungen. :toll:
 

Wildcard

Top Contributor
Es hat mit dem Bytecode doch aber nicht's zu tun :autsch:
Je nachdem was du als Target angibst kommt eine 45-50 in das Class File. Wenn das nicht zur JRE passt steigt sie aus und gut ist.
Geht's dir jetzt darum Class Files im Hexeditor nachträglich kompatibel zu machen oder wie soll ich das verstehen?
 

The_S

Top Contributor
Evtl. glaubt ers mir ja ;) . Ich hab den Thread zwar nur überflogen, aber soweit ich das sehe, hat Wildcard vollkommen recht. Wenn du mit 1.6 kompilierst, kannst du auch nur mit 1.6 oder größer ausführen. wenn du mit 1.5 kompilierst kannst du nur mit 1.5 oder höher ausführen, ... Das war schon immer so und hat nix mit dem Byte-Code zu tun. Es sei denn du stellst das Compile-Level von Hand ein. Dann aber lieber unterschiedliche JDKs verwenden!

Mit Links kann ich meine Aussage leider nicht bestätigen, denke aber Wildcard hat schon genug gebracht. Hab das mal irgendwo in einem Buch gelesen (frag aber net wo).
 

Leroy42

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Evtl. glaubt ers mir ja ;) .

Nicht unbedingt! Aber zusammen seid ihr zwei schon gewichtiger :lol: .

Ich frage mich dann nur, woran es gelegen haben mag,
daß ich früher 1.4er compilierte Programme zwar unter <= 1.3
zum Starten bekommen habe, jedoch gelegentlich mit
ein Runtime-Exception "method not found" (oder so ähnlich)
erst zur Laufzeit Probleme bekam.

Und irgendwie habe ich noch im Hinterkopf, daß sich erst ab
Java 1.5 der erzeugt Byte-code geändert hat.

Aber egal! Vielleicht werde ich langsam auch nur alt (und müde (sooo müüde...))
 

Wildcard

Top Contributor
Leroy42 hat gesagt.:
Nicht unbedingt! Aber zusammen seid ihr zwei schon gewichtiger.

Ich frage mich dann nur, woran es gelegen haben mag,
daß ich früher 1.4er compilierte Programme zwar unter <= 1.3
zum Starten bekommen habe, jedoch gelegentlich mit
ein Runtime-Exception "method not found" (oder so ähnlich)
erst zur Laufzeit Probleme bekam.
Ich weiß ja nicht wie's der Hobbit hält, aber ich bin doch nicht gewichtig :shock: :bae:

Schau mal ein paar Postings weiter oben, da hab ich schonmal erwähnt das wenn man bei 1.4 kein explizites Target angibt 1.2 als Target genommen wird.
 
R

Roar

Gast
Leroy42 hat gesagt.:
Ich frage mich dann nur, woran es gelegen haben mag,
daß ich früher 1.4er compilierte Programme zwar unter <= 1.3
zum Starten bekommen habe, jedoch gelegentlich mit
ein Runtime-Exception "method not found" (oder so ähnlich)
erst zur Laufzeit Probleme bekam.
das hat wildcard doch schon 3 mal weiter oben gesagt und gequotet :!:

Und irgendwie habe ich noch im Hinterkopf, daß sich erst ab
Java 1.5 der erzeugt Byte-code geändert hat.
der bytecode hat sich auf 1.1 (soweit ich weiß), auf 1.4 auf 1.5 und auch auf 1.6 und wird auch auf 1.7 wieder geändert.
die änderungen auf 1.6 können dir und mir aber egal sein, das sind nur irgendwelche optimierungen (stackmap frames heißen die).
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
Schau mal ein paar Postings weiter oben, da hab ich schonmal erwähnt das wenn man bei 1.4 kein explizites Target angibt 1.2 als Target genommen wird.

Das habe ich zwar nicht überlesen aber nicht realisiert.

Das würde mein Mißverständnis erklären ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
A Eclipse hängt sich auf Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Viper13125 Eclipse Hängt sich auf, wenn ich SimpelDateFormat drin lasse Allgemeine Java-Themen 2
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
D Anfänger versucht sich an Xtext Allgemeine Java-Themen 0
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
G Jar lässt sich mit macOS nicht starten Allgemeine Java-Themen 9
H Erste Schritte Ausführbare Dateien lassen sich nicht starten Allgemeine Java-Themen 5
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
G Beendet sich der Thread selbst?! Allgemeine Java-Themen 3
S Compiler-Fehler IntelliJ Projektdatei lässt sich nicht erstellen. Allgemeine Java-Themen 15
J Bilder lassen sich nicht importieren Allgemeine Java-Themen 3
E GUI.jfm lässt sich nicht mehr öffnen Allgemeine Java-Themen 1
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
X Sich wiederholende substrings finden Allgemeine Java-Themen 6
P Input/Output Inputstream verhält sich verschieden Allgemeine Java-Themen 9
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
K Java installiert sich nicht ganz Allgemeine Java-Themen 15
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
L Jar lässt sich nicht öffnen Allgemeine Java-Themen 12
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
L Liste führt sich nicht weiter Allgemeine Java-Themen 5
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
F Wert ändert sich nicht Allgemeine Java-Themen 12
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
M Programm startet sich selbst neu, alte Logfiles bleiben gesperrt Allgemeine Java-Themen 2
J String Variable verändert sich plötzlich Allgemeine Java-Themen 8
K Java lässt sich nicht Installieren Windows7Ultimate 64Bit Allgemeine Java-Themen 1
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
E Liste löscht sich selbstständig Allgemeine Java-Themen 5
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
D swingset3.jnlp lässt sich nicht ausführen Allgemeine Java-Themen 2
L Prog läuft in der IDE, hängt sich aber am Mac auf Allgemeine Java-Themen 0
F Spiel lässt sich nicht aus GUI starten Allgemeine Java-Themen 5
B Threads halten sich irgendwie auf... Allgemeine Java-Themen 6
G Services verwenden sich gegenseitig Allgemeine Java-Themen 4
A Auswahl eines JEditorPane das Sich in einem JScrollPanel Befindet Allgemeine Java-Themen 2
J kann eine .jar sich selbst verschieben? Allgemeine Java-Themen 6
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Rudolf In wie fern lohnt sich C++ für einen Javaentwickler Allgemeine Java-Themen 70
A Selbsterstellte 404-Seiten bestimmen, die sich als 200 ausgeben Allgemeine Java-Themen 8
D Arrays überschreiben sich Allgemeine Java-Themen 2
G .jar Dateien lassen sich nicht mehr öffnen Allgemeine Java-Themen 2
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
pg1337 hashCode() verändert sich Allgemeine Java-Themen 15
N Java lässt sich nicht löschen! Allgemeine Java-Themen 7
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
P jar-Datei lässt sich nicht ausführen Allgemeine Java-Themen 5
E nach dem Ordner suchen, wo .jar datei sich befindet Allgemeine Java-Themen 17
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
D JMF - lässt sich nicht im ausgewählten Format aufnehmen Allgemeine Java-Themen 2
ruutaiokwu enlosschleife in thread beendet sich Allgemeine Java-Themen 3
F Javainstallation verweigert sich mir Allgemeine Java-Themen 11
M Java lässt sich nicht installieren Allgemeine Java-Themen 10
T Programm hängt sich auf Allgemeine Java-Themen 14
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
V JRE lässt sich nicht installieren. Allgemeine Java-Themen 10
W 2D-Grafik nach getthumbnail läst sich Quellbild nicht mehr löschen Allgemeine Java-Themen 3
J Eclipse Eclipse hängt sich ständig auf Allgemeine Java-Themen 6
L JDK lässt sich nicht deinstallieren Allgemeine Java-Themen 3
T KeyListener lässt sich nur einmal drücken Allgemeine Java-Themen 2
J Können Programme sich selbst erweitern? Allgemeine Java-Themen 6
T Datenbank lässt sich un Entwicklungsumgebung öffnen, aus .jar aber nicht Allgemeine Java-Themen 9
L Java Thread [blockingqueue] hängt sich auf Allgemeine Java-Themen 13
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
S Element aus ArrayListe löschen --> Thread hängt sich auf Allgemeine Java-Themen 2
T Thread beendet sich "einfach so"? Allgemeine Java-Themen 13
M Radianwert wiederholt sich trotz unterschiedlicher zufälliger Koordinaten Allgemeine Java-Themen 6
B Benachrichtigung, wenn sich Benutzer am Betriebssystem anmeldet Allgemeine Java-Themen 9
X Über ArrayList iterieren, während sich diese verändert Allgemeine Java-Themen 3
lacyuu Schleife hängt sich auf, wieso?? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben