di: Gianluigi Spagnuolo 29 Giugno 2009
Può capitare che nel bel mezzo di un porting di un'applicazione da Java a Ruby ci si renda conto della mancanza del binding di una libreria. La soluzione breve è rinunciare, quella geek è iniziare a scriversi il porting della libreria, quella pratica è continuare a utilizzare la libreria Java con JRuby.
In questo articolo vedremo dunque come utilizzare delle classi Java all'interno di applicazioni Ruby usando l'implementazione JRuby. Il modo più semplice per provarlo è quello di scaricare una versione recente di NetBeans. L'IDE della Sun utilizza di default, per il supporto al linguaggio Ruby, proprio JRuby.
Iniziamo con un semplice esempio che mostra come utilizzare delle classi Java, come ad esempio la classe Random, direttamente da un applicazione Ruby. Da Netbeans creiamo un nuovo progetto Ruby e scegliamo JRuby come "Ruby platform".
Figura 1. Selezionare la piattaforma JRuby
include Java
e istanziando un oggetto della classe java.util.Random
rnd = java.util.Random.new
Possiamo ora utilizzare i metodi di Random per generare dei numeri casuali, ad esempio:
puts rnd.nextInt puts rnd.nextLong puts rnd.nextFloat puts rnd.nextDouble puts rnd.nextGaussian
In alternativa è anche possibile utilizzare la direttiva import
import java.util.Random rnd = Random.new
oppure utilizzare include_class che permette anche di indicare degli alias, ad esempio
include_class 'java.util.Random' do |pkg,name|
"JRandom"
end
in quest'ultimo caso un oggetto di tipo java.util.Random va creato utilizzando il nome JRandom
rnd = JRandom.new
Gli alias sono utili soprattutto quando c'è conflitto tra i nomi delle classi Ruby e quelle Java. Un ulteriore meccanismo consiste nel creare un modulo ad-hoc e utilizzare include_package
module JavaUtil
include_package 'java.util'
end
rnd = JavaUtil::Random.new
Nell'esempio il modulo JavaUtil contiene tutto il package java.util e non solo la classe Random. Una piccola curiosità, i nomi Java sono convertiti automaticamente anche in stile Ruby, ad esempio è possibile riscrivere il primo esempio in questo modo:
include Java rnd = java.util.Random.new puts rnd.next_int puts rnd.next_long puts rnd.next_float puts rnd.next_double puts rnd.next_gaussian
Anche i path vengono convertiti in stile Ruby, ad esempio i due percorsi seguenti sono equivalenti:
java.util.Random # stile Java Java::JavaUtil::Random # stile Ruby
ovvero vengono rimossi i punti, viene usato lo stile CamelCase per i nomi e il tutto viene messo nel package Java. Un esempio più esplicativo è quello relativo alla classe ParserFactory:
org.xml.sax.helpers.ParserFactory # stile Java Java::OrgXmlSaxHelpers::ParserFactory # stile Ruby
Guida ActiveSupportUna panoramica sulle funzionalità più importanti di ActiveSupport:... |
Guida Ruby On Rails 2Scoprire le novità di Ruby on Rails 2, memorizzare i dati con... |
Guida Ruby e il WebUn percorso alla scoperta delle potenzialità offerte da Ruby nella... |
Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .
Iscriviti alla newsletter