본 글은 자바의 새로운 기능인 나스호른(Nashorn) 관련 정보를 주로 소개합니다. 필요하신 분들은 참고하시면 됩니다.
나스호른(Nashorn)은 무엇인가요? 제2차 세계대전 당시의 독일 전차이자 java8의 차세대 javascript 엔진이기도 합니다. 오래되고 느린 Rhino를 대체하며 ECMAScript-262 버전 5.1 언어 사양을 준수합니다. javascript는 웹 브라우저에서 실행되고 html에서는 다양한
dom 연산을 제공한다고 생각할 수 있지만 Nashorn은 브라우저 DOM 객체를 지원하지 않습니다. 이것은 주목할 점입니다. Nashorn 시작 정보
Jjs 도구와 javax.script 패키지의 API라는 두 가지 측면이 있습니다. jjs는 java_home/bin에 있습니다. 예를 들어 func를 만들어 보겠습니다. .js의 내용은 다음과 같습니다.
function f() { return 1; }; print( f() + 1 );
jjs func.js
또 다른 측면은 javax.script입니다. 이전에는 Rhino의 왼쪽입니다. API
ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName( "JavaScript" ); System.out.println( engine.getClass().getName() ); System.out.println( "Result:" + engine.eval( "function f() { return 1; }; f() + 1;" ) );
jdk.nashorn.api.scripting.NashornScriptEngine Result: 2 Nashorn VS Rhino
static void rhino(String parser, String code) { String source = "speedtest"; int line = 1; Context context = Context.enter(); context.setOptimizationLevel(9); try { Scriptable scope = context.initStandardObjects(); context.evaluateString(scope, parser, source, line, null); ScriptableObject.putProperty(scope, "$code", Context.javaToJS(code, scope)); Object tree = new Object(); Object tokens = new Object(); for (int i = 0; i < RUNS; ++i) { long start = System.nanoTime(); tree = context.evaluateString(scope, "esprima.parse($code)", source, line, null); tokens = context.evaluateString(scope, "esprima.tokenize($code)", source, line, null); long stop = System.nanoTime(); System.out.println("Run #" + (i + 1) + ": " + Math.round((stop - start) / 1e6) + " ms"); } } finally { Context.exit(); System.gc(); } } static void nashorn(String parser, String code) throws ScriptException,NoSuchMethodException { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("nashorn"); engine.eval(parser); Invocable inv = (Invocable) engine; Object esprima = engine.get("esprima"); Object tree = new Object(); Object tokens = new Object(); for (int i = 0; i < RUNS; ++i) { long start = System.nanoTime(); tree = inv.invokeMethod(esprima, "parse", code); tokens = inv.invokeMethod(esprima, "tokenize", code); long stop = System.nanoTime(); System.out.println("Run #" + (i + 1) + ": " + Math.round((stop - start) / 1e6) + " ms"); } // System.out.println("Data is " + tokens.toString() + " and " + tree.toString()); }
Java를 사용하여 javascript를 구현하는 이유
이것은 또한 대부분의 학생들이 동의하는 견해입니다. 1. 성숙한 JIT 컴파일러
3.
4. 풍부한 표준 라이브러리 및 타사 라이브러리
일반적으로 Java 플랫폼의 기존 리소스를 최대한 활용합니다.
요약
새 Rhino는 Rhino보다 훨씬 빠른 코뿔소 스타일의 마차라고 할 수 있습니다. 고성능 JavaScript 실행 환경인 Nashorn에는 많은 가능성이 있습니다. 예를 들어 Avatar.js는 Nashorn을 사용하여 JVM에서 Node.js 프로그래밍 모델 구현을 지원하고 내장된 로드 밸런서를 사용하여 여러 이벤트 루프를 구현하는 등의 다른 새로운 기능도 추가합니다. 멀티스레딩을 사용하여 경량 메시징 메커니즘 구현 Avatar는 JPA 기반 순수 JavaScript ORM 프레임워크인 Model-Store도 제공합니다.
기업에서 Nashorn을 활용하는 또 다른 방법은 스크립팅입니다. 일반적으로 Linux와 같은 쉘 스크립트를 사용하는 것과 비교하면 이제Javascript스크립트를 사용하여 Java와 상호 작용할 수 있으며 Nashorn을 사용하여 REST 인터페이스를 통해 서버 작업을 모니터링할 수도 있습니다. . 상황.
위 내용은 Java의 새로운 기능인 Nashorn의 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!