JRuby on rails 2.2.2 new feature(3) : Thread Safe
昨日のTechDaysでの講演がBuilder zdnetの記事になってました。ちょっと恥ずかしいです。
参加していただいた皆様、ありがとうございました。
あとJavaFX1.0がリリースされたので、ちょっとさわりはじめてみました。Netbeans6.5 on OSXで日本語が文字化けしてしまいます。Windowsでの回避方法は分かったのですが、macではわかりません。macは文字コードUTF-8だった気がするのですが、気のせいでしょうか?どなたか対処法ご存知でしたら、教えてください。
前置きが長くなりましたが、今回は上の記事にもありますが、Rails2.2.2のスレッドセーフとJRubyについてです。コネクションプールは次回。
ご存知の通り、Rails2.2.0からはスレッドセーフとなりました。この恩恵を一番受けるのが、JRubyです。
まずは次の図をご覧ください。

Ruby1.8.7(MRI)の場合、1つのOSのネイティブスレッドがRubyインタプリタに割り当てられ、GILがあって、Rubyのスレッドはグリーンスレッド(ユーザ空間のスレッド)として動作することになります。そのため、Railsがスレッドセーフになっても、Ruby自体がグリーンスレッドのため、グリーンスレッドレベルでのマルチスレッド化となり、Rubyインタプリタ自体はシングルスレッドで動作することになります。そのため、パフォーマンスを向上させるためには、複数のインタプリタを起動させる事が必要となります。
これに対して、JRubyの場合、JVMがネイティブスレッドに対応しており、JRubyのグリーン・スレッドが1対1でJVMに割り当てられたネイティブスレッドにマッピングされることになりますので、実質Railsがネイティブスレッドで動作することになります。そのため、MRIと同じ1つのプロセスでもよりよいパフォーマンスを得ることができるようになっています。
このようにRailsがスレッドセーフになったことで、JRuby on Railsがパフォーマンスという面で考えても非常によい選択肢となったのではないでしょうか?
2008/12/10 by Tomo Nozawa
« Rails2.2 new feature... | メイン | JavaFX on Netbeans... »
野澤さん、システムのデフォルトの JDK はどのバージョンを使っていますか? 1.5 だとUTF-8でそのままいけます。1.6 だとひょっとすると javafx の実行環境やコンパイラが SJIS で動くので(今はどの JDK を使うかを NetBeans 側から指定できません)文字化けするかもしれませんね。確認していないのですが。
Posted by Masaki Katakai on 12月月 10日, 2008年 at 06:52 午後 JST #
自分はJDK1.5のOSX10.4、Netbeans6.5でproject.propertiesのsource.encodingをSJISにして回避しました。
Posted by chr on 12月月 11日, 2008年 at 12:44 午前 JST #