質問

JRubyとJRuby on Railsを試してみたいと思っています。 JRuby on RailsとRuby on Railsの違いについての情報を見つけるのに苦労しています。

注意する必要がある違いは何ですか?

役に立ちましたか?

解決

JRubyはJVM上で実行されるRuby実装であり、MatzのRubyはC実装です。

注意すべき主な機能は次のとおりです。

  1. JrubyはJava VMで実行され、Javaバイトコードにコンパイルまたは解釈されます。
  2. JRubyはJavaコードと統合できます。 Javaクラスライブラリ(.jar)がある場合は、Rubyコード内からJRubyでそれらを参照して使用できます。他の方向では、Java内からJRubyコードを呼び出すこともできます。 JRubyはJVMおよびアプリケーションサーバー機能も使用できます。
  3. JRubyは通常、SunのglassfishやTomcat WebサーバーなどのJavaアプリケーションサーバー内でホストされます。
  4. JRubyでネイティブRuby gemを使用することはできませんが、一般的なRubyライブラリのほとんどにJRuby実装があります。

JRuby wikiにリストされている他の違いがあります:

他のヒント

この質問に対するすべての回答に、 GIL に関連する重要なものがないことに驚いています。

特に注意すべき主な違い。 Railsで構築されたものなどのWebアプリケーションでは、真の同時実行性(" Global Interpreter Lock"無料)です。 JRubyで2つのスレッドが実行されている(たとえば、2つのユーザーリクエストに対応している)場合、1つのプロセス内で同時に実行できますが、MRIでは、Rubyコードの並列実行を回避するGIL(1.9のネイティブスレッドでも)があります。

アプリケーション開発者にとって、これは config.threadsafe!で本当に輝いていますが、コード(およびgemコード)を確認する必要があるため、JRubyを検討する際に最初に留意することです「本当に」スレッドセーフ。

間違っているかもしれませんが、JRuby on Railsアプリを通常のRoRではできない方法でパッケージ化できると思います-Mingleなどを見てください。ズボンを落とすことなく/着物を開くことなく販売することができます。

とはいえ、私はRoRパッケージについて十分な知識がないので、それに固執しないでください:)

ほとんど同じように動作するはずです。 jRoRでは、RoRにはないものにアクセスできます。通常、主に展開の問題です。

ただし、RoRアプリが、JVM上で実行される同等のライブラリを持たないネイティブライブラリを使用している場合は、苦痛になる可能性があります。ただし、ほとんどのライブラリには非ネイティブバージョンがあります(少なくとも私が出会った人気のあるもの)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top