Yanıtlar:
JRuby bir JVM üzerinde çalışan Ruby uygulaması, Matz'ın Ruby bir C uygulamasıdır.
Dikkat edilmesi gereken temel özellikler:
JRuby wiki'de listelenen başka farklılıklar da vardır:
Bu soruya verilen, GIL ile ilgili tüm cevaplarda önemli bir şeyin eksik olduğuna şaşırdım .
Esp. Rails ile oluşturulanlar gibi web uygulamalarında gerçek bir eşzamanlılık vardır ("Global Tercüman Kilidi" ücretsiz). JRuby ile iki iş parçacığı çalışırken (örn. 2 kullanıcı isteğine hizmet ederken), tek bir işlemde eşzamanlı olarak çalışabilirler, MRI'da Ruby kodunu paralel olarak yürütmekten kaçınan GIL (1.9'ın yerel iş parçacıklarıyla bile) vardır.
Bir uygulama geliştiricisi için bu, JRuby'yi düşünürken akılda tutulması gereken ilk şeydir, çünkü gerçekten parlar, config.threadsafe!
ancak kodunuzun (ve değerli taş kodunuzun) "gerçekten" iş parçacığı açısından güvenli olduğundan emin olmanızı gerektirir.
Yanılıyor olabilirim, ancak normal bir RoR ile yapamayacağınız bir şekilde bir JRuby on Rails uygulamasını paketleyebileceğinizi düşünüyorum - Mingle veya benzerine bakın. Pantolonunu düşürmeden / komonoyu açmadan satmayı mümkün kılar.
Bununla birlikte, RoR ambalajına yeterince aşina olmadığımı söyledi, bu yüzden beni tutmayın :)
çoğunlukla aynı şekilde çalışmalıdır. jRoR'da RoR'da sahip olmayacağınız şeylere erişebilirsiniz. Genellikle bu bir dağıtım endişesidir.
Ancak, RoR uygulamanız JVM'de çalışan eşdeğeri olmayan yerel kütüphaneler kullanıyorsa, bu bir acı olabilir. Ancak çoğu kütüphanede yerel olmayan bir sürüm vardır (en azından karşılaştığım popüler olanlar).
Burada zaten bazı harika cevaplar var.
eebbesen zaten temelleri kapsıyordu ve kares (kendisi!) JRuby'nin GIL olmadığını söyledi.
Daha pratik bir bakış açısıyla ekleyeceğim, Ruby on Rails'te uygulamalar başlattım ve performans nedenleriyle JRuby'ye geçtim.
İki ana performans avantajı vardı: JRuby, bazı durumlarda Ruby'den sadece daha hızlı (veya öyleydi) ve ikincisi, Global Tercüman Kilidi karelerinin eksikliği, zor olsa da, büyüklük performans avantajları emirlerinin kilidini açarak çoklu okuma yapmamı sağladı. .
Çok büyük bir Ruby on Rails uygulaması taşınmış ve bir saat, taşlar ve hepsi koştu. Tek gerçek hata, Java'nın normal ifadelerinin Ruby'ninkinden biraz farklı olmasıydı. Bu JRuby'nin anıtsal bir başarısı.