前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition サーブレットに関するプログラマーズガイド



付録 B   SSJS アプリケーションの変換


この付録では、サーバサイド JavaScript のアプリケーションを JSP に変換する方法についての情報を説明します。 次の節で構成されています。



JavaScript と Java の違い

SSJS アプリケーションを JSP に変換する前に、JavaScript と Java の違いを理解する必要があります。 JavaScript と Java はある点では似ていますが、それ以外は根本的に異なります。

JavaScript には、Java のような静的型定義および強力な型チェック機能がありません。 JavaScript は、実行時システムをサポートしており、数値、ブール値、および文字列値を表す少数のデータタイプがベースになっています。 Java は、宣言文で構築されたクラスのコンパイル時システムをサポートしています。

JavaScript はまた、特別な宣言が必要のない関数をサポートしています。 関数は、あいまいに型定義されたメソッドとして実行することも、オブジェクトのプロパティとして使用することもできます。 Java では、メソッドはクラスで定義され、クラスに属し、明確に型定義されます。

JavaScript は、Java と比較すると、非常に自由な形式の言語です。 Java では、すべての変数、クラス、およびメソッドを宣言する必要があります。 メソッドは、Public、Private、または Protected として、宣言する必要があります。 変数、パラメータ、およびメソッドの戻り値の型は、明示的に定義されます。

Java は、高速実行および型の安全性のために設計された、クラスベースのプログラミング言語です。 たとえば、型の安全性とは、Java の整数をオブジェクト参照にキャストしたり、Java バイトコードを破棄して専用メモリにアクセスしたりできないことを意味します。 Java のクラスベースのモデルとは、プログラムがクラスとそのクラスのメソッドのみで構成されていることを意味します。 Java のクラス継承や強力な型定義には通常、密接に結合されたオブジェクト階層を必要とします。 Java のプログラミングにはこれらの条件が必要となるため、JavaScript のオーサリングよりも複雑です。


表 B-1 JavaScript と Java の比較

JavaScript

Java

クライアントによって解釈される (コンパイルではない)  

サーバからダウンロードされたコンパイル済みのバイトコードがクライアント上で実行される  

オブジェクトをサポートするスクリプト言語  

オブジェクト指向言語  

オブジェクトのタイプの区別がない。 継承はプロトタイプメカニズムによるものであり、プロパティや関数はすべてのオブジェクトに動的に追加される  

オブジェクトは、クラス階層のすべての継承を持つクラスとインスタンスに分割される。 クラスとインスタンスは、動的に追加されるプロパティまたはメソッドを持つことはできない  

関数は、クラスの内部にある場合があるが、必ずしもそうである必要はない  

すべてのメソッドが、クラスの内部にある必要がある  

コードは、HTML と統合され、HTML に埋め込まれる  

コードは、HTML とは区別される。ただし、JSP に HTML のタグを埋め込むことはできる  

柔軟な型変換 : 変数および関数のタイプは宣言されない (動的型定義)  

厳密な型変換 : 変数およびメソッドタイプは、宣言する必要がある (静的型定義)  

ハードディスクに自動的に書き込まれない  

ハードディスクに自動的に書き込まれる  

ステートメントの終わりのセミコロンは任意である  

すべてのステートメントはセミコロン (;) で終わらなければならない  



JavaScript から Java クラスへの変換



SSJS アプリケーションで使用されるオブジェクトは、Java では、クラスに変換する必要があります。表 B-2 に、これらのオブジェクトの変換結果を示します。


表 B-2 JavaScript と Java の基本的なクラス

SSJS クラス

Java クラス

コメント

Client  

Session  

Java セッションは、SSJS クライアントのように自動ではない  

Project  

Context  

 

Request  

Request  

 

Server  

System または
Context
 

メソッドは、2 つの Java クラスに分割される  

SSJS には、データベース接続を扱う特別なライブラリが含まれています。 JSP は Java なので、すべてのデータベース接続は JDBC 経由で処理されます。 JDBC データベースドライバは、データベースベンダーから直接入手できます。 入手可能ならば、常に Pure Java (タイプ 4) ドライバを使うことをお勧めします。表 B-3 に、データベース接続クラスの一覧を示します。


表 B-3 JavaScript と Java のデータベースクラス

SSJS クラス

Java クラス

コメント

Connection  

Connection  

 

Cursor  

ResultSet  

Cursor オブジェクトはない。 ResultSet クラスのメソッドを使ってカーソルを動かす  

DbPool  

PooledConnection  

このクラスは、JDBC のオプションのパッケージにある  

Stproc  

CallableStatement  

 

ResultSet  

ResultSet  

 



変換手順



アプリケーションを変換する場合は、以下の手順に従ってください。

  1. アプリケーションの構造をよく調べて、ページ間で使用されるヘルパークラスがあるかどうかを確認します。 ページで使用できるようにするために、最初にこれらのヘルパークラスを変換します。 (hangman の例には、元の JavaScript アプリケーションでは hangman.js と呼ばれ、iPlanet Web Server 6.0 で提供された JSP アプリケーションでは JavaHangManUtil.java と呼ばれる、ヘルパークラスが含まれています。) ヘルパーを .java ファイルとして記述し、そのファイルを使用する前に、.class ファイルにコンパイルします。

  2. クラス内にメソッドを定義します。 メソッド (JavaScript の関数) は、メソッドが返すもの、およびメソッドにアクセスできるものを宣言する必要があります。 たとえば、次のように JavaScript に記述できます。

    function InitAnswer(str) { function_code }

    Java では、同じメソッドを次のように宣言する必要があります。

    public static String InitAnswer(String str) { method_code }

    このメソッドは、String を渡され、String を返します。 public キーワードは、ほかのすべてのクラスがこのメソッドを呼び出すことができることを意味します。 static キーワードは、仮想マシンが、このメソッドを含むクラスのオブジェクトを作成しなくても、このメソッドを実行できることを意味します。

  3. アプリケーションのクライアントオブジェクトをセッション Bean に変換します。 サーバサイド JavaScript では、データは、クライアントオブジェクト内でより使いやすくなっています。 Java セッションオブジェクトでは、プログラマは、セッションからデータを受け取り、もし変更があればデータを戻す必要があります。 この作業は、ラッパー Bean で行うことができます。 JSP の機能を扱う Bean は、非常に強力なものです。 スコープを session になるように指定できます。スコープは、セッションに自動的に保存されます。

  4. HTML ファイルを JSP ファイルに変換します。 これは、<SERVER> タグおよび </SERVER> タグを見つけ出し、それらを <% タグおよび %> JSP タグに置き換える作業でほとんど占められます。 次に、構文を調べて、正しい JSP または Java 構文に変更します。

  5. 必要に応じて、特別な行をファイルに追加します。 たとえば、次の行はヘルパークラスをインポートします。

    <%@ page import="HangManUtil,HangBean" %>

    そして、

    <jsp:useBean id="client" scope="session" class="HangBean"/>

    上記の行は、セッション Bean の使用を指定します。



変換例

iPlanet Web Server のバージョン 4.1 のサーバサイド JavaScript の例であった、hangman は、バージョン 6.0 では JavaServer Page の例に変換されました。 変換された例は、次のディレクトリにあります。

server_root/plugins/servlets/examples/legacy/jsp.10/hangman


前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated September 17, 2001