Frage

Ich bin auf der Suche JRuby und JRuby on Rails auszuprobieren. Ich habe Probleme bei der Suche nach Informationen, was ist der Unterschied zwischen JRuby on Rails und Ruby on Rails.

Was ist der Unterschied Ich brauche zu achten?

War es hilfreich?

Lösung

JRuby ist die Ruby-Implementierung, die auf einer JVM läuft während Matz Ruby eine C-Implementierung ist.

Die wichtigsten Funktionen zu beachten sind:

  1. läuft JRuby auf Java VM und es wird entweder kompiliert oder auf Java-Bytecode interpretiert nach unten.
  2. JRuby kann mit Java-Code integrieren. Wenn Sie Java-Klassenbibliotheken (.jar ist) haben, können Sie sie mit JRuby aus Ruby-Code verweisen und verwenden. In der anderen Richtung rufen Sie können auch JRuby Code aus Java. JRuby kann auch die JVM und Application-Server-Funktionen verwenden.
  3. JRuby ist in der Regel innerhalb von Java-Anwendungsserver wie Sun Glassfish oder sogar dem Tomcat Web-Server gehostet werden.
  4. Sie können zwar nicht verwenden nativen Ruby-Gems mit JRuby gibt es JRuby-Implementierungen für die meisten der beliebten Ruby-Bibliotheken.

Es gibt noch andere Unterschiede, die bei der JRuby Wiki aufgeführt sind:

Andere Tipps

Ich bin überrascht, es gibt eine wichtige Sache in allen Antworten auf diese Frage fehlt, bezogen auf GIL .

Der Hauptunterschied sollten Sie über esp kümmern. in Web-Anwendungen wie diejenigen mit Rails gebaut ist true Gleichzeitigkeit ( "Globaler Interpreter Lock" frei). Wenn zwei Threads aktiv sind (zB 2 dient Benutzeranforderungen) mit JRuby sind sie in der Lage, gleichzeitig in einem einzigen Prozess ausgeführt wird, während in der MRI dort die GIL (auch mit 1,9 nativen threads), dem Code Rubin vermeidet parallel ausgeführt werden.

Für Anwendungsentwickler dies ist das erste, was im Auge zu behalten, während JRuby man bedenkt, wie es wirklich mit config.threadsafe! scheint aber erfordert, dass Sie sicherstellen, dass Ihr Code (und Ihr gems-Code) „wirklich“ seinen Thread-sicher.

Ich kann mich irren, aber ich denke, Sie eine JRuby on Rails-Anwendung in einer Art und Weise verpacken können Sie mit normalen RoR nicht tun können - siehe Mingle oder ähnliches. Macht es möglich, ohne Fallenlassen Ihre Hosen zu verkaufen / die komono öffnen.

Das heißt, ich bin nicht vertraut genug mit RoR Verpackung, so nicht halten mich es:)

meist sollte es die gleiche Arbeit. in jRoR können Sie Sachen zugreifen Sie nicht in RoR haben würde. Normalerweise ist die in erster Linie ein Einsatz Sorge.

Wenn Sie jedoch RoR app nativen Bibliotheken verwendet, die keine Entsprechung haben, können sich auf der JVM läuft, dass ein Schmerz sein. Allerdings haben die meisten Libs eine nicht native Version verfügbar (zumindest die populäreren Ich bin gekommen, across).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top