2012-10-16 57 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部分。