산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 8 Nashorn JavaScript 엔진: 성능 향상과 새로운 jjs 도구

Java 8에서는 기존 Rhino를 대체할 크게 개선된 JavaScript 엔진인 Nashorn이 도입되었습니다. Nashorn은 코드를 메모리에서 직접 컴파일하여 바이트코드를 JVM에 전달하기 때문에 2~10배 더 나은 성능을 제공합니다. Nashorn은 Java 7에서 도입된 invokedynamics 기능을 활용하여 성능을 향상시킵니다.

jjs

Nashorn 엔진을 위해 Java 8은 콘솔에서 JavaScript 코드를 실행할 수 있는 새로운 명령줄 도구 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>

Java에서 JavaScript 호출

ScriptEngineManager를 사용하여 Java에서 JavaScript 코드를 호출하고 해석할 수 있습니다.

예제

원하는 편집기를 사용하여 다음 Java 프로그램을 작성하세요. (예: C:\> JAVA)

Java8Tester.java

Live Demo
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("스크립트 실행 오류: " + e.getMessage());
        }
        System.out.println(result.toString());
    }
}

결과 확인

javac 컴파일러를 사용하여 클래스를 컴파일하세요.

C:\JAVA>javac Java8Tester.java

다음과 같이 Java8Tester를 실행하세요.

C:\JAVA>java Java8Tester

다음과 같은 결과가 나와야 합니다.

Mahesh
12

JavaScript에서 Java 호출

다음 예제는 JavaScript에서 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

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  6. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  7. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  8. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교