JRuby と JRuby on Rails を試してみたいと思っています。JRuby on Rails と Ruby on Rails の違いに関する情報を見つけるのに苦労しています。
注意が必要な違いは何ですか?
JRuby と JRuby on Rails を試してみたいと思っています。JRuby on Rails と Ruby on Rails の違いに関する情報を見つけるのに苦労しています。
注意が必要な違いは何ですか?
JRuby は JVM 上で実行される Ruby 実装ですが、Matz の Ruby は C 実装です。
注目すべき主な機能は次のとおりです。
JRuby wiki にリストされている他の違いがあります。
GILに関連して、この質問に対するすべての回答に重要なことが欠けていることに驚いています。
特に気にする必要がある主な違い。Rails で構築されたものなどの Web アプリケーションでは、真の同時実行性があります(「グローバル インタープリター ロック」は無料です)。JRuby で 2 つのスレッドが実行されている場合 (たとえば、2 つのユーザー要求を処理している場合)、それらは単一のプロセス内で同時に実行できますが、MRI では、Ruby コードの並列実行を回避する GIL (1.9 のネイティブ スレッドであっても) があります。
アプリケーション開発者にとって、これは JRuby を検討する際に最初に頭に入れておくべきことです。なぜなら、JRuby は非常に優れてconfig.threadsafe!
いますが、コード (および gems コード) が「本当に」スレッドセーフであることを確認する必要があるからです。
私は間違っているかもしれませんが、通常の RoR ではできない方法で JRuby on Rails アプリをパッケージ化できると思います。Mingle などを見てください。ズボンを落としたり、袴を開けたりせずに販売できます。
とは言っても、私は RoR パッケージングに十分慣れていないので、我慢しないでください :)
ほとんどの場合、同じように動作するはずです。jRoR では、RoR にはないものにアクセスできます。通常、主に展開に関する問題です。
ただし、RoR アプリが、JVM で実行される同等のライブラリを持たないネイティブ ライブラリを使用している場合は、面倒な作業になる可能性があります。ただし、ほとんどのライブラリには、利用可能な非ネイティブ バージョンがあります (少なくとも、私が遭遇した一般的なもの)。