Rufen Sie externe JavaScript-Funktionen aus Java-Code auf

Muhammad Muzammil Hussain 12 Oktober 2023
Rufen Sie externe JavaScript-Funktionen aus Java-Code auf

Dieser Artikel behandelt das Einbinden einer JavaScript-Quelle in ein Java-Programm und das Aufrufen einer JavaScript-Funktion aus einem Java-Code.

Rufen Sie externe JavaScript-Funktionen aus Java-Code auf

Das Aufrufen einer JavaScript-Quelle in Java ist ziemlich einfach. Wenn wir eine Java-Anwendung entwickeln, in der wir JavaScript verwenden müssen, erstellen wir die Skriptdatei separat, fügen sie dann in die Java-Quelle ein und rufen sie auf, um die gewünschte Funktion auszuführen.

Betrachten wir als Beispiel folgendes Szenario.

Zuerst müssen wir Funktionen in einer separaten JavaScript-Datei definieren, die in unserem Java-Code aufgerufen wird. Wir haben eine JavaScript-Quelle erstellt, um arithmetische Aufgaben wie das Addieren zweier übergebener Werte auszuführen.

Beispiel:

var myCalculations = new Object();

myCalculations.addition = function(v1, v2) v1 + v2;

In dieser JavaScript-Quelle haben wir ein neues Objekt erstellt, myCalculations. In diesem Objekt haben wir eine definierte Additionsfunktion, die 2 Werte als Argument nimmt und sie addiert.

Wir müssen diese Quelle mit der Erweiterung .js speichern, da dies unser JavaScript-Dokument sein wird. Um dieses Skript zu laden und das Objekt zu erhalten, müssen wir die Funktion eval() von ScriptEngineManager verwenden.

ScriptEngineManager ist eine standardmäßige Java-Bibliothek, die in einen Java-Code importiert werden kann. Wir können eine Instanz dieser Bibliothek verwenden, um die Skripte zu laden.

Wir können die JavaScript-Datei wie unten gezeigt laden:

String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");

Jetzt können wir die gewünschte Funktion nach Namen abrufen und die Parameter übergeben, wie unten gezeigt:

Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);

Hier ist ein Beispiel für ein vollständiges Java-Programm, das eine JavaScript-Datei mit ScriptEngineManager verwendet.

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
  public static void main(String[] args) throws Exception {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    Invocable inv = (Invocable) engine;
    String javascriptPath = "drive:/folder/fileName.js";
    engine.eval("load('" + javascriptPath + "')");
    Object myCalculations = engine.get("myCalculations");

    int x = 10;
    int y = 5;
    Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);

    System.out.println("Your addition result will be: " + addingResult);
  }
}

Ausgang:

Your addition result will be: 15

Code-Erklärung:

  1. In den obigen Java-Code haben wir zuerst eine nützliche Bibliothek, ScriptEngineManager, importiert, um das Skript zu laden.
  2. In der Hauptfunktion haben wir eine Instanz von ScriptEngineManager erstellt und die Script-Engine mit dem Namen JavaScript definiert.
  3. Nun haben wir eine String-Variable deklariert, der der Pfad der JavaScript-Datei zugewiesen wird.
  4. Dann laden wir diesen Pfad mit der Methode engine.eval().
  5. Nun haben wir das Objekt myCalculations der JavaScript-Datei aufgerufen und damit die Funktion dieses Objekts aufgerufen.
  6. Schließlich haben wir 2 Werte vom Typ Integer in der Funktion übergeben und das Ergebnis im Terminal mit der Java-Standardfunktion System.out.println("alles, was Sie drucken möchten") angezeigt.