سؤال

إنني أتطلع إلى تجربة JRuby وJRuby on Rails.أواجه مشكلة في العثور على معلومات حول الفرق بين JRuby on Rails وRuby on Rails.

ما هي الاختلافات التي يجب أن أبحث عنها؟

هل كانت مفيدة؟

المحلول

JRuby هو تطبيق Ruby الذي يتم تشغيله على JVM بينما Matz's Ruby هو تطبيق C.

الميزات الرئيسية التي يجب ملاحظتها هي:

  1. يعمل Jruby على Java VM ويتم تجميعه أو ترجمته إلى كود Java بايت.
  2. يمكن لـ JRuby التكامل مع كود Java.إذا كان لديك مكتبات فئات Java (.jar's)، فيمكنك الرجوع إليها واستخدامها من داخل رمز Ruby مع JRuby.وفي الاتجاه الآخر يمكنك أيضًا الاتصال برمز JRuby من داخل Java.يمكن لـ JRuby أيضًا استخدام إمكانات JVM وخادم التطبيقات.
  3. تتم استضافة JRuby عادةً ضمن خوادم تطبيقات Java مثل Sun's glassfish أو حتى خادم الويب Tomcat.
  4. على الرغم من أنه لا يمكنك استخدام جواهر روبي الأصلية مع JRuby، إلا أن هناك تطبيقات JRuby لمعظم مكتبات Ruby الشائعة.

هناك اختلافات أخرى مدرجة في JRuby wiki:

نصائح أخرى

أنا مندهش من وجود شيء مهم مفقود في جميع الإجابات على هذا السؤال، وهو ما يتعلق بـ جيل.

الفرق الرئيسي الذي يجب أن تهتم به esp.في تطبيقات الويب مثل تلك المبنية باستخدام Rails التزامن الحقيقي ("قفل المترجم العالمي" مجانًا).عند تشغيل خيطين (على سبيل المثال.يخدم طلبين للمستخدم) مع JRuby، فهما قادران على التشغيل بشكل متزامن ضمن عملية واحدة، بينما في التصوير بالرنين المغناطيسي يوجد GIL (حتى مع مؤشرات الترابط الأصلية 1.9) الذي يتجنب تنفيذ كود روبي بالتوازي.

بالنسبة لمطور التطبيقات، هذا هو أول شيء يجب أخذه في الاعتبار عند التفكير في JRuby، لأنه يتألق حقًا config.threadsafe! ولكنه يتطلب منك التأكد من أن الكود الخاص بك (وكود الأحجار الكريمة الخاص بك) آمن "حقًا".

قد أكون مخطئًا، لكنني أعتقد أنه يمكنك حزم تطبيق JRuby on Rails بطريقة لا يمكنك القيام بها باستخدام RoR العادي - انظر إلى Mingle أو ما شابه.يجعل من الممكن البيع دون إسقاط سروالك / فتح الكومونو.

ومع ذلك، لست على دراية كافية بتغليف RoR، لذا لا تلزمني بذلك :)

في الغالب يجب أن تعمل بنفس الطريقة.في jRoR، يمكنك الوصول إلى الأشياء التي لا تملكها في RoR.عادةً ما يكون هذا مصدر قلق للنشر بشكل أساسي.

ومع ذلك، إذا كان تطبيق RoR الخاص بك يستخدم مكتبات أصلية لا تحتوي على مكتبات مكافئة تعمل على JVM، فقد يكون ذلك مؤلمًا.ومع ذلك، فإن معظم libs لديها إصدار غير أصلي متاح (على الأقل الإصدارات الشائعة التي صادفتها).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top