Risposte:
JRuby è l'implementazione di Ruby che gira su una JVM mentre il Ruby di Matz è un'implementazione in C.
Le caratteristiche principali da notare sono:
Ci sono altre differenze che sono elencate nel wiki JRuby:
Sono sorpreso che manchi qualcosa di cruciale in tutte le risposte a questa domanda, relative a GIL .
La differenza principale di cui dovresti preoccuparti esp. nelle applicazioni web come quelle costruite con Rails è vera concorrenza ("Global Interpreter Lock" gratuito). Quando due thread sono in esecuzione (ad esempio, servono 2 richieste utente) con JRuby sono in grado di funzionare contemporaneamente all'interno di un singolo processo, mentre in MRI c'è il GIL (anche con i thread nativi di 1.9) che evita di eseguire il codice Ruby in parallelo.
Per uno sviluppatore di applicazioni questa è la prima cosa da tenere a mente mentre considera JRuby, poiché brilla davvero config.threadsafe!
ma richiede che tu assicuri che il tuo codice (e il tuo codice gemme) sia "veramente" sicuro per i thread.
Potrei sbagliarmi, ma penso che puoi impacchettare un'app JRuby su Rails in un modo che non puoi fare con il RoR normale: guarda Mingle o simile. Permette di vendere senza far cadere i pantaloni / aprire il komono.
Detto questo, non ho abbastanza familiarità con l'imballaggio RoR, quindi non trattenermi :)
per lo più dovrebbe funzionare allo stesso modo. in jRoR puoi accedere a cose che non avresti in RoR. Di solito è principalmente una preoccupazione di spiegamento.
Tuttavia, se l'app RoR utilizza librerie native che non hanno un equivalente in esecuzione sulla JVM, ciò può essere un problema. Comunque la maggior parte delle librerie ha una versione non nativa disponibile (almeno quelle popolari che ho incontrato).
Ci sono già delle ottime risposte qui.
eebbesen ha già trattato le basi e kares (se stesso!) ci ha detto che JRuby non ha GIL.
Aggiungerò da una prospettiva più pratica, ho lanciato app su Ruby on Rails e poi migrato su JRuby per motivi di prestazioni.
Ci sono stati due principali vantaggi in termini di prestazioni: JRuby è (o era) semplicemente più veloce di Ruby in alcune circostanze, e due, la mancanza delle citazioni di Global Interpreter Lock mi ha permesso di fare il multithreading, che, sebbene complicato, ha sbloccato ordini di prestazioni di grandezza .
Un'app di Ruby on Rails molto grande è stata portata e funzionante in un'ora, gemme e tutto il resto. L'unico inconveniente era che le regex di Java sono leggermente diverse da quelle di Ruby. È un risultato monumentale da parte di JRuby.