Java 5 のランタイム環境で Java 6 の Hotspot を実行する方法はありますか? クラスの古い実装の動作に依存するコードがいくつかありますが、より新しい JVM を使用したいと考えています。コードを Java 6 (またはおそらく 7!) に移行する計画はありますが、現時点では、JVM に問題があるかどうかを確認することに関心があります。
3 に答える
以下のいずれかで良いと思います。
アプリケーション コードを変更して、Java 6 の XSLT バグを回避できるかどうかを調べてください。
Java 6 の XSLT バグに対する Sun/Oracle がサポートするパッチがあるかどうかを調べます。
Java 5 JRE を使用します。
最新の Java 6 JRE を試して、XSLT バグが修正されているかどうかを確認してください。
最新の Java 7 JRE を試して、XSLT バグが修正されているかどうかを確認してください。
Java 6 JVM でJava 5 を使用する際の問題は、 JVM のコア クラスとネイティブ コード実装のrt.jar
間に隠れた依存関係があることです。rt.jar
つまりjava
、バイナリおよび関連するネイティブ ライブラリです。これらは文書化されておらず、(IMO) それらのいくつかが Java 5 と Java 6 の間で変更された可能性が非常に高いです。
2 つの間にネイティブな非互換性がある場合は、必要な特定のクラスを取得して、rt.jar で置き換えるか、extdir でオーバーライドする必要があるようです。
そのように Java をハッキングするのは得策ではありません。少なくとも、アプリケーションのプラットフォームに最新の Java 6 JRE をダウンロードしてインストールするたびにハッカーを繰り返す必要があります。(そして、このアプリケーションを他の人に提供している場合、彼らにも問題があります。)
私のオリジナルには、代わりに使用できる 2 つの代替手段がまだあります。アプリケーションを修正して問題を回避し、Java 5 を使用します。
このバグは、Java 7 の XSLT と最新の Xalan に存在します。
これがバグではない可能性を考慮しましたか? おそらく、以前のバグの修正または関連する仕様の範囲内で許可されている動作であり、以前の (バグのある?) 動作に依存しているというコードの誤りです。
Java / Xalan バグ データベースに、このバグに関するバグ レポートはありますか? メンテナーは何と言っていますか?彼らは回避策を提供していますか?(これらの質問は尋ねられる必要があります...)
ほとんどの場合下位互換性があり、一部の 1.4.x コードを 1.6 に移行しただけで (再コンパイルの有無にかかわらず、したがってバイナリとソース)、それは機能しました。
常にいくつかの非互換性があるため、すべての主要な Java バージョンのリリースを確認することをお勧めします。Java 1.6 と 1.5 の互換性を確認し、古いバージョンのソース/バイナリを移行する場合は、すべての主要な Java バージョンのページをチェックして、非互換性に該当するかどうかを確認してください。
編集: あなたの質問では、Hotspot 1.6 (JVM) を JRE 1.5 で実行したいと書いていますか? JRE には JVM が含まれていることをご存知ですか。
あなたの質問を正しく理解しているかどうかはわかりませんが、コードを Java 5 コンパイラでコンパイルした場合は、問題なく Java 6 vm で実行できます。