本頁では、2017年7月時点のJavaEEプラットフォームに関して、サーバーサイドJavaの歴史的背景を学ぶことにより、 サーバーサイドJava及びJavaEEプラットフォームに関する用語を正しく理解し易くなることを目的とします。
本頁の読者は、[課題1]Javaの基本知識の解答を一読されている方を対象とします。
2017年7月時点のサーバーサイドJavaの開発手法を分類分けをすると上記図のような大分類になります。
本書では、オンプレミスにおけるサーバーサイドJavaを対象範囲として説明します。
上記図は、サーバサイドのJavaの3階層アーキテクチャの概念図です。
ハードウェアやミドルウェアの構成図を示したものでは無く、大きな役割を示した図としてご理解下さい。
細かい関係性は、Web多階層アーキテクチャの図もご参照下さい。
Java言語が誕生する1996年以前のオープン系システム開発は、企業内で閉ざされたネットワーク内で データーベース(主にOracle)をサーバーとして、クライアントの画面をVB(Microsoft Visual Basic),VC++(Microsoft Visual C++),Delphi等を利用して開発していました。
そのシステム形態は、クライアントサーバシステム(略称クラサバ又はC/S)と呼びます。
1995年頃のWebは、まだWebサーバであるIISやApacheHttpdServerとWebブラウザ(IE)がリリースされていない時代です。
Webを利用する環境は、WebサーバにNCSA HTTPdを
WebブラウザにNetScapeを利用していました。
Webは、主に静的コンテンツであるHTMLファイルを表示することや簡易の動的コンテンツをCGIで作成していた程度で、
今のような大規模な基幹システムや世界に公開するWebサービスのようなシステム形態とはかけ離れていました。
1996年1月23日にサン・マイクロシステムズ(現Oracle社に吸収される)がJDK1.0を正式リリースしました。
1.0のバージョンでは、国際化対応(日本語の利用)が対応されていなかったり、Webブラウザへの実装(Appletの実行)がされていない状態でした。
Java(JDK)がリリースされた当初は、プラットフォームに依存しない設計思想「Write once, run anywhere」と、 プログラムの開発に高額なGUIやプラットフォームを購入する必要性が無く、オープンに公開されたされた言語仕様は、一部の企業、メーカ、研究所、大学で高く評価されていました。
当時のJavaアプリケーション開発は、Eclipseのような統合開発環境(IDE)は無く、次のような手順を実行していました。
1997年2月19日にJDK1.1がリリースされ国際化対応、Jarコマンド、JavaBeans、JDBC、RMI、リフレクションなどの重要な機能がリリースされました。
JDK1.1時代のJavaの実行形態は、以下のようなものでした。(前手順6.7が異なります。)
デスクトップアプリケーションにしてもWebブラウザに表示したAppletでもこの当時のJavaは一時的に開発者からの評価を下げました。 当時のクライアントのPCスペックは、CPUが200~400Mz,メモリが良くて128MBというハードウェアリソースが貧弱な時代で、 Javaを動作させた瞬間にWebブラウザが固まる、JavaアプリケーションがOutOfMemmory(OOM)で中断することが続発していました。
不遇な状況にサン・マイクロシステムズは、動的なhtmlファイルを出力するサーバーサイドJavaの骨格であるServletAPIをJDKの開発と並行して実装してきました。
1999年12月12日ServletAPI2.2を梱包したJ2EE1.2(現JavaEE)を正式リリースしました。 同時期にJ2EE1.2の実装したApacheTomcat3.0(initial relase)系もリリースされました。オープンソースのWebアプリケーションサーバーの誕生です。
このWebアプリケーションサーバーTomcatの誕生により、以下の課題点が解消されました。
まさに「Write once, run anywhere」の設計指向が時流とマッチした瞬間です。この時期からサーバーサイドJavaが市場で急激に普及しだしました。