Here’s a continuation of my scribbled notes from the RubyKaigi. This one from the JRuby implementors. Some of my own thoughts and comments are inserted in parentheses.
Charles Nutter on JRuby
- Quick intro and the impressive live demos of JRuby in action (or as the IRC channel said Nice Live Coding (NLC))
- This summer, work on Ruby 1.9 features (seems there’s an option flag to turn on 1.9 compatibility mode already)
- Current 1.1.3 Progress Report
- A new interpreter that is up to 30% faster
- Compile-time performance enhancements
- Many Rails Bottlenecks fixed
- No new release of JRuby this year but…
- Wanted to show some uses of JRuby
- IDEs (NetBeans, Eclipse, INtelliJ use JRuby in their IDEs
- Swing GUI development
- Swing development can be very complex but Ruby helps to simplify it
- Benefits from the ‘Write once, Run everywhere’
- There are a plethora of options to choose from (why does this seem to happen in the Java world all the time?)
- Cheri
- Profligacy (by the infamous Rails Ghetto-man Zed Shaw)
- MonkeyBars (Proceeded to show an impressive demo)
- MonkeyBars leverages existing GUI utils (that’s a major plus)
- MVC-like structure (hey looks like Rails…)
- Graphics (Showed some really sweet demos of ruby-processing in action)
- Processing had a way to interface to audio input devices
- Remember to check out “A Face for Stephen Hawking”. Wow that code looked really clean…
- Rails (the benchmark app that all implementors need to measure implementation readiness by)
- There has been a shift in Java Web frameworks lately (but still happening at a glacial pace)
- Deployment problem is “solved” (I keep hearing this…)
- mongrel is “old school” (at least for JRuby-based deployments)
- Made mention of Phusion/Passenger but it still had the issue of rails process spawning and how to manage that (Seems Jruby doesn’t have these issues)
- Some war deployment demoes
- A warbler demo (A tool to help create war files)
- Will package in Jruby automagically into the war (That’s very nice)
- Just run warble inside the rails application directory (Hopefully it doesn’t package up a gigantic development.log)
- As simple as GLASSFISH_HOME/bin/asadmin deploy *.war
- Has Rack supoprt (can handle Merb and anything else with Rack support
- Can be configurable
- From his demo, it seems that warble will make a war of anything (aka be careful what directory you run this command)
- Showed some really nice benchmarks of rails and JRuby (I need to put this through the ringer when I get more time)
- Showed another deployment tool called the glassfish gem
- 3MB gem that had everything needed for JRuby on Rails
- Tries to match the agile process
- JRuby Users (in production): CSI’s Disease Surveillance, Oracle’s Mix website, Sun’s Media Cast, Thoughtworks Mingle
Q & A
- Q: The Parser Implementation seems hard. Any war stories
- A: I hate parsers and refuse to write one. Someone wrote something that used J. I don’t know much about it but Tom’s pains dealing with it seem very hard. No plans to change parsers anytime in the near future.
- Q: Object Space & Binding
- A: On Jruby, this will incur an automatic performance penalty. binding & caller will be required each time which incurs a heavy cost
- Q: Non-local break performance?
- A: Implemented as a Java Exception. By doing this, the JVM can optimize that as a Jump. JRuby tries to use this as much as possible behind the scenes for performance