Java 코드에서 외부 JavaScript 함수 호출

Muhammad Muzammil Hussain 2023년10월12일
Java 코드에서 외부 JavaScript 함수 호출

이 기사에서는 Java 프로그램에 JavaScript 소스를 포함하고 Java 코드에서 JavaScript 함수를 호출하는 방법에 대해 설명합니다.

Java 코드에서 외부 JavaScript 함수 호출

Java에서 JavaScript 소스를 호출하는 것은 매우 간단합니다. 자바스크립트를 사용해야 하는 자바 애플리케이션을 개발할 경우 스크립트 파일을 별도로 생성한 뒤 자바 소스에 포함시켜 호출해 원하는 기능을 실행하게 된다.

예를 들어 다음 시나리오를 살펴보겠습니다.

먼저 자바 코드에서 호출될 별도의 자바스크립트 파일에 함수를 정의해야 합니다. 두 개의 전달된 값을 더하는 것과 같은 산술 작업을 수행하기 위해 JavaScript 소스를 만들었습니다.

예:

var myCalculations = new Object();

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

이 JavaScript 소스에서 myCalculations라는 새 개체를 만들었습니다. 해당 개체에는 2개의 값을 인수로 사용하여 더하는 추가 함수가 정의되어 있습니다.

이 소스는 JavaScript 문서가 될 것이므로 .js 확장자로 저장해야 합니다. 해당 스크립트를 로드하고 개체를 가져오려면 ScriptEngineManagereval() 기능을 사용해야 합니다.

ScriptEngineManager는 Java 코드로 가져올 수 있는 기본 Java 라이브러리입니다. 해당 라이브러리의 인스턴스를 사용하여 스크립트를 로드할 수 있습니다.

아래와 같이 JavaScript 파일을 로드할 수 있습니다.

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

이제 아래와 같이 이름으로 원하는 함수를 얻고 매개변수를 전달할 수 있습니다.

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

다음은 ScriptEngineManager를 사용하여 JavaScript 파일을 사용하는 완전한 Java 프로그램의 예입니다.

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

출력:

Your addition result will be: 15

코드 설명:

  1. 위의 Java 코드에서 스크립트를 로드하기 위해 먼저 유용한 라이브러리 ScriptEngineManager를 가져왔습니다.
  2. 메인 함수에서 ScriptEngineManager 인스턴스를 생성하고 JavaScript라는 이름으로 스크립트 엔진을 정의했습니다.
  3. 이제 JavaScript 파일의 경로를 할당할 문자열 변수를 선언했습니다.
  4. 그런 다음 engine.eval() 메서드를 사용하여 해당 경로를 로드합니다.
  5. 이제 JavaScript 파일의 myCalculations 개체를 호출하고 이를 사용하여 해당 개체의 기능을 호출했습니다.
  6. 마지막으로 함수에 2개의 정수형 값을 전달하고 Java 기본 함수 System.out.println("anything you want to print")를 사용하여 결과를 터미널에 표시했습니다.