我被介绍到Play框架,惊人的事情,我发现这件事之一是,没有必要编译项目。您只需保存编辑后的文件并重新加载网页即可。播放框架。无需编译
我被教导说,Java源代码被编译成字节码,然后用JIT编译器编译,所以什么是游戏框架内的魔力呢?
我被介绍到Play框架,惊人的事情,我发现这件事之一是,没有必要编译项目。您只需保存编辑后的文件并重新加载网页即可。播放框架。无需编译
我被教导说,Java源代码被编译成字节码,然后用JIT编译器编译,所以什么是游戏框架内的魔力呢?
当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
如果你在谈论游戏框架1.x中,它有一个应用程序类管理器,它自动加载Java源文件编译成字节码(使用Eclipse的Java编译器),在另外它会增强编译代码使用Javassist。检查https://github.com/playframework/play/tree/master/framework/src/play/classloading中的代码。
尽管您没有提及Play的哪个版本以最简单的话来说非常惊讶,但它可以这样描述:在development mode
中观看属于您的应用的所有文件,并且在任何改变的情况下重新编译所需的部分。因此,DEV不应该用于生产 - 因为它是性能的重大损失。否则:当你以生产模式启动你的应用程序时,它将避免立即重新编译,但它会获得性能。
在播放2上运行的应用程序与
play run
或
play ~run
完成开发模式(第一命令后,在下一个页面命中重新编译代码,下一个文件的变化之后第二)
在生产模式下运行的应用程序可以与
完成