Java è un linguaggio maturo, testato e veloce (contrariamente a quanto affermano i programmatori che non amano questo linguaggio). È anche tuttavia molto prolisso, quindi passando a Ruby il numero di righe di codice diminuirà sensibilmente. C’è anche da aspettarsi che la creazione di prototipi riutilizzabili risulti più facile e veloce.
Somiglianze
Come in Java, in Ruby…
- La memoria è gestita automaticamente tramite un garbage collector.
- Gli oggetti sono fortemente tipizzati.
- Ci sono metodi pubblici, privati e protetti.
- Esistono dei tool di documentazione embeddati, come RDoc, che generano documenti molto simili a quelli generati da JavaDoc.
Differenze
A differenza di Java, in Ruby…
- Non devi compilare il codice, viene eseguito direttamente.
- Ci sono molti toolkit di terze parti per creare interfacce grafiche, per esempio WxRuby, FXRuby, Ruby-GNOME2, Qt, o Ruby Tk (già integrato).
- Puoi usare la parola chiave
end
dopo aver definito delle classi o dei metodi, per esempio, senza dover usare delle parentesi graffe. - Si usa
require
invece diimport
. - Tutte le variabili membro sono private e si può accedere a tutto dall’esterno tramite metodi.
- Le parentesi nelle chiamate ai metodi sono normalmente opzionali e omesse di frequente.
- Ogni cosa è un oggetto, inclusi i numeri come 2 e 3.14159.
- Non vi è un controllo di tipo statico.
- I nomi delle variabili sono semplicemente delle “etichette”, non hanno un tipo associato.
- Non ci sono dichiarazioni di tipo, si può direttamente effettuare
delle assegnazioni a nuove variabili quando ce n’è bisogno ed esse
vengono popolate direttamente (per esempio tramite
a = [1,2,3]
invece cheint[] a = {1,2,3};
) - Non esiste il casting. I tuoi unit test ti dovrebbero dire prima che il codice venga eseguito se verrà lanciata un’eccezione.
- Si creano oggetti usando assegnazioni come
test = TestClass.new("ciao!")
invece ditest = new TestClass("ciao!")
- Il costruttore si chiama sempre “initialize”, e non come il nome della classe.
- Esistono dei “miscugli” (mixins) invece delle interfacce.
- YAML tende ad essere più usato di XML.
- Si usa
nil
invece dinull
. ==
eequals()
sono gestiti in modo diverso in Ruby. Usa==
quando vuoi testare un’equivalenza in Ruby (equals()
in Java) e usaequal?()
quando vuoi sapere se due oggetti sono lo stesso (==
in Java).