我是GWT的忠实粉丝(将Java转换为在浏览器中运行的JavaScript),但有没有任何工具可以将Java转换为JavaScript以在JVM中运行(通过Nashorn或Rhino)?< / p>
更新
更多信息......我正在探索的想法是将后端代码编译为JavaScript,然后将其存储在数据库中。然后,Web应用程序可以启动后端模块&#34;离开数据库并在服务器上执行它。
更新
我没有将此作为答案发布,因为我怀疑这是一个好主意,但出于好奇,我尝试在JVM中运行GWT生成的JavaScript。在&#34;详细&#34;编译我不得不模拟GWT期望存在的3个DOM对象(黑客!),但它确实有效。
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);
}-*/;
}
......模拟的文件类......
测试/ 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
答案 0 :(得分:0)
Java和JavaScript类似,Car和Carpet类似。
你不会找到一个通用的解决方案,第一个没有错误的复杂代码。
我道歉,但最好和最快的解决方案是手动,一步一步,因为你将花费太多时间进行调试和手动调整。