10

多くの Java コンポーネントを再利用するグリーンフィールド Web アプリケーションの開発を検討しています。私にとって、これに対する明白な選択肢は Grails または jRuby on Rails ですが、この 2 つの客観的な比較を見つけるのに苦労しています。次の点に関して、どちらかを選択する明確な理由はありますか?

  1. JMS、EIP などの既存の Java コンポーネント (永続ドメインの外部) との統合の容易さ
  2. 機能テスト フレームワークのサポート
  3. 単一のマシンでのパフォーマンス
  4. スケーラビリティ

開発者の空き状況やコミュニティの活動に関する回答は求めていません。


Grails vs. Railsを確認しましたが、私には関係ありません)

4

6 に答える 6

20

両方を試して、自分に最適な言語と環境を選んでください。箱から出してすぐに使える Grails スタックが Java 統合に適していることは事実ですが、多くのコンポーネントは、Rails との統合から離れた Ruby コードのほんの数行です。Rails 3 は、ActiveRecord を使用する必要のない優れたリリースです。実際、代わりにモデルに Hibernate を使用するのは簡単です。DataMapper、MongoMapper、および SQL データベースと NoSQL データベース用のデータベース アダプターのホスト全体も参照してください。

また、JUnit != 機能テスト。代わりに、Cucumber + Cucumber-Rails + Capybara + Selenium を見て、統合されたブラウザー自動化テスト エクスペリエンスを確認してください。このスタックを示すサンプル アプリケーションについては、https://github.com/elabs/front_end_testingをご覧ください。

Web 統合言語としては Ruby の方が適していることをお勧めします。JRuby は、Java との統合を簡単かつ快適にすると同時に、Java 以外の豊富なライブラリを利用できるようにするというスイート スポットにヒットします。Groovy が Java に「近い」からといって自動的に勝つとは思わないでください。問題を解決する方法を新たに見直すために、まったく異なる環境に足を踏み入れる必要がある場合があります。

開示: JRuby チームのメンバーとしての私の偏見は、私の回答に明らかです。

于 2010-11-17T17:11:47.653 に答える
5

私は Grails をよく知っています (現在、Grails プロジェクトに取り組んでいます) が、JRuby は知りません。したがって、これはおそらく偏った意見と見なしてください。 Java は、Ruby よりも Groovy の方がネイティブであるためです。したがって、JRuby には、Java 固有のキーワードとメソッド ( java_import、 などjava_send) がたくさんあります。簡単に言えば、Groovy は特に Java の世界を対象とした言語であり、JRuby は、まあ、JVM 上に置かれた Ruby です。

Grails には JUnit テストが組み込まれています。

パフォーマンスとスケーラビリティについて多くを語ることはできませんが、Java との優れた統合があれば、Groovy が遅すぎる場合でもパフォーマンスが重要な部分を Java でいつでも作成できます。

于 2010-11-17T13:03:10.540 に答える
4
  • 既存の Java コンポーネントとの統合の容易さ:

groovy は基本的に Java であるため、groovy の方が簡単です。あなたは大きなコンテキストスイッチを持っていません

  • 機能テスト フレームワークのサポート

ruby には、rspec/shoulda/cucumber/steak などの独自のテスト フレームワークが山積みになっています。私はRuby構文が好きなので、それらを好むでしょう

  • 単一のマシンでのパフォーマンス

私が知る限り、マルチスレッドでは grails の方が優れています。これまで、レールはマルチスレッドにあまり関心がなかったからです。現在追い上げ中なので引き分けになる可能性があります。

  • スケーラビリティ

どちらも jvm 環境に合わせてスケーリングします。Java 用の実行中のインフラストラクチャがある場合は、grails を統合する方が簡単です。

于 2010-11-17T14:00:20.587 に答える
4
  1. phoet が言ったように、Grails は第一級の Spring サポートを備えているため、通常、Spring ライブラリの統合は非常に簡単です。これは、JMS プラグインを含む多くのプラグインが行うことです。

    Java コードは、JAR で提供するか、プロジェクトの src/java ディレクトリに入れることができます。Groovy クラスは、Groovy クラスを参照できる Java クラスを参照できます。それはかなりシームレスです。

  2. Grails は、さまざまなプラグインを通じて HtmlUnit、Selenium-rc、および WebDriver をサポートしています。Gebは現在、特に Spock と組み合わせると、多くの関心を集めています。

  3. それらをテストします。最近の比較があるかどうかはわかりませんが、通常、パフォーマンスはアプリケーションに大きく依存します。http://grails.org/http://beta.grails.org/はどちらも単一のマシンで実行されており、どちらも Grails アプリケーションです。

  4. Terracotta を介して Grails をクラスター化するのはかなり簡単だと思います。必要に応じて、プレーンな Tomcat でも実行できます。分散キャッシングにはオプションがあります。SpringSource には、GemFire の形式で独自の (商用) 製品があります。

お役に立てば幸いです。完全な情報開示のために、私は Grails チームのメンバーです。

于 2010-12-02T15:51:08.167 に答える
3

最終的には、個人的な選択、2つの言語の快適さ、リソースの可用性について決定することになりますが、最終的に、GrailsがSpringに基づいているという事実から、それが正しい選択であるという結論に至りました。私のため。他のすべてが失敗した場合、私は実証済みの真のSpringFrameworkの利用にフォールバックできることを知っていました

于 2010-11-17T13:05:43.707 に答える
1

2012年にこの質問に興味を持った新参者のために...

「@CompileStatic を使用すると、Groovy のパフォーマンスは Java よりも約 1 倍から 2 倍遅くなり、Groovy を使用しない場合は約 3 倍から 5 倍遅くなります。(...) これは、Groovy がパフォーマンスが優れているアプリケーションに対応できることを意味します。 Javaにいくらか匹敵します。」

パフォーマンス テスト: Groovy 2.0 対 Java http://java.dzone.com/articles/groovy-20-performance-compared

そして、著者以外にも、私は 2008 年から Groovy を使用しており、CV だけでなく、ビジネス ニーズに合わせて仕事を終わらせるためにも大きな成功を収めています。パフォーマンスは常に、やりたいことと相対的です。

統合に関して言えば、Grails は本当に「とても良い」ものです。既存のライブラリと統合するために、さらに一歩を踏み出す必要はありませんでした。それどころか、Grails の Spring ベースの性質により、作業がさらに容易になりました。

マイクロベンチマークと実際のユースケースについて不満を言う人のために、これはやや古い (Grails 1.8) ですが、Web フレームワーク (Grails 1.3.7) を備えた優れたものです: http://www.jtict.com/blog/rails-ウィケット-grails-play-lift-jsp/

お役に立てれば!

PS .: JRuby やその他の非常に動的な JVM 言語の最近のベンチマークを確認したいと思います。

于 2012-09-02T05:11:36.623 に答える