Talk by Charles Nutter, on Friday 2nd March
How to install JRuby :
- rvm install jruby and unzip or
- download tar/zip file from jruby.org or
- you can use a windows installer from jruby.org
What is bad compared to pure Ruby ?
- memory footprint, mostly due to the (better) GC; objects are larger, but fewer; BUT : lower memory when using concurrency (for example using rails, each http request will spawn a new Ruby process consuming the same amount of RAM, compared to JRuby spawning some new threads and keeping its amount of RAM consumed stable and keeping barriers between those threads)
- c extensions, still experimental
Good
- Ruby itself (both 1.8.7 and 1.9.2. modes in the same jruby : start it with jruby –1.9)
- sandboxed jruby (for non thread safe programs, runs in isolated mode)
JVM
- best GC, support dynamic language
- ruby code used with Jruby ends up in native code, optimized by the JVM
- stable threading : jvm threads are OS threads;
- libraries : tens of thousands of JVM library(Swing demo : Charles built a Swing panel with a button adding statements to jirb )
- lots of tools : visualvm (demo stressed gc with old and young objects)
- invoke dynamic : ruby is about calling methods, the jvm from 1.7 optimizes those calls
Android
- Ruboto : gem install ruboto ; ruboto app; rake : you’re done creating an Android app with JRuby
- Ruboto irb
- Jruby 1.7 : invoke dynamic, dalvik enhancement, ruby 1.9 by default
Bonus
- Charles used the redcar editor, written in jruby + swt
- trinidad : tomcat like launcher with ruby wrapper
- torquebox : jboss like launcher (messaging, schedulers, etc…)
- During his Android demo, Charles used android screencast
- warbler for war/jar : to wrap your ruby app in a war
- you can deploy your apps to engine yard cloud