JRuby: Mit Java und Ruby die Entwicklungsarbeit optimieren

EIn Ruby-Interpreter in Java - das kann doch nur Spielerei sein? Keineswegs: Der Artikel zeigt, wie JRuby die Vorteile zweier Programmiersprachen vereint, und liefert Beispielcode, der den Einstieg erleichtert.

JRuby ist eine 100-prozentige Java-Implementierung eines Ruby-Interpreters. Sie weist zwar nicht alle Funktionen von Ruby auf, verfügt aber dennoch über die meisten der eingebauten Klassen dieser Sprache. ZDNet demonstriert, wie JRuby die positiven Eigenschaften von Java und Ruby kombiniert. Außerdem liefert der Artikel einige wichtige Tipps und ein erstes längeres Code-Beispiel.

Es verseht sich von selbst, dass man sich sowohl mit Java als auch mit Ruby auskennen muss, um optimal mit JRuby zu arbeiten. Reine Java-Programmierer sollten also vielleicht erst einmal die einführenden Artikel zu Ruby lesen, die gleichzeitig die Grenzen dessen abstecken, was hier erläutert wird.

Wo bekommt man JRuby?

Um mit JRuby zu arbeiten, empfiehlt es sich zunächst, die aktuelle Version des Archivs jruby-bin über die Codehaus-Website zu beschaffen. Es enthält alles, was benötigt wird. Dannach muss die Archivdatei an einem beliebigen Ort extrahiert und der Pfad-Variablen your-jruby-dir/bin hinzugefügt werden.

Nun sollte Folgendes ausgeführt werden können:


jruby -v
ruby 1.8.5 (2007-08-23 rev 4201) [ppc-jruby1.0.1]

Erste Arbeitsschritte

Zunächst wird die interaktive Konsole verwendet, die mit diesem Befehl aufgerufen wird:


jirb
irb(main):001:0>

Da es sich bei JRuby um einen Ruby-Interpreter handelt, können beliebige Ruby-Programmzeilen ausgeführt werden.

Das ist soweit keine Überraschung. Doch der wahre Grund, diese Zeilen so auszuführen, statt mit dem nativen Ruby-Interpreter, besteht darin, sich Java zunutze zu machen. Nun kommt das Java-Framework ins Spiel:


irb(main):003:0> require 'java'
=> true

Der Versuch, einfach einige Standardzeilen Java-Code auszuführen, funktioniert jedoch nicht.

Um das Hello world-Beispiel zum Laufen zu bringen, muss man weit zurückdenken. Es geht um ein paar Angelegenheiten, die einem bei Java bereits selbstverständlich geworden sind.

Ein Besuch auf einer API-Seite, die wohl viele seit langem nicht mehr gesehen haben, bringt die Lösung: System ist ja ein Element des java.lang-Pakets, out ist ein Feld von System und println stellt wiederum eine Methode von out dar.

Deshalb ist für einen korrekten Aufruf Folgendes erforderlich:


irb(main):005:0> java.lang.System::out.println("Hello World")
Hello World
=> nil

Um die Sache interessanter zu machen - auch das funktioniert:


irb(main):005:0> java.lang.System.out.println("Hello World")
Hello World
=> nil

Und um zu zeigen, dass man Ruby und Java in derselben Zeile verwenden kann:


irb(main):006:0>  puts java.lang.System::err.println("Hello World")
Hello World
nil
=> nil

Fanden Sie diesen Artikel nützlich?
4 von 4 Lesern fanden diesen Artikel nützlich.

Aktuelle Job-Angebote

ZDNet.de Live

We'll ...

We'll build it, but will they come? t.co/...

10.02.12, 02:37 von zdnetaustralia
Suthe ...

Sutherland Shire Council is locked in a stalemate with Optus over the $110,000 cost of a cable replacement t.co/...

10.02.12, 02:09 von zdnetaustralia
Vodaf ...

Vodafone sheds 30K more customers: t.co/...

10.02.12, 01:55 von zdnetaustralia
Revie ...

Review: Chrome 17, faster than ever, more secure than ever. t.co/...

10.02.12, 01:50 von ZDNet
Ethic ...

Ethical iPhone protests hit Apple stores: t.co/...

10.02.12, 01:42 von zdnetaustralia
Kodak ...

Kodak discontinues camera business t.co/...

10.02.12, 01:29 von zdnetaustralia
Lax ...

Lax data privacy laws hurt Australia t.co/...

10.02.12, 00:13 von zdnetaustralia
Micro ...

Microsoft plans to release a flavour of Windows 8 on ARM chips t.co/...

9.02.12, 23:49 von zdnetaustralia
Why a ...

Why a $25 computer means revolution t.co/...

9.02.12, 23:38 von zdnetaustralia
Googl ...

Google is reportedly getting ready to take on Dropbox with its own cloud-based storage service t.co/...

9.02.12, 23:26 von zdnetaustralia
Twitt ...

Twitter now available in emergencies with satellite providers t.co/...

9.02.12, 23:25 von ZDNet
Lenov ...

Lenovo posts strong Q3 results t.co/...

9.02.12, 22:59 von zdnetaustralia
Nuanc ...

Nuance Q1 falls short amid mobile deal complications t.co/...

9.02.12, 22:55 von ZDNet
Apple ...

Apple supplier Foxconn falls victim to a hack that exposes the private details of staff t.co/...

9.02.12, 22:49 von zdnetaustralia
Patch ...

Patch Tuesday heads-up: 21 vulnerabilities, including 'critical' IE bulletin t.co/...

9.02.12, 22:35 von ZDNet
Court ...

Court agrees to speed up case over Google's privacy policies t.co/...

9.02.12, 22:35 von ZDNet
Oracl ...

Oracle buys Taleo for US$1.9bn t.co/...

9.02.12, 22:26 von zdnetaustralia
Linke ...

LinkedIn posts strong Q4 earnings, up in after hours trading t.co/...

9.02.12, 22:20 von ZDNet
Ice ...

Ice Cream Sandwich update rolling out to select HTC devices in March t.co/...

9.02.12, 22:05 von ZDNet
Faceb ...

Facebook admits it needs to fight scams more efficiently t.co/...

9.02.12, 21:40 von ZDNet