Recent Posts

RSS Feeds

JavaSE6 と GlassFish で JSP の高速コンパイル


皆様、JSR-199 (Java Compiler API)をご存知でしょうか?

Java SE 6 で拡張された機能の一つなのですが、この API を
利用すると、Java のプログラム中から Java のソースコードを
コンパイルできるようになります。
一見すると、この機能と GlassFish どのような関連があるの?
と思われる方もいらっしゃるかと思いますが、JSR-199 に対応した
JSP コンパイラが GlassFish 上で実装されています。

そこで、JSP/JSF 等のコンパイルが非常に高速になります。
(一説によると3.5倍〜10倍早いとか)
今までは、JSP をコンパイルした後、Servletコードをファイルに
出力してロードしてとアプリケーションの起動までに結構時間が掛かった
りしましたが、GlassFish ではファイルに書き出さず直接メモり上で
コンパイル等の動作を行うことができます。

ですので、
GlassFish は Java SE 6 で動かすことをおすすめ致します。Java SE 5 を
ご使用中の方は、バージョンを変更したい場合、下記のファイルを修正し
変更してください。

# vi glassfish-v2.1/config/asenv.conf
AS_JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

また、開発者の方は、上の説明でではコンパイルされたコードを
見たい場合はどうすればいいのだろう?と思う方もいらっしゃると思います。
NetBeans をご使用されている方は、Web のプロジェクトを作成した際に
デフォルトでソースコードが出力される設定が追加されています。

具体的には、プロジェクト中の設定ファイル(sun-web.xml) に
下記の行が追加されています。

<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>

開発者の方はこれを消していただくことで、Java のコードは出力されなくなり
全てメモり上で作業が行われますので下記を消して再度配備してみてください。
逆に言うならば、NetBeans 等をご利用されていない場合は、上記のコードを
記載していない場合、Java のコードは出力されませんのでご注意ください。


ちなみに、Java のソースコードの出力先は下記になります。

glassfish-v2.1/domains/domain2/generated/jsp/j2ee-modules/APPLI_NAME/org/apache/jsp

効果の程は、是非皆様ご自身の手で試してみてください。

参考資料の抜粋:
http://blogs.sun.com/kchung/entry/speed_up_jsp_compilations_with

The performance gain for using JSR1 199 API is amazing! Preliminary measurement shows an order of magnitude improvement in raw Javac compilation speed, and a 3.5X improvement in overall execution when running JSP TCK tests!


https://glassfish.dev.java.net/ja/public/WP_GlassFish_Overview.pdf

GlassFish のもう 1 つの注目すべき変更点は、Java コンパイラの Jasper が Java SE 6 のコンパイラ API (JSR-199) を利用できるようになり、ファイル IO の回避とコンパ イル速度の大幅な向上 (非公式の計測では約 10 倍の高速化) が実現されたことで す。JSR-199 を使用する場合ほど高速ではありませんが、Eclipse JDT コンパイラを 使用するように Jasper を構成することもできます。残念なことに今は手元にベン チマーク結果がないのですが、JSF 実装も大幅に改善されました。


Permalink     No Comments
Track Back :




Post a Comment:
Comments are closed for this entry.