Domanda

Sto cercando di provare JRuby e JRuby su Rails. Ho difficoltà a trovare informazioni sulla differenza tra JRuby on Rails e Ruby on Rails.

Quali sono le differenze che devo cercare?

È stato utile?

Soluzione

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:

  1. Jruby viene eseguito su VM Java ed è compilato o interpretato in base al codice byte Java.
  2. JRuby può integrarsi con il codice Java. Se si dispone di librerie di classi Java (.jar), è possibile fare riferimento e usarle dal codice Ruby con JRuby. Nella direzione opposta è anche possibile chiamare il codice JRuby da Java. JRuby può anche utilizzare le funzionalità JVM e del server delle applicazioni.
  3. JRuby è generalmente ospitato all'interno di server di applicazioni Java come Sunfish Glassfish o persino il server Web Tomcat.
  4. Sebbene non sia possibile utilizzare gemme Ruby native con JRuby, esistono implementazioni JRuby per la maggior parte delle librerie Ruby popolari.

Esistono altre differenze che sono elencate nel wiki JRuby:

Altri suggerimenti

Sono sorpreso che manchi qualcosa di cruciale in tutte le risposte a questa domanda, relative a GIL .

La principale differenza di cui dovresti preoccuparti esp. nelle applicazioni web come quelle create con Rails è vera concorrenza ("Blocco dell'interprete globale" 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 con config.threadsafe! ma richiede che tu ti assicuri il tuo codice (e il tuo codice gemme) essere " veramente " thread-safe.

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 simili. Permette di vendere senza far cadere i pantaloni / aprire il komono.

Detto questo, non ho abbastanza familiarità con l'imballaggio RoR, quindi non mi trattenere :) :)

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top