CGI だの SSI だの JavaScript だの ASP だのいろいろあるけど、それぞれどういう違いがあるのか、Web で用いられるプログラミング技術全般についてまとめてみました。
それぞれの技術を表にすると次のようになります。
技術 | 動作 | 言語 | 形式 | 開発 |
---|---|---|---|---|
JavaScript | C(S) | JavaScript系 | P | Netscape |
JScript | C(S) | JavaScript系 | P | Microsoft |
VBScript | C(S) | VisualBasic系 | P | Microsoft |
PerlScript | C | Perl | P | ActiveState |
DHTML | C | JavaScript系等 | P | Microsoft Netscape |
CGI | S | 非依存 | S | NCSA |
SSI | S | 非依存 | P | NCSA |
PHP | S | PHP | P | ??? |
ASP | S | VisualBasic系 | P | Microsoft |
JSP | S | Java | P | Sun |
Servlet | S | Java | S | Sun |
JavaScript に関する詳細は「とほほの JavaScript 入門」を参照してください。
JavaScript(=Client Side JavaScript)を動かすには、Internet Explorer 3.0 以降、Netscape Navigator 2.0 以降のブラウザがあればOKです。Server Side JavaScript を動作させるには、Netscape Web Server(現在は iPlanet Web Server)など、Server Side JavaScript をサポートしている Web サーバーが必要です。
下記のコードを test.htm に保存して、IEなどのブラウザで表示してください。
<html> <head><title>JavaScript Sample</title></head> <body> <script> document.write("Hello World!!"); </script> </body> </html>
下記のコードを test.htm に保存して、Server Side JavaScript をサポートした Web サーバー経由で読み出してください。
<html> <head><title>JavaScript Sample</title></head> <body> <server> write("Hello World!!"); </server> </body> </html>
Netscape 社の JavaScript を真似て、Microsoft 社が自社の Internet Explorer 3.0 に実装したのが JScript です。細かな仕様のや機能の豊富さに差異はあるものの、基本的には同じものです。面子の問題からか、商標の問題からか、Microsoft 社は「JavaScript」という用語を使用していません。
現在、JScript 自体は ECMAScript をベースとした純粋な言語仕様となっており、サーバー/クライアントを問わず、動作します。ファイルの読み書きも可能ですが、ページ上に張りつけられた状態では利用できないようになっています。JScript をベースに、ウェブ上の機能と組み合わせたものを、Microsoft 社は「ActiveScript」とか「DHTML(Dynamic HTML)」とか呼びたがっているようですが、利用者の大半は「JavaScript」と呼んでいます。
JScript をブラウザで動かすには、IE3.0 以上のブラウザが必要です。JScript を純粋な言語仕様としてコマンドラインで動かすには、WSH の環境(wscript.exe や cscript.exe)が必要です。
<html> <head><title>JavaScript Sample</title></head> <body> <script> document.write("Hello World!!"); </script> </body> </html>
下記の内容を test.js に保存し、MS-DOS コマンドプロンプトから、「cscript.exe test.js」と実行してください。
WShell.Echo("Hello World!!");
JScript と同時に Microsoft 社が IE3.0 に実装したのが VBScript です。Visual Basic をベースとした言語を用います。JScript と同様、現在は WSH の言語エンジンのひとつとして実装されており、純粋な言語仕様としても動作します。
ブラウザで動かすには IE3.0 以降のブラウザが必要です。コマンドラインで動かすには WSH の環境(wscript.exe や cscript.exe)が必要です。
<html> <head><title>VBScript Sample</title></head> <body> <script type="text/vbscript"> <!-- document.write "Hello World!!" ' --> </script> </body> </html>
下記の内容を test.vbs というファイルで保存し、MS-DOS コマンドラインから「cscript.exe test.vbs」と実行してください。
WScript.Echo "Hello World!!"
Windows 98 でサポートされた、スクリプト実行環境です。言語エンジンを拡張することで、複数の言語をサポートすることができます。標準では、JScript と VBScript がサポートされています。他にも、PerlScript、TclScript などが存在します。
WSH という言語エンジン実行環境があり、JScript、VBScript、PerlScript などの各種言語エンジンがあり、これをサーバー側で実行するのが ASP、クライアント側のブラウザ上で実行するのが ActiveScript、ActiveScript をベースにしたブラウザ上のインタラクティブ技術を DHTML と呼ぶというのが関係図のようです。
|
─(Server)→ ASP ─(Browser)→ ActiveScript → DHTML |
WSH の登場により、プログラミング言語の壁を超えたオブジェクト定義、オブジェクト利用が今までよりも容易になりました。ここらへんは、DDE → OLE → COM → DCOM → ActiveX → .NET と名前を変えてきた Microsoft の基本ポリシーのようです。
WSH のスクリプトを実行するには、cscript.exe または wscript.exe を用います。前者はコマンドラインインタフェース用、後者はウィンドウベースインタフェース用です。Windows 98 以降には標準でサポートされています。
JScript や VBScript の説明の *.js や *.vbs のサンプルを参照してください。
WSH 上で動作する言語エンジンのひとつに PerlScript があります。Windows 版の Perl を開発・配布していた ActiveState 社に Microsoft 社が資金援助して開発しました。
ActiveState 社から Windows 版の Perl である ActivePerl を入手してインストールし、下記のサンプルを IE4.0 以降のブラウザで開きます。
<script type="text/perlscript"> $window->document->write("Hello world!!"); </script>
CGI については「とほほのCGI入門」を参照してください。
#!/usr/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head><title>CGI Sample</tltle></head>\n"; print "<body>Hello World!!</body>\n"; print "</html>\n";
#include <stdio.h> void main() { printf("Content-type: text/html\n"); printf("\n"); printf("<html>\n"); printf("<head><title>CGI Sample</tltle></head>\n"); printf("<body>Hello World!!</body>\n"); printf("</html>\n"); }
SSI については「とほほのSSI入門」を参照してください。
<html> <head><title>SSI Sample</title></head> <body> This page was last modified at <!--#echo var="LAST_MODIFIED" --> </body> </html>
PHP は「PHP:Hypertext Preprocessor」の略で、先頭の PHP がまた「PHP: Hyper...」の略という再帰的頭字語になっています。ASP や JSP と同様、処理はサーバー側で行います。構文は Perl に似ています。拡張子は .php や .php3 など。処理のたびに別プロセスを起動することがなく高速で、Web に関連した記述性も高く、PHP ファンも多いようです。
PHP モジュールを組みこんだ Webサーバーが必要です。Apache や IIS などに組みこみ可能な PHP モジュールが「The PHP Group」から無償で提供されています。Windows のフリーソフト AnHTTPD にも組みこめます。また、PHP をサポートするプロバイダも少なからず存在しています。
PHP は何通りかの書き方があります。一般的には <? ... ?> を使用するケースが多いようです。
<html> <head><title>PHP Sample</title></head> <body> <? echo "Hello World!!"; ?> <% echo "Hello World!!"; %> <?php echo "Hello World!!"; ?> <script language="php"> echo "Hello World!!"; </script> </body> </html>
Active Server Pages の略で、Microsoft 社が独自に開発した技術です。JSP などと同様、サーバー上で Web サーバーが HTML 文書を解釈してスクリプト部分を実行して、その結果を反映したものをクライアントに送ります。
ASP をサポートしている Web サーバーが必要です。Microsoft 社の IIS(Internet Information Service)や PWS(Personal Web Server)が ASP をサポートしています。
<html> <head><title>ASP Sample</title></head> <body> <% Response.Write("Hello World!!") %> </body> </html>
「ジャバ」と読みます。Java は Sun Microsystems 社が開発しました。Java 自体は、C言語、FORTRAN、COBOL などと同様の、単なるプログラミング言語仕様です。この Java を用いて開発されるプログラムの形態として「Java Applet」、「Java Servlet」などがあります。また、HTML ページ中に、Java 言語で記述されるプログラムを埋めこむ技術として「JSP」があります。
JDK(Java Development Kit)と呼ばれる開発環境が必要です。JDK は Sun のサイトから無償でダウンロードできます。
class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!!"); } }
HelloWorld.java ファイルを javac コマンドでコンパイルすると、中間言語ファイル HelloWorld.class が生成されます。
javac HelloWorld.java
java HelloWorld
「ジャバアプレット」と読みます。let は「小さなもの」を意味し、「Java 言語で記述され、クライアント側(アプリケーション側)で動作する小さなプログラム」という意味から「Java Applet」と名づけられました。Applet クラスのサブクラスとして定義することにより、ブラウザのページ上で実行することが可能になっています。
JDK があれば開発可能です。通常の Java アプリケーションと同様にコンパイルしてください。
import java.awt.Graphics; public class HelloWorld extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hello World!!", 50, 50); } }
<html> <head><title>Java Applet Test</title></head> <body> <applet code="HelloWorld.class" height=100 width=200></applet> </body> </html>
HTML に埋めこんだスクリプトがサーバー側で実行される点は PHP、ASP に似ています。異なるのは言語に Java を用いているということでしょうか。
JSP を実行するには、Tomcat(Apache-Jakata)、JRun(マクロメディア)、WebLogic(BEA)、WebSphere(IBM)、iPlanet(Sun&Netscape)など、JST をサポートする Web サーバーが必要です。
<html> <head><title>JSP Sample</title></head> <body> <% out.println("Hello World!!"); %> </body> </html>
クライアント側(アプリケーション側)で動作するのが Applet、サーバー側で動作するのが Servlet です。Java 言語を用いて作成されます。単に Java 言語で作成した CGI プログラムは Servlet とは呼びません。HttpServlet クラスのサブクラスとして定義され、Web サーバーと HttpServlet の機能を用いて情報の伝授を行うのが Servlet です。
Servlet はサーバー上の Java VM 上で動作し、一度ロードされると常駐するので、毎回プロセスを起動する CGI よりも効率が優れていると言われています。(最近は CGI でも毎回プロセスを起動しない方式もあるようですが・・・)
Java Servlet をサポートする Web サーバーが必要です。JSP をサポートする Web サーバーは、大半が Java Servlet をサポートしているのではないでしょうか。
下記のファイル HelloWorld.java を Java のコンパイラ(javac)を用いてコンパイルすると HelloWorld.class が作成されます。これを、サーバーの指定の場所に置いておきます。あとは、http://~/~/HelloWorld の URL を呼び出すことで実行されます。Servlet の場合、.jsp や .asp や .cgi のような決まった拡張子は無いようです。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>\n"); out.println("<head><title>Servlet Sample</title></head>"); out.println("<body>"); out.println("Hello World!!"); out.println("</body>"); out.println("</html>"); out.close(); } }
├□ クライアント側技術 │├□ HTML(HyperText Markup Language) │├□ DHTML(Dynamic HTML) ││├□ Microsoft系 │││├□ ActiveScript ││││└□ WSH(Windows Scripting Host) ││││ ├□ JScript ││││ ├□ VBScript ││││ ├□ PerlScript ││││ └□ : │││├□ Style Sheet ││││├□ Filter ││││└□ Transition │││├□ IE Object Model │││└□ Dynamic Fonts ││├□ Netscape系 │││├□ Client Side JavaScript │││├□ Netscape Layer Model │││├□ Style Sheet ││││├□ CSS(Cascading Style Sheets) ││││└□ JSSS(JavaScript Style Sheets) │││└□ Dynamic Fonts ││└□ 共通 ││ └□ DOM(Document Object Model) │├□ XHTML(eXtensible HTML) │├□ XML(eXtensible Markup Language) │├□ CSS(Cascading Style Sheets) │├□ Java Applet │├□ ActiveX │├□ Data Binding │├□ VML(Vector Markup Language) │└□ プラグイン │ ├□ Flash │ ├□ RealMedia │ ├□ : │ └□ サーバー側技術 ├□ ページの中にスクリプトを埋めこむ形式 │├□ SSI(Server Side Include) │├□ SSJS(Server Side JavaScript) │├□ PHP │├□ JSP(Java Server Pages) │└□ ASP(Active Server Pages) │ └□ WSH │ ├□ JScript │ ├□ VBScript │ └□ : └□ プログラムからページを書き出す方式 ├□ CGI(Common Gateway Interface) │├□ Perl │├□ C言語 │├□ C++ │└□ : └□ Java Servlet
□ 言語仕様による分類 ├□ JavaScript系 │├□ ECMAScript(ECMA-262) │├□ Netscape系 ││├□ Core JavaScript ││├□ Client Side JavaScript ││└□ Server Side JavaScript │└□ Microsoft系 │ ├□ Client Side JScript(→ DHTML) │ └□ Server Side JScript(→ ASP) ├□ VisualBasic系 │└□ VBScript │ ├□ Client Side VBScript(→ DHTML) │ └□ Server Side VBScript(→ ASP) ├□ Perl系 │└□ PerlScript ├□ Java系 │├□ Java Application │├□ Java Applet │├□ Java Servlet │└□ JSP ├□ XML系 │├□ XHTML │├□ └□ その他 ├□ Tcl ├□ Ruby ├□ :