時代背景
コンピュータの誕生については諸説あります。
というのは機械式および電気式の計算機械は19世紀からありましたし、1940年代には暗号解読や弾道計算専用の電子機械式の計算機がいくつか作られていました。
フォン・ノイマンが提唱したプログラム内蔵方式(当初のENIACには実装されていない)と逐次処理方式をコンピュータの要件とするなら、やはり1946年に米国で開発されたENIACが最初の汎用コンピュータでしょう。ENIACは当初陸軍の資金で弾道計算用に開発されましたが、水爆開発でも使われたといわれています。
ENIACは当時の電気機械式計算機に比べ約1000倍の計算能力があったといわれていますが、プログラミングは大変だったようです。
ENIACはループや分岐、サブルーチンなどが可能で紙上でプログラムが完成しても、プログラムをENIACに設定するため、搭載されている乗算器や除算器の組み合わせをスイッチやケーブルの配線を数日かけて変更しなければいけませんでした。
数学の専門家が何日もかかったプログラミングも、1948年プログラム内蔵方式が実装された改良版ENIACによって数時間に短縮されます。しかし、ENIACの設計は特殊でその後他のコンピュータでは採用されませんでした。
1950年代に入ると軍用目的でない、商用コンピューターがUNIVAC(51年)、IBM(52年)から発表されます。
当時、プログラム言語はCPUが直接実行できる二進数を並べた機械語か、機械語をニーモニックと呼ぶ英単語の省略文字で表し命令語とするアセンブラ言語しかありませんでした。しかし、商用コンピュータの拡販のためにもより一般的な数式表現や英語表現で開発できるプログラム言語の必要性が高まり、
が発表され、人間が理解しやすい表現でプログラムが記述できるようになり、プログラム開発を専門に行う技術者によりプログラムが量産されるようになり、銀行や商社、大手製造企業への本格的な普及が始まりました。
また、1950年代半ばにはコンピュータの素子が真空管からトランジスタに変わり、トランジスタの小型、省電力、小発熱性からコンピュータ自体の小型化・低価格化が進みます。
1960年代に入るとハードウェアの技術革新は周辺装置にもおよび、磁気ディスク装置や高速データー転送バスなどによりコンピュータの利用分野はますます広がり、1964年にはDECが16,000ドルでミニコンピュータを販売、それまで利用が大企業に限られていたコンピュータの一般企業への普及が始まります。それに合わせてソフトウェアに対する需要は増大、1960年代後半には深刻なソフトウェアエンジニア不足が予測され「ソフトウェア危機」が叫ばれました。
この状況の中
が始まりました。
プログラムはどうあるべきかという研究の結果、1969年エドガー・ダイクストラが「構造化プログラミング」を提唱。正しいプログラムを作るためには、プログラムは上手く構造化されなければならないとして、構造化の条件を提示しました。
移植性の高いプログラム言語に対する需要は、ハードウェア技術の革新により多くのメーカーがコンピュータを提供するようになったため、研究所などでは異なるOS、異なるCPUアーキテクチャー間でのソフトウェアの共用のため、ソースプログラム互換のコンパイラーを前提としたC言語が、1972年At&Tベル研究所で開発されました。
そして、データの型に基づいたいくつもの実体(インスタンス)を上手く管理する仕組みとしてクラスとその継承といった考慮からオブジェクト指向概念が生まれ、その概念を実装したプログラム言語が次々に発表されました。
Javaもこれらオブジェクト指向プログラミング言語のひとつとしてサン・マイクロシステムズにより開発されましたが、その開発経緯は他のプログラム言語とは多少異なっています。そもそも、サン・マイクロシステムズは2010年にオラクルにより吸収合併されるまでPCの上位に位置づけられていたワークステーションメーカーでした。サンの名前自体Stanford University Networkの頭文字であり、スタンフォード大学の校内ネットワーク用のワークステーション開発から1982年に創業し、1985年にはRISCチップまで自社開発していました。
そのサンが1990年代に入ると今後の有力市場は家電製品だと考え、その処理系を開発できるプログラム言語の開発に着手し、1995年にJavaの名前で発表しました。
家電製品向けの新しいプログラム言語を考えると、情報処理の専門家だけでなく一般技術者でも安全で保守性の高いプログラムが開発出来なければいけません。そこで、
など、生産性向上のためのオブジェクト指向プログラミングだけでない工夫がJavaには盛り込まれました。
当初の家電製品市場への進出は時期尚早だったのか成功しませんでしたが、紆余曲折の末1990年台後半に始まるインターネットの急成長に乗り、サーバーサイドのアプリケーション開発で利用さえるようになり、近年では組み込みシステムや携帯機器、企業の基幹情報システムを担う大規模なデータベース、サーバ、スーパーコンピュータアプリケーションまで、多くの分野で使用されています。