なぜJava+スクリプト言語が求められたのか

白石俊平(あゆた)
2008-01-25 17:00:00
  • このエントリーをはてなブックマークに追加

連載開始にあたって

 時の経つのは早いもので、Java SE 6.0がリリースされてからもう1年以上になります。

 同リリースにおいて追加された機能の中で、大きく注目を集めていたのはスクリプト言語による開発をサポートしていたことでした。具体的にはjavax.scriptというパッケージが導入され、複数のスクリプト言語に対するアダプタが提供されるとともに、Rhinoと呼ばれるJavaScriptエンジンが同梱されていました。

 Java SE 6.0のリリース以降、JVM上で動作するスクリプト言語たちは非常に大きな進化を遂げています。例を挙げると、まずはJRuby1.0、Groovy1.0/1.5などがリリースされ、長らく開発が停滞していたJythonも矢継ぎ早にアップデートを行っています。さらにはJavaFX Scriptと呼ばれる全く新しい言語も登場し、日々進化を遂げています。Java SEが明確にスクリプト言語をサポートする姿勢を打ち出したことで、この分野は現在非常に脚光を浴びていると言うことがお分かりでしょう。

 もはやJVMは単なる「Javaで書かれたプログラムの実行環境」ではなく、ガベージコレクタやJITコンパイルと言った高度な機能を有し、プラットフォーム非依存で巨大なライブラリを提供する、プログラム言語に中立なプラットフォームへと変貌を遂げつつある、と言っても過言ではないでしょう。読者の皆さんによる活用の度合いはいかがでしょうか。

「Java+スクリプト言語」が持つ可能性

 しかしなぜこれほどまでに、JVM言語が注目を浴びているのでしょうか。その答えはおそらく、「お互いの欠点を補い合えるから」と言う単純な理由が大きいのではないか、と思います。

 Javaは実行前に「コンパイル」と言うフェーズが存在することにより、厳密な書式のチェックやバイトコードへの変換がプログラム実行前に行われます。そのおかげで、エラーの少ないプログラムや高いパフォーマンスを実現可能ですが、それだけ実行するまでの手間がかかります。大規模なIDEやビルドツールが必要とされるのは、そういった理由が大きいのではないでしょうか。

 対してスクリプト言語は、ソースコードを書いたらすぐ実行できるのが最も大きな利点です。Javaがコンパイル時に行うような多くの作業を、プログラム実行中に行う必要が生じるのでパフォーマンスが犠牲になりますが、開発から実行までの流れは非常にスムーズです。またスクリプト言語は、高い生産性を念頭に置いて言語の設計が行われていることが多いので、Javaを遥かに上回る開発スピードを実現できることも多々あります。

 以下は、Scripting in Java と言う本で挙げられていた「スクリプト言語に適したアプリケーション」と言う項目の抜粋です。

  • プログラムコンポーネント間のワイアリング(例:UNIXシェルなど)
  • プロトタイピング
  • エンドユーザなどによるアプリケーションのカスタマイズを可能に(例:Excel VBA)
  • ソフトウェア開発に役立てる(例:ビルド、単体テストなど)
  • 管理作業などに役立てる(例:UNIXのcronで実行する処理など)
  • 変更頻度の高い、ユーザインターフェースのプログラムなどに役立てる

 確かにこうして見ると、こうした作業はJavaでまかなうには少し面倒だった分野ではないでしょうか。Javaとスクリプト言語が力を合わせることにより、スクリプト言語の簡潔な文法と、既に慣れ親しんだJavaのライブラリを用いて、こうした処理を楽に記述できるようになることが期待できるのです。

  • 新着記事
  • 特集
  • ブログ