Ändern der Java-Version

7

Ich habe eine Server-Client-Anwendung, die auf Java 1.3 läuft; Ich möchte Schritt für Schritt zu Java 1.6 wechseln, also die ersten Clients, dann den Rest der Clients und schließlich den Server ... Ich frage mich, könnten Sie mich auf einige gemeinsame Probleme verweisen, die kommen können und was sollte ich beachten?

    
tropikalista 04.11.2008, 12:51
quelle

6 Antworten

11

Sun versucht, eine hohe Abwärtskompatibilität beizubehalten, sodass Sie möglicherweise einfach die neue JVM installieren und Ihre Anwendung damit neu starten können.

Ein Dokument, das die Rückwärtsinkompatibilität von Java 1.6 mit einer früheren Version beschreibt, ist hier . Dieses Dokument verknüpft die Kompatibilitätsdokumente für Java 1.5 und Java 1.4 . Sie möchten diese Dokumente wahrscheinlich lesen, um sich über mögliche Fallstricke zu informieren.

Java 1.5 und Java 1.6 führten neue Klassen-Dateiformate ein. Die JVMs werden die alten Klassendateien ebenfalls ausführen, aber das erneute Kompilieren Ihres Codes - insbesondere mit JDK 1.6 - wird der neuen JVM helfen, einige Änderungen zu nutzen, um Ihre Anwendung schneller zu machen. Sie könnten also eine Neukompilierung in Erwägung ziehen.

Zusätzlich wurden einige neue Schlüsselwörter eingeführt, nämlich assert (in 1.4) und enum (in 1.5) (wie bereits von Yuval erwähnt). Wenn Sie diese Wörter als Bezeichner verwenden, schlägt eine Neukompilierung fehl, aber die alten Klassendateien funktionieren. Sie können den Schalter -source an javac übergeben, damit dieser kompiliert wird: ' javac -source 1.3 ' kompiliert den Code ohne assert und enum als Schlüsselwort.

    
Mnementh 04.11.2008, 13:02
quelle
4

Aus dem oberen Teil meines Kopfes, suchen Sie nach den Namen enum und assert in Feldern und lokalen Variablen ... Diese Wörter sind Schlüsselwörter in Java 1.4 und 5. Der Java 6 Compiler wird sie als Kompilierungsfehler markieren wenn es sie sieht.

Yuval = 8-)

    
Yuval 04.11.2008 12:55
quelle
4

Sun führt eine Liste der Inkompatibilitäten, die mit jeder neuen Version von Java eingeführt werden.

Das letzte Dokument für 1.4.2 enthält Links zu den Kompatibilitätshinweisen zurück zu JDK 1.0.

    
coobird 04.11.2008 13:48
quelle
3

Generell ist die Rückwärtskompatibilität der Sun JVMs sehr gut, aber nicht perfekt. Ich habe gesehen, wie drei sehr große Anwendungen von 1.3 auf 1.5 migriert sind und nur eine kleine Anzahl von Problemen auftreten. Die größte davon war eine Swing-Maske, die in eine endlose Event-Handling-Schleife ging und die App unter 1.4 einfror

Es ist unwahrscheinlich, dass der Server-Teil Probleme verursacht, aber es gab ziemlich große Veränderungen unter der Haube in Swing, besonders zwischen 1.3 und 1.4 - das Fokus-Subsystem wurde zum Beispiel komplett neu geschrieben.

Es ist immer noch möglich, dass die App ohne Probleme läuft, aber Sie sollten definitiv umfangreiche Tests durchführen.

    
Michael Borgwardt 18.05.2009 11:18
quelle
2

Als ich von 1.4.2 auf 1.5 über ein kleines Applet, an dem ich arbeitete, gewechselt habe, sind viele Dinge kaputt gegangen: Die Bildschirmaktualisierung wurde komplett verwackelt, Elemente wurden verschoben usw.

Suns JRE unterstützt keine Abwärtskompatibilität für alles . Manchmal, wenn Elemente veraltet sind, gehen sie nach einer sehr kurzen Zeit vollständig verloren.

Wir haben alles mit "stock" Java geschrieben, auch mit Suns Bibliotheken.

Ich habe auch mehrere Anwendungen in reinem Java geschrieben gesehen, die auf einer oder zwei Plattformen in der gleichen Version der JRE funktionieren. Bei anderen mit dieser Version funktioniert das Produkt (das Produkt, mit dem ich arbeite, funktioniert unter Windows, ok auf Mac) OS X, anständig unter Linux, aber nicht unter Solaris - alle mit der gleichen JRE).

Das Verschieben von Versionen ist kein einfacher Schritt, es sei denn, die Anwendung ist wirklich klein.

    
warren 04.11.2008 13:20
quelle
0

Meine Erfahrung ist, dass die Kompatibilität ziemlich hoch ist. Ich habe nur eine App gefunden, die ich nicht auf einer aktuellen Version ausführen konnte. Aus welchem ​​Grund auch immer (ich hatte keine Quelle, also habe ich mich nicht damit beschäftigt), dass eine App nur auf 1.4.2 laufen würde. Alles andere, mit dem ich jemals zu tun hatte (einige von ihnen ziemlich groß), sind bis 1.6 gut gegangen. Keine Änderungen erforderlich.

YMMV natürlich, also müssen Sie es versuchen und sehen ...

    
Brian Knoblauch 04.11.2008 13:48
quelle