これは使える!Java風スクリプト:安藤幸央のランダウン(10)
「Java FAQ(What's New)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集局)
Javaとスクリプト言語
最近ではJavaScriptだけではなく、Java風スクリプト言語が増えてきました。Javaでの表記が可能なスクリプト言語や、すでに浸透しているスクリプト言語のJava実装が次々に登場してきているのです。
スクリプト言語の利点として注目される点は、コンパイルすることなしに動作する可搬性、インタラプタ形式による逐次実行が可能であることです。さらにインタラプタ形式で動作する利点は、スクリプトの修正と実行をシームレスかつスムーズに行える点です。
Javaが登場した当時、JavaとJavaScriptは、よく混同され間違われました。JavaScriptのもとはNetscape Communication社が開発したLiveScriptです。当初はLiveScriptの名前で発表される予定でした。うわさによると、ちょうどそのころ台頭してきたJavaの勢いを借りる形で、営業戦略上JavaScriptと命名されたそうです。
スクリプト言語と聞くと、簡単に作れる初心者向けの言語ととらえられがちですが、熟練したプログラマが簡単にツールを作成するときにも重宝することは間違いありません。
プログラマの開発作業には、作業効率の向上を担うさまざまなツールが要求されます。スクリプト言語で書かれたツールも使われます。ツールとしての再利用性、カスタマイズ性もさることながら、コードの再利用を行わない、使い捨ての簡単なツールまで、作業時間の短縮に大いに役立つことでしょう。逆に大規模なアプリケーション開発には必ずしも向くとはいえないでしょう。
汎用アプリケーションや開発ツールなどには、スクリプティングやプラグインなど、パーソナライズ・カスタマイズの仕組みが数多く見受けられます。それだけスクリプト言語は柔軟性に富んでいることを示しているともいえます。
Java風スクリプト言語はスクリプト言語の便利さと、Java言語の使いやすさを併せ持った言語です。また、Javaで扱いにくい部分に手が届いたり、Javaにはない機能が拡張されて使えるようになっていたりで便利さ満載です。では、ここでいくつかのJava風スクリプト言語を紹介していきましょう。
アプリケーションを容易に開発「SashXB」
SashXBはアプリケーションを容易に開発することのできる言語です。開発者はOSやネットワークのことに必ずしも詳しくなくても構いません。HTMLやJavaScriptを使うのと同じ要領でクライアントアプリケーションを書けるスクリプト言語です。“The Javascript Runtime”ともいうべきもので、現在Windowsと Linuxで動作する環境が用意されています。SashXBは、 IBM Internet TechnologyグループとIBM Reserchによる開発段階にある技術です。現時点ではまだデモ、プレゼンテーション的な要素が強く感じられます。
開発の容易さと背中合わせにあるセキュリティに関してもSashXBでは配慮されています。だれでもが記述可能なスクリプト言語をクライアントアプリケーションとして動作させるときに心配するのは、セキュリティの問題です。SashXBでは専用の検証ツール(ウェブリケーション・マネージャ)によってクライアントコンピュータにどのような操作を行い、影響を及ぼすのかを明確に把握することができるそうです。
現在ではさまざまなアプリケーションがWebベース、Webブラウザ上で操作できるようになっています。今後もWebアプリケーション、Webサービスの種類や量は増える一方でしょう。SashXBの世界ではWebアプリケーションを意味する造語としてWebと Applicationを組み合わせた「Weblication」が使われています。
概念としては、Webページと対比すると明確でしょう。Webページを作成する際、HTMLファイルを作成し、Webブラウザで確認するという作業を繰り返します。SashXB の場合は、SashXBのコードを記述し、Weblicationの動作を確認しながら作成していくわけです。
SashXBは最近「GNU Lesser GPL」(GNU 劣等一般公共使用許諾契約書)に基づくソースコードが公開されました。Java開発ツールの「Eclipse」に統合されることも計画されており、今後徐々にユーザー数を増やし勢いづいてくることが予想されます。
Java環境で利用できるJava風スクリプトインタプリタ「Pnuts」
インタラクティブ(対話的)にJava環境を操作することができます。GUIを作ったり、Javaプログラムを柔軟にカスタマイズするためのツールとして利用することができます。デバッグモードが充実しています。スクリプトをコンパイルして使用することもできます。また多くのモジュールが用意されている強力なスクリプト処理系です。
Tclスクリプト言語のJava実装「Jacl」
スクリプトの機能性をXMLあるいはXSL(eXtensible Stylesheet Language)の中に組み込むことができます。
http://sourceforge.net/projects/tcljava
Pythonスクリプト言語のJava実装「Jython」
JythonはJPython(http://www.jpython.org/)の後継です。Java環境下で、オブジェクト指向スクリプト言語であるPythonを動かすことができます。JythonからJavaのクラスを使ったり、JavaからJPythonのインタプリタを使うことができます。
http://jython.sourceforge.net/
JavaScript言語のJava実装「Rhino」
Javaで書かれたJavaScriptエンジン。ECMAScript 3rd Edition、JavaScript 1.5をサポートしています。DOM実装は含んでいません。JavaScriptからJavaの命令を呼び出したり、JavaからJavaScriptを呼び出すことができます。
Javaで書かれたJavaソースコードインタラプタ「BeanShell」
BeanShell上で「System.out.println("Hello World !");」と記述するとその場で実行されます。GUIを含んだ命令も1行書くごとに逐次実行されるので、Java文法を効率良く学ぶうえでも役立つでしょう。
その他のスクリプト
その他にも、スクリプトは多く存在します。それらについて、簡単に紹介しましょう。
- JudoScript(http://www.judoscript.com/)
JDBCスクリプト、XMLとXSLTスクリプトを扱うのを得意とするスクリプト言語。Java環境上で、シームレスに動作します。 http://www.judoscript.com/) - Ruby(http://jruby.sourceforge.net/)
オブジェクト指向スクリプト言語RubyのJava実装。JythonのRuby版です。Java環境下でRubyをシームレスに動作させることができます。Javaアプリケーションの中に組み込むこともできます。 - BSF(Bean Scripting Framework)(http://www-124.ibm.com/developerworks/projects/bsf/)
Javaアプリケーションおよびアプレットにスクリプト機能を組み込むためのアーキテクチャ。 - DynamicJava(http://koala.ilog.fr/djava/)
Javaで書かれたJavaソースインタプリタ。Javaで書かれたプログラムを逐次実行することができます。スクリプティング機能も持っています。 - Iava(http://members.tripod.com/mathias/IavaHomepage.html)
IavaはJavaのサブセット的な位置付けの言語です。JavaアプリケーションとIavaスクリプトがシームレスに動作することにより、Javaアプリケーション部と、インタプリタ上で動作するIava双方の利点を享受できます。 - iScript(http://www.servertec.com/products/iscript/iscript.html)
iScriptはWebサイト構築用の新スクリプティング言語です。Java風スクリプト言語のサーブレット版ともいえるでしょう。サーブレットがスクリプト言語で書けるようになった感じです。
Javaの登場以来、Javaプログラマの数は確実に増えてきています。アルゴリズムを考える際の基本となる言語がJavaであったり、初めて出合ったコンピュータ言語がJavaであったり、Javaプログラミングがメインの仕事である人も数多いことでしょう。
試行錯誤しながら、ちょっとした便利なツールを作ったり、大量のファイルに対して何らかの操作を行ったりするにはスクリプト言語が大変便利です。スクリプトの記述と実行をシームレスにスムーズに行うことによって、楽に素早く行える作業は多いはずです。
プログラマにとって、1つの言語にこだわらず、臨機応変に最適な言語を使いこなせることが理想でしょう。多くのJavaプログラマにとって、Java風スクリプト言語は強力な味方になるはずです。
■参考URL
- Programming Languages for theJavaVirtual Machine
http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html - Eclipse
http://eclipse.org/ http://eclipse.org/
次回は7月10日の公開予定です。
プロフィール
安藤幸央(あんどう ゆきお)
1970年北海道生まれ。現在、株式会社エヌ・ケー・エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。
ホームページ:
http://www.gimlay.org/~andoh/java/
所属団体:
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)
主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
「The Java3D API仕様」(監修、アスキー)
Copyright © ITmedia, Inc. All Rights Reserved.