Bitter Java, Sweeten with JRuby

53 %
47 %
Information about Bitter Java, Sweeten with JRuby

Published on February 6, 2008

Author: bsbodden



Ways to make Java applications better and less complex with JRuby

Bitter Java? Sweeten with JRuby Brian Sam-Bodden

Java Today

Java is a 10+ year old programming language Java is the new COBOL Java is Dead Long live Java!

Java is not going anywhere Because Java is everywhere! But Java is not perfect and it is adjusting to keep up

Java has its jewels JDBC, JMS, Servlets and its blemishes... EJB < 3, JSF

But we have a secret weapon... On this corner... presenting the amazing, highly tuned, multi- platform computing engine that dominates the present and permeates the future The JVM

The are more than 200+ languages implementations for the Java VM The Java VM is like that neighborhood with low taxes and good schools... everyone wants in Regardless of where we go with Java “the language”, Java “the platform” is here to stay

Groovy, JRuby and all the new kids on the block are just new additions to our beloved Swiss army knife

What’s Missing?

Java is solid on the server-side Java powers the enterprise Web development with Java has not been all that successful in the presentation tier Dynamic languages and frameworks based on dynamic languages have proved to be better suited for this

Why Ruby?

Why not?

✓Object-Oriented ✓Elegant ✓General Purpose ✓ Multi-paradigm Ruby ✓ Interpreted is... ✓Reflective ✓Dynamic ✓ Garbage-collected

Created by Yukihiro “Matz” Matsumoto Developed in 1993, released in 1995 Blended parts of his favorite languages: Perl, Smalltalk, Sather, Eiffel, CLU, Ada and Lisp More popular than Python in Japan

Ruby Ideals: Programming should be fun! Principle of Least Surprise “I believe people want to express themselves when they program. They don’t want to fight with the language. Programming languages must feel natural to programmers.” Matz


A non-Java language for the Java platform A Ruby interpreter written in Java Started life in 2001 Current version is 1.0 (1.1b1) Open Source

Oh, come on! Grow up!

Ruby libraries from Java (like ActiveRecord) ➡Using Bean Scripting Framework (JDK <= 1.5) ➡Using JSR 223 Scripting API (JDK > 1.5) Java libraries from Ruby (Swing, SWT)

RubyGems comes pre-installed Mongrel supports JRuby Rails just works No native extensions (unless by native you mean Java ;-)

JRuby does not produce bytecode artifacts for the Ruby code (yet!) This is key difference with Groovy* Corporate backing :-) Sun and Thoughtworks have folks working on JRuby full-time

All you need to run JRuby is the Java JDK (=>1.4)

Familiar? pure Ruby with Java players

Let’s try some interactive JRuby Fire up the JRuby console using Java Web Start Java version of IRB (Interactive RuBy) tool

IRB is the best to get acquainted with Ruby

A Simple Comparison

Let’s do some file I/O... First we need a text file

package com.integrallis; import; Let’s open the text file import; import; and print out its contents public class MyFileReader { Java public static void main(String[] args) { try { BufferedReader in = new BufferedReader(new FileReader(quot;read_me.txtquot;)); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); } catch (IOException e) { e.printStackTrace(); } } }

Let’s do it the Ruby way!

But wait! This just in... ... Ruby encapsulates common behaviors ➡ A one-liner version, yet is readable!


For Web applications... Best of both worlds: ➡Dynamic-Framework on the Front End (Rails) ➡Solid Back End battle tested technologies (Spring/EJB3)

Got API-itis? Ruby’s ability to create concise DSLs paired with Java’s richness of APIs and frameworks Java APIs are robust, fully-featured, flexible... ...which makes them complex A JRuby DSL can help us in the 80-20 scenarios

Got API-itis? JRuby+SWT

There are JRuby DSLs all ready to use... Today! ActiveRecord-JDBC - OR-Wrapping Raven - Wrapper for Rake, RubyGems and Maven AntBuilder - Wrapper for Ant JRake - Wrapper for Rake JtestR - Test Java code with the best Ruby testing tools

JRuby on Rails

Java & JEE the most prevalent language the most complete enterprise platform a rich ecosystem of web frameworks a vibrant open source community

Java & JEE plagued by mediocre web frameworks not well suited for rapid prototyping in need of a dynamic language web framework one level of abstraction too low for the web

Who could help Java on the Web Tier?

Ruby on Rails a revolutionary web framework complete MVC solution fast prototyping killer AJAX support

Ruby on Rails a DSL for the web leading the pack on the web 2.0 front born from a product, not a committee a vibrant open source community

JRuby on Rails the agility of rails - the scalability of Java JRuby likely to surpass Ruby in speed sneak Ruby and RoR into the enterprise!

JRuby on Rails

JRuby on Rails

JRuby on Rails JEE servers are good at scaling up no more multi-process management use JRuby “multi-VM” support leverage the maturity of the JVM and JEE servers

JRuby on Rails deploy your Rails app as a WAR leverage JDBC from ActiveRecord

JRuby & Rapid Spring Prototyping

JRuby+Spring RAD a simple example by the folks at jobster use JRuby for rapid prototyping Spring controller that delegates to a JRuby controller JRuby controllers live alongside your JSPs

JRuby+Spring RAD Simple JRuby controller

JRuby+Spring RAD JSP view provides input to the Ruby controller

JRuby+Spring RAD JSP view provides input to the Ruby controller

JRuby+Spring RAD this experimental library supports: ✓access to Spring beans from JRuby code ✓ access to Hibernate queries

JRuby on Springy Rails

JRoR on Spring Chris Nelson’s work ✓use rails-integration plugin ✓ expose WebApplicationContext in a RoR controller ✓include Spring - Spring plugin for JRuby

JRoR on Spring ✓install goldspike rails-integration plugin on you JRoR app ✓ rake war:standalone:create to package a WAR with: ➡Your RoR app ➡JRuby and Rails libraries

JRoR on Spring rake war:standalone:create in action:

JRoR on Spring generated WARs work on many servers: ✓Tomcat ✓Glassfish ✓Jetty ✓JBoss

JRoR on Spring ✓ add Chris’ Spring module:

JRoR on Spring ✓ Expand the generated WAR ✓Add Spring application ➡ Application Code ➡ Libraries (Jars) ➡ Config Files

JRoR on Spring ✓ access your Spring beans from a RoR controller

JRoR on Spring ✓add a new face to your Spring applications ✓ leverage thousands of open source projects ✓leverage the good parts of JEE like JDBC and JMS

Resources JRuby JRuby Rails Integration RAD Spring Prototyping with JRuby Chris Nelson’s Work

Add a comment

Related pages

Jruby | LinkedIn

Jruby. Articles, experts, jobs, and more: ... Java (976 members) JavaScript (964 members) Ruby on Rails (945 members) MySQL (752 members) Git (738 members)
Read more

Using the Ruby Development Tools plug-in for Eclipse

This article introduces using the Ruby Development Tools ... JRuby is a project that allows Ruby code to compile to ... of Bitter Java and Bitter EJB ...
Read more

ruby - Does Scala scale better than other JVM languages ...

Here is the only way I know to ask it at the moment. As Understand it Scala uses the Java Virtual Machine. I thought Jruby did also. Twitter switched its ...
Read more

Brian H. Prince: October 2007

... A Peek Under the Covers" and "Bitter Java? Sweeten with JRuby ... co-hosts the Java Posse podcast-a regular Java ... October (14)
Read more

Bitter JS? Sweeten it then! - vViktor's blog

Bitter JS? Sweeten it then! ... Although functions as objects doesn't seem familiar to Java developers who associate objects with classes because they are ...
Read more

Jeff Blankenburg

... A Peek Under the Covers” and “Bitter Java? Sweeten with JRuby! ... open source evangelist, Central Ohio Java Users Group ( ...
Read more

Archives for November 2007 | Dianne Marsh

Monthly Archives: November 2007 Lightning Talks Overview for 11/30/2007. ... JBoss Seam is a modern enterprise Java application framework, ...
Read more

Releases · nidev/rbitter · GitHub

nidev / rbitter. Code. Issues 0. Pull requests 0. Pulse Graphs Releases Tags. Latest release. v0.2.4; a5a3e4b Rbitter 0.2.4 Release Note. nidev released ...
Read more