第1章 動的なWebコンテンツ技術

1.1 動的なWebコンテンツ技術

 JSPが出現する前に利用されていた動的なWebコンテンツ技術には,クライアントで実行するものと,サーバで実行するものとがありました.クライアントで実行する技術は,Javaアプレット,プラグイン,ECMAScript(JavaScript,VBScript,JScript)などであり,サーバで実行する技術は, CGIアプリケーション,サーバサイドJavaScript,Javaサーブレット, ASP(Active Server Pages)などです.JSPについて説明する前に,これらの代表的なものについて整理しておきます.

(1)Javaアプレット

 Javaは,サン・マイクロシステムズによって開発されたWebで動作することを考慮したプログラミング言語です.Javaアプレット(Javaコンパイラによって生成されたプログラムモジュールで.classという拡張子を持つ)は,HTMLページによってブラウザに読み込まれ,ブラウザに組み込まれたJava VM(インタプリタ)によって実行されます.

 以下のように,HTMLファイルにappletタグで指定したアプレット(.classファイル)が,ダウンロードされ,paramタグによってデータを与えます(図1.1).

 

(図1.1)アプレットのしくみ

(約4Kバイト)

<applet code="Applet.class" width=350 height=220>

<param name="userStr" value="ユーザ名">

<param name="submit" value="OK">

</applet>

(2)JavaScriptとVBScript

 JavaScriptはネットスケープ,VBScriptはマイクロソフトによってそれぞれ提供されるブラウザで実行される(インタプリットされる)スクリプト言語です.Javaは.classというバイトコード(Javaコンパイラによって生成される中間言語)にいったん変換されたものを,ブラウザによってダウンロードするのに対して,JavaScriptはソースコードが直接ダウンロードされるため事前にコンパイルしておく必要がありません.

 これらのスクリプトは,HTMLファイルにSCRIPTタグで括って,プログラムコード(スクリプト)を記述します.正確にいうと,JavaScriptのソースコードはHTMLのコメントとして記述します.このため,プログラムコード自体がHTMLファイルを呼び出すたびにクライアントにダウンロードされることになります.以下にJavaScriptとVBScriptの例を示します.この二つは,しくみは似ていますが,定義されている関数が異なり,ブラウザのバージョンによって動作が異なることがあるので注意が必要です.これを解決するために,ECMAによって標準化されているJavaScriptをベースとするインターネット用のスクリプト言語のECMAScript(ECMA-262)があります.

JavaScriptの例

<SCRIPT LANGUAGE = "JavaScript">

<!--

Function AlertJS()

{

alert("Hello world.")

}

-->

</SCRIPT>

VBScriptの例

<SCRIPT LANGUAGE = "VBScript">

<!--

Sub AlertVBS()

MsgBox "Hello world."

End Sub

-->

</SCRIPT>

(3)CGIアプリケーション

 CGI(Common Gateway Interface)を利用したアプリケーションでは,Webサーバとブラウザがデータを交換します.http要求/応答ヘッダを付加して通信するプログラムといえます.CGIプログラム自体はサーバ上にあり,サーバ上で実行され,開発言語は特定しません.CGIプログラムのURLは,HTMLファイルのFORMタグのACTIONに指定します.Webサーバではブラウザからのリクエストを受け付け,QUERY_STRINGという変数を経由して値をやりとりします.CGIプログラムはサーバ上で個々に別プロセスとして起動します.

<FORM METHOD="GET" ACTION="CGIプログラムのURL")

<SELECT NAME="type">

<OPTION>Person

<OPTION>Address

</SELECT>

<INPUT TYPE="text" NAME="name">

<INPUT TYPE="submit" VALUE="Search">

</FORM>

(4)サーバサイドJavaScript

 Netscape Enterprise Server上でJavaScriptを実行するように拡張したものがサーバサイドJavaScriptです.クライアントからサーバにデータを送るには,FORMタグとINPUTタグを使います.たとえば,以下のように,サーバサイドJavaScriptのURL(Uniform Resource Locator)を,FORMタグのACTIONに指定します.実行するコードがサーバサイドJavaScriptであることを除いて,CGIと似ています(もちろん,サーバサイドJavaScriptが実行できるサーバが必要です).

<FORM NAME="MyHome" ACTION="サーバサイドJavaScriptのURL")

<INPUT TYPE="text" NAME="name">

<INPUT TYPE="submit" VALUE="Search">

</FORM>

(5)Javaサーブレット

 Javaサーブレットは,サン・マイクロシステムズが提供するJava Web Server上で動作するプログラムモジュール(サーブレット)です.JavaアプレットやJavaScriptと対照的にクライアント(ブラウザ)にプログラムをダウンロードせず,サーバサイドJavaScriptのようにサーバ側でプログラムを実行します.しかも,サーブレットはCGIとは異なり,プロセスではなく,スレッドとして起動されます.スレッドのほうがメモリ消費量が少なくてすむので,サーブレットではリソースを効率的に利用できます.

 サーブレットもCGIと同様にHTMLファイルのFORMタグでサーブレットがあるURLを指定するか,もしくはservletタグを使って指定して,サーブレットプログラムを起動します.以下の例に示すように,両者とも,Javaの.classファイル(バイトコード)をサーブレットエンジンが稼働しているサーバで実行します(図1.2).

 

(図1.2)サーブレットのしくみ

(約3Kバイト)

 

(a)FORMタグを使ったサーブレットの例

<FORM METHOD="GET" ACTION="サーブレットのURL")

<SELECT NAME="type">

<OPTION>Person

<OPTION>Address

</SELECT>

<INPUT TYPE="text" NAME="name">

<INPUT TYPE="submit" VALUE="Search">

</FORM>

(b)servletタグを使ったサーブレットの例

<servlet code="Servlet.class">

<param name="userStr" value="ユーザ名">

</servlet>

(6)ASP

 ASP(Active Server Pages)は,マイクロソフトが提供するソフトウェア・アーキテクチャで,MS IIS上で実行されます.ブラウザから拡張子.aspのファイルをリクエストすると,MS IISは,ASP.DLLを使用してASPコードの<%…%>で括られた部分を解釈し,結果をHTML文書に変換して返します.以下にVBScriptコードを使用したASPを示します.

ASPの例

<HTML>

<HEAD><TITLE>Example of ASP</TITLE></HEAD>

<BODY>

<%

strMsg = "Hello, World" & Time() & "on the server."

Response.Write strMsg

%>

</BODY>

</HTML>

 時刻が10:00:00の場合,このASPファイルが解釈されると,以下のHTMLページが動的に作成され,ブラウザに送信されます.

<HTML>

<HEAD><TITLE>Example f ASP</TITLE></HEAD>

<BODY>

Hello, World 10:00:00 on the server.

</BODY>

</HTML>

 以上,代表的な動的なWebコンテンツ技術について述べました.このように,JavaアプレットやJavaScriptによる方法は,クライアントにアプリケーション(アプレットやスクリプト)をそのつどダウンロードするため,転送による遅延が生じ,効率が悪くなります.まさにアプレットという名が示すように,アプレットは小さなプログラムに適しています.一方,CGI,サーバサイドJavaScript,サーブレットは,サーバ側で実行するためアプリケーションをダウンロードするための遅延はなく,サーバリソースに余裕があれば,実行性能には影響はありません.ただし,サーバで実行するプログラムは複雑になりやすいので,プログラムの開発効率や保守効率には,問題があります.ASPとJSPは後述するようにこの問題を解決します.

 では,ASPとJSPとの違いは何でしょう.JSPの詳細を説明する前に簡単に述べておきます.JSPはマイクロソフトのASP(Active Server Pages)に対抗する技術ととらえられがちですが,その実態は大きく異なります.確かにCGIアプリケーションのようにサーバサイドでアプリケーションを実行するWeb技術の一つという点では似ています.しかし,その背景にある技術は大きく異なります.大きな違いは,Webとの親和性が高いJava技術がベースになっており,EJB(Enterprise JavaBeans),さらにはCORBAといった,システムをスケールアップする技術が背景にそろっていることです.このような技術が背景にあることで,サーバ側にかかる負荷を減らすことができます.これが重要な相違点です.これら以外のASPとJSPの違いについては,表1.1を参照してください.

 

(表1.1)ASPとJSPの比較

(約7Kバイト)

 

 JSPはサーブレットのように,サーバ上のJava VMを利用してプログラムを実行するようになっているため,大きなプログラムを実行してもネットワーク負荷もクライアント側のCPU負荷もかかりません.反面,サーバ側の負荷が増えますが,この回避策として,前述のようにEJBやCORBAが利用できます.


Copyright 2000 

今野 睦/飯塚 富雄/杉野 博史/渡辺 康隆/佐藤 章

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.