Ruby and legacy Java Applications


#1

What are some good ways to integrate Ruby into legacy Java
applications? I realize
I can execute small Ruby scripts from Java like this:

     Ruby runtime = Ruby.newInstance();
     runtime.evalScriptlet("puts 'Hello from Ruby'");

However, this seems to lend itself only to small snippets of Ruby.
Often I’m more likely
to have a larger body of Ruby code that includes many files, gem
dependencies, and
the ability to work with legacy installers. Is there an easy way to
accomplish this?


#2

Joe Wölfel wrote:

What are some good ways to integrate Ruby into legacy Java
applications? I realize
I can execute small Ruby scripts from Java like this:

     Ruby runtime = Ruby.newInstance();
     runtime.evalScriptlet("puts 'Hello from Ruby'");

However, this seems to lend itself only to small snippets of Ruby.
Often I’m more likely
to have a larger body of Ruby code that includes many files, gem
dependencies, and
the ability to work with legacy installers. Is there an easy way to
accomplish this?

Try the free tool TudbcJRubyServlet
http://www.tudbc.org/tudbcjrubyservlet
which allows you to use JRuby (which is compatible with Ruby 1.8.6) in a
Java EE (such as GlassFish, Resin, Tomcat, etc), which automatically
will allow you to use your Java codes.


#3

Joe Wölfel wrote:

dependencies, and
the ability to work with legacy installers. Is there an easy way to
accomplish this?

In general the easiest way would be to have the Ruby code implement a
Java interface and get that instance back into Java. There’s a few
examples on wiki.jruby.org. Does that sound lke what you want?

  • Charlie

#4

Richard C. wrote:

to gain access to easy JIRB debugging.
Yup, ought to work just fine. I suppose it only depends on whether you
control the entry point or not. If you’re adding Ruby to an existing
Java application, you don’t necessarily have that option. But writing it
in Ruby to start, just calling out to Java as needed, is certainly a
simpler way.

  • Charlie

#5

On Thu, Dec 4, 2008 at 7:28 PM, Charles Oliver N.
removed_email_address@domain.invalid wrote:

I’m more likely
to have a larger body of Ruby code that includes many files, gem
dependencies, and
the ability to work with legacy installers. Is there an easy way to
accomplish this?

In general the easiest way would be to have the Ruby code implement a Java
interface and get that instance back into Java. There’s a few examples on
wiki.jruby.org. Does that sound lke what you want?

I am just curious, but couldn’t you also have a JRuby script construct
and execute
your application’s mainline? Or duplicate the behaviour of the
mainline in some way.

That way you can extend Java functionality with Ruby, because you have
wrapped
your entire app up in Ruby to begin with.

I have to admit that this is something I have been thinking about for
a while, if only
to gain access to easy JIRB debugging.