Saya ingin mencoba JRuby dan JRuby di Rails. Saya kesulitan mencari informasi tentang perbedaan antara JRuby on Rails dan Ruby on Rails.
Apa perbedaan yang perlu saya perhatikan?
ruby-on-rails
ruby
jruby
jrubyonrails
epochwolf
sumber
sumber
Saya terkejut ada hal krusial yang hilang dalam semua jawaban atas pertanyaan ini, terkait dengan GIL .
Perbedaan utama Anda harus peduli esp. dalam aplikasi web seperti yang dibangun dengan Rails adalah konkurensi sejati ("Global Interpreter Lock" gratis). Ketika dua thread sedang berjalan (misalnya melayani 2 permintaan pengguna) dengan JRuby mereka mampu berjalan secara bersamaan dalam satu proses, sedangkan di MRI ada GIL (bahkan dengan thread asli 1.9) yang menghindari mengeksekusi kode Ruby secara paralel.
Untuk pengembang aplikasi, ini adalah hal pertama yang perlu diingat saat mempertimbangkan JRuby, karena JRuby benar-benar bersinar
config.threadsafe!
tetapi mengharuskan Anda untuk memastikan kode Anda (dan kode permata Anda) menjadi "benar-benar" thread-safe.sumber
Saya mungkin salah, tetapi saya pikir Anda dapat mengemas aplikasi JRuby on Rails dengan cara yang tidak dapat Anda lakukan dengan RoR normal - lihat Mingle atau serupa. Memungkinkan untuk menjual tanpa menjatuhkan celana Anda / membuka komono.
Karena itu, saya tidak cukup akrab dengan kemasan RoR, jadi jangan pegang saya untuk itu :)
sumber
kebanyakan itu harus bekerja sama. di jRoR Anda dapat mengakses hal-hal yang tidak Anda miliki di RoR. Biasanya ini terutama terkait dengan penerapan.
Namun, jika aplikasi RoR Anda menggunakan pustaka asli yang tidak memiliki padanan yang berjalan di JVM, itu bisa merepotkan. Namun kebanyakan libs memiliki versi non native (setidaknya yang populer yang pernah saya temukan).
sumber
Sudah ada beberapa jawaban bagus di sini.
eebbesen sudah membahas dasar-dasarnya, dan kares (sendiri!) telah memberi tahu kami bahwa JRuby tidak memiliki GIL.
Saya akan menambahkan dari perspektif yang lebih praktis, saya telah meluncurkan aplikasi di Ruby on Rails, dan kemudian bermigrasi ke JRuby karena alasan kinerja.
Ada dua manfaat kinerja utama: JRuby (atau dulu) lebih cepat daripada Ruby dalam beberapa keadaan, dan dua, kurangnya Penerjemah Global kares menyebutkan memungkinkan saya untuk melakukan multithreading, yang, meskipun rumit, tidak terkunci urutan manfaat kinerja besarnya .
Aplikasi Ruby on Rails yang sangat besar di-porting dan berjalan dalam satu jam, gem dan semuanya. Satu-satunya kesalahan sebenarnya adalah regex Java sedikit berbeda dari Ruby. Itu pencapaian monumental di pihak JRuby.
sumber