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 
enddopo aver definito delle classi o dei metodi, per esempio, senza dover usare delle parentesi graffe. - Si usa 
requireinvece 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 
nilinvece 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).