Announcement

Collapse
No announcement yet.

Java 5 und Abwärtskompatibilität

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Java 5 und Abwärtskompatibilität

    Hi,

    ich bin immer davon ausgegangen, dass Java-5 abwärtskompatibel ist. Aus diesem Grunde wurden ja meines Wissens einige Einschränkungen in die Sprache (bezüglich Generics, etc.) eingebaut und der Byte-Code wurde meines Wissens auch nicht geändert.

    Wenn ich jetzt allerdings Java 5 Klassen mit einer Java 1.4 VM ausführe, bekomme ich einen UnsupportedClassversionError. Ich könnte die Klassen für Java 1.4 kompilieren, aber dann kann ich die neuen Features, wie Generics und Co. nicht verwenden. Kann man diesen Error umgehen? Wenn ja wie?

    Viele Grüße
    Manfred

  • #2
    Hallo Manfred,

    Offiziell geht das nicht. Wenn man die neuen Features benutzen will, muß man mit -source 1.5 compilieren und das setzt auch target -1.5 voraus. Der Bytecode ist allerdings tatsächlich weitgehend rückwärtskompatibel, es gibt den "inoffiziellen" Schalter "-source 1.5 target -jsr14" der auf 1.4er VMs lauffähigen Code erzeugt (beim Sun Compiler). Allerdings hast Du immer das Problem, das es in der 1.4er Klassenbibliothek viele Typen noch nicht gibt, z.b. eben "java.lang.Iterable" oder "java.lang.Enum". Die neuen Konstrukte wie enums oder die for-Schleife mit der neuen Syntax erzeugen Code der diese Typen benötigt, der läuft dann eben nicht unter 1.4. Es gibt auch noch das Projekt

    http://retroweaver.sourceforge.net

    zum Thema, das ich aber noch nicht getestet habe.

    Viele Grüße,

    Alwi

    Comment


    • #3
      Viel wichtiger ist ja auch, daß alter Code auch auf einer neuen VM läuft, also zum Beispiel ein mit 1.4 geschriebenes Programm auch auf einer 1.5-VM läuft.
      Sicherlich stand dies im Mittelpunkt, als man sich dafür entschied, den Byte-Code nicht zu ändern.
      Denn ansonsten müßten alle alten Programm neu übersetzt und ausgeliefert werden oder man müßte alte VM-Versionen vorrätig halten

      Comment

      Working...
      X