Ruby and legacy Java Applications

J

Joe Wölfel

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?
 
P

Post Tudbc

Joe said:
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.
 
C

Charles Oliver Nutter

Joe said:
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?

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
 
R

Richard Conroy

In general the easiest way would be to have the Ruby code implement a Jav= a
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 wrap=
ped
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.
 
C

Charles Oliver Nutter

Richard said:
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.

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,120
Latest member
ShelaWalli
Top