技術の最先端を走る人もいます-何かが更新される日を更新します。本番環境では、これは適切ではありません。
現在の(Java 7)バージョンの生産準備が整っているかどうかを調査すると、もはや正しくない可能性のある大量の古い資料が作成されます(この記事の執筆時点では、Java 7は1年半にわたって公開されていますが、かなり長いようです) 。
実稼働環境を新しいバージョンのJavaにアップグレードすることが適切かどうかを判断するには、どのような考慮事項が必要ですか?
技術の最先端を走る人もいます-何かが更新される日を更新します。本番環境では、これは適切ではありません。
現在の(Java 7)バージョンの生産準備が整っているかどうかを調査すると、もはや正しくない可能性のある大量の古い資料が作成されます(この記事の執筆時点では、Java 7は1年半にわたって公開されていますが、かなり長いようです) 。
実稼働環境を新しいバージョンのJavaにアップグレードすることが適切かどうかを判断するには、どのような考慮事項が必要ですか?
回答:
最初に尋ねる質問は、「マシンで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を使用しなくなりました。バージョンの更新には、新しい言語構造のトレーニングがある程度必要です。