增量Java編譯

2024-01-03 13:56 更新

從Gradle2.1開始,可以使用Java增量編譯,此功能正在孵化,參見JavaCompile如何啟用這個(gè)功能. 增量編譯的主要目標(biāo)如下:

  • 避免在沒必要編譯的java編譯資源上浪費(fèi)時(shí)間.這意味著更快構(gòu)建,尤其是在改變一些class與jar的時(shí)候,不需要再次編譯那些不依賴這些class與jar的文件.
  • 盡可能地少輸出class.類不需要重新編譯意味著保持輸出目錄不變。一個(gè)示例場(chǎng)景中,真正使用JRebel的真正有用的是 - 越少的輸出類被改變,JVM可以使用越快刷新。

更高級(jí)的增量編譯:

  • 檢測(cè)陳舊類的設(shè)置是否正確是以犧牲速度為代價(jià)的,該算法分析字節(jié)碼并與編譯器直接交互(非私有常量?jī)?nèi)聯(lián)),依賴傳遞等.舉個(gè)例子:當(dāng)一個(gè)類的公共常量改變后,我們希望避免由編譯器編譯內(nèi)聯(lián)常數(shù)產(chǎn)生的問題,我們將調(diào)整算法和緩存以便增量Java編譯可以是每編譯任務(wù)的默認(rèn)設(shè)置。
  • 為了使增量編譯快,我們緩存會(huì)分析class的結(jié)果和jar快照。最初的增量編譯應(yīng)該會(huì)慢于cold caches.123


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)