時間が経つにつれて、クライアントは次のような理由でますますアップグレードする必要があります。
- 一部の新しいハードウェアまたはオペレーティング システム プラットフォームで Java 5 がサポートされていない。
- 新しい Java リリースに比べてパフォーマンスが低い。
- 新しい Java リリースに比べて、コーディングとテストのコストが高くなります。たとえば、古い API の「ぎこちない」、ストリームを使用できないなどの理由で
- ベンダー サポートのコストの増加1 :セキュリティ パッチを入手するにはサポートに料金を支払う必要があり、リリースが古いほど料金が高くなります (私はそう思います)。
- Java 開発者を Java 5 プロジェクトに従事させることの難しさ
- サードパーティの Java ライブラリは、Java 5 向けに開発およびサポートされなくなりました。
- コンプライアンスの問題; 例: https://stackoverflow.com/a/3434063/139985
- 等々。
しかし、クライアントがアップグレードを遅らせるほど、関係する Java バージョンのジャンプが大きくなり、より多くの作業 (および潜在的に苦痛) が伴います。
また、クライアントの遅延が長引けば長引くほど、ハードウェアのプロビジョニング、開発者のコスト、延期されたプロジェクトなどの累積コストが大きくなります。
たとえば、Java 1.1 から Java 1.2 へのアップグレードを 10 年間待ったとします。つまり、主要なデータ構造としてHashtable
を使用するアプリケーションの開発にさらに 10 年を費やしたことになります。Vector
最終的にアップグレードすると、Java 1.2 コレクションを使用して記述された場合よりも保守が困難な 10 年分の「レガシー」コードが追加されます。
しかし、肝心なのは、クライアントが古いバージョンの Java を使い続けることを主張する場合、クライアントの希望に沿う (そして余分なコストを確実に転嫁するようにする) か、契約関係を終了する方法を見つける必要があるということです。クライアントと。
1 - 生産終了/サービス終了の日付はベンダーによって異なりますが、知る限りすべての主要ベンダーは Java 5 を EOL にしています。実際、Oracle には EOL の Java 6 と Java 7 もあります。