Java 6とJavaScript
Java 6の大きな特徴の一つに「スクリプト言語との親和性」というものがあります。Java 6では、標準で「スクリプトエンジン」と呼ばれるものが搭載されました。これは文字通り、スクリプトを解釈し実行するためのエンジンプログラムです。
Java 6では、標準で「JavaScript」を実行するためのエンジンが用意されています。また、これ以外の言語のエンジンを追加していくことで拡張することができる仕様になっています。これにより、Javaの中からスクリプト言語を自由に利用することができるようになったわけです。ゆくゆくは、いくつものスクリプト言語が標準で利用できるようにしていくのでしょう。
この「Javaの中からスクリプト言語が使える」という機能、なんとなくすごいような、便利なような、でも何に使うのかわからないような(笑)、なかなか興味を引くものではありますね。さっそく、どんな具合に使うのか試してみることにしましょう。
ここでは、とりあえずサーバサイドでの利用を考えてみます。JSPの中に書いたJavaのソースコード内からJavaScriptを実行させてみることにしましょう。Java 6のスクリプトエンジンは、もちろんサーバサイドに限らず、一般的なアプリケーションでも利用できます。(これについても後で試してみる予定です)
では、ごく簡単な仕掛けとして、テキストエリアを持ったフォームをあらかじめ用意しておき、そこに書いたスクリプトをJava内から実行させる、というものを考えてみることにしましょう。ここでは、「test.jsp」というファイル名で作成してみます。
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ page import="javax.script.*" %>
<%
String script = request.getParameter("script");
String result = "";
if (script != null){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
engine.eval(script);
} catch(ScriptException ex){
ex.printStackTrace();
}
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
※スクリプト<br>
<form method="post" action="test.jsp">
<textarea name="script" cols=60 rows=5><%=script %></textarea>
<br>
<input type="submit">
</form>
</body>
</html>
ざっとこんな感じになりました。スクリプトをテキストエリアに記述して送信すると、その場で実行されます。