Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Web Development

JRuby: Making the Enterprise See Red


Added Benefits of the Java Platform

Charles also pointed to Java's superior unicode and threading support. JRuby also provides support for Ruby's 1.8 byte-bag String and the multibyte library that comes with Rails. JRuby offers full support for the Ruby threading API, even the unsafe operations Criticalize, Kill, Raise. But it also lets you take advantage of Java's true concurrent threads. The JVM in JRuby creates one Java thread for each Ruby thread. "This allows you to use multiple cores automatically out of the box," Charles pointed out. "If you run a typical JRuby app you'll see that all of your cores in your system are in use; in Ruby you will only see one." As with Java apps, you can also spin off long-running jobs to avoid bottlenecks.

The Java platform also provides a number of options for avoiding Rails deployment headaches. As with Ruby, you can use Mongrel for JRuby deployment, but it's not advisable because each mongrel process starts up a new JVM. A better option in JRuby is a new Rails plugin for building .war files named "Goldspike" (an allusion to the transcontinental railroad bringing east and west together). The Goldspike-generated .war file lets you deploy a single file archive containing all of the app dependencies static files, rhtml files, the full JRuby implementation and standard libraries. You can deploy to any Java application server--Tomcat , JBoss, WebSphere, WebLogic and, of course, Glassfish. In organizations with an existing app server setup this has an obvious advantage. Charles and Thomas also demonstrated Sun's new project that runs GlassFish V3 as Ruby gem. As evidence of the rapid developments focused on Ruby, Charles joked that the project, "is only two weeks old and it's already at Version 10!"

For skeptics wary of the hassles of using Java2EE, Charles sought to assure them that access to the "good" J2EE features was worth it. "There's a lot bathwater, but a lot of baby too," he noted, pointing to JMS, the Java Persistence and Transaction APIs, and again, the deployment and scalability advantages.

Charles and Thomas also praised Sun's NetBeans 6.0 as the ideal development platform for JRuby. It's due out later this year, but the Milesone 9 version available now already supports developing JRuby, Ruby, and Rails applications. They demonstrated the IDE's ruby-savvy features including code completion, showing available classes and methods for the current expression, along with the associated RDoc documentation, syntax highlighting, and robust debugging (breakpoints, call-stack navigation, and so on.)

To underscore JRuby's ready-for prime-time status, Charles noted that some major projects being written in JRuby, including Mingle 1.0 from ThoughtWorks, Mingle is a collaborative application lifecycle management tool for Agile IT projects.

For more information check out the JRuby home page, as well as Charles' blog, and Thomas' blog.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.