torutkのブログ

ソフトウェア・エンジニアのブログ

Javaと標準化の強いつながり

せっかく作ったプログラムは、いろいろなコンピュータ上で動いて欲しいと思うのは必然です。でも、現実は作ったコンピュータと同じ種類のコンピュータ上でしか動かないのが大半です。それはプログラム(プログラミング言語とライブラリ)の標準化の問題です。
C/C++言語は、CPUの違い(たとえばエンディアン)をもろに受けてしまい、またOS固有のAPIを呼ばないと解決できない問題が多く(GUI、マルチスレッド、プロセス間通信など)、これらを使ってしまえば特定のコンピュータ上でしか使えません。

Javaは、仮想マシン仕様が決められているので、エンディアン問題などのCPUの事情に左右されません。また、OS固有のAPIも大半がJavaで標準APIとして仕様(インタフェース)が規定されているので、これら標準APIを使っている限り移植性は保たれます。また、Javaの標準APIは、どこか一社が勝手に変更できるものではなく、Javaの標準化団体であるJCPにおいて一定のプロセスを経る必要があります。

また、Javaは標準APIの対象をOSの機能だけでなく、ミドルウェアの機能についても範囲に含めています。これによって、ミドルウェアが違っても同じプログラムが動くことが可能となってきます。メッセージング・ミドルウェア(MOM)のように、もともとはベンダー独自な製品しかなかった分野にも、JMSというJava標準APIが策定され、結果ベンダー独自な製品もだんだんJMS準拠をうたうようになってきています。