本連載では,今後数回にわたってスクリプト言語に関連するプロダクトを紹介してゆく。今回は,Apache BSF(Bean Scripting Framework)とJava SE6のスクリプティング機能について紹介しよう。

スクリプティング標準仕様JSR-223を実装したBSF

 現在,Javaの世界でスクリプト言語が注目されている。

 その背景には昨今の開発効率向上要求,スクリプト言語の成熟などがあるが,最も大きな要因はJavaの次バージョンである Java SE6でスクリプティング 機能がサポートされることだろう。この機能は JSR-223(Scripting for the Java Platform API)仕様を実現したもので,Java Runtime 内から様々なスクリプトを実行できる。すなわち,Javaアプリケーションから別の言語で記述されたスクリプトをプログラムの一部のように呼び出し,実行してしまうのである。

 Java Runtime内からスクリプトを起動する仕組みは,これまでもスクリプトのインタプリタが独自の実装によって実現されていた。また,ASF の BSF を利用することによって スクリプティング機能と同等のことが実現できる。というより,スクリプティング機能は BSF をJava言語仕様として標準化し実装したものと考えてもよいほど,仕組みや利用方法が近似している。

柔軟・迅速が求められる最近の開発

 Javaという完結した言語に,あえて新しい言語を実行する機能は必要なのだろうか?

 Javaは多くの標準APIを提供しており,それ自体で大抵の要求を満たしたアプリケーションを構築することが可能な言語だ。また,数多くのライブラリも流通しており,あえて新しい言語を利用する必要がないように思える。

 しかし,ご存知のように Java は強く型づけされた言語であり,プログラム内のあらゆる情報は型をもっている。また,コンパイルを行うことで初めて実行が可能となるコンパイル型の言語でもある。このことは,詳細に設計を行い,すべてを正しく記述することで初めて実行が可能となることを示している。堅牢なシステムを作成する上では確かに重要なことだ。

 しかし,この2点が,最近の開発スタイルやアプリケーションアーキテクチャを実現する際のネックになる場合が出てきている。

 例えば,最近話題の要求開発や,Ruby on Rails に代表されるようなラピッド型の開発においては,柔軟かつ迅速なプロトタイプの作成やプログラムの変更が求めらる。しかし,現状のJavaの言語仕様では,いずれも多くのコストがかかってしまう。

 このように,柔軟かつ迅速にプログラムを作るもしくは変更場合においては,型の定義やコンパイルといった煩雑な手続きなしで,簡単に目的が達成でいることが望ましい。前述のようなシーンにおいて強く型づけされず,コンパイルを必要としない言語=スクリプト言語がまさにうってつけなのだ。