実稼働環境で実行するJavaバージョンに関する考慮事項


14

技術の最先端を走る人もいます-何かが更新される日を更新します。本番環境では、これは適切ではありません。

現在の(Java 7)バージョンの生産準備が整っているかどうかを調査すると、もはや正しくない可能性のある大量の古い資料が作成されます(この記事の執筆時点では、Java 7は1年半にわたって公開されていますが、かなり長いようです) 。

実稼働環境を新しいバージョンのJavaにアップグレードすることが適切かどうかを判断するには、どのような考慮事項が必要ですか?


たとえそうであったとしても、そのアプリケーションで使用されているサードパーティのライブラリ/プラグイン(もしあれば)は、Java 7でも問題ない(リスクの高いビジネス)必要があります。
アリン

2
はい。私が遭遇した唯一の問題は、Red Hat Enterprise Linux 4にJava 7をインストールできなかったということですが、そのOSは廃止されました。私はこれを約6か月間、支障なく他のあらゆる場所で運用しています。
グレンペターソン

@arin:Javaではなく、そうでもありません。それは途方もなく下方互換性がある傾向があります。
マイケルボルグワード

@MichaelBorgwardtは理論的にはあなたに同意しますが、テスト環境では、サードパーティのライブラリが、小さなバージョンのアップグレードに更新した後でも、テストコードで不規則な動作/クラッシュを引き起こすことがわかりました。
アリン

@arin:確かに、それは起こり得ます。しかし、私の経験では、Javaの更新を恐れる理由は、他のほとんどすべて(特に自分のコード)を変更するよりも少ないほどまれです。
マイケルボルグワード

回答:


11

最初に尋ねる質問は、「マシンでJavaのバージョンがサポートされていますか?」です。JREの更新は1つのことですが、新しいバージョンのJavaの実行を基盤とするOSがサポートされていない可能性があります(サポートされている認定やサポート契約など、多くのエンタープライズ環境が必要です)。

多くのJavaプロダクション環境は、実際にはアプリケーションサーバー上で実行されています。これは次の考慮事項です。 Java EE App Serverのウィキペディアの比較は、サポートされているJava EEのバージョンを示しています。これは、OracleのJavaEE互換性の概要でさらに見ることができますJBoss Enterprise Application Platform 6のテスト済みの設定は、Java SE 6.0アップデート6u30に対するものです。Java SE 6.0 update 6u30は、JBoss Application Server 7.1.0 Finalのテスト済み設定でもあります。これらはJava 7で動作する可能性がありますが、テストされた構成ではありません。

アプリケーションサーバーを拡張すると、事後のデバッグに使用されるライブコード分析ツールがあります。 Omniscient Debugger (参照)とDynatraceは、この2つの例です。これらのアプリケーションは、実行中のjavaのライブバイトコードをインストルメント(変更)して、レポートを返します。これらのアプリケーションはバイトコードを変更することで機能するため、バイトコードが機能しない方法(新しいJREなど)で変更された場合、機能しません。

次はフレームワークです。この一例は、それを使用するjavaおよびSpringに付属するJAXBです。Java 7に変更すると、一部のフレームワークと互換性のないコードを生成するJAXBが更新されました(更新する必要があり、依存関係を更新する必要があります...)。

ビルドツールはリストの次にあります。ビルド環境が適切なバージョンのJavaを使用していることを確認する必要があります。Java 7用のコードを記述しても、MavenまたはAntが使用するバージョンを更新しないと、問題が発生します。ビルドツール自体が特定のプラグインを持つ1つのバージョンに強く結び付けられている場合があります。

テストツール。PMD、findbugs、checkstyleなどは、新しいバージョンのJavaの新しい構造を認識しない場合があります。これらは、文字列スイッチステートメントまたは複合キャッチと非常に混同される可能性があります。コードカバレッジなどのインストルメンテーションに入るツールは、新しいJVMでは機能しない場合があります。Java 7のコンテキストでは、CoberturaとEmmaは新しいJREに更新されていません(これらのアプリケーションはバイトコードを変更して、実行されるコードと実行されないコードを確認します)(jdk7のオープンソースコードカバレッジライブラリを参照)。これには、ビルドスクリプトを変更して、あるスクリプトから別のスクリプトに切り替える必要があります。

次に、IDEがあります。IDEを、言語の新しい構造を認識するバージョンに更新する必要があります。Eclipse によるJava 7のサポート発表は、これらの問題を示しています。

最後に、確かに重要なのは開発者です。新しいコードを記述し、コードを再構築する方法を認識するのは開発者の責任です。Java 1.4から1.5に移行すると、テンプレートと注釈が導入され、開発者が利用可能な新しい構造の考え方を理解するのに時間がかかりました。同様に、コレクションは1.2に作り直され、開発者はHashTableとVectorを使用しなくなりました。バージョンの更新には、新しい言語構造のトレーニングがある程度必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.