2012-02-17 84 views
0

我在觀看直播http://www.humblebundle.com,我看到他們在運行應用程序,並在Eclipse中更改代碼。這只是下次他們編譯和運行時的變化,還是他實際上正在改變應用程序,因爲它以某種方式運行?實時代碼編譯?

+2

你應該在你的問題中包含更多的上下文,以便在直播結束後有意義。 – millimoose 2012-02-17 20:58:04

回答

3

有時。 在調試模式下,eclipse可以編譯和更改正在運行的JVM中的類文件,這稱爲熱代碼替換

的想法是,你就可以開始在給定的運行 工作臺調試會話,並在你的開發工作臺改變的Java文件,並 調試器將取代在接受VM的代碼,而這是 運行。不需要重新啓動,因此引用「熱」。

來源:Eclipse Wiki

有某些情況下在那裏這是不行的,在這種情況下,Eclipse會提示你重新啓動。 Hot code replace failed

+0

「某些情況」是當你編輯的東西不僅僅是一個方法體,即添加一個新的方法,改變簽名,新的類或配置。所以基本上熱代碼替換的功能非常有限 – 2012-02-18 14:21:48

0

在運行時更改應用程序代碼的能力是調試器的功能。在Eclipse和許多其他流行的IDE中,它「開箱即用」。功能有幾個限制:不能改變方法簽名,添加/刪除類成員等

1

這就是所謂的hot code replace

的想法是,你可以在給定的運行時工作臺啓動調試會話並在您的開發工作臺中更改Java文件,並且調試器將在運行時替換接收VM中的代碼。不需要重新啓動,因此引用「熱」。

0

如果您處於調試模式,則可以在應用程序運行時進行某些更改。它是否有效取決於更改是否爲當前加載的代碼。例如,您可以在程序未進行排序時更改排序函數,並在下次排序時使用新代碼。

1

從流中判斷是不可能的。 Java在某種程度上都具有這種能力 - 您可以通過一些限制來使用調試器替換由JVM加載的類。還有JRebel,它擺脫了很多這些限制。