2008-09-30 18 views

cevap

149

JRuby, bir JVM üzerinde çalışan ruby ​​uygulamasıdır, Matz'in rubisi ise bir C uygulamasıdır.

  1. jruby Java VM en çalışır ve derlenmiş veya Java byte koduna aşağı yorumlanır ya: nota

    Anahtar özellikleridir.

  2. JRuby, Java kodu ile entegre edilebilir. Eğer java sınıf kütüphaneleriniz varsa (.jar's), bunları JRuby ile ruby ​​kodu içinden kullanabilir ve kullanabilirsiniz. Diğer yönde de, Java içinden Jruby kodunu da arayabilirsiniz. JRuby ayrıca JVM ve uygulama sunucusu özelliklerini de kullanabilir.
  3. JRuby genellikle Sun'ın cam balığı veya Tomcat web sunucusu gibi Java uygulama sunucularında barındırılmaktadır.
  4. JRuby ile doğal yakut taşlarını kullanamamanıza rağmen, popüler ruby ​​kütüphanelerinin çoğunda jüçlü uygulamalar vardır.

Orada jruby wiki listelenen diğer farklar şunlardır:

+0

Teşekkürler, bu sadece aradığım her şeyi yanıtlıyor.:) – epochwolf

+4

oh, ve 1.9 – rogerdpack

+3

'dan biraz daha yavaş çalışıyor. Ayrıca, JRuby'nin bana söylediğim gibi gerçek yerel işletim sistemi konuları olması gerekiyor ... –

3

çoğunlukla aynı şekilde çalışmalıdır. jRoR'da RoR'da bulunamayacağınız şeylere erişebilirsiniz. Genellikle temelde bir dağıtım endişesi. Ancak, RoR uygulamanız JVM'de çalışan bir eşdeğeri olmayan yerel kütüphaneleri kullanıyorsa, bu bir ağrı olabilir. Ancak çoğu kütüphanede yerel olmayan bir sürüm bulunur (en azından karşılaştığım popüler olanlar).

7

Ben yanlış olabilir, ama Ruby on bir JRuby paket düşünüyorum App normal RoR ile yapamaz şekilde - Mingle veya benzerleri bakın. Pantolonunuzu düşürmeden/komonoyu açmadan satabilirsiniz. sözü

, ben buna tut beni :)

+1

Kesinlikle bu konuda haklısınız Bunu yapmak için Rawr ya da Roir gem gibi bir şeye ihtiyacınız olacak (Mingle'i son kez kullandığım zaman, o da yanlış yazılmış Dosyalar ...). –

47

Ben GILilgili bu soruya tüm cevaplar eksik çok önemli bir şey, orada şaşırdım RoR ambalajı ile yeterince aşina değilim, bu yüzden yok .

Özellikle dikkat etmeniz gereken asıl fark. Rails ile inşa edilenler gibi web uygulamalarında gerçek eşzamanlılık ("Global Interpreter Lock" ücretsiz). JRuby ile iki iş parçacığı (örneğin, 2 kullanıcı isteği sunma) çalıştığında, tek bir işlem içinde eşzamanlı olarak çalışabilirler, ancak MRI'da, Ruby'yi paralel olarak yürütmekten kaçınılan GIL (1.9'lu yerel bile olsa) vardır.

Bir uygulama geliştiricisi için, JRuby'yi düşünürken akılda tutulması gereken ilk şey budur, çünkü gerçekten config.threadsafe! ile parlıyor, ancak kodunuzun (ve değerli taşlar kodunuzun) "gerçekten" diş açma güvenliğini sağladığından emin olmanızı gerektirir.