回答:
JRubyはJVMで実行されるRuby実装であり、MatzのRubyはC実装です。
注意すべき主な機能は次のとおりです。
JRuby wikiにリストされている他の違いがあります:
GILに関連して、この質問に対するすべての回答に欠けている重要なことがあることに驚いています。
あなたが特に気にする必要がある主な違い。Railsで構築されたアプリケーションなどのWebアプリケーションでは、真の同時実行性(「グローバルインタープリターロック」は無料)です。JRubyで2つのスレッドが実行されているとき(たとえば、2つのユーザーリクエストを処理しているとき)は、単一のプロセス内で同時に実行できます。一方、MRIでは、Rubyコードの並列実行を回避するGIL(1.9のネイティブスレッドを使用している場合でも)があります。
アプリケーション開発者にとって、これはJRubyを検討する際に最初に心に留めておくべきことです。JRubyは本当に優れてconfig.threadsafe!
いますが、コード(およびgemsコード)が「真に」スレッドセーフであることを確認する必要があります。
私は間違っているかもしれませんが、JRuby on Railsアプリを通常のRoRではできない方法でパッケージ化できると思います。Mingleなどを見てください。ズボンを落とさず、着物を開けずに販売が可能です。
とは言っても、私はRoRのパッケージ化については十分に詳しくないので、私をそれに拘束しないでください:)
ここにはすでにいくつかの素晴らしい答えがあります。
eebbesenはすでに基本をカバーしており、kares(彼自身)はJRubyにはGILがないと私たちに言っています。
さらに実用的な観点から、Ruby on Railsでアプリを起動し、パフォーマンス上の理由からJRubyに移行しました。
2つの主要なパフォーマンス上の利点がありました。JRubyは、状況によってはRubyよりも速い(またはあった)こと、および2つは、グローバルインタープリターロックkaresの言及がないことで、マルチスレッドを実行できるようになりました。 。
非常に大きなRuby on Railsアプリが移植され、1時間で実行されました。実際のグリッチは、Javaの正規表現がRubyの正規表現とわずかに異なることでした。これは、JRubyにとって記念すべき成果です。