O'Reilly logo

Professional Ruby on Rails™ by Noel Rappin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

16.2. JRuby on JRails

Switching gears to cover a different way to incorporate other languages into Rails, we come to JRuby, a 100-percent Java implementation of a Ruby interpreter and compiler. Although there are a number of languages that have Java Virtual Machine (JVM) interpretations, JRuby has one thing that the others don't — official support from Sun, which employs the core JRuby developers and funds JRuby development. The explicit goal of JRuby, at least from Sun's perspective, was to provide a Java-based platform to run Rails web applications.

This naturally begs the question of why you'd want to run a Rails application on top of a JVM. There are at least three potential answers:

  • From JRuby, your Rails application can access Java-based APIs and services. There are still a number of libraries and tools with Java implementations but not Ruby interpretations. With JRuby, you can access those tools from your Ruby code.

  • JRuby allows for deployment using standard Java .war files, which you can generate from Rake and deploy in any Java web application environment. This is potentially a much simpler deployment story than exists with standard Ruby and Capistrano, especially because JRuby allows access to large-scale enterprise servers such as Glassfish.

  • JRuby has the only full compiler for the Ruby language. Although the goal hasn't been fully achieved as of this writing, the JRuby team expects that JRuby will soon be faster than the current Ruby interpreter. (It should be mentioned ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required