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

Java-Grundlagen-Tutorial

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java-Exception-Verarbeitung

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java输入输出(I/O)

Java Reader/Writer

Java其他主题

Java 8 Nashorn JavaScript

Java 8 Neue Funktionen

Nashorn是一个javascript引擎。

Nashorn JavaScript Engine在Java 15 已经不可用了。

这已经在Java 11 标记为:

@deprecated(forRemoval = true)

从JDK 1.8 开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1 规范以及一些扩展。它使用基于JSR 292 的新语言特性,其中包含在JDK 7 中引入的invokedynamic,将JavaScript编译成Java字节码。

与先前的Rhino实现相比,这带来了 2 到  10倍的性能提升。

jjs

jjs是一个基于Nashorn引擎的命令行工具。它接受一些JavaScript源代码作为参数,并且执行这些源代码。

例如,我们创建一个具有如下内容的sample.js文件:

print('Hallo Welt!');

Öffnen Sie die Konsole und geben Sie die folgenden Befehle ein:

$ jjs sample.js

Das Ausgabergebnis des obigen Programms ist:

Hallo Welt!

jjs Interaktive Programmierung

Öffnen Sie die Konsole und geben Sie die folgenden Befehle ein:

$ jjs
jjs> print("Hallo, Welt!")
Hallo, Welt!
jjs> quit()
>>

Übergeben Sie Parameter

Öffnen Sie die Konsole und geben Sie die folgenden Befehle ein:

$ jjs -- 
jjs> print('Buchstaben: ' +arguments.join(", "))
Buchstaben: a, b, c
jjs>

Java ruft JavaScript auf

Mit ScriptEngineManager kann JavaScript-Code in Java ausgeführt werden. Ein Beispiel ist wie folgt:

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");
         
      }catch(ScriptException e){
         System.out.println("Fehler beim Ausführen des Skripts: ");+ e.getMessage());
      }
      
      System.out.println(result.toString());
   }
}

Führen Sie den obigen Skript aus, das Ausgabergebnis ist:

$ javac Java8Tester.java 
$ java Java8Tester
w3codebox
12

JavaScript in Java anrufen

Der folgende Beispiel zeigt, wie man Java-Klassen in JavaScript referenziert:

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);

Wir verwenden den Befehl jjs, um den obigen Skript auszuführen und das folgende Ergebnis auszugeben:

$ jjs sample.js
78952000000000002017.94

Java 8 Neue Funktionen