ホーム > InfoComアイ1997 >
InfoComアイ
1997年7月掲載

汎用プログラミング言語としてのJavaの現状と将来

 Sunマイクロシステムで開発されたオブジェクト指向のプログラミング言語JavaがInternet、WWWと関連して大きな関心を呼んでいる。Javaの現状と将来についての雑感を記す。

1.Javaブームのはじまり

 1991年Sunマイクロシステムで家電製品開発フロジェクトの一貫として開発された。WWWのブームに目をつけてappletが走るWWWブラウザー:HotJavaを開発して1995年5月のSunWorld EXPOで発表し、大きな関心を呼んだ。これがJavaのブームの始まりであった。これは僅か2年前だったことに注目したい。

2.アプリケーションとApplet

 Javaのプログラムはアプリケーションと言われる。マスコミではJava= applet = Internet専用の印象が強いが、これは正確ではない。appletと言うのはセキュリティーに特別の配慮を払った、WWWからダウンロードされブラウザー上で実行されるJavaアプリケーションのことである。
 事実、JDK (Java Development Kit)に添付されたクラスライブラリーのなかでもappletの比重は小さい。JDK1.0の例では総数約140のクラス・インターフェース中appletパッケージに属するものは僅かに4個である。

 applet利用が先行しているが、appletはJavaの広範なアプリケーションの一例である。例えばHotJavaはJavaで記述されている。HotJavaはブラウザー上で実行されるアプリケーション(=applet)ではなくブラウザーその物であるからJavaアプリケーションである。

3.誰の子孫か?

 C++を改良したのがJavaと言う意見には賛成できない。文法(プログラムの表記法)をC/C++から採用したのは事実である。C/C++を母体としているが、簡単を旨としC/C++の複雑な機構を除去したのが特徴である。大多数派を占めるC/C++プログラマーへの馴染みを重視した結果であろう。しかしデータは全てオブジェクト(僅かな例外はあるが)、メッセージ送信の徹底、メモリー管理法、virtual machineとbyte code、garbage collection機構の採用などなどオブジェクト指向言語/プログラミングの本質的な部分にははSmalltalkの影響が色濃く現れている。「Javaの顔はC、心はSmalltalk」と考えたい。

4.なぜ爆発的に普及したのか?

 Internetの徹底的な活用がその回答だろう。SunWorldの直後にJDKとHotJavaのα版がWWW上に公開された。引き続いてJDKβ版、JDK1.0、JDK1.1もWWWに無料公開され現在に至っている。JDKにはJavaコンパイラー、実行環境、クラスライブラリーとそのソースリストが完備しており、Javaアプリケーションの開発に必要なツール類は揃っていた。これがInternetのマニアとソフトウェアの専門家の目に触れ、非常に短期間にWWWにおけるappletの普及とJavaのプログラミング言語としての評価の確立を促進したと思われる。

 WWW上でのTutorialや言語仕様の公開もJavaの普及を促進している。On-line Tutorialは昨年紙の本としても出版されたが、800+ページの大部である。

5.Javaの今後

 今後のプログラミングはオブジェクト指向(Object-Oriented:OO)に移行すると言うのは専門家の一致した見解である。Objective C、Object Pascal、Eiffel、CLOS等多くのOO言語があるが、代表的なOO言語として知れれいるSmalltalk、C++とJavaを比較してみる。

 Smalltalk-80は1980年にZeroxのPARCで開発された言語+開発環境。1987年にはDigitalk社からIBM-PC用のSmalltalk/Vか発売され、普及促進に寄与した。優れた開発環境と全てがオブジェクトと言うOOの徹底が大きな特徴である。OOの本命と見られながらも、現在でも普及は限定的である。製品が高価なことと完全OOへのバラダイムシフトの困難さが原因であろう。概念・用語・文法・開発環境のどれをとっても革命で有ったためである。

 C++はCを改良しさらにOO機能を追加して1985年にAT&Tベル研究所から仕様が公式発表された。完全にCの上方互換が特徴である。廉価なコンパイラーがPCで利用可能になったのは1990年前後である。現在は優れた開発環境を備えたMicrosoft社のVisual C++が主力(個人利用には高価)。C++のOO機能は難解である(主たる原因はugly Cの上位互換と言われている)。C++のユーザの大多数はOO機能を十分に使用せず、単にbetter Cとして使っているとも言われている。手続き型言語で教育されたプログラマーのOOへのパラダイムシフトは一般に非常に困難と言われているが、C++の難解さがこれに拍車をかけていると思われる。

 これに対してJavaは好条件が揃っている。C/C++を母体としているが、簡単を旨としC/C++の複雑でbug-proneな機能を除去したのが特徴である。JavaではC++と異なり、OOの使用が強制される。但し、そのOO機能はC++よりシンプルで理解しやすい(WWWでのappletの普及はその証明)。高価なSmalltalkに比べて、JavaのJDK(Java Development Kit)は無料で入手できる。コマンドラインベースのJDKの不便さはVisual J++等で既に解決されている。

 Javaが単なるapplet作成言語ではなく、汎用プログラミング言語としてC/C++にとってかわる日もそう遠くはなかろう。その証拠として4月、サンフランシスコで開催されたJavaOneの発表データを引用する。但し、これはアメリカの話である。ソフトウェア中進国の日本ではJavaの汎用言語としての普及は5年以上先の話であろう。

付録1オブジェクト指向プログラミングとは
付録2:私のJava Links

SDN国際共同研究推進室長 松本 允介
e-mail:matsumoto@aic.icr.co.jp
▲このページのトップへ
InfoComニューズレター
Copyright© 情報通信総合研究所. 当サイト内に掲載されたすべての内容について、無断転載、複製、複写、盗用を禁じます。
InfoComニューズレターを書籍・雑誌等でご紹介いただく場合は、あらかじめ編集室へご連絡ください。