2012-09-18 86 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(快)即時