JRuby: when Ruby grows up and gets a job

Accepted Session
Long form
Scheduled: Thursday, June 18, 2009 from 3:50 – 5:35pm in Fremont


Ruby has established itself as a first-tier language for developing web applications. Now it's time to think about everything else.


The Rails community is notoriously fickle when it comes to hosting, monitoring, and packaging their applications. In a few short years, we’ve seen no less than three “recommended” deployment models come and go: FastCGI + lighttpd, Mongrel + load-balancing proxy, and now Passenger/mod_rails. There’s another option which gets much attention, though, despite its many strengths: running Rails in a Java application server via JRuby.

There are good reasons to consider this model all by itself, but websites are only one small part of what the Java ecosystem supports. Once you open yourself up to the possibility of using Java infrastructure for your Ruby code, there are a whole raft of other high-quality services and libraries available to you, covering everything from scalable message queues, shared object caching, and distributed computation frameworks. You can even tame legacy databases and enterprise platforms like Oracle, SAP, and the dreaded “portal”.

Furthermore, now that Google App Engine supports Java — and JRuby was a big part of that announcement — you can deploy your Ruby code onto Google’s servers for free. Once you’re ready to upgrade to your own deployment, there are numerous high-quality open source Java application servers available (Glassfish, Tomcat, JBoss, Jetty, etc.) which you can run on your own system.

Come see how JRuby makes writing Java apps less painful, and how the Java ecosystem’s focus on stable, scalable infrastructure can make your Ruby apps more reliable and performant. Bring a laptop with a recent JDK installed, and you’ll be able to follow along with the entire process of getting basic Ruby apps up and running in a Java application server, using JDBC to talk to backend databases, and even wrapping a legacy Java library in a “Ruby-like” API layer, all without ever going anywhere near a compiler or an XML config file.

Speaking experience