자바 8-Nashorn JavaScript

Java 8에서는 기존 Rhino를 대체하기 위해 훨씬 향상된 자바 스크립트 엔진 인 Nashorn이 도입되었습니다. Nashorn은 메모리에서 코드를 직접 컴파일하고 바이트 코드를 JVM에 전달하므로 2 ~ 10 배 더 나은 성능을 제공합니다. Nashorn은 성능 향상을 위해 Java 7에 도입 된 invoke dynamics 기능을 사용합니다.

jjs

Nashorn 엔진의 경우 JAVA 8에는 새로운 명령 줄 도구가 도입되었습니다. jjs, 콘솔에서 자바 스크립트 코드를 실행합니다.

js 파일 해석

파일 생성 및 저장 sample.js c : \> JAVA 폴더에 있습니다.

sample.js

print('Hello World!');

콘솔을 열고 다음 명령을 사용하십시오.

C:\JAVA>jjs sample.js

다음과 같은 출력이 생성됩니다.

Hello World!

대화 형 모드의 jjs

콘솔을 열고 다음 명령을 사용하십시오.

C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

인수 전달

콘솔을 열고 다음 명령을 사용하십시오.

C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

자바에서 자바 스크립트 호출

ScriptEngineManager를 사용하면 자바에서 자바 스크립트 코드를 호출하고 해석 할 수 있습니다.

C : \> JAVA에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.

Java8Tester.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 = "Mahesh";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      } catch(ScriptException e) {
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   }
}

결과 확인

다음을 사용하여 클래스 컴파일 javac 다음과 같이 컴파일러-

C:\JAVA>javac Java8Tester.java

이제 다음과 같이 Java8Tester를 실행하십시오.

C:\JAVA>java Java8Tester

다음 결과를 생성해야합니다-

Mahesh
12

JavaScript에서 Java 호출

다음 예제는 Java 스크립트에서 Java 클래스를 가져오고 사용하는 방법을 설명합니다.

생성 및 저장 sample.js c : \> JAVA 폴더에 있습니다.

sample.js

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

콘솔을 열고 다음 명령을 사용하십시오.

C:\JAVA>jjs sample.js

다음 출력을 생성해야합니다.

78952000000000000003.20