当社エンジニアによる書き下ろし技術レポート Close-Up IT

技術レポート 新着RSS(Atom)

この記事に関連するサービス
Webアプリケーションの設計・構築・保守
この記事に関連するお問い合わせ
お問い合わせ

第2章 :言語としてのJavaとオブジェクト指向

1言語としてのJavaとオブジェクト指向。Java言語とは

この章では、今後の説明に必要な最低限のJavaとオブジェクト指向の説明をします。あくまで今後の理解を助けるためのイントロダクションにすぎないので、詳細は専門の説明書をご参照ください。

【1】Java言語の歴史

Javaは、1995年Sun Microsystems社から、オブジェクト指向プログラミング言語として発表されました。当時はHotJavaというブラウザ上で、アニメや音声対応のプログラムとして動作する言語と認知されています。その後、Netscape社が自社ブラウザのJava対応を発表したことで、ブラウザ用言語としての地位を確立しました。この使用法では、現在もJavaアプレットとして利用されていますし、ブラウザ対応言語としてJavaScriptという派生した言語も生まれています。

続いて1996年にデータベースへのアクセスをサポートするJDBC (Java Database Connectivity)が発表されました。JDK1.0 (最初のJava Development Kit)の発表から約4年後の1998年12月、サーバーサイドJavaテクノロジーの多くの機能を包含したJava2がリリースされることによって、現在のエンタープライズシステムに適用可能なテクノロジーとして広く認識され、BtoCサイトやBtoBサイトあるいは、イントラネットアプリケーションに利用されるまでに至りました。

【2】Java言語の特徴

Java言語の主な特徴は次の5つです。

  • オブジェクト指向言語
  • 分散対応
    ネットワーク経由でプログラムを実行できる。
  • 安定性
    C++ (C言語のオブジェクト指向対応版)に比較して、コンパイル・実行時に厳しいエラーチェック (型のチェックやメモリの不正使用など)が実施される。
  • プラットフォーム非依存
    作成したプログラムはJVM (Java Virtual Machine)上で動作するので、ハードウェア・OSなどの環境に依存しない。
  • 言語レベルでのマルチスレッドサポート

この特徴のなかでは4番目の「プラットフォーム非依存」が、魅力的なソリューションとして企業ユーザに受け入れられているようです。

しかしなぜ、Javaのプラットフォーム非依存がそれほどもてはやされるのでしょうか。
COBOLだっていろいろなプラットフォーム--IBM・富士通・日立・NECの各汎用機やオフコン--で動作するのに・・・と疑問に思われるかもしれません。が、COBOLは、

  • 言語仕様が微妙に違う (COBOLといっても、各ベンダー固有の仕様を入れてしまっています)
  • LOADモジュール (実行形式)になったときに、そのハードウェア固有の命令を展開している

などの理由で、マルチプラットフォーム対応になりえていないのです。
筆者の経験上、純粋に共通な命令 (例えばCOBOL85のような、ISOが定義している命令)だけを使って、入出力も順編成ファイルだけでつくったCOBOLプログラムは、大方ソースコードレベルでのプラットフォーム非依存を実現できます。
しかし、これでは制約が大きすぎて、普通のソフトウェア開発には使えないでしょう。

一方Javaは、言語仕様にベンダー固有の仕様がはいりこまないように規制していますし、JVM (Java Virtual Machine)上で動作することによって、JVMがハードウェア固有の命令をラッピングしているので、プラットフォーム非依存が保たれているのです。
言語として優れているというよりは、プラットフォーム非依存を守るように、各ベンダーが約束ごとを守っているというのが、実際のところでしょう。

図2-1に、Javaアプレットを例にとって、プラットフォーム非依存を示します。

図2-1.Javaによるプラットフォーム非依存の例
図2-1.Javaによるプラットフォーム非依存の例

少し脇道にそれますが、ここで言語仕様に触れておきましょう。
JavaにもCOBOLやFortranなど汎用機でおなじみの高級言語と同様に、

  • 基本データ型 (整数、浮動小数、Boolean、文字)
  • 配列
  • 四則演算子・論理演算子
  • 制御構造
    • if、if - else
    • switch
    • for
    • while、do - while
    • return
    • continue

といった仕様が用意されています。
したがって、オブジェクト指向言語特有な表現を除き、プログラムの処理部だけを抜き出して比較すると、JavaもCOBOLもほとんど変わりません。
プログラムの構造や多少の表記方法などオブジェクト指向言語特有な部分を除けば、個別の処理をしている部分は、COBOLもJavaも基本的には同じということです (こういう言い方をするとJavaやオブジェクト指向をしっかり勉強してきた人にはひんしゅくを買うかもしれませんが)。

このページの先頭へ