WebSphere 6.1(Java 1.5)を搭載したサーバーにデプロイする場合、ビルドボックスでIBMのJDKを使用する必要がありますか?または、SunのJDKは同じバイナリにコンパイルされますか?
IBMを使用する必要がある場合、Windows x64バージョンはどこで入手できますか?
WebSphere 6.1(Java 1.5)を搭載したサーバーにデプロイする場合、ビルドボックスでIBMのJDKを使用する必要がありますか?または、SunのJDKは同じバイナリにコンパイルされますか?
IBMを使用する必要がある場合、Windows x64バージョンはどこで入手できますか?
私は可能な限り開発を本番環境に近づけるように努めます。Ibm と Sun の JDK はどちらも SDK 認定を確実に満たしていますが、決して同一ではありません。それらのインストルメンテーションとメモリ管理は、少なくともわずかに異なります。他に何もないとしても、JDK のバグは異なります。コードは、あるシナリオと別のシナリオでのみつまずく可能性があります。また、それはおそらく午前 4 時、満月のとき、特に会社にいるときにのみ発生します。
IBM の jdk をどこで入手できるかはわかりませんが、会社で websphere のライセンスを取得している場合は、IBM に連絡してその JDK へのリンクを取得する必要があります。
幸運を祈ります。可能な限り違いを最小限に抑えるようにしてください。
違いはありません。おそらく完全に同じバイナリではありませんが、100% 互換性があります。とにかくlog4jやhibernateなどの外部ライブラリを使用していると思いますが、それらはIBM JDKを使用して構築されていません。
ただし、JRE には違いがあります。たとえば、リフレクションを使用してクラスのメソッドまたはフィールドをリストしたとき、IBM JRE は Sun のものとは異なる順序でそれらを提供していたことを覚えています。
アプリケーションのデプロイ時に使用されるものと同じJDKをビルドに使用します(それを制御できる場合)。
コンパイラが異なれば、バイナリも異なる可能性がありますが、意味的には同一である必要があります。IBM が独自のコンパイラを作成したかどうかはわかりません。JRockit JDK は実際には Sun コンパイラを使用しますが、JVM は異なります。したがって、JRockit のバイナリは同一です。
アプリケーションが実行時にさまざまな JDK で使用される場合でも、ほとんどの場合、展開時に使用されると思われるものでビルドし、さまざまな JDK で実行時テストを行います。
IBM JDK には J9 VM が同梱されており、SUN JDK は Hotspot VM で実行され、機能するアルゴリズムが異なります。SUN JDK をデプロイしてチューニングし、本番環境で WAS に IBM JDK を使用している場合、アプリケーションは同じように動作しない可能性があります。ベンダーに確認してチケットを開き、どうなるか教えてください。
java.* および javax.* パッケージ外のクラスを参照していない限り、任意の JDK でコンパイルしても問題は発生しません (そうすべきではありません)。もちろん、特定のベンダーの JDK と追跡が困難な非常に奇妙なランタイムエラーを引き起こす可能性のある仕様ですが、私の経験ではこれまで見たことがありません。
ターゲット JRE を使用してテスト スイートを実行することをお勧めします。ランタイムの動作は、コンパイルのセマンティクスよりもベンダー間で異なることが多いためです。
JDK は、コードをマシン コードに直接コンパイルするのではなく、バイトコードにコンパイルします。さまざまなベンダーのコンパイラーが、ベンダー間で互換性のあるコードを生成することが期待されています。たとえば、IBM の JDK1.5 用コンパイラは、SUN の JDK 1.5 以降で問題なく動作するコードを生成します。
別の問題は、コンパイラがバイトコードを最適化する方法です。一部のコンパイラが他のコンパイラよりも優れた最適化を実行しているという情報はありません。最適化の大部分は、JVM によって実行時に実行されます (たとえば、JIT (ジャストインタイム) または AOT (事前) 戦略)。
WebSphereを長い間使用してきたことは、JDKのバージョンが非常に重要です。WebSphere6.1にはIBMJDK1.5(または5)が付属しています。WebSphereにパッチを適用すると、JDKにも同等のパッチが適用されます。別のバージョンのJDK(別のベンダーでも)で動作する可能性がありますが、問題が発生した場合にIBMから多くのサポートが得られるとは思えません。
64ビットJVMが必要な場合は、おそらく64ビットビルドがあることをお勧めしますが、Windowsについて具体的にコメントすることはできませんが、AIXとLinuxの両方に64ビットWebSphere6.1ビルドがあると言えます。
最良の答えは、ベンダーに確認して、ベンダーが構成をサポートするかどうかを確認することです。やりたくないのは、それを機能させてから、ライブで問題が発生し、サポートを呼び出して、サポートされていない環境があることを確認することです。
それらは同じバイトコード仕様にコンパイルする必要がありますが、異なるバイトコードをコンパイルする場合があります (異なる C コンパイラが異なるマシン コードを生成するのと同じように)。結果のコードの実行に問題はないと思います.MacでJava 1.4をコンパイルし、PocketPCで実行されているIBMのJ9に問題なく展開しました(これは、J9がJava 5バイトコードを処理できるようになる前でした)。 .
とにかく、あなたのコンパイル プラットフォームを readme ファイルの箇条書きにして、クライアントが問題があるかどうかを確認できるようにします。
または、ANT を使用してビルドおよびデプロイし、ANT で Sun の JDK を使用することもできます。