JRuby: Mit Java und Ruby die Entwicklungsarbeit optimieren

Bis jetzt wurde die Java-Methode zur Übergabe von Parametern verwendet. Dank Ruby kann man jedoch die Klammern weglassen.


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

Ein weiterer Vorteil von Ruby liegt darin, dass man leicht Einblick in Objekte erlangen kann. Die Reflection-API von Java wird dadurch quasi überflüssig.

Um einen Überblick über alle Methoden zu erhalten, muss einfach die methods-Funktion des Objekts aufgerufen werden, so wie man es auch in Ruby tun würde.

Auf ähnliche Weise lassen sich auch die Konstanten ausfindig machen:


irb(main):009:0> java.lang.Math.constants
=> ["PI", "E"]

Oder die Vorläufer einer Klasse:


irb(main):011:0> java.lang.Math.ancestors
=> [Java::JavaLang::Math, Java::JavaLang::Object, 
ConcreteJavaProxy, JavaProxy, JavaProxyMethods, Object, Kernel]

Sogar der Typ der Klasse lässt sich so anzeigen:


irb(main):012:0> java.lang.Math.class
=> Class
irb(main):013:0> java.lang.class
=> Module

Das Ausschreiben der vollständigen Namen von Paketen ist ermüdend. Um eine Klasse zu importieren, lässt sich auch die Funktion include_class einsetzen.


irb(main):015:0> include_class java.lang.System
=> Java::JavaLang::System

Die Klasse lässt sich dann genauso verwenden, als hätte man eine Anweisung in Java importiert.


irb(main):016:0> System.out.println("Wir wurden importiert")
Wir wurden importiert
=> nil

Das Importieren einer Klasse schlägt jedoch fehl, wenn versucht wird, eine Klasse zu laden, die im Ruby-Namensraum bereits existiert.


irb(main):014:0> include_class java.lang.Math
(eval):1 warning: already initialized constant Math
=> Java::JavaLang::Math

Die Lösung liegt hier in der Umbenennung der Klasse. In diesem Fall wird aus der Klasse Math die Klasse JMath.


irb(main):017:0> include_class('java.lang.Math')
{|package,name| "J#{name}"}
=> ["java.lang.Math"]

Diese kann dann folgendermaßen eingesetzt werden:

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

1 Tag ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

1 Tag ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

1 Tag ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

1 Tag ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

2 Tagen ago