Javaの開発環境やJava VMの実装は,サンが提供している。しかしJava仮想マシン仕様(Java Virtual Machine Specification)を満たせば、独自のJava VMを作ることは可能である。実際、ベンダー各社は独自のJava VMを開発・提供している。サンからソースライセンスを受けて開発している場合もあれば、独自に開発している場合もある。各社がJava VMの開発を行うメリットとしては、ベンダー独自のサポート機能やアプリケーションサーバと連携した特別な機能を追加できることが挙げられる。
しかし独自に作りこんだ機能により、Java VMが互換性を失ってしまうことも考えられる。各社が開発したJava VMが本当にJavaの仕様を満たしているかをチェックするのが、Javaの互換性検証ソフトウェアであるJCK(Java Compatibility Kit)である。このJCKを利用するにはサンと商用のライセンスを結ぶ必要もある。この互換性検証テストは、JavaSEの全APIにおよぶ。
分類 | 内容 |
---|---|
基本API | I/Oやネットワーク |
新規API | JMXやスクリプト言語サポートなど |
デスクトップ向けAPI | サウンド |
エンタプライズ向けAPI | CORBAやRMI |
GUI | AWT、SwingやJava2D |
これらには合わせて8万件以上のテストケースが含まれている。この互換性テストを合格したJava VMだけが,Javaを名乗ることができる。
JDKのソースコード自体は、現在JavaオープンソースコミュニティのOpenJDKで公開されている。OpenJDKはJDK開発のオープンソースプロジェクトである。OpenJDK用には「OpenJDK Community Technology Compatibility Kit(TCK)License」が定められており、OpenJDKのプロジェクト関係者は、JCKを利用して互換性を確認できる。各ベンダー、オープンソース製品でのJava VMは存在するが、互換性はJCKによって保証されている。
商用製品に保守サポート期間があるように、Java VMにもバージョンごとのサポート期間がある。これはベンダー各社にとどまらず、オープンソースの場合にも当てはまる。サポートが終了すると、そのバージョンのJava VMではバグ修正やセキュリティ問題への対応も行われなくなる。これが、特にミッションクリティカルなシステムで問題になるのだ。
サポート期間はベンダー各社によって異なる。オープンソース製品のJava VMは始まったばかりであるが、オープンソースの場合でも、サポートが切れたプラットフォームには、新しいバージョンで修正されたバグの反映は期待できないのが現状である。そのため、長期間にわたって安定したシステム運用を担うミッションクリティカルなシステムの場合、サポート期間が重要なシステム設計上のポイントとなる。
例えばサンが提供するJDKの場合、サポート終了(EOL:End of Life)移行期間を経過した後に、サービス終了(EOSL:End of Service Life)となる。2009年4月現在、J2SE5.0は2008年4月8日から2009年10月30日までがEOL移行期間となっている。サポート期間が長い例としては、日立製作所のCosminexusが10年サポートを謳っている。
最終的には次バージョンのJava VMに移行することも必要であるが、当然コストもかかり、移行の際にはJavaのバージョン間での非互換性に該当しないかを調べる必要もある。システム設計において開発の生産性だけではなく、開発と実行環境を含めたJava VMのサポート期間や互換性について検証することが、ITアーキテクトに求められる視点である。
Copyright © ITmedia, Inc. All Rights Reserved.