2010-10-13 9 views
7

In Is there an advantage to running JRuby if you don't know any Java?, le persone suggerivano di usare JRuby se si desidera una migliore implementazione di Ruby rispetto a "Ruby" (MRI/YARV).Quali motivi avrei per non usare JRuby su MRI/YARV?

Quali sono i potenziali motivi per cui non si utilizza JRuby?

quelli che sono stati menzionati da altri sono:

  1. performance per i programmi brevi. JRuby è descritto come più veloce per programmi più lunghi, ma con un tempo di inizializzazione più lungo. I workaround sono discussi in this question.
  2. Estensioni C: JRuby supporta alcune, but not all, estensioni C utilizzate con MRI/YARV.
  3. Concorrenza come un'arma a doppio taglio. There's non-thread-safe code out there che le persone non hanno scoperto perché l'implementazione più popolare non ha una vera concorrenza.
  4. JRuby can use more memory.
  5. JRuby ha decided not to do alcune cose che fa CRUBY. Questo include continuazioni (che credo siano deprecate in CRuby comunque) e fork. Hanno anche un diverso endian nativo e precisione temporale.
  6. JRuby doesn't enable ObjectSpace per impostazione predefinita.

potenziali ragioni che ho includono:

  1. biblioteche che si utilizzano non possono essere progettati per l'esecuzione con JRuby. Ad esempio, BioRuby, che ha 127 osservatori e 60 forchette su GitHub, ha avuto un minor incompatibility con JRuby.
  2. Paura, incertezza e dubbio sull'utilizzo di un'implementazione meno popolare. So che JRuby supera RubySpec meglio di CRuby, ma RubySpec non è ancora completo.

Ci sono altri motivi per cui non useresti JRuby?

risposta

1

Personalmente, sebbene sia preinstallato su Mac, non installo sempre Java sulle mie macchine Linux.

Come nota a parte, si dovrebbe probabilmente menzionare RVM come il modo canonico di destreggiarsi tra più (8 o più ?!) diversi interpreti Ruby.

0

JRuby non sembra dare a $SAFE una priorità elevata. Il post del blog è del 2007, ma da allora non ho riscontrato cambiamenti.

Problemi correlati