移植性・互換性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/24 15:35 UTC 版)
「Javaに対する批判」の記事における「移植性・互換性」の解説
"Write once, run anywhere"(WORA、一度書けばどこでも動く)という言葉があるとおり、Javaの目標の一つにプラットフォーム非依存があげられる。JavaコンパイラはJava仮想マシン用の中間言語(Javaバイトコード)を生成する。コンパイルされたJavaのプログラムは、Java仮想マシンを実行環境として動作する。この仮想マシンがハードウェア間の差異を吸収することで、プラットフォーム非依存を実現している。ただし、現時点では一部にプラットフォーム依存の部分があり、完全なプラットフォーム非依存ではない。 また、マルチプラットフォームにするということは、一部のプラットフォームにしかない独自の機能はJavaから使えないことを意味する。例えばWindows用のマルチメディアAPIであるDirectXや、3DグラフィックスAPIであるDirect3DはJavaから直接呼び出すことはできない。そのため、橋渡しをするための拡張APIが提供されている。 またJavaではバージョン間の前方互換性・後方互換性の問題が議論の対象になっている。Javaではバージョン間の互換性をある程度の水準まで達成している。しかし、バージョンの異なる実行環境の取り扱いには課題が残っている。例えばJ2SE 1.4実行環境用に書かれたプログラムは、実行環境にJ2SE 1.3を想定すると明示的に指定してコンパイルしなければJ2SE 1.3実行環境では動かず、利用するライブラリがJ2SE 1.4以降から追加されたものである場合にはJ2SE 1.3実行環境での実行を諦めなければならない。J2SE 1.3に対する後方互換性は、2世代先であるJ2SE 5.0まで保証されている。J2SE 1.3以降のJavaプログラムでは前方互換性は保証されないが、Java実行環境 (JRE) の自動アップデート機能によって仮想マシンを最新バージョンにアップデートすれば解決できる。JDK 1.1、J2SE 1.2 時代のJavaプログラムは、現在[いつ?]となっては古いため、後方互換性問題に引っかかる可能性がある。例えば、古いプログラムが新しいバージョンのJDK/JREで廃止されたAPIを使用している場合に問題となる。その場合は、そのJavaプログラム開発者に最新版のJavaコンパイラでもコンパイルが通るように修正してもらうしかない。
※この「移植性・互換性」の解説は、「Javaに対する批判」の解説の一部です。
「移植性・互換性」を含む「Javaに対する批判」の記事については、「Javaに対する批判」の概要を参照ください。
- 移植性・互換性のページへのリンク