i ntra-mart The Power for Enterprise Web Solution
JavaScript コンパイラ

形式

java -cp ./bin/intramart.jar jp.co.intra_mart.bin.js2class [ options ] [ sourcefiles ] [ sourcedirectories ]
( bin\tools\js2class [ options ] [ sourcefiles ] [ sourcedirectories ] )
options
コマンド行オプション
sourcefiles
コンパイルされる 1 つ以上のソースファイル (my_script.js など)
sourcedirectories
コンパイルされる 1 つ以上のソースファイルのあるディレクトリ

解説

jp.co.intra_mart.bin.js2class ツールは、intramart.jarアーカイブに含まれています。実行時には、intramart.jar からクラスがロードできるようにクラスパスを設定して下さい。(Service-Platform を Windows にインストールしている場合には、bin/tools/ ディレクトリに js2class.bat というバッチファイルがインストールされています。このバッチファイルを利用することでクラスパスの設定等をしなくてもコンパイラを実行することができます。)

jp.co.intra_mart.bin.js2class ツールは、JavaScript プログラミング言語で記述されたファンクションコンテナを読み取り、バイトコードクラスファイル(JAVA のクラスファイル)にコンパイルします(*.js ファイルから *.class ファイルが作られます)。

ソースコードのファイル名を jp.co.intra_mart.bin.js2class に渡すには、ファイル名をコマンド行で直接指定します。ソースコードが複数ある場合は、各ファイル名またはソースコードの親ディレクトリ名をスペースで区切って指定します。

ソースコードのファイル名は .js 拡張子、クラスのファイル名は .class 拡張子を持たなければなりません。また、クラスファイル名はソースファイル名を元にして自動的に生成されます。このクラスファイル名は任意に変更することはできません。

内部関数定義は、追加のクラスファイルを生成します。これらのクラスファイルの名前は、_my_script_js$MyInnerFunction.class のように、内部クラス名と外部クラス名を組み合わせたものになります。

オプション

-d sourcepath
ソースファイルを検索するソースコードパスを指定します。ソースファイルは、ソースコードパス sourcepath とソースファイル名の組合わせで検索します。

-d が指定されていない場合、jp.co.intra_mart.bin.js2class はカレントディレクトリからソースファイルを検索します。

-o directory
クラスファイルの出力先ディレクトリを設定します。クラスがパッケージの一部である場合、jp.co.intra_mart.bin.js2class は、必要に応じてディレクトリを作成し、パッケージ名を反映したサブディレクトリにクラスファイルを置きます。

-o が指定されていない場合、jp.co.intra_mart.bin.js2class はカレントディレクトリにクラスファイルを置きます。

-debug
デバッグ情報を生成します。行番号およびソースファイル情報などが生成されます。-debug オプションを指定することにより、実行時にエラーが発生した場合のデバッグが容易になります。

-opt level
実行時のコードを最適化します。最適化の程度は、0 から 9 までの整数値で指定することができます。数字が大きいほど最適化レベルは高くなりますが、その分コンパイル速度が低下し、デバッグの困難なプログラムが生成されることがあります。0 は最適化をせずにコンパイルします。-opt オプションを指定しなかった場合の標準値は 0 です。また -opt オプションは -debug と併用することはできません。

-charset charset
ソースファイルのエンコーディング名 (Shift_JIS/EUC-JP など) を指定します。-charset が指定されていない場合は、ご利用のシステムにおけるデフォルトの文字エンコーディングが使われます。 このオプションに指定できるエンコーディング名は、JAVA の仕様で定義されているエンコーディング名です。指定可能なエンコーディング名については、JAVA のドキュメントをご覧ください。

-h
ヘルプメッセージを出力します。他のオプション指定があっても、すべて無視されます。また -h オプションが指定された場合、コンパイルは行われません。

例(Windows の場合)

簡単なプログラムのコンパイル

サンプルソースファイル pages/src/sample/example/string/main.js をコンパイルする例を示します。(intra-martのインストール時にサンプルをインストールしてください。)クラスファイルは、標準でクラスパスとなっている doc/imart/WEB-INF/classes/ ディレクトリにコンパイルされるようにします。このため、この例ではスタンドアロン環境の場合に限り、コンパイルした後にクラスファイルを移動したり実行時のクラスパスを設定する必要はありません(ネットワーク環境の場合は、作成されたクラスファイル(_sample/_example/_string/_main_js.classなど) をApplication Runtimeの doc/imart/WEB-INF/classes/ ディレクトリにコピーする必要があります)。
C:> dir
imart\
C:> cd imart\pages\src
C:\imart\pages\src> ..\..\bin\tools\js2class -o C:\imart\doc\imart\WEB-INF\classes sample/example/string/main.js
上記の例では、C:\imart\doc\imart\WEB-INF\classes ディレクトリに _sample/_example/_string ディレクトリが作成され、その中にクラスファイルが保存されます。この状態(ネットワーク構成の場合には、_sample ディレクトリをApplication Runtimeの doc\imart\WEB-INF\classes ディレクトリにコピー)でサーバを再起動すると、pages/src/sample/example/string/main.js は読み込まれなくなり、替わりにクラスファイルがロードされます(以後、ソースコードの変更は自動では反映されません)。

複数のソースファイルのコンパイル

次の例は、ソースファイル init.js とディレクトリ sample 内のすべてのソースファイルをコンパイルします。
C:> dir
imart\
C:> cd imart\pages\src
C:\imart\pages\src> ..\..\bin\tools\js2class -o C:\imart\doc\imart\WEB-INF\classes init.js sample 

その他

ソースファイルをコンパイルしておくことにより、システム全体のパフォーマンスを向上させることができます。ただし、ソースファイルを実行した場合とコンパイルされたクラスファイルを実行した場合では、システムにロードされる方式が異なるため実行時のスコープが変わってしまう場合があります。これにより実行時エラーが引き起こされる場合がありますので、ソースファイルをクラスファイル化した場合は、実行に問題がないことを必ず確認する必要があります。

コンパイルしたクラスファイルは、コンパイル時に指定した最適化レベルによりバイトコードの構造が異なります。特に最適化レベルが高い場合には、バイトコードが最適化されていることに起因して実行時エラーが発生する場合があります。その場合は、最適化レベルを低く設定するか、またはエラーとならないソースコードに書き換えて下さい。

コンパイルされたクラスファイルは、そのクラスファイル(ファンクションコンテナ)が実行されるサーバ(Application Runtime)環境においてクラスパスの設定されているディレクトリに保存して実行して下さい。クラスファイルは、JAVAの通常のクラスローダーによりロードされてVM上で実行されます。また、クラスファイルは一度実行されるとメモリ内にクラス情報がキャッシュされますので、クラスファイルを変更した場合はサーバの再起動が必要となります。

クラスファイル化したファンクションコンテナを使う場合は、Resource Service にソースファイルは必要ありません(クラスに該当するソースファイル(JavaScript ソースコード)は、削除してしまっても問題ありません)。




Copyright(C) NTT DATA INTRAMART CO.,LTD. 2000-2006 All Rights Reserved.