Java REPLが近いうちに,あなたのJDKの元に届きそうだ。Oracle言語ツールチームのエンジニアであるRobert Field氏は先頃,Java REPL("Read-Evaluate-Print-Loop")プロジェクトの創設を提案した。投票を経て,Project Kullaと呼ばれるこのプロジェクトが承認されたのだ。
REPLは基本的には,スクリプティングシェルないしコンソールである。UNIXシェルやGroovyコンソールのように,アルゴリズムの確認のために使用するものだ。
REPLに対応するJEP(Java Enhancement Proposal)には,グラフィックインターフェースやデバッグのサポート,IDE的な機能など,いくつかの項目がスコープ外であると述べられている。プログラム言語の学習においては即時のフィードバックが重要であり,その機会を欠くために,多くの教育機関がJavaから離れていっている,というのが提案の理由である。対話的な実行は,従来の編集/コンパイル/実行よりもはるかに効率的なのだ。
"public static void main(String[] args){"というクラスの儀式を書かなくても,Javaで記述した短いスクリプトが実用的なものになる。
現時点で利用可能な選択肢としては,他にも次のものがある。
- Groovy Console
- EclipseのJava Scrapbook Page
- Beanshell 2
- Scala REPL
- Java REPL
- IntelliJ IDEAのREPLプラグイン (Java REPLベース)
JEPによると,Java REPLはJDK 9で提供される予定である。ただしOpen JDKのJDK 9には,機能としてリストアップされていない。
Scalaを開発したMartin Odersky氏は先日,JavaでREPLを使用することの意義についての質問に対して,次のように返答した。
"Javaの直面している問題は,それが根本的に命令文(statement)志向の言語であることです。命令文を書いて,それを実行すると,結果が得られます。対照的にREPLは式(expression)志向です。式を書けば,REPLが結果を示します。電卓のようなものです。JavaでREPLを実現することは可能ですが,式志向の言語の場合ほど有用ではないでしょう。"
REPLは言語学習において,不可欠なものかも知れない。ただしフィードバックが迅速であることが,初学者に対して,他の言語よりもJavaの学習を促すことになるかは,まだ分からない。