質問

WebSphere 6.1 (Java 1.5) を使用してサーバーにデプロイする場合、ビルド ボックスで IBM の JDK を使用する必要がありますか?それとも、Sun の JDK は同じバイナリにコンパイルされますか?

IBM のものを使用する必要がある場合、Windows x64 バージョンはどこで入手できますか?

役に立ちましたか?

解決

私はできる限り開発を本番環境に近づけるように努めたいと考えています。IBM と Sun の JDK は確かにどちらも SDK 認定を満たしていますが、決して同一ではありません。それらのインストルメンテーションとメモリ管理は少なくともわずかに異なります。少なくとも、JDK のバグは異なります。コードは 1 つのシナリオでのみ躓く可能性があります。別の。また、それはおそらく午前 4 時、満月のとき、特に会社が終わったときにのみ発生するでしょう。

IBM の JDK をどこで入手できるかはわかりませんが、会社で WebSphere のライセンスを持っている場合は、IBM に連絡してその JDK へのリンクを入手してください。

頑張ってください。可能な限り差異を最小限に抑えるよう常に努めてください。

他のヒント

違いはありません。おそらくまったく同じバイナリではありませんが、100% 互換性があります。log4j や Hibernate などの外部ライブラリを使用していると思いますが、それらは IBM JDK を使用して構築されていません。

ただし、JRE には違いがあります。たとえば、リフレクションを使用してクラスのメソッドやフィールドをリストしたとき、IBM JRE では Sun とは異なる順序でそれらが提供されていたことを覚えています。

アプリケーションのデプロイ時に使用されるのと同じ JDK をビルドに使用します (それを制御できる場合)。

コンパイラが異なるとバイナリも異なる場合がありますが、意味的には同一である必要があります。IBM が独自のコンパイラを作成したかどうかはわかりません。JRockit JDK は実際には Sun コンパイラを使用しますが、JVM は異なります。したがって、JRockit ではバイナリは同一です。

アプリケーションが実行時に異なる JDK で使用される場合でも、デプロイメント時にほとんどの場合使用されると思われる JDK でビルドし、異なる JDK で実行時テストを実行します。

IBM JDK は J9 VM に同梱されており、SUN JDK は機能するアルゴリズムが異なる Hotspot VM 上で実行されます。SUN JDK をデプロイして調整し、本番環境で IBM JDK for WAS を使用している場合、アプリケーションは同じように動作しない可能性があります。ベンダーに確認してチケットをオープンし、経過をお知らせください。

java.* および javax.* パッケージの外部のクラスを参照している場合を除き、どの JDK でコンパイルしても問題は発生しません (そうすべきではありません)。 もちろん、特定のベンダーの JDK とその JDK の間に不一致が存在する可能性は常にあります。この仕様により、追跡が難しい非常に奇妙な実行時エラーが発生する可能性がありますが、私の経験ではこれまでにこれを見たことがありません。

実行時の動作はコンパイル セマンティクスよりもベンダー間で異なることが多いため、ターゲット JRE を使用してテスト スイートを実行することをお勧めします。

JDK はコードをコンパイルしています。 バイトコード そして直接ではない マシンコード. 。異なるベンダーのコンパイラーがベンダー間互換性のあるコードを生成することが期待されます。たとえば、IBM の JDK1.5 用コンパイラは、SUN の JDK 1.5 以降で問題なく動作するコードを生成します。

もう 1 つの問題は、コンパイラがバイトコードを最適化する方法です。一部のコンパイラが他のコンパイラよりも優れた最適化を実行しているという情報はありません。最適化の大部分は、実行時に JVM によって実行されます (たとえば、JIT (ジャストインタイム) または AOT (事前) 戦略)。

WebSphere を長年使用してきたので、JDK のバージョンは非常に重要です。WebSphere 6.1 には、IBM JDK 1.5 (または 5) が同梱されています。WebSphere にパッチを適用すると、JDK にも同等のパッチが適用されます。別のバージョンの JDK (別のベンダーでも) で動作する可能性はありますが、何か問題が発生した場合に IBM から多くのサポートが得られるとは思えません。

64 ビット JVM が必要な場合は、おそらく 64 ビット ビルドがあることをお勧めします。Windows について具体的にコメントすることはできませんが、AIX と Linux の両方に 64 ビット WebSphere 6.1 ビルドがあることは言えます。

最良の答えは、ベンダーに問い合わせて、構成がサポートされるかどうかを確認することです。望ましくないのは、動作させた後にライブで問題が発生し、サポートに電話して、サポートされていない環境であることが判明することです。

これらは同じバイトコード仕様にコンパイルする必要がありますが、異なるバイトコードをコンパイルすることもできます (異なる C コンパイラーが異なるマシン コードを生成するのと同じように)。結果のコードを実行するのに問題はないと思います。私は Mac 上で Java 1.4 をコンパイルし、PocketPC 上で実行されている IBM の J9 にデプロイしましたが、問題はありませんでした (これは、J9 が Java 5 バイトコードを処理できるようになる前のことでした) 。

いずれにしても、コンパイル プラットフォームを Readme ファイルに箇条書きにして、クライアントが問題があるかどうかを確認できるようにしたいと思います。

あるいは、ANT を使用してビルドおよびデプロイし、Sun の JDK を ANT とともに使用することもできます。

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