簡體   English   中英

在GWT中過度使用JSNI調用的任何缺點?

[英]Any downsides to excessively using JSNI calls in GWT?

可能看起來像一個天真的問題,但使用很多JSNI而不僅僅是堅持純GWT有明顯的缺點(性能明智)嗎?

我問,因為當我使用GWT時,我發現自己必須處理通過使用成熟的Javascript庫最佳接近的非常具體的要求......

唯一的缺點是使用第三方庫:你不會受益於GWT編譯所做的死代碼修剪 (也就是說,除非你以某種方式將lib包裝為JSNI)。

實際上,還有另外一個:因為GWT只會優化你的JS代碼,所以如果用Java編寫的話,你不會受益於進一步的優化。 這是因為Java是一種靜態類型的語言。

除此之外,不,JSNI對性能沒有負面影響(在DevMode中它實際上可能完全相反:你從Java切換到JS和/或Js到Java越多,它變得越慢;但這只適用於DevMode,這反過來會在未來幾個月內被棄用 )。

我認為JSNI代碼在開發模式下速度較慢。 但是,開發模式顯然應該很快被替換為超級草案模式,請參閱https://plus.google.com/110412141990454266397/posts/iqXo5AyHkyd

此外,我不確定GWT能夠在多大程度上分析和優化純Javascript代碼。 在編譯純Java時,GWT會進行大量的內聯和其他優化。

另一個問題可能是加載庫的額外往返。

根據庫API的復雜性(即,如果需要包裝大量的類),將類似的純Java庫轉換為GWT可能更簡單。 但這顯然不適用於UI庫或其他庫,嚴重依賴於GWT未涵蓋的Java運行時部分。

因此,如果存在適合您目的的成熟Javascript庫,最好將它們包裝在JSNI中並按照您的建議繼續進行。

JSNI邊界本身不會產生任何額外的運行時開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM