2012-07-28 70 views
6

我被介紹到Play框架,驚人的事情,我發現這件事之一是,沒有必要編譯項目。您只需保存編輯後的文件並重新加載網頁即可。播放框架。無需編譯

我被教導說,Java源代碼被編譯成字節碼,然後用JIT編譯器編譯,所以什麼是遊戲框架內的魔力呢?

回答

11

當DEV模式下運行,通過檢查java文件的最後修改日期播放的作品,並跨越與在運行時所產生的.class文件中引用它們。如果它識別出有變化,則在運行時重新編譯它們。

在Play 1.x中 - 使用eclipse jdt編譯器(org.eclipse.jdt.internal.compiler.Compiler)完成重新編譯。如果您想查看Play 1.x中的代碼,請查看以下課程 - https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

在Play 2.x中,看起來好像Play是通過與SBT工具鏈接來完成的。檢查了這一點 - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala

4

儘管您沒有提及Play的哪個版本以最簡單的話來說非常驚訝,但它可以這樣描述:在development mode中觀看屬於您的應用的所有文件,並且在任何改變的情況下重新編譯所需的部分。因此,DEV不應該用於生產 - 因爲它是性能的重大損失。否則:當你以生產模式啓動你的應用程序時,它將避免立即重新編譯,但它會獲得性能。

在播放2上運行的應用程序與

play run 

play ~run 

完成開發模式(第一命令後,在下一個頁面命中重新編譯代碼,下一個文件的變化之後第二)

在生產模式下運行的應用程序可以與

完成