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

Firefox 126 erschwert Tracking und stopft Sicherheitslöcher

Mozilla verteilt insgesamt 16 Patches für Firefox 125 und älter. Zudem entfernt der Browser nun…

1 Tag ago

Supercomputer-Ranking: Vier europäische Systeme in den Top Ten

Einziger Neueinsteiger ist das Alps-System in der Schweiz. Die weiteren Top-Ten-Systeme aus Europa stehen in…

2 Tagen ago

Angriffe mit Banking-Malware auf Android-Nutzer nehmen weltweit zu

Im vergangenen Jahr steigt ihre Zahl um 32 Prozent. Die Zahl der betroffenen PC-Nutzer sinkt…

2 Tagen ago

Künstliche Intelligenz fasst Telefonate zusammen

Die App satellite wird künftig Telefongespräche in Echtzeit datenschutzkonform mit Hilfe von KI zusammenfassen.

2 Tagen ago

MDM-Spezialist Semarchy stellt Data-Intelligence-Lösung vor

Als Erweiterung von Master-Data-Management ermöglicht es die Lösung, den Werdegang von Daten verstehen und sie…

2 Tagen ago

Apple stopft 15 Sicherheitslöcher in iOS und iPadOS

Sie erlauben unter anderem das Einschleusen von Schadcode. In älteren iPhones und iPads mit OS-Version…

2 Tagen ago