c't 23/04
-target 1.4 können Sie zwar Class-Dateien für eine ältere VM kompilieren, das funktioniert aber nur, wenn Sie gleichzeitig den Schalter -source 1.4 setzen - dann versteht javac die neue Sprache aber nicht mehr. Die Kombination -source 1.5 -target 1.4 quittiert javac mit einer Fehlermeldung.Technisch gesehen sollte es eigentlich kein Problem sein, denn die Spezifikation für den Bytecode, den javac ausspuckt, hat sich kaum geändert. Der Compiler fügt etwa automatisch Cast-Anweisungen in den Bytecode ein, an die ein Entwickler, der generische Datentypen verwendet, nicht mehr denken muss.
Tatsächlich kennt der neue javac den undokumentierten und von Sun nicht empfohlenen Schalter -target jsr14, der aus neuem Quelltext Bytecode für die VM-Version 1.4 erzeugt, ohne sich zu beschweren. Trotzdem ist Java 5.0 nicht rückwärtskompatibel, wie Neal Gafter, der bis vor wenigen Monaten den javac bei Sun entwickelte, c't bestätigte. Viele der Spracherweiterungen setzen Funktionen der neuen Klassenbibliothek voraus und funktionieren deshalb nicht in einer Java-1.4-Umgebung. So leiten die neuen Aufzählungstypen mit dem Schlüsselwort enum stets einen neuen Typ von java.lang.Enum ab und die neue for-each-Schleife arbeitet mit dem Interface java.lang.Iterable, die im API der Version 1.4 ebenfalls fehlt. Eine Garantie, dass die mit jsr14-Schalter übersetzten Programme überall laufen, gibt es also nicht. (kav)
Version zum Drucken | Per E-Mail versenden | Heft bestellen
Permalink: http://heise.de/-317536
Das aktuelle Heft ist jetzt im Handel erhältlich.
Ältere Artikel können Sie über unser Zeitschriften-Archiv bestellen.