我对GWT实现JRE库仿真技术感兴趣。GWT运行时Java模拟
GWT如何模拟Java库?
HashMap在JavaScript中的有效实现?它是在纯JavaScript中实现的,还是在代码中被编译为Java源代码?
我明白在gwt-dev库中有一些实现存在开发(托管)模式。生产代码的实现是否相同?
我对GWT实现JRE库仿真技术感兴趣。GWT运行时Java模拟
GWT如何模拟Java库?
HashMap在JavaScript中的有效实现?它是在纯JavaScript中实现的,还是在代码中被编译为Java源代码?
我明白在gwt-dev库中有一些实现存在开发(托管)模式。生产代码的实现是否相同?
您可以在线浏览代码,例如HashMap,或更有趣的AbstractHashMap。如您所见,有一些JSNI方法(关键字native
和/*-{ ... }-*/
语法)。但是仿真代码中的许多方法都是在JSNI方法的基础上构建的:它们被编写为“更高级别”的Java方法。
这个仿真代码实际上就是您自己编写的GWT代码(但当然JSNI代码的百分比更高,统计上)。它使用<super-source>
机制:通过这种方式,与开发模式相比,同一类的客户端代码在生产模式下可以不同。
你可以检查什么是模拟JRE库here。对于他们中的大多数人来说,GWT将使用JavaScript对应物,但有些情况下GWT会拥有自己的JavaScript实现版本。
在HashMaps的情况下,由于内置的JavaScript版本只提供String-> value map,因此GWT将使用它自己的实现来支持Object-> Object map。你可以找到更多的细节here。
还要了解生产(编译)和开发模式(调试)之间有什么区别,您可以检查Compile & Debug部分。