자바 - Nashorn 자바스크립트 엔진
안녕하세요, 더 나은 프로그래머가 되고자 하는 여러분! 자바와 Nashorn 자바스크립트 엔진의 흥미로운 세계로 여러분을 안내할 수 있어 기쁩니다. 컴퓨터 과학을 10年以上 가르치신 저는 여러분이 이 묘사를 즐겁고 깨달음을 얻을 것이라고 확신합니다. 그럼, let's dive in!
Nashorn 자바스크립트 엔진이란?
Nashorn( 발음은 "nass-horn")은 자바 8에서 도입된 가볍고 고성능의 자바스크립트 엔진입니다. 자바와 자바스크립트 간의 다리 역할을 하며, 자바 애플리케이션 내에서 자바스크립트 코드를 실행할 수 있게 합니다. 멋지지 않나요?
조금의 역사
저가 교육을 시작한 초기에는 자바와 자바스크립트에 각각 별도의 환경을 사용해야 했습니다. 마치 두 개의 별도의 접시에 있어서 피넛 버터와 젤리 샌드위치를 만들어야 하는 것과 같았습니다! Nashorn은 이러한 두 가지 강력한 언어를 하나의极品의 조화로 통합시켰습니다.
명령줄 도구를 통해 자바스크립트 실행
먼저 간단한 것부터 시작해 봅시다. Nashorn은 jjs
라는 명령줄 도구를 제공하며, 이를 통해 터미널에서 직접 자바스크립트를 실행할 수 있습니다.
예제 1: Hello, Nashorn!
명령 프롬프트를 열고 다음을 입력하세요:
jjs
print("Hello, Nashorn!");
화면에 "Hello, Nashorn!"가 출력되면 성공입니다. 축하합니다! 여러분은 Nashorn을 사용하여 첫 번째 자바스크립트 코드를 실행했습니다.
명령 프롬프트에서 직접 자바스크립트 실행
자바스크립트 파일을 명령줄에서 직접 실행할 수도 있습니다.
예제 2: 자바스크립트 파일 실행
-
greet.js
라는 파일을 생성하고 다음 내용을 추가하세요:
var name = "Alice";
print("Hello, " + name + "!");
- 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