将Java转换为在JVM上运行的JavaScript

时间:2015-06-02 14:49:41

标签: java javascript gwt rhino nashorn

我是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

1 个答案:

答案 0 :(得分:0)

Java和JavaScript类似,Car和Carpet类似。

你不会找到一个通用的解决方案,第一个没有错误的复杂代码。

我道歉,但最好和最快的解决方案是手动,一步一步,因为你将花费太多时间进行调试和手动调整。