GraalJS هو محرك JavaScript تم تنفيذه في Java أعلى GraalVM. إنه وقت تشغيل متوافق مع ECMAScript لتنفيذ تطبيقات JavaScript وNode.js، ويتضمن جميع المزايا من حزمة GraalVM بما في ذلك إمكانية التشغيل التفاعلي مع Java. GraalJS هو مشروع مفتوح المصدر.
أهداف GraalJS هي:
اعتبارًا من الإصدار 23.1.0، أصبح GraalJS متاحًا كقطع أثرية من Maven. كما نقدم أيضًا توزيعات مستقلة لأوقات تشغيل JavaScript وNode.js.
بفضل GraalJS، يمكنك بسهولة تضمين JavaScript في تطبيق Java. يمكن تنزيل جميع القطع الأثرية الضرورية مباشرة من Maven Central.
يمكن العثور على جميع العناصر ذات الصلة بأدوات التضمين في مجموعة التبعية Maven org.graalvm.polyglot.
فيما يلي الحد الأدنى من إعدادات تبعية Maven التي يمكنك نسخها إلى ملف pom.xml الخاص بك:
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >polyglot artifactId >
< version >${graaljs.version} version >
dependency >
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >js artifactId >
< version >${graaljs.version} version >
< type >pom type >
dependency >
يؤدي ذلك إلى تمكين GraalJS المبني على Oracle GraalVM والمرخص بموجب شروط وأحكام GraalVM المجانية (GFTC). استخدم js-community
إذا كنت تريد استخدام GraalJS المبني على GraalVM Community Edition.
للوصول إلى القطع الأثرية المعزولة متعددة اللغات (GFTC فقط)، استخدم اللاحقة -isolate
بدلاً من ذلك (على سبيل المثال، js-isolate
).
راجع العرض التوضيحي لتضمين متعدد اللغات على GitHub للحصول على مثال كامل قابل للتشغيل.
يمكنك استخدام GraalJS مع GraalVM JDK أو Oracle JDK أو OpenJDK. إذا كنت تفضل التشغيل على JVM للأسهم، فقم بإلقاء نظرة على Run GraalJS على Stock JDK. لاحظ أنه في هذا الوضع لا تتوفر العديد من الميزات والتحسينات الخاصة بـ GraalVM. نظرًا لهذه القيود، فإن التشغيل على JVM للمخزون ليس ميزة مدعومة - يرجى استخدام GraalVM بدلاً من ذلك.
يتم نشر التوزيعات المستقلة على GitHub. هناك خياران لوقت تشغيل اللغة للاختيار من بينهما:
للتمييز بينهما، يحتوي الاسم المستقل الذي يأتي مع JVM على -jvm
infix. أيضًا، يحتوي إصدار GraalVM Community Edition على -community
في الاسم، على سبيل المثال، graaljs-community-
.
تتوفر أربعة تكوينات مختلفة لكل مكون ومجموعة النظام الأساسي:
وقت التشغيل | رخصة | أرشيف إنفيكس |
---|---|---|
محلي | GFTC | لا أحد |
JVM | GFTC | -jvm |
محلي | UPL | -community |
JVM | UPL | -community-jvm |
لتثبيت GraalJS من إصدار مستقل، قم بتنزيل الأرشيف واستخراجه من صفحة إصدارات GitHub. بعد التثبيت، يمكن استخدام js
أو node
القابلة للتنفيذ في الدليل الفرعي bin
لتشغيل ملفات JavaScript أو وحدات Node، على التوالي. إذا لم يتم توفير أي ملف في سطر الأوامر، فسيتم إنشاء غلاف تفاعلي (REPL).
ملاحظة: إذا كنت تستخدم macOS، فقم أولاً بإزالة سمة العزل من الأرشيف:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
يمكن لـ GraalJS تشغيل تطبيقات Node.js غير المعدلة. يعتمد وقت تشغيل Node.js الخاص بـ GraalVM على إصدار حديث من Node.js، ويقوم بتشغيل محرك GraalJS بدلاً من Google V8. يوفر توافقًا عاليًا مع حزم NPM الحالية. يتضمن ذلك حزم NPM مع تطبيقات أصلية. لاحظ أن بعض وحدات NPM قد تحتاج إلى إعادة ترجمتها من المصدر باستخدام GraalJS (إذا كانت تأتي مع ثنائيات تم تجميعها لـ Node.js استنادًا إلى V8).
Node.js متاح كتوزيع مستقل منفصل. تعرف على كيفية البدء باستخدام Node.js.
وثائق المستخدم واسعة النطاق متاحة على الموقع. بالإضافة إلى ذلك، توجد وثائق في هذا المستودع ضمن المستندات للمستخدمين والمساهمين. للمساهمة، راجع أيضًا دليل حول كيفية إنشاء GraalJS من كود المصدر.
GraalJS متوافق مع مواصفات ECMAScript 2024. تتم إضافة الميزات الجديدة ومقترحات ECMAScript الجديدة، المقرر طرحها في الإصدارات المستقبلية، بشكل متكرر ويمكن الوصول إليها من خلال خيار. راجع CHANGELOG.md للاطلاع على المقترحات المعتمدة بالفعل.
بالإضافة إلى ذلك، يتم دعم بعض الملحقات الشائعة للمحركات الأخرى. راجع توافق GraalJS.
محرك JavaScript الأساسي هو تطبيق Java وبالتالي فهو متوافق مع كل نظام تشغيل يوفر JVM متوافقًا. راجع تشغيل GraalJS على Stock JDK. نحن نقدم توزيعات ثنائية وندعم GraalJS بشكل كامل على Linux (x64، AArch64)، وmacOS (x64، AArch64)، وWindows (x64) حاليًا.
راجع graalvm.org/community لمعرفة كيفية البقاء على اتصال مع مجتمع التنمية. تعد قناة graaljs الموجودة على graalvm.slack.com طريقة جيدة للتواصل مع الفريق الذي يقف وراء GraalJS. قم بالإبلاغ عن أي مشكلات خاصة بـ GraalJS في مستودع Oracle/graaljs GitHub.
تتوفر كود مصدر GraalJS وتوزيعات المجتمع بموجب الترخيص المسموح به العالمي (UPL)، الإصدار 1.0.
يتم توفير العناصر غير المجتمعية بموجب شروط وأحكام GraalVM المجانية (GFTC) بما في ذلك ترخيص إصدارات المتبني المبكر.