تجميع الأصلي في Quarkus - لماذا يهم

تحية للجميع! هذه هي المقالة الثانية من سلسلة Quarkus - سنتحدث اليوم عن الترجمة الأصلية. (بالمناسبة ، قم بالتسجيل وانتقل إلى ندوة الويب الخاصة بنا " هذا هو إطار عمل جافا الأصلي Karkus - Kubernetes " ، والذي سيعقد في 27 مايو . سنوضح كيفية البدء من الصفر أو نقل الحلول



الجاهزة ) Quarkus عبارة عن حزمة جافا مصممة خصيصًا لـ Kubernetes. وعلى الرغم من أنه لا يزال هناك الكثير مما يجب القيام به هنا ، إلا أننا عملنا على الكثير من الجوانب بشكل جيد ، بما في ذلك تحسين JVM وعدد من الأطر. كانت إحدى ميزات Quarkus التي تسببت في زيادة الاهتمام من المطورين هي اتباع نهج شامل سلس لتحويل تعليمات Java البرمجية إلى ملفات قابلة للتنفيذ لنظام تشغيل معين (ما يسمى "التجميع الأصلي") ، على غرار C و C ++ ، حيث يحدث هذا التجميع عادة في نهاية دورة التجميع والاختبار والنشر.

على الرغم من أن التجميع الأصلي ، كما هو موضح أدناه ، مهم ، تجدر الإشارة إلى أن Quarkus يعمل جيدًا على جهاز OpenJDK Hotspot Java الأكثر شيوعًا ، وذلك بفضل تحسينات الأداء التي قمنا بتنفيذها طوال المجموعة. لذلك ، يجب اعتبار التجميع الأصلي كمكافأة إضافية يمكن استخدامها حسب الرغبة أو الحاجة. في الواقع ، فيما يتعلق بالصور الأصلية ، يعتمد Quarkus بشكل كبير على OpenJDK. ويوفر وضع مطوري البرامج ، الذي تم استقباله بحرارة من المطورين ، اختبارًا فوريًا تقريبًا للتغييرات بسبب الميزات المطورة لتنفيذ التعليمات البرمجية الديناميكية التي يتم تنفيذها في Hotspot. بالإضافة إلى ذلك ، عند إنشاء صور GraalVM أصلية ، يتم استخدام مكتبة فئة OpenJDK وميزات HotSpot.

فلماذا إذن تحتاج إلى تجميع محلي إذا كان كل شيء محسنًا تمامًا بالفعل؟ سنحاول الإجابة على هذا السؤال أدناه.

لنبدأ بالواضح: تتمتع Red Hat بخبرة واسعة في تحسين JVMs والأكوام والأطر أثناء تطوير مشروع JBoss ، بما في ذلك:


لقد تم التعامل مع مشاكل تشغيل تطبيقات Java في السحابة وعلى الأجهزة ذات الموارد المحدودة (اقرأ ، IoT) لسنوات عديدة وتعلمنا الضغط على أقصى قدر من JVM من حيث الأداء وتحسين الذاكرة. مثل العديد من التطبيقات الأخرى ، عملنا منذ فترة طويلة مع التجميع الأصلي لتطبيقات Java من خلال GCJ و Avian و Excelsior JET وحتى Dalvik ونحن على دراية تامة بإيجابيات وسلبيات هذا النهج (على سبيل المثال ، معضلة الاختيار بين التنوع "البناء مرة واحدة - التشغيل في أي مكان" و أن التطبيقات المترجمة أصغر وتعمل بشكل أسرع).

لماذا من المهم النظر في هذه الإيجابيات والسلبيات؟ لأنه في بعض الحالات ، تصبح نسبتهم حاسمة:

  • , serverless/ , ( ) , . , . JVM , , , 5 . , Java- ( , , OpenWhisk Knative), JVM . , , .
  • , , . , JVM , , Linux’ – . Java-. , JVM, . , .
  • , - , . 12 , Kubernetes Java- . , , , , . , dead-code elimination, ( JDK), . Quarkus .

في الواقع ، الحجج المذكورة أعلاه كافية بالفعل لفهم مبرر التجميع الأصلي من وجهة نظر المشاركين في مشروع Quarkus. ومع ذلك ، هناك سبب آخر ، ليس تقنيًا ، ولكن أيضًا مهمًا: في السنوات الأخيرة ، تخلى العديد من المبرمجين وشركات التطوير عن Java لصالح لغات البرمجة الجديدة ، معتقدين أن Java ، إلى جانب JVM ، والأكوام والأطر ، أصبحت شرسة للغاية من حيث الذاكرة ، بطيء للغاية إلخ.

ومع ذلك ، فإن عادة استخدام نفس الأداة لحل أي مشاكل ليست صحيحة دائمًا. في بعض الأحيان يكون من الأفضل التراجع والبحث عن شيء آخر. وإذا كان Quarkus يجعل الناس يتوقفون ويفكرون ، فهذا أمر جيد لنظام جافا البيئي بأكمله. تجسد Quarkus منظورًا مبتكرًا حول كيفية إنشاء تطبيقات أكثر كفاءة ، مما يجعل Java أكثر ملاءمة لهياكل التطبيقات الجديدة مثل بدون خادم. بالإضافة إلى ذلك ، نظرًا لتوسعه ، نأمل أن يكتسب Quarkus نظامًا بيئيًا كاملاً من ملحقات Java ، مما يزيد بشكل كبير من عدد الأطر التي ستدعم التجميع الأصلي كجزء من التطبيقات.

All Articles