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?
Jawaban:
JRuby adalah implementasi Ruby yang berjalan pada JVM sedangkan Ruby Matz adalah implementasi C.
Fitur utama yang perlu diperhatikan adalah:
Ada perbedaan lain yang tercantum di wiki JRuby:
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.
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 :)
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).
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.