Estou tentando experimentar o JRuby e o JRuby on Rails. Estou tendo problemas para encontrar informações sobre a diferença entre o JRuby on Rails e o Ruby on Rails.
Quais são as diferenças que eu preciso observar?
ruby-on-rails
ruby
jruby
jrubyonrails
epochwolf
fonte
fonte
Estou surpreso que algo crucial esteja faltando em todas as respostas a essa pergunta, relacionadas ao GIL .
A principal diferença que você deve se preocupar com esp. em aplicativos da web, como os criados com o Rails, é simultânea a verdade (livre de "Global Interpreter Lock"). Quando dois threads estão em execução (por exemplo, atendendo a 2 solicitações de usuário) com o JRuby, eles são capazes de executar simultaneamente em um único processo, enquanto na MRI há o GIL (mesmo com os threads nativos do 1.9) que evita a execução do código Ruby em paralelo.
Para um desenvolvedor de aplicativos, essa é a primeira coisa a ter em mente ao considerar o JRuby, pois ele realmente brilha,
config.threadsafe!
mas exige que você garanta que seu código (e seu código de gemas) seja "verdadeiramente" seguro para threads.fonte
Posso estar errado, mas acho que você pode empacotar um aplicativo JRuby on Rails de uma maneira que você não pode fazer com o RoR normal - veja Mingle ou similar. Torna possível vender sem deixar cair a calça / abrir o komono.
Dito isto, eu não estou familiarizado o suficiente com as embalagens RoR, então não me segure: :)
fonte
principalmente deve funcionar da mesma maneira. no jRoR, você pode acessar coisas que você não teria no RoR. Geralmente é principalmente uma preocupação de implantação.
No entanto, se o seu aplicativo RoR usar bibliotecas nativas que não têm um equivalente que é executado na JVM, isso pode ser um problema. No entanto, a maioria das bibliotecas tem uma versão não nativa disponível (pelo menos as mais populares que já encontrei).
fonte
Já existem ótimas respostas aqui.
O eebbesen já cobriu o básico e o kares (ele mesmo!) nos disse que o JRuby não tem GIL.
Vou acrescentar de uma perspectiva mais prática, lancei aplicativos no Ruby on Rails e migrei para o JRuby por motivos de desempenho.
Havia dois principais benefícios de desempenho: o JRuby é (ou era) simplesmente mais rápido que Ruby em algumas circunstâncias e dois, a falta das menções do Global Interpreter Lock kares me permitiu fazer multithreading, que, embora complicado, desbloqueou ordens de magnitude de benefícios de desempenho .
Um aplicativo Ruby on Rails muito grande foi portado e executado em uma hora, com gemas e tudo. A única falha real foi que as expressões regulares do Java são ligeiramente diferentes das do Ruby. Essa é uma conquista monumental da parte de JRuby.
fonte