GraalVM

GraalVM هي حزمة تطوير جافا (JDK) مكتوبة بلغة جافا. يعتمد توزيع GraalVM مفتوح المصدر على OpenJDK ، بينما يعتمد توزيع المؤسسات على Oracle JDK. إلى جانب الترجمة الفورية (JIT) ، يمكن لـ GraalVM أيضًا ترجمة تطبيقات جافا مسبقًا. يتيح ذلك تهيئة أسرع، وأداءً أفضل أثناء التشغيل، واستهلاكًا أقل للموارد، ولكن الملف التنفيذي الناتج لا يمكن تشغيله إلا على النظام الأساسي الذي تمت ترجمته من أجله.

يُوفر GraalVM لغات برمجة وأنماط تنفيذ إضافية. تم توزيع أول إصدار جاهز للاستخدام في بيئات الإنتاج، GraalVM 19.0، في مايو 2019. [ 5 ] أما أحدث إصدار فهو GraalVM for JDK 24.0.2، والذي تم إصداره في يوليو 2025. [ 6 ]

تشمل أبرز الفروقات بين GraalVM و JDK الأساسي ما يلي:

  • Graal Compiler ، وهو مترجم فوري (JIT) .
  • GraalVM Native Image هي تقنية لتجميع تطبيقات Java مسبقًا.
  • إطار عمل تنفيذ لغة ترافل ومجموعة أدوات تطوير البرمجيات GraalVM، وهو إطار عمل قائم على لغة جافا ومجموعة من واجهات برمجة التطبيقات لتطوير أوقات تشغيل لغات عالية الأداء.
  • GraalVM Polyglot API ، واجهة برمجة تطبيقات لتضمين كود لغة الضيف في تطبيق مضيف قائم على Java.
  • JavaScript Runtime، وهو بيئة تشغيل JavaScript متوافقة مع ECMAScript 2023 ، بالإضافة إلى Node.js.
  • LLVM Runtime هو بيئة تشغيل لتنفيذ اللغات التي يمكن تحويلها إلى رمز LLVM الثنائي.

الأهداف

  • لتحسين أداء اللغات القائمة على آلة جافا الافتراضية (JVM) لتضاهي اللغات الأصلية. [ 7 ] [ 8 ]
  • لتقليل وقت بدء تشغيل التطبيقات القائمة على JVM عن طريق تجميعها مسبقًا.
  • لتمكين تكامل GraalVM مع قاعدة بيانات Oracle و OpenJDK و Android/iOS والتضمينات المخصصة المماثلة.
  • لتمكين تضمين كود لغة الضيف في تطبيق مضيف قائم على JVM .
  • لتمكين دمج التعليمات البرمجية من أي لغة برمجة في تطبيق واحد، يُوصف بأنه "تطبيق متعدد اللغات". [ 7 ] [ 9 ]

تاريخ

يعود أصل GraalVM إلى مشروع Maxine Virtual Machine في مختبرات Sun Microsystems (التي تُعرف الآن باسم Oracle Labs ). كان هدف المشروع كتابة آلة افتراضية بلغة Java نفسها لتجنب مشاكل التطوير بلغة C++، وخاصة إدارة الذاكرة اليدوية، والاستفادة من تحسينات البنية الفوقية الدائرية . حوّل المشروع تركيزه إلى المُصرّف وربطه بوقت تشغيل HotSpot قدر الإمكان. بدأ تطوير مُصرّف GraalVM، المسمى Graal، بتحويل كود مُصرّف عميل HotSpot (المسمى "C1") يدويًا إلى Java، ليحل محل مُصرّف Maxine السابق. [ 10 ]

تم تضمين Graal في إصدارات JDK المبنية على HotSpot، مثل OpenJDK من Java SE 9 إلى 15، لتوفير ترجمة تجريبية مسبقة. كما مكّن خيار UseJVMCICompiler من استخدام Graal كبديل لمترجم الخادم (المسمى "C2"). [ 11 ] أُزيل هذا الخيار في Java SE 16 لتجنب الجهد المكرر في صيانة إصدار في JDK وإصدار مستقل من GraalVM. توفر أداة native-imageإصدارات GraalVM المستقلة وظيفة مماثلة لإنشاء ملف تنفيذي أصلي من تطبيق Java. تعالج الأداة فئات تطبيق Java وبياناته الوصفية الأخرى لإنشاء ملف ثنائي لنظام تشغيل وبنية محددة. يمكن استخدامها لإنشاء ملف تنفيذي أصلي أو مكتبة مشتركة أصلية.

الإصدارات

يتوفر GraalVM كإصدار Oracle GraalVM بموجب ترخيص GraalVM المجاني (GFTC)، أو كإصدار Oracle GraalVM Enterprise Edition الذي يمكن الوصول إليه بقبول "اتفاقية ترخيص OTN لإصدار Oracle GraalVM Enterprise Edition بما في ذلك ترخيص الإصدارات التجريبية المبكرة" [ 12 ] ، أو كإصدار مجتمعي بترخيص مفتوح المصدر. أعلنت شركة Oracle عن إصدار Oracle GraalVM Enterprise Edition في 8 مايو 2019، وإصدار Oracle GraalVM في 13 يونيو 2023، مع تقديم ترخيص GraalVM المجاني الجديد (GFTC). يمكن لـ GraalVM أن يحل محل JDK الافتراضي على منصات Linux و macOS على معالجات x64 و AArch64، وعلى منصة Windows x64. يمكن الاطلاع على جدول الإصدارات في مركز مساعدة Oracle وموقع GraalVM الإلكتروني.

يطلقتاريخإصدار جافاسمات
GraalVM 19.0.02019-05-09OpenJDK 1.8.0_212أول إصدار إنتاجي لمنصات لينكس وماك أو إس 64 بت. أما توفره لنظام ويندوز فكان قيد التطوير وتم إصداره كخاصية للمستخدمين الأوائل.
GraalVM 19.1.02019-07-02OpenJDK 1.8.0_212تم تقديم libgraalمكتبة مشتركة من إنتاج GraalVM Native Image، تحتوي على ملف ثنائي مُجمَّع مسبقًا لمُجمِّع Graal، مما حسَّن سرعة التجميع بشكل كبير. كما حسَّن الإصدار تطبيق التحسين الموجه بالملفات الشخصية (PGO) لـ Native Image.
GraalVM 19.2.02019-08-20OpenJDK 1.8.0_222أضاف هذا الإصدار وظائف أولية لتجميع التطبيقات الأصلية باستخدام مجموعة أدوات LLVM، المرفقة مع GraalVM. حسّن GraalVM Native Image أداء الإنتاجية وبسّط عملية جمع البيانات لتحسينات التوجيه بالملفات الشخصية (PGO). تم تطبيق وصول متعدد اللغات مخصص في وقت تشغيل متعدد اللغات للتحكم في الوصول إلى روابط متعددة اللغات ومشاركة البيانات بين اللغات. تم إصدار معاينة لوظائف Java Flight Recorder (JFR) كملحق لـ VisualVM.
GraalVM 19.3.019-11-2019Oracle JDK 1.8.0_231، 11.0.5

OpenJDK 1.8.0_232,11.0.5

أعلن هذا الإصدار عن أولى إصدارات GraalVM المبنية على Java SE 11، وأضاف منصات جديدة هي Linux AArch64 وWindows x64 التجريبي. كما أضاف هذا الإصدار تغليف الوحدات لعزل كود مُصرّف Graal وواجهة برمجة تطبيقات Truffle عن كود التطبيق. وانتقل GraalVM Native Image إلى استخدام كود JDK الأصلي بدلاً من الاستبدالات اليدوية. وتم تقديم إضافة Maven لـ Native Image لأول مرة. وكان GraalVM Enterprise 19.3.0 أول إصدار مُخطط له بدعم طويل الأمد (LTS).
GraalVM 20.0.02020-02-18Oracle JDK 1.8.0_241، 11.0.6

OpenJDK 1.8.0_242، 11.0.6

تحسين التوافق مع نظام التشغيل ويندوز؛ وتضمين تقنية الصور الأصلية المحسنة، والأدوات المحسنة، بالإضافة إلى العديد من التغييرات في المترجم واللغات المستضافة.
GraalVM 20.1.02020-05-19Oracle JDK 1.8.0_251، 11.0.7

OpenJDK 1.8.0_252، 11.0.7

تضمنت هذه النسخة العديد من التحسينات على مختلف المكونات. فبالإضافة إلى تحسينات الأداء، تم نشر إصلاحات لتحسين سهولة استخدام Native Image. كما تم تفعيل جميع ميزات وضع ECMAScript 2020 في محرك JavaScript افتراضيًا. وتم تفعيل جميع التعبيرات في محرك التعبيرات النمطية ( TRegex ) المستخدم في JavaScript وPython. وتم تحسين توافق Ruby ( TruffleRuby ) مع المكتبات الأصلية.
GraalVM 20.2.02020-08-18Oracle JDK 8u261، 11.0.8

OpenJDK 1.8.0_262، 11.0.8

تضمن هذا الإصدار تحسينًا جديدًا لفك حلقات التكرار الجزئية لتجميع JIT. كما تم تحسين عملية جمع البيانات المهملة المشابهة لـ G1GC لأحمال العمل التي تتطلب فيها Native Image فترات توقف أقصر لجمع البيانات المهملة. وتم توسيع Native Image لإنشاء ملفات تنفيذية "ثابتة في الغالب" تربط كل شيء بشكل ثابت باستثناءlibc.
GraalVM 20.3.02020-11-17Oracle JDK 1.8.0_271، 11.0.9

OpenJDK 1.8.0_272، 11.0.9

أول إصدار مؤسسي طويل الأمد من Oracle GraalVM Enterprise Edition، وهو الإصدار الأخير لعام 2020. يُتيح هذا الإصدار مشاركة التعليمات البرمجية في بيئة تشغيل GraalVM LLVM، مما يسمح بمشاركة شجرة بناء الجملة المجردة (AST) والتعليمات البرمجية المُجمّعة لمكتبات التعليمات البرمجية الثنائية الشائعة بين سياقات متعددة ضمن محرك واحد. كما أُضيفت ميزة تجريبية لـ"حدود موارد بيئة الاختبار المعزولة" إلى Oracle GraalVM Enterprise Edition.
GraalVM 21.0.02021-01-19Oracle JDK 1.8.0_281,11.0.10

OpenJDK 1.8.0_282,11.0.10

قدّم هذا الإصدار Java on Truffle، وهي تطبيق لآلة Java الافتراضية يعتمد على مترجم Truffle. كما أضافت GraalVM Native Image وظائف التسلسل، وتطبيقات AWT وSwing لمنصة Linux. وتم تحسين GraalVM Updater لتمكين تحديث/ترقية تثبيت GraalVM محلي.
GraalVM 21.1.02021-04-20Oracle JDK 1.8.0_291، 11.0.11، 16.0.1

OpenJDK 1.8.0_292، 11.0.11، 16.0.1

أضاف هذا الإصدار وظائف Java 16 (تجريبية) وحسّن التوافق مع Linux AArch64. كما مكّن GraalVM Native Image من إعداد تقارير عن عملية البناء لإنتاج ملفات متعددة، وحسّن التوافق مع Windows. وتم تفعيل التجميع متعدد الطبقات افتراضيًا لوقت التشغيل متعدد اللغات (الذي تم تقديمه لأول مرة في GraalVM 20.3)؛ كما --sandbox.MaxHeapMemory=<size>تم تقديم خيار جديد في بيئة الحماية لتحديد الحد الأقصى لذاكرة الكومة.
GraalVM 21.2.02021-07-20Oracle JDK 1.8.0_301، 11.0.12، 16.0.2

OpenJDK 1.8.0_302، 11.0.12، 16.0.2

في هذا الإصدار، أضاف فريق GraalVM تقنية SIMD (تعليمات مفردة، بيانات متعددة) لتحسين معالجة التعليمات البرمجية المتسلسلة، وتقنية Strip Mining لتحسين معالجة الحلقات غير المحسوبة في مُصرّف Graal. كما تضمن الإصدار إضافات Gradle وMaven رسمية جديدة لـ GraalVM Native Image مع وظائف اختبار JUnit 5 مبدئية ، بالإضافة إلى وظائف Java Flight Recorder (JFR) الأساسية على Java SE 11 في GraalVM Native Image، وتقنية "epsilon" GC لإنشاء ملف تنفيذي بدون جامع قمامة. وقدّمت Java on Truffle واجهة برمجة تطبيقات HotSwap Plugin لإعادة تحميل التعليمات البرمجية دون إعادة تشغيل التطبيق قيد التشغيل.
GraalVM 21.3.02021-10-19Oracle JDK 1.8.0_311، 11.0.13، 17.0.1

OpenJDK 1.8.0_312، 11.0.13، 17.0.1

أصبحت توزيعات GraalVM لـ Java SE 17 متاحة للتنزيل. أضاف هذا الإصدار تحسينًا جديدًا لربط المسارات غير الممكنة للتخلص من هذه المسارات، ووفر تطبيقًا لتقنية Constant Blinding للحماية من هجمات JIT spraying. كما حسّن GraalVM Native Image عملية جمع بيانات تعريف الانعكاس، مع التمييز بين طرق الانعكاس المستعلم عنها والمستدعاة، وأضاف التوافق الأولي مع نظام Java Platform Module System، بالإضافة إلى العديد من التحسينات الجديدة لتقليل حجم الملف التنفيذي ووقت بنائه.
GraalVM 22.0.02022-01-18Oracle JDK 11.0.14، 17.0.2

OpenJDK 11.0.14، 17.0.2

اعتبارًا من هذا الإصدار، توقف GraalVM عن دعم Java SE 8، وأزال دعم Java SE 12 و13 و14 و15 و16. وقد جلب هذا الإصدار مخرجات بناء جديدة سهلة الاستخدام لـ GraalVM Native Image مع أشرطة تقدم ومعلومات ملخصة أكثر؛ وتحسين التوافق مع نظام Java Platform Module System (ظهرت الخيارات --add-reads) --add-modules؛ وتحسين جديد لتدوير الحلقات لمترجم Graal الذي يحول المزيد من الحلقات غير المحسوبة إلى حلقات محسوبة.
GraalVM 22.1.02022-04-19Oracle JDK 11.0.15، 17.0.3

OpenJDK 11.0.15، 17.0.3

تضمن هذا الإصدار نسخة تجريبية لمعالجات Apple Silicon darwin-aarch64. أضافت GraalVM Native Image وضعًا جديدًا لإنشاء تكوين مشروط باستخدام وكيل التتبع، ووضع "بناء سريع" جديد -Obلتقليل وقت إنتاج نسخ التطوير. كما تم تقديم إطار عمل Truffle TruffleStrings، وهو تطبيق لنوع String مشترك بين لغات Truffle.
GraalVM 22.2.02022-07-19Oracle JDK 11.0.16، 17.0.4

OpenJDK 11.0.16، 17.0.4

تضمن هذا الإصدار حجمًا أصغر لحزمة تطوير جافا (JDK)، وتحسينًا في استخدام الذاكرة، وتوافقًا أفضل مع المكتبات. وقد قدم فريق أوراكل GraalVM بالتعاون مع فرق Spring وMicronaut وQuarkus مستودع بيانات تعريف إمكانية الوصول لـ GraalVM ، وهو مكان مركزي يوفر إعدادات للمكتبات التي لا تدعم GraalVM Native Image. كما طبقت GraalVM Native Image قائمة مكونات البرمجيات (SBOM)، وبدأت العمل على مسار الوحدة النمطية افتراضيًا. وتم فصل JavaScript وبيئات تشغيل LLVM وVisualVM عن الحزمة الرئيسية وتوفيرها كمكونات قابلة للتثبيت.
GraalVM 22.3.02022-10-18Oracle JDK 11.0.17، 17.0.5، 19.0.1

OpenJDK 11.0.17، 17.0.5، 19.0.1

كان هذا آخر إصدار يدعم Java SE 11، وآخر إصدار للميزات لهذا العام. سيستمر دعم GraalVM Enterprise 22.3.0 لمدة 18 شهرًا، وGraalVM Community لمدة 12 شهرًا. قدّم هذا الإصدار إصدارات Java SE 19، مما مكّن المستخدمين من الاستفادة من أحدث ميزات Java SE 18 وJava SE 19. طبّقت GraalVM Native Image تقنية OpenJDK Project Loom Virtual Threads (JEP 425) ، jlinkووفرت العديد من ميزات المراقبة الجديدة. أُعيد تسمية مشروع GraalPython إلى GraalPy، ومُشغّله من [اسم المُشغّل] graalpythonإلى [اسم المُشغّل] graalpy.
GraalVM لـ JDK 172023-06-13Oracle JDK 17.0.7

OpenJDK 17.0.7

تضمن هذا الإصدار توزيعة جديدة: Oracle GraalVM ، بموجب ترخيص GraalVM المجاني الجديد بشروطه وأحكامه . إلى جانب تحسينات الأداء، تم تطبيق جامع البيانات المهملة ZGC. كما قدم GraalVM Native Image ميزة حزم الصور الأصلية ، وأضاف استدلالًا للملفات الشخصية قائمًا على التعلم الآلي، وهو نموذج تعلم آلي مُدرَّب مسبقًا للتنبؤ بتدفق التحكم في فروع الرسم البياني. أيضًا، بدءًا من هذا الإصدار، يقوم GraalVM Native Image بتعيين بيئات البناء على نظام Windows تلقائيًا (لم يعد تشغيل موجه أوامر أدوات x64 الأصلية ضروريًا).
GraalVM لـ JDK 202023-06-13Oracle JDK 20.0.1

OpenJDK 20.0.1

GraalVM لـ JDK 212023-09-19أوراكل JDK 21 أوبن JDK 21أضاف هذا الإصدار جميع ميزات Java SE 21 إلى GraalVM، مثل الخيوط الافتراضية من مشروع Loom. كما حسّن الأداء في هذا الإصدار، مما مكّن تطبيقات Java المُجمّعة مسبقًا من العمل بأقصى كفاءة كما هو الحال على HotSpot. ومكّن هذا الإصدار جامع البيانات المهملة Garbage First (G1 GC) على Linux AArch64 (بالإضافة إلى Linux x64) في GraalVM Native Image. أُعيدت هيكلة GraalVM SDK وقُسّمت إلى أربع وحدات. وتمّ فصل بيئات تشغيل اللغات عن GraalVM JDK وأصبحت متاحة كمكتبات Java على Maven Central. وأصبح Oracle GraalVM لـ JDK 21 الإصدار الحالي المدعوم طويل الأمد (LTS).
GraalVM لـ JDK 222023-03-19أوراكل JDK 22 أوبن JDK 22
GraalVM لـ JDK 232024-09-17Oracle JDK 23 OpenJDK 23
GraalVM لـ JDK 242025-03-18Oracle JDK 24 OpenJDK 24
GraalVM 252025-09-16Oracle JDK 25 OpenJDK 25

عناصر

يأتي مُصرّف GraalVM، المسمى Graal، مُرفقًا بمكونات آلة جافا الافتراضية العادية ( OpenJDK ). وتتضمن GraalVM مكونات إضافية لتمكين أوضاع تنفيذ جديدة ( صورة GraalVM الأصلية ) أو لغات برمجة جديدة ( وقت تشغيل LLVM ، وجافا سكريبت GraalVM كبديل محتمل لمحرك Nashorn المُهمل ، وTRegex كمحرك للتعبيرات النمطية ).

المترجم

مُصرّف GraalVM، أو Graal، هو مُصرّف جافا حديث (JIT) . يُكمّل أو يُستبدل المُصرّفات الموجودة (C1/C2 في HotSpot ). على عكس تلك المُصرّفات، كُتب Graal بطريقة معيارية، قابلة للصيانة والتوسيع بلغة جافا نفسها. وهو مُرخص بموجب رخصة GPL الإصدار 2 مع استثناء مسار الفئة .

صورة أصلية

GraalVM Native Image هي تقنية تجميع متقدمة تُنتج ملفات تنفيذية ثنائية من ملفات الفئات. [ 13 ] تم إصدارها كتقنية تجريبية، مما يعني أنها جاهزة للاستخدام في بيئات الإنتاج، ولكن قد تتضمن تحديثات غير متوافقة مع الإصدارات السابقة في الإصدارات المستقبلية.

تدعم هذه الخاصية اللغات المبنية على JVM، ولكنها قادرة أيضًا على تشغيل اللغات الديناميكية المطورة باستخدام GraalVM وإطار عمل Truffle. لا يعمل الملف التنفيذي على JVM، بل يستخدم مكونات وقت التشغيل الضرورية، مثل جدولة العمليات أو جمع البيانات المهملة، من آلة افتراضية مخصصة صغيرة تُسمى Substrate VM. وبما أن الملف الثنائي الأصلي الناتج يتضمن فئات التطبيق، وتوابع JDK، والمكتبات، فإن وقت بدء التشغيل والتنفيذ ينخفض ​​بشكل ملحوظ.

تدعم أطر عمل جافا التالية رسميًا GraalVM Native Image: Fn، وGluon، وHelidon، وMicronaut ، وPicocli، و Quarkus ، وVert.x، و Spring Boot . [ 14 ] [ 15 ]

في سبتمبر 2016، كشفت أوراكل عن خططها لإضافة ميزة الترجمة المسبقة إلى OpenJDK باستخدام مُترجم GraalVM لـ Java SE 9. [ 16 ] [ 17 ] وقد أُدرج هذا المقترح، الذي تم تتبعه بواسطة JEP 295: الترجمة المسبقة ، في Java SE 9. [ 18 ] كما أُضيفت إمكانية استخدام GraalVM تجريبيًا كمُترجم فوري لمنصة Linux x64 لـ Java SE 10. [ 19 ]

في إصدارات Java SE من 9 إلى 15، jaotcيُنشئ الأمر ملفًا تنفيذيًا. [ 20 ] يُمكّن الخيار التجريبي -XX:+EnableJVMCIProductاستخدام مُترجم Graal JIT. [ 21 ] هذه الوظيفة متاحة منذ ذلك الحين في مُكوّن Native Image لإصدارات GraalVM المُستقلة. [ 22 ]

إطار عمل تنفيذ لغة الكمأة

بالتعاون مع GraalVM، طورت مختبرات أوراكل مترجمًا لشجرة بناء الجملة المجردة (AST) يُسمى "Truffle"، والذي يمكّنها من تنفيذ لغات البرمجة على GraalVM. [ 23 ] [ 24 ] وقد تم تنفيذ العديد من اللغات باستخدام Truffle، بما في ذلك مترجم تجريبي للغة C يُزعم أنه سريع تقريبًا مثل GCC و Clang . [ 25 ]

تم إصدار إطار عمل Truffle وجزئه التابع، GraalVM SDK، بموجب رخصة Universal Permissive License ، الإصدار 1.0، لتشجيع استخدام إطار العمل للمشاريع التي لا ترغب في أن تكون مقيدة بحقوق الطبع والنشر أو غيرها من الحقوق الأصلية.

دعم الأدوات القائم على القياس

تتمثل إحدى المزايا الرئيسية لنظام GraalVM البيئي في دعمه الكامل للأدوات الديناميكية، والمستقل عن لغة البرمجة ، والمدمج مباشرةً في بيئة تشغيل الآلة الافتراضية. ويمكن لعملاء واجهة برمجة التطبيقات (API) التقاط أحداث التنفيذ بتكلفة إضافية منخفضة للغاية في التعليمات البرمجية المُحسَّنة بالكامل. [ 26 ] [ 27 ]

توفر حزمة تثبيت GraalVM الأساسية مصحح أخطاء، ومحلل أداء، وعارض ذاكرة، وغيرها من الأدوات التي لا تعتمد على لغة برمجة محددة، وذلك استنادًا إلى أدوات القياس ودعم الآلات الافتراضية الأخرى. [ 28 ] كما تتضمن GraalVM تطبيقًا خلفيًا لبروتوكول تصحيح الأخطاء عن بُعد الخاص بـ Chrome Inspector. [ 29 ] على الرغم من أنها صُممت في الأصل لتصحيح أخطاء JavaScript، إلا أنه يمكن استخدامها لتصحيح أخطاء جميع لغات GraalVM من المتصفح.

لغات التضمين

من مزايا GraalVM الأخرى إمكانية تضمين شيفرة من لغة ضيف في Java وكتابة تطبيقات متعددة اللغات. [ 9 ] يستطيع المطور دمج JavaScript أو Python أو غيرها من اللغات المدعومة داخل شيفرة Java المصدرية، مما يمنحها مزايا تلك اللغات. يتبادل تطبيق Java المضيف واللغة الضيفة البيانات في نفس مساحة الذاكرة. هذا ممكن بفضل إطار عمل Truffle لتنفيذ اللغات [ 30 ] وواجهة برمجة تطبيقات GraalVM متعددة اللغات. فيما يلي مثال لكيفية استدعاء دالة مُعرَّفة في Python من Java:

حاول ( Context context = Context.create ( ) ) {دالة القيمة = السياق . eval ( "python" , "lambda x: x + 1" );assert function . canExecute ();int x = function.execute ( 41 ) .asInt ( ) ;تحقق من أن x == 42 ؛}

تقوم دالة بايثون بزيادة قيمة مُدخلاتها بمقدار واحد، ثم تُعيد النتيجة إلى لغة البرمجة المُضيفة. أما في جافا، ولأغراض أمنية، نتحقق أولًا من إمكانية تنفيذ الدالة المُتغيرة عبر الاستدعاء canExecute()، ثم نستدعي الدالة باستخدام هذا execute()الاستدعاء. تجدون المزيد من الأمثلة في وثائق مرجع لغات التضمين .

دعم اللغة ووقت التشغيل

تم تصميم GraalVM باستخدام بيئة Java ولأجلها . ويمكنه تشغيل التطبيقات المكتوبة بجميع اللغات التي تُترجم إلى تنسيق بايت كود Java ، على سبيل المثال، Java و Scala و Kotlin وغيرها.

استنادًا إلى إطار عمل تنفيذ لغة ترافل، تم تصميم اللغات الإضافية التالية للاستخدام مع GraalVM:

يمكن لمستخدمي GraalVM إضافة دعم للغات إضافية. ومن أبرز تطبيقات اللغات الخارجية: grCuda [ 38 ] ، وSOMns [ 39 ] ، وTruffleSqueak [ 40 ] [ 41 ] ، وYona [ 42 ] .

مراجع

  1. "GraalVM 25.1.3" . 30 يونيو 2026. تم الاطلاع عليه في 30 يونيو 2026 .
  2. "التنزيلات" .
  3. "الأسئلة الشائعة حول GraalVM" . مؤرشف من الأصل بتاريخ 13 أبريل 2020. تم الاطلاع عليه بتاريخ 25 أبريل 2018 .
  4. "graal/README.md" . GitHub . تم الاطلاع عليه بتاريخ 25-04-2018 .
  5. "لبناء برامج تعمل بشكل أسرع في أي مكان: إصدار Oracle GraalVM Enterprise" . شركة أوراكل . تم الاطلاع عليه بتاريخ 21 يناير 2022 .
  6. "GraalVM لـ JDK 24.0.2" . GraalVM . شركة أوراكل . تم الاطلاع عليه بتاريخ 15 أغسطس 2025 .
  7. 1 2 "لماذا GraalVM" . تم الاطلاع عليه بتاريخ 25-04-2018 .
  8. ^ "Graal : برنامج ديناميكي مترجم لجافا" . Lemondeinformatique.fr. 2012-02-13 . تم الاسترجاع 2013/08/23 . 
  9. 1 2 "دليل مرجعي لتطبيقات تعدد اللغات" . مؤرشف من الأصل بتاريخ 23-10-2020 . تم الاطلاع عليه بتاريخ 25-04-2018 .
  10. ""الدائرة الميتا قريبة"، GraalVM، Truffle - بودكاست airhacks.fm  : مدونة آدم بين . مؤرشف من الأصل بتاريخ 29-05-2020.
  11. "OpenJDK: Graal" .
  12. "اتفاقية ترخيص تطوير GraalVM لشبكة تقنية أوراكل" . أوراكل . 2019-05-02 . تم الاطلاع عليه بتاريخ 2025-09-21 .
  13. "الصور الأصلية" . www.graalvm.org . مؤرشف من الأصل بتاريخ 20-04-2018.
  14. "نظام GraalVM البيئي مفتوح المصدر" . شركة أوراكل . تم الاطلاع عليه بتاريخ 11 سبتمبر 2019 .
  15. "وثائق Spring Native Image" . Spring Framework . تم الاطلاع عليه بتاريخ 26-10-2021 .
  16. "قد تصل تقنية الترجمة المسبقة (AOT) إلى OpenJDK HotSpot في Java 9" . InfoQ.com. 1 أكتوبر 2016. تاريخ الاطلاع: 6 أكتوبر 2016. تُقدّم تقنية AOT أداة جديدة تُسمى 'jaotc' تستخدم Graal كخادم خلفي (لتوليد الكود).
  17. كوزلوف، فلاديمير (14 سبتمبر 2016). "JDK-8166089: التجميع المسبق" . شركة أوراكل . تم الاطلاع عليه بتاريخ 6 أكتوبر 2016. تجميع فئات جافا الخاصة بالتطبيق إلى كود أصلي قبل تشغيل الآلة الافتراضية.
  18. كوزلوف، فلاديمير (13 أكتوبر 2016). "JEP 295: التجميع المسبق" . شركة أوراكل . تم الاطلاع عليه بتاريخ 13 أكتوبر 2016. تجميع فئات جافا إلى كود أصلي قبل تشغيل الآلة الافتراضية.
  19. كوزلوف، فلاديمير (2017-10-20). "JEP 317: مُجمِّع JIT تجريبي قائم على جافا" . شركة أوراكل . تم الاسترجاع في 21 يناير 2018. JEP 317: مُجمِّع JIT تجريبي قائم على جافا
  20. ^ "OpenJDK: جراال" . openjdk.java.net .
  21. " [ JDK-8232118 ] إضافة خيار JVM لتمكين مُجمِّعات JVMCI في وضع المنتج" . bugs.openjdk.java.net .
  22. "GraalVM: دليل مرجعي: صورة أصلية" . graalvm.org .
  23. "ترافل: نظام تشغيل ذاتي التحسين" (ملف PDF) . شركة أوراكل . تم الاطلاع عليه بتاريخ 23 أغسطس 2013 .
  24. "الكمأة تُقدّم في كأس مقدس: الكأس المقدسة والكمأة لترجمة اللغات المتعددة على منصة JVM" . 2017-12-05 . تم الاطلاع عليه بتاريخ 2018-04-25 .
  25. "الكمأة: اللغات والمواد" . ملخص .
  26. فان دي فانتر، مايكل؛ سيتون، كريس؛ هاوبت، مايكل؛ هومر، كريستيان؛ وورثينجر، توماس (9 مارس 2018). "دعم سريع ومرن ومتعدد اللغات لأدوات تصحيح الأخطاء وغيرها من الأدوات". فن وعلم وهندسة البرمجة . 2 (3، المقالة 14): 30. arXiv : 1803.10201 . doi : 10.22152/programming-journal.org/2018/2/14 . S2CID 4382172 . 
  27. "البدء باستخدام أدوات Truffle في GraalVM" . www.graalvm.org . تم الاطلاع عليه بتاريخ 8 أبريل 2019. يمكن لأدوات Truffle تتبع أحداث وقت التشغيل على مستوى الجهاز الظاهري بدقة عالية لتحليل سلوك التطبيقات التي تعمل على GraalVM وفحصه ودراسته.
  28. "أدوات تصحيح الأخطاء ومراقبة GraalVM" . www.graalvm.org . مؤرشف من الأصل بتاريخ 25 أبريل 2019. تم الاطلاع عليه بتاريخ 8 أبريل 2019. يوفر GraalVM مجموعة من الأدوات للمطورين ومكامل الأنظمة ومديري تقنية المعلومات لتصحيح أخطاء GraalVM والتطبيقات المنشورة ومراقبتها.
  29. "أدوات مطوري Chrome" . developers.google.com . تاريخ الوصول: 8 أبريل 2019. أدوات مطوري Chrome هي مجموعة من أدوات تطوير الويب المدمجة مباشرةً في متصفح Google Chrome. تُساعدك هذه الأدوات على تعديل الصفحات مباشرةً وتشخيص المشكلات بسرعة، مما يُساعدك في النهاية على بناء مواقع ويب أفضل وأسرع.
  30. "ترافل: نظام تشغيل ذاتي التحسين" (ملف PDF) . شركة أوراكل . تم الاطلاع عليه بتاريخ 23 أغسطس 2013 .
  31. مستودع GraalVM JavaScript على GitHub
  32. مستودع GraalPython على GitHub
  33. مستودع GraalVM LLVM Runtime على GitHub
  34. "مستودع GraalWasm على GitHub" . GitHub .
  35. بروكوبيك، ألكسندر (2019-12-02). "الإعلان عن GraalWasm - محرك WebAssembly في GraalVM" . Medium . تم الاسترجاع في 2020-01-15 . 
  36. مستودع TruffleRuby على GitHub
  37. مستودع GraalVM FastR جيثب
  38. مستودع grCuda على GitHub
  39. مستودع SOMns على GitHub
  40. مستودع TruffleSqueak على GitHub
  41. نيفهاوس، فابيو؛ فيلجينتريف، تيم؛ هيرشفيلد، روبرت (2019). "GraalSqueak: نحو منصة أدوات قائمة على Smalltalk لبرمجة متعددة اللغات" . وقائع المؤتمر الدولي السادس عشر لجمعية ACM SIGPLAN حول لغات البرمجة المُدارة وأوقات التشغيل - MPLR 2019. مكتبة ACM الرقمية. الصفحات 14-26 . doi : 10.1145/3357390.3361024 . ISBN  9781450369770. S2CID 204728643 . تم الاسترجاع بتاريخ 2020-11-08 . 
  42. لغة يونا