質問

iサーバーがあります-Java 1.3で実行されるクライアントアプリケーション。私はJava 1.6に段階的に変更したい、つまり最初の数人のクライアントを意味し、残りのクライアントと最後にサーバーよりも... 私は一緒に来る可能性のあるいくつかの一般的な問題に私を向けることができますか?

役に立ちましたか?

解決

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

Java 1.6と以前のバージョンとの後方互換性について説明しているドキュメントは、こちらです。 。このドキュメントは、 Java 1.5 および Java 1.4 も同様です。おそらく、このドキュメントを読んで、潜在的な落とし穴について学びたいと思うでしょう。

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

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

他のヒント

頭の外で、フィールドとローカル変数で enum assert の名前を探します...これらの単語は、Java 1.4および5でキーワードになりました。 Java 6コンパイラは、それらを検出するとコンパイルエラーとしてマークします。

ユバル= 8-)

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

1.4.2の最後のドキュメントには、JDK 1.0に戻る互換性ノートへのリンクがあります。

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

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

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

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

SunのJREは、すべての下位互換性を維持していません。アイテムが非推奨になった場合、非常に短期間で完全に消えることがあります。

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

また、同じバージョンのJREの1つまたは2つのプラットフォームで正常に動作するPure Javaで記述されたいくつかのアプリケーションが、同じバージョンの他のアプリケーションで失敗することを確認しましたOS X、Linuxでは問題ありませんが、Solarisでは失敗します-すべて同じJREを使用)。

アプリケーションのサイズが本当に小さい場合を除き、バージョンの移動は簡単なステップではありません。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top