7

私はサーバーを持っています-Java1.3で実行されるクライアントアプリケーション。私は段階的にJava1.6に変更したいのですが、残りのクライアントよりも最初の数クライアント、そして最後にサーバーを意味します...発生する可能性のあるいくつかの一般的な問題に私を導き、何をすべきか疑問に思いました。

4

6 に答える 6

11

Sun は高いレベルの下位互換性を維持しようとしているため、新しい JVM をインストールして、それを使用してアプリケーションを再起動するだけで済みます。

Java 1.6 と以前のバージョンとの下位互換性について説明しているドキュメントは、こちらです。このドキュメントは、Java 1.5Java 1.4の互換性ドキュメントにもリンクしています。おそらく、このドキュメントを読んで、起こりうる落とし穴について学びたいと思うでしょう。

Java 1.5 およびJava 1.6では、新しいクラス ファイル形式が導入されました。JVM は古いクラス ファイルも実行しますが、特に JDK 1.6 を使用してコードを再コンパイルすると、新しい JVM がいくつかの変更を利用してアプリケーションを高速化するのに役立ちます。したがって、再コンパイルを検討してください。

さらに、いくつかの新しいキーワードが導入されました。つまり、assert (1.4) と enum (1.5) (Yuval が既に述べたように) です。これらの単語を識別子として使用すると、再コンパイルは失敗しますが、古いクラス ファイルは機能します。-sourcejavac にスイッチを指定してコンパイルさせることjavac -source 1.3できます

于 2008-11-04T13:02:11.843 に答える
4

Sunは、Javaの新しいバージョンごとに導入される非互換性のリストを保持しています。

1.4.2の最後のドキュメントには、JDK1.0に戻る互換性に関する注意事項へのリンクがあります。

于 2008-11-04T13:48:08.587 に答える
4

頭のてっぺんから、名前enumassertフィールドとローカル変数を探します... これらの単語は、Java 1.4 および 5 のキーワードになりました。Java 6 コンパイラは、それらを見つけた場合、コンパイル エラーとしてマークします。

ユヴァル=8-)

于 2008-11-04T12:55:54.197 に答える
3

一般に、Sun の JVM の下位互換性は非常に優れていますが、完全ではありません。私は 3 つの非常に大きなアプリケーションが 1.3 から 1.5 に移行し、少数の問題しか発生しないのを見てきました。そのうちの最大のものは、1 つの Swing マスクが無限のイベント処理ループに入り、1.4 未満でアプリがフリーズすることでした。

サーバー部分が問題を引き起こす可能性は低いですが、特に 1.3 と 1.4 の間で、Swing の内部でかなり大きな変更がありました。たとえば、フォーカス サブシステムが完全に書き直されました。

アプリが問題なく動作する可能性はまだありますが、徹底的なテストを行う必要があります。

于 2009-05-18T11:18:35.523 に答える
2

私が取り組んでいた小さなアプレットで 1.4.2 から 1.5 に移行したとき、多くのことが壊れました: 画面の更新がすべて不安定になったり、要素が移動したりしました。

Sun の JRE は、すべての下位互換性を維持しているわけではありません。アイテムが廃止されると、非常に短期間で完全になくなることがあります。

Sun のライブラリも使用して、「ストック」Java ですべてを作成しました。

また、純粋な Java で記述されたアプリケーションが、同じバージョンの JRE の 1 つまたは 2 つのプラットフォームで問題なく動作するのを見てきました (私が使用している製品は、Windows ではうまく動作し、Mac OS X でも問題なく動作します。 Linux ではまともですが、Solaris では失敗します - すべて同じ JRE を使用します)。

アプリケーションが非常に小さい場合を除き、バージョンの移動は簡単な手順ではありません。

于 2008-11-04T13:20:40.717 に答える
0

私の経験では、互換性はかなり高いです。現在のバージョンで実行できなかったアプリを1つだけ見つけました。何らかの理由で(ソースがないので、私はそれを掘り下げませんでした)、1つのアプリは1.4.2以外では実行されませんでした。私がこれまで扱ってきた他のすべて(それらのいくつかはかなり大きい)は、1.6まで問題なく到達しました。変更は必要ありません。

もちろんYMMVなので、試してみる必要があります...

于 2008-11-04T13:48:54.123 に答える