2012-07-28 71 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 

完成开发模式(第一命令后,在下一个页面命中重新编译代码,下一个文件的变化之后第二)

在生产模式下运行的应用程序可以与

完成