我是GWT的巨大粉絲(將Java轉換爲在瀏覽器中運行的JavaScript),但是有沒有將Java轉換爲JavaScript以在JVM中運行的任何工具通過Nashorn或Rhino)?將Java轉換爲在JVM上運行的JavaScript
更新
更多信息...我探索的想法是編譯後端代碼爲JavaScript,然後將其存儲在數據庫中。然後,Web應用程序可以將後端「模塊」拉出數據庫並在服務器上執行它。
更新
我沒有張貼此作爲一個答案,因爲我懷疑這是一個好主意,但出於好奇我試圖在JVM上運行GWT生成的JavaScript。在「詳細」級別編譯時,我不得不模擬3個GWT期望存在的DOM對象(hack!),但它確實有效。
Test.gwt.xml
<module rename-to='test'>
<entry-point class='test.client.Test'/>
<source path='client'/>
<source path='shared'/>
<super-source path="jre"></super-source>
<add-linker name="xsiframe"/>
</module>
...注意超源JRE ...
測試/客戶/ Test.java
public class Test implements EntryPoint {
public void onModuleLoad() {
print("" + new File("/Users/.../someFile.txt").exists());
print("Hey");
}
public native void print(String msg) /*-{
print(msg);
}-*/;
}
...的嘲笑文件類...
test/jre/java/io/File.java
public class File {
public File(String name) {
_init(name);
}
private native void _init(String name) /*-{
this._obj = new java.io.File(name);
}-*/;
public native boolean exists() /*-{
return this._obj.exists();
}-*/;
}
測試/ RhinoTest.java
public class RhinoTest {
public static void main(String[] args) throws IOException, ScriptException {
String js = FileUtils.readFileToString(new File("/Users/.../Test/war/test/130CD4F977EDEB096DFEF9871580F1CD.cache.js"));
js = "var $wnd = { test: { __sendStats: function() {} } };"
+ js;
new ScriptEngineManager().getEngineByName("JavaScript").eval(js);
}
}
產地:
trueHey
Rhino將js編譯爲類,您可以提供Applet運行時(用於安全性)並直接運行編譯後的Java代碼。 – thst
我剛剛更新了我的問題,提供了有關我的用例的更多信息。我需要在服務器上運行這個,而不是在瀏覽器中運行。除非你知道我沒有的東西,否則在服務器上運行applet並不比在動態加載jar並運行它更容易。 – Stinky
你爲什麼不寫JavaScript? –