자바 - Nashorn 자바스크립트 엔진

안녕하세요, 더 나은 프로그래머가 되고자 하는 여러분! 자바와 Nashorn 자바스크립트 엔진의 흥미로운 세계로 여러분을 안내할 수 있어 기쁩니다. 컴퓨터 과학을 10年以上 가르치신 저는 여러분이 이 묘사를 즐겁고 깨달음을 얻을 것이라고 확신합니다. 그럼, let's dive in!

Java - Nashorn JavaScript

Nashorn 자바스크립트 엔진이란?

Nashorn( 발음은 "nass-horn")은 자바 8에서 도입된 가볍고 고성능의 자바스크립트 엔진입니다. 자바와 자바스크립트 간의 다리 역할을 하며, 자바 애플리케이션 내에서 자바스크립트 코드를 실행할 수 있게 합니다. 멋지지 않나요?

조금의 역사

저가 교육을 시작한 초기에는 자바와 자바스크립트에 각각 별도의 환경을 사용해야 했습니다. 마치 두 개의 별도의 접시에 있어서 피넛 버터와 젤리 샌드위치를 만들어야 하는 것과 같았습니다! Nashorn은 이러한 두 가지 강력한 언어를 하나의极品의 조화로 통합시켰습니다.

명령줄 도구를 통해 자바스크립트 실행

먼저 간단한 것부터 시작해 봅시다. Nashorn은 jjs라는 명령줄 도구를 제공하며, 이를 통해 터미널에서 직접 자바스크립트를 실행할 수 있습니다.

예제 1: Hello, Nashorn!

명령 프롬프트를 열고 다음을 입력하세요:

jjs
print("Hello, Nashorn!");

화면에 "Hello, Nashorn!"가 출력되면 성공입니다. 축하합니다! 여러분은 Nashorn을 사용하여 첫 번째 자바스크립트 코드를 실행했습니다.

명령 프롬프트에서 직접 자바스크립트 실행

자바스크립트 파일을 명령줄에서 직접 실행할 수도 있습니다.

예제 2: 자바스크립트 파일 실행

  1. greet.js라는 파일을 생성하고 다음 내용을 추가하세요:
var name = "Alice";
print("Hello, " + name + "!");
  1. jjs를 사용하여 실행하세요:
jjs greet.js

화면에 "Hello, Alice!"가 출력되어야 합니다.

jjs에 인수 전달

Nashorn은 자바처럼 자바스크립트 코드에 인수를 전달할 수 있습니다.

예제 3: 인수 전달

greet_with_args.js라는 파일을 생성하세요:

var name = $ARG[0];
print("Hello, " + name + "!");

인수를 사용하여 실행하세요:

jjs greet_with_args.js -- Bob

화면에 "Hello, Bob!"가 출력되어야 합니다.

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

이제 정말 흥미로운 부분을 알아보겠습니다 - 자바 코드 내에서 자바스크립트를 호출하는 방법!

예제 4: 자바에서 자바스크립트 평가

import javax.script.*;

public class JavaScriptInJava {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("print('Hello from JavaScript!');");
}
}

이 자바 프로그램을 실행하면 Nashorn 엔진을 사용하여 "Hello from JavaScript!"를 출력합니다.

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

Nashorn의 참 진력은 자바 클래스와 메서드를 자바스크립트 코드 내에서 사용할 수 있게 한다는 점입니다.

예제 5: 자바스크립트에서 자바 클래스 사용

import javax.script.*;

public class JavaInJavaScript {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var ArrayList = Java.type('java.util.ArrayList');" +
"var list = new ArrayList();" +
"list.add('Hello');" +
"list.add('World');" +
"print(list);");
}
}

이 코드는 자바 ArrayList를 생성하고, 요소를 추가하고, 출력하는 모든 작업을 자바스크립트에서 수행합니다!

고급 기능

Nashorn은 자바 개발자에게 많은 고급 기능을 제공하여 강력한 도구로 사용할 수 있습니다.

예제 6: 자바 8 람다 표현 사용

import javax.script.*;

public class LambdaInNashorn {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var list = [1, 2, 3, 4, 5];" +
"list.forEach(function(num) { print(num * 2); });");
}
}

이 예제는 자바 8 람다 표현을 자바스크립트 코드 내에서 실행하는 방법을 보여줍니다.

메서드 표

Nashorn에서 사용할 수 있는 중요한 메서드 목록입니다:

메서드 설명
ScriptEngineManager.getEngineByName("nashorn") Nashorn 스크립트 엔진을 가져오기
ScriptEngine.eval(String script) 자바스크립트 스크립트를 평가하기
ScriptEngine.put(String key, Object value) 스크립트 엔진에 변수를 설정하기
ScriptEngine.get(String key) 스크립트 엔진에서 변수를 가져오기
Invocable.invokeFunction(String name, Object... args) 자바스크립트 함수를 호출하기

결론

그렇게 여러분과 함께 Nashorn의 기능에 대해表面的으로만 살펴보았습니다만, 이 소개가 여러분의 호기심을 자극했기를 바랍니다. 프로그래밍을 마스터하는 키는 연습이니, 이 예제들을 실험해 보시고 자신만의 것을 만들어 보세요.

항상 학생들에게 말하는 것처럼, 코딩은 자전거 타기와 같습니다 - 처음에는 두려울 수 있지만, 연습만 하면 곧 자유자재로 달릴 수 있습니다. 그리고谁知道? 아마도 어느 날 여러분도 Nashorn의 위대함을 다른 사람들에게 가르치게 될지도 모릅니다!

코딩을 계속하고, 배우고, 가장 중요한 것은 즐기세요! 다음에 뵙겠습니다, 여러분의 친절한 이웃 컴퓨터 과학 교사입니다. 즐거운 코딩!

Credits: Image by storyset