English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nashorn محرك JavaScript
محرك Nashorn JavaScript غير متاح في Java 15.
الآن تم وضع علامة على هذا في Java 11:
@deprecated (forRemoval = true)
من JDK 1.8، Nashorn استبدل Rhino (JDK 1.6, JDK1.7) كمحرك JavaScript المدمج في Java. Nashorn يدعم كاملًا معيار ECMAScript 5.1 و بعض التوسعات. يستخدم خصائص لغة جديدة قائمة على JSR 292، التي تم إدخالها في JDK 7، مثل invokedynamic، لتحويل JavaScript إلى كود بحزمة Java.
مقارنة بالتحقيق السابق Rhino، هذا يقدم تحسينًا في الأداء من 2 إلى 10 أضعاف.
jjs هو أداة سطر أمر تعتمد على محرك Nashorn. تقبل بعض المصادر المكتوبة بلغة JavaScript كمعاملات، وتنفيذ هذه المصادر.
على سبيل المثال، قمنا بإنشاء ملف sample.js يحتوي على محتوى كما يلي:
print('مرحبا بالعالم!');
افتح الجهاز المضيف، وادخل الأوامر التالية:
$ jjs sample.js
سيكون ناتج البرنامج المسبق هو:
مرحبًا، عالم!
افتح الجهاز المضيف، وادخل الأوامر التالية:
$ jjs jjs> print("مرحبًا، العالم!") مرحبًا، العالم! jjs> quit() >>
افتح الجهاز المضيف، وادخل الأوامر التالية:
$ jjs -- a b c jjs> print('حروف: ' + arguments.join(", ")) حروف: a, b, c jjs>
يمكن تنفيذ كود JavaScript باستخدام ScriptEngineManager في Java، مثل ما يلي:
import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; import javax.script.ScriptException; public class Java8Tester { public static void main(String args[]) { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); String name = "w3codebox"; Integer result = null; try { nashorn.eval("print('" + name + "')"); result = (Integer) nashorn.eval("10 + 2"); } System.out.println("خطأ في تنفيذ السكربت: " + e.getMessage()); } System.out.println(result.toString()); } }
إذا قمت بتشغيل السكربت المسبق، سيكون الناتج هو:
$ javac Java8Tester.java $ java Java8Tester w3codebox 12
يقدم هذا المثال كيفية استدعاء فئة Java في JavaScript:}}
var BigDecimal = Java.type('java.math.BigDecimal'); function calculate(amount, percentage) { var result = new BigDecimal(amount).multiply( new BigDecimal(percentage)).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN); return result.toPlainString(); } var result = calculate(568000000000000000023, 13.9); print(result);
نستخدم الأمر jjs لتنفيذ السكربت المذكور أعلاه، والنتيجة التالية هي:
$ jjs sample.js 78952000000000002017.94