JVMの機能は複数の言語をサポートすることであるが、最近Sunからかなりの注目を集めるという様相を呈している。その状況は、JVMをターゲットにしている広範なデベロッパの好みが変化していることを反映している。中には動的言語で開発プロセスのスピードアップを図ろうとしているものもいる。JSR 223(Javaプラットフォームのスクリプト)が含まれて、Sunはその変化を正式なものとし、Java SE 6がRuby、Python、GroovyまたはJavaScriptのような動的言語で記述された、スクリプト言語コードを確実に実行することができるようにする。
SirsiDynixの 技術設計者であるTravis Jensen氏は、近頃Groovy、JythonおよびJRubyの比較をおこない(source)、既存のJava開発者チームによるWeb GUI開発向けの言語としての3言語の適合性を検証した。そこでは以下の5つの大まかな基準で言語を比較している。
1. 動的言語およびJava間の対話。Jensen氏は、Groovyが最も優れており、Jython がそのすぐ後を追う形だと考えている。
「Groovyがタイプの適用をサポートするので、クラスメソッドがクリーンであることに優先する。Groovyクラスのインスタンスの作成は、Javaクラスのそれと同じである」。
JRubyが最も多くの課題を提示していると見ている。
「たとえJRubyがクラスに至るまでコンパイルしても、JavaからJRubyへの移行は重要な問題である。コンパイラは主にJRuby間の高速対話向けであるように見える」。
2. IDEサポート。SirsiDynixはJetBrainsのIDEAを標準化した。それは一部の査定を制限するものである。たとえばNetBeansのJRubyプラグインはカバーされていなかった。Jensen氏はGroovyがIDEAをサポートしたことで、Groovyは勝者になったと感じている。
3. 既存のJavaデベロッパの学習曲線。繰り返しになるが、Jensen氏の査定ではGroovyがトップにランクした。
「Javaのスーパーセットとして、非常に真っ直ぐな学習曲線をしている。直接Java APIを使用するので、これは特に重要である。正直なところ、最も重要な生産性がPythonやRubyと同等に高いかどうかは不明であるが、そうではないという証拠はどこにもない。PythonおよびRubyライブラリがさらにそれぞれの言語に最適化され、より重要になる予感がする」。
また非常に生産的な言語であるとみなされているにもかかわらず、JRubyは多くの課題をJavaデベロッパに課す、と言う。
「機能のより緊密なつながりを前提とすれば、Rubyの学習曲線は3つの中では最も高い。Javaやネイティブライブラリにも、同種の問題がある。正直なところ、いったん曲線を過ぎてしまえば、JRubyが最高の生産性を提供すると思う。その点に関してRubyで読んだことに、ただ驚嘆するだけである」。
4. 利用可能なWebフレームワーク。圧倒的にJRubyである。
「Railsの直接ポートのため、JRubyはトップにあるようだ」。
Jythonは、その3つの中では最も期待が薄いとみなされている。
「CPythonにはすばらしいオプションがあるが、Jythonはこの2年間暗礁に乗り上げている。この主な原因は、2重になっている。CPythonが2.5であるのに対してJythonの現行バージョンは2.2.1であり、パフォーマンスに多くのフレームワークがコンパイルされたCコードを必要としている」。
5. コミュニティサポート。3言語ともにコミュニティから多大なサポートを受けているが、その中でもGrovvyはわずかに抜きん出ていると、Jensen氏は感じている。
「GroovyにとってJVMが唯一のターゲットなので、Groovyコミュニティ全体がJVMコミュニティである。JVMにデプロイしようと考えている 人びとにとって、これは明らかに大きな利点となる。事実上のJavaスクリプト言語として、考えが広く共有され、コミュニティを支援しているようであ る」。
もちろんこうした査定はある程度客観的なものである。Jythonのまわりで活発になった動き、最近SunがFrank Wierzbicki氏およびTed Leung氏をチームに迎え入れたことでますます強化された体制が、今後JythonのWebフレームワークを改善することは間違いなさそうである。そうはいうものの、Jensen氏による掲載は同様の決断に直面しているアーキテクトやデベロッパに、有益な開始点および一連の基本的な基準を提供している。