2012-10-16 56 views
0

我对GWT实现JRE库仿真技术感兴趣。GWT运行时Java模拟

GWT如何模拟Java库?

HashMap在JavaScript中的有效实现?它是在纯JavaScript中实现的,还是在代码中被编译为Java源代码?

我明白在gwt-dev库中有一些实现存在开发(托管)模式。生产代码的实现是否相同?

回答

2

您可以在线浏览代码,例如HashMap,或更有趣的AbstractHashMap。如您所见,有一些JSNI方法(关键字native/*-{ ... }-*/语法)。但是仿真代码中的许多方法都是在JSNI方法的基础上构建的:它们被编写为“更高级别”的Java方法。

这个仿真代码实际上就是您自己编写的GWT代码(但当然JSNI代码的百分比更高,统计上)。它使用<super-source>机制:通过这种方式,与开发模式相比,同一类的客户端代码在生产模式下可以不同。

4

你可以检查什么是模拟JRE库here。对于他们中的大多数人来说,GWT将使用JavaScript对应物,但有些情况下GWT会拥有自己的JavaScript实现版本。

在HashMaps的情况下,由于内置的​​JavaScript版本只提供String-> value map,因此GWT将使用它自己的实现来支持Object-> Object map。你可以找到更多的细节here

还要了解生产(编译)和开发模式(调试)之间有什么区别,您可以检查Compile & Debug部分。