2012-09-18 44 views
2

在GWT Web /生产模式下,Java代码被编译为在浏览器中呈现的Javascript代码。GWT代码如何在开发代码中运行

另外,我一直认为在GWT开发模式下,GWT开发人员插件会将我的Java代码编译为JavaScript以在浏览器中呈现它。但是在阅读了某个网站之后,我开始意识到,没有编写JavaScript代码来在开发模式下在浏览器中查看它。

所以,我想知道:在这种模式下,如果他们不是JavaScript代码,我在浏览器中看到的所有这些小部件是什么?我不明白。

请帮忙理解一下。

回答

6

开发模式的关键在于您的代码以Java运行。如果您可以使用标准的Java调试器,这是一个先决条件。您将在GWT documentation中找到高级概览。

魔术带JSNI methodsoverlay types发生的情况:当加载一个类,提取其所有JSNI方法及其JS体被发送到浏览器,准备好执行(如JavaScript的话),和类被重写在飞行重新实现JSNI方法来调用浏览器(通过你在那里安装的Dev Plugin,并在URL中被?gwt.codesvr=触发)来执行相应的JS函数。这就是Java对象在JSNI方法中被看作不透明句柄的原因;他们被分配一个数字ID来将Java对象与服务器端的虚拟JS对象配对。对覆盖类型进行类似的更复杂的重写,并且当JS对象被传递给Java代码时使用相同的ID映射(作为覆盖类型)。

顺便说一句,Super Dev Mode编译为JavaScript(快)即时