我想建立一個小型產品,我想給一種功能,用戶可以在其中編寫腳本語言的一種JavaScript。我如何在Java中使用Javascript?
還可以從JavaScript能夠建立對象和調用方法。
有沒有這方面的框架?
我想建立一個小型產品,我想給一種功能,用戶可以在其中編寫腳本語言的一種JavaScript。我如何在Java中使用Javascript?
還可以從JavaScript能夠建立對象和調用方法。
有沒有這方面的框架?
的Java包括scripting language extension package版本開始,6
見Rhino project documentation for embedding a JavaScript interpreter in Java。
[編輯]
這裏是你如何將Java對象到你的解釋腳本的一個小例子:
public class JS {
public static void main(String args[]) throws Exception {
ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript");
Bindings bindings = js.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("stdout", System.out);
js.eval("stdout.println(Math.cos(Math.PI));");
// Prints "-1.0" to the standard output stream.
}
}
+1另請參閱這個小[ScriptEngine示例](http://stackoverflow.com/questions/7441625/how-to-find-a-button-source-in-awt-calculator-homework/7441804#7441804 )。 –
您可以使用的ScriptEngine,例如:
public class Main {
public static void main(String[] args) {
StringBuffer javascript = null;
ScriptEngine runtime = null;
try {
runtime = new ScriptEngineManager().getEngineByName("javascript");
javascript = new StringBuffer();
javascript.append("1 + 1");
double result = (Double) runtime.eval(javascript.toString());
System.out.println("Result: " + result);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
讓我試試....現在..... –
這就像在javascript中評估和獲得結果在Java中。如果我想直接在javascript中使用java對象呢? ..... –
閱讀文檔 - 在另一個答案中提供的Rhino鏈接在前幾段討論了這一點。 –
包含在JDK 6中的Rhino JavaScript引擎正在被新的引擎稱爲Nashorn JDK 8.
Oracle blog for Nashorn包含新聞以及源代碼示例。
Oracle Nashorn提供了Java和JavaScript世界之間的互操作性。這意味着您的Java代碼可以調用JavaScript代碼,反之亦然。 Basic tutorial瞭解如何使用Oracle Nashorn編寫程序。
我只是想回答這個問題的新東西 - J2V8
。
作者伊恩·布爾說:「犀牛和犀牛是兩種常見的JavaScript運行時間,但這些並不能滿足一些領域我們的要求:
既不支持的基本概念,「這些平臺的所有互動要求包裝類如Integer,Double或Boolean Android不支持Nashorn Android不支持Rhino編譯器優化 這兩種引擎都不支持Android上的遠程調試。「」
@Felix:一樣酷,因爲它是Node.js的無關與Java或Web瀏覽器,對不對? – maerics
@maerics正確,但它可以提供一個控制檯來修補。它可以運行腳本。 OP沒有提及任何有關網頁瀏覽器的內容:) – Felix
@Felix然後,「每個瀏覽器所擁有的JavaScript控制檯都是不相關的,而node.js不是Java,所以...似乎沒有 –