我想我该纠正一下。还是犯了以名臆断的毛病,没认真调查就发表意见。j2s 其实并非由Java 动态生成 Javascript,而是直接用js 编写了一套基础的jvm(lang,io.util)以及 swt 库。完全同 java 和 swt 的package/class 名字匹配。和国内一个名为jsvm的项目思路相似,只不过完全遵从jvm和swt的命名规范。javascript 写成这样,确实不容易。所以它不应该叫Java2Script,而应该是JavaScript2。对这样的方式,忍不住又想举个例子,犹如一座山挡在路前,上有一条近捷的山路,旁有一条环山的远路,都能到达山对面。你会选择哪条路。我是愿意上山的,为了可以远眺的风景。
Java2Script是Java to JavaScript,而JSVM是JavaScript for Java。一个是2,一个是4。这两者的本质(或者说出发点)我觉得有点不一样。JSVM是自己实现了一套运行的环境,包括很多API函数。而J2S更多的是提供一个底层的*.js文件,然后其它的代码都是由已有的Java代码来生成(有可能需要稍微做点小改动),也就是说Java2Script更多地站在Java开发者而不是JavaScript开发者的角度来发展的。当然如果就虚拟机的层次来说,其实两者是相似的。而真正地站在Eclipse JDT这个巨人的肩膀上,我觉得这个是J2S的最大亮点。但是就复用的效率而言,就如前面有人说的,J2S的命名更加规范化,也就是能够更好地复用已有的code(更重要的是复用已有的工具,例如J2S tutorial使用到的Visual Editor一样)。
#1 Tutorial of J2S in Eclipse (1): Hello J2S World
http://j2s.sourceforge.net/articles/tutorial-hello-j2s-world.html#2 Tutorial of J2S in Eclipse (2): Hello Simple User -- More about Hello World
http://j2s.sourceforge.net/articles/tutorial-hello-j2s-user.html
有兴趣的可以去看看