English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية Java الأساسية

تحكم في العملية Java

مجموعات Java Array

Java موجه بالأغراض (I)

Java موجه بالأغراض (II)

Java موجه بالأغراض (III)

معالجة الاستثناءات في Java

قوائم Java List

Java Queue (الطوابير)

مجموعات Java Map

مجموعات Java Set

مدخلات/إخراجات Java (I/O)

قراء/كتابة Java

مواضيع أخرى في Java

Java 8 Nashorn JavaScript

ميزات Java 8 الجديدة

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

jjs هو أداة سطر أمر تعتمد على محرك Nashorn. تقبل بعض المصادر المكتوبة بلغة JavaScript كمعاملات، وتنفيذ هذه المصادر.

على سبيل المثال، قمنا بإنشاء ملف sample.js يحتوي على محتوى كما يلي:

print('مرحبا بالعالم!');

افتح الجهاز المضيف، وادخل الأوامر التالية:

$ jjs sample.js

سيكون ناتج البرنامج المسبق هو:

مرحبًا، عالم!

برمجة تفاعلية jjs

افتح الجهاز المضيف، وادخل الأوامر التالية:

$ jjs
jjs> print("مرحبًا، العالم!")
مرحبًا، العالم!
jjs> quit()
>>

إرسال المعلمات

افتح الجهاز المضيف، وادخل الأوامر التالية:

$ jjs -- a b c
jjs> print('حروف: ' + arguments.join(", "))
حروف: a, b, c
jjs>

دعوة JavaScript في Java

يمكن تنفيذ كود 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

يقدم هذا المثال كيفية استدعاء فئة 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

ميزات Java 8 الجديدة