0

我对 GWT 实现 JRE 库仿真技术很感兴趣。

GWT 如何模拟 Java 库?

在 JavaScript 中如何有效地实现 HashMap?它是用纯 JavaScript 实现的,还是在代码中使用时编译为 Java 源代码?

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

4

2 回答 2

4

您可以在此处查看模拟的 JRE 库。对于他们中的大多数,GWT 将使用 JavaScript 对应物,但在某些情况下,GWT 将拥有自己的 JavaScript 实现版本。

在 HashMaps 的情况下,由于内置 JavaScript 版本仅提供 String->value 映射,GWT 将使用它自己的实现来支持 Object->Object 映射。您可以在此处找到更多详细信息。

另外要了解生产(编译)和开发模式(调试)之间的区别,您可以查看编译和调试部分。

于 2012-10-16T15:57:17.517 回答
2

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

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

于 2012-10-16T19:05:33.033 回答