34

JythonまたはJrubyを使用できるのに、なぜGroovyを使用することを選択するのですか?この言語は、JythonとJrubyのスキルがJVMの外部の親言語に適用できるという事実を補うための固有の利点を提供しますか?

私は意図的にこの質問を一般的なものにしていますが、特定のドメインに存在する利点がある場合は、遠慮なく説明してください。

編集
明確にするために、Jrubyでコードを記述した場合、必要に応じてそのコードをJVMの外部に移動できるようになりました。少なくとも、Rubyについての理解が深まりました。一方、Groovyスキルは、JVM内に存在する言語を使用する場合にのみ適用できます。JythonとJrubyにはこれが組み込まれている利点がありますが、Groovyはこの欠点を何で補う必要がありますか?

Groovyにあなたが見つけた利点がなく、JythonまたはJrubyを使用することを提案する場合は、私に知らせてください。

編集2
すべての回答に感謝します。ほとんどの回答が同じです。GroovyはJavaとの統合がわずかに優れており、JythonやJrubyよりも優れています。

Netbeans 6.5をIDEとして使用してフォローアップ
するGroovyは、JrubyよりもJavaプロジェクトとの統合が優れていることがわかりました。統合の欠如がJrubyまたはNetbeansの失敗であるかどうかはわかりません。しかし、少しの間それを使用した後、Groovyは間違いなく足を上げているようです。

4

5 に答える 5

38

私はRubyとGroovy(および負荷テストツールとしてGrinderを使用する小さなJython)でかなり大規模な開発を行いました。

3つのうち、Groovyが一番好きです。私はクロージャ構文が一番好きで、JVM上の他のJavaクラスとの連携方法が最も緊密に統合されていると思います。私が最後にJRubyを使用してから少し経ちましたが、JavaクラスをインポートしてJRubyでクラスローダーを操作することは、私にとってそれほどクリーンではありませんでした。

Groovyも本質的にJavaのスーパーセットであるという事実は、そこにいる膨大な数のJavaプログラマーが、Ruby/JRubyよりもGroovyをピックアップするのに時間がかかることを意味します。彼らはそれをJavaのようにプログラミングし始め、それを手に取ったときにゆっくりとidomaticgroovyを挿入し始めることができます。

あなたが求めていることの点で言えば、Groovyのもう1つの利点は、何かを最適化するときに使用する言語がほぼ同じ構文、つまりJavaであるということだと思います。RubyまたはPythonの世界で作業している場合は、大きな変化であるCまたはJavaのいずれかに移動する必要があります。これも、これらの言語とはまったく異なります。Groovyでのプログラミングは、Javaスキルをいくらか鋭く保つのにも役立つ傾向があります。

RubyまたはPythonインフラストラクチャに特にアクセスできる場合、またはこれらの種類の環境に精通しているチームの場合は、他の言語の1つを選択することができます。

本当に、それらの3つはすべて非常に優れた言語であり、選択するものは、修正しようとしている問題と利用可能なリソースにさらに依存する必要があります。1つの動的言語に習熟すると、2番目または3番目の言語を習得するのがはるかに簡単になります。

于 2008-11-14T04:45:49.437 に答える
14

Java と Jruby/Groovy を組み合わせる必要がある場合は、Groovy を使用してください。誰もが言うように、Groovy はより緊密な Java 統合を備えています。

しかし、言語の実装に関する限り、私は Groovy よりも Ruby 言語を好みます。言語はそれ自体を中心に展開します。Groovy には、実装自体に固有のハックがいくつかあります (Grails スタックトレースと Rails スタックトレースを見てください。私が何を意味するか見てみましょう)。

Neal Fordによる Groovy と JRuby の比較を参照することを 強くお勧めします。

于 2008-11-17T12:34:14.137 に答える
3

Dick Wall は、Java Posse ポッドキャスト (#213、34:20 あたり) で、これら 3 つの違いについて非常に優れた要約を提供したと思います... ; Python は、シンプルさと教育に非常に強いルーツを持っています; Groovy は、Java 開発者が選択できるようにすることを真っ向から目指しています... Java にとって非常に馴染みのある環境です ... 注釈をサポートしています。".

言語を JVM の外に移動するという点では、Java ランタイムが多くのオーバーヘッドを課すとは思いません。単純なインストールであり、いくつかの環境変数を設定する必要があります。しかし、次のような多くの利点があります。高度に最適化された成熟したランタイムと大規模なライブラリ セット。JRuby チームは現在、ネイティブ MRI よりも優れたパフォーマンスを報告しています。http://blog.headius.com/2008/08/twas-brillig.html

于 2008-11-14T14:35:30.120 に答える
1

私は Jython と Groovy の経験しかありません。現時点での Jython の最大の欠点は、本番用に推奨されている最新リリース (2.2.1) に「Python-2.2 の機能セットにほぼ対応する」機能セットがあることです ( Jython FAQ )。Python 2.5 と思われるものを実装したベータ版がありますが、現在はバージョンが 1 つ遅れています。JRubyでも同じことが言えるかどうかはわかりません。

于 2008-11-13T20:27:01.813 に答える
1

あなたの経歴がわからないので、なぜGroovyを選ぶべきなのかわかりません。あなたが Java 開発者であれば、Groovy は JRuby や Jython よりも現在の言語に似ていると感じます。Groovy は、言語である Java、プラットフォームである Java、および言語である Ruby の長所を組み合わせたものです。

于 2008-11-13T21:08:11.497 に答える