sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | http://1 |
extra_vars4 | ko |
extra_vars5 | http://azkidev.tistory.com/35 |
extra_vars6 | sitelink1 |
1. Rhino : http://www.mozilla.org/rhino/
2. env.js : http://groups.google.com/group/envjs
일단 그냥 javascript 자체는 jdk 1.6 부터 ScriptManager 로 그냥 실행 시킬 수 있다. 아래같이 걍 쓰면
된다.
import javax.script.*;
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("print(1+3);");
그런데 문제점은 기존의 코드를 그대로 돌릴 수 없다는 점. 가장 문제는 window 객체도 없고 document 도 없다. 물론,
html 영역도 없으므로 기존의 코드가 브라우저의 내장 객체들을 사용하면 그 코드는 돌아가지 않는다.
그런 객체들을 만들어주는 코드가 바로 env.js 이다. 순수 자바스크립트로 이루어져있는 이 코드는 window 객체부터,
document 객체는 물론이고, dom 객체들의 innerHTML 같은 속성까지 구현해놓았다.
그럼 ScriptManager 에 env.js 를 넣고 실행한 후 하면 될 것 같다. 하지만 문제는 또 있다. env.js
는 ScriptManager 가 제공하는 자바스크립트 스펙만으로는 동작하지 않는다. env.js 에는 getter, setter 같은 것이
구현되어 있는데, 그건 ECMA-262 Edition 4 부터 지원되는 것 같다. 아무튼 그냥 jdk 1.6 안에 있는 걸루는 안되니 rhino
를 따로 받아서 해야한다.
env.js 나 js-14.jar 나 그냥 url 로 들어가서 받아도 된다.
아무튼 jar 를 자바빌드패스를 설정해서 넣어주고, 다음과 같이 하면 된다.
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
ContextFactory factory = ContextFactory.getGlobal();
Context cx = factory.enterContext();
cx.setOptimizationLevel(-1);// without 64kb limit
Scriptable shared = cx.initStandardObjects();
Scriptable scope = cx.newObject(shared);
cx.evaluateReader(scope, new java.io.FileReader("env.rhino.js"), "", 1,
null);
String source ="";
source += "var div = document.createElement("div");";
source += "div.innerHTML = "korea";";
source += "document.body.appendChild(div);";
source += "document.body.innerHTML;";
Object result = cx.evaluateString(scope, source, "", 1, null);
System.out.println(result);//"<div>korea</div>"
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
11 |
env.js 사용시 부족한 부분
![]() | 황제낙엽 | 2012.02.15 | 334 |
» |
Rhino 와 env.js 를 사용해서 자바 서버에서 javascript 를 구동해보자
![]() | 황제낙엽 | 2012.02.15 | 398 |
9 | 라이노 (Rhino) 관련 링크 모음 | 황제낙엽 | 2008.07.21 | 381 |
8 | Rhino scopes and contexts 에 대한 문서 | 황제낙엽 | 2008.07.18 | 389 |
7 |
동적인 언어를 동적으로 호출하기
![]() | 황제낙엽 | 2008.07.14 | 271 |
6 | How to use Rhino to script Java classes. | 황제낙엽 | 2008.07.14 | 464 |
5 | Java 버전의 JavaScript 엔진 라이노 (Rhino) | 황제낙엽 | 2008.07.14 | 456 |
4 |
SpiderMonkey 를 이용한 개발 일기
![]() | 황제낙엽 | 2008.07.14 | 262 |
3 | JSAPI User Guide | 황제낙엽 | 2008.07.14 | 408 |
2 | State of ECMAScript 4 ('07 12) | 황제낙엽 | 2008.07.14 | 404 |
1 | SpiderMonkey와 Tamarin | 황제낙엽 | 2008.07.14 | 400 |