Bisher hat man lediglich gesehen, wie sich Scripts in JRuby aus Java heraus evaluieren lassen. Das geht auch anders herum, sodass sich Java-Bibliotheken aus JRuby heraus aufrufen lassen. Das funktioniert sowohl für Scripts, die man auf der JRuby-Kommandozeile anfordert, als auch innerhalb der JSR-223-Umgebung. Das Einbinden der Java-Klassen und Bibliotheken erfolgt über spezielle require-Anweisungen im Ruby-Code, wie das folgende Beispiel zeigt.
require 'java'
# Enum verwenden
enumVal = java.lang.annotation.ElementType::FIELD
# JavaBean erzeugen und Werte setzen
bean = org.acme.MyBean.new
bean.setMessage("Hallo JRuby")
bean.setAnEnum(enumVal)
# JavaBean zurückgeben
return bean
Wie man sieht, lassen sich Java-Klassen recht einfach nutzen – dafür müssen sie im Klassenpfad vorhanden sein. Damit ist es möglich, auch komplexere Objekte und Objektgraphen an Ruby-Scripts zu übergeben. Auf die umgekehrte Weise lassen sich die Objekte wieder zurückgeben und in Java auswerten.
Die ganze Bandbreite der Integration von Java in JRuby ist hier beschrieben, wobei der Artikel nur auf die JSR-223-Seite der Integration eingegangen ist.
Die Integration mit anderen Programmiersprachen ist in JDK 6 gut gelöst, wenn auch die API teilweise etwas umständlich ist. Die Liste der unterstützten Sprachen ist lang, sodass es sich lohnt, die Integration über die Schnittstelle durchzuführen.
(ane)
Heiko W. Rupp
ist Diplom-Informatiker und arbeitet bei Red Hat als Entwickler an der Systemmenagementplattform RHQ.
Themenforum: Java