English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java 다른 주제
Nashorn은 하나의 javascript 엔진입니다. 15 Nashorn JavaScript Engine은 Java
이는 Java에서 이미 사용할 수 없습니다. 11 로 표시되었습니다:
@deprecated (forRemoval = true)
에서부터 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는 Nashorn 엔진을 기반으로 한 명령 줄 도구입니다. 몇 가지 JavaScript 소스 코드를 인자로 받아 이를 실행합니다.
예를 들어, 다음과 같은 내용을 가진 sample.js 파일을 생성했습니다:
print('Hello World!');
컨솔을 엽니다. 다음 명령어를 입력하세요:
$ jjs sample.js
위 프로그램의 출력 결과는 다음과 같습니다:
Hello World!
컨솔을 엽니다. 다음 명령어를 입력하세요:
$ jjs jjs> print("Hello, World!") Hello, World! jjs> quit() >>
컨솔을 엽니다. 다음 명령어를 입력하세요:
$ jjs -- a b c jjs> print('알파벳: ') +arguments.join(", ")) 알파벳: a, b, c jjs>
ScriptEngineManager를 사용하여, JavaScript 코드가 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"); }catch(ScriptException e){ System.out.println("스크립트 실행 오류: "+ e.getMessage()); } System.out.println(result.toString()); } }
위 스크립트 실행 후, 출력 결과는 다음과 같습니다:
$ javac Java8Tester.java $ java Java8Tester w3codebox 12
다음 예제는 JavaScript에서 Java 클래스를 참조하는 방법을 보여줍니다:
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