java - 玩框架。无需编译

标签 java web-applications compilation playframework jit

有人向我介绍了 Play 框架,我发现其中一个令人惊奇的事情是不需要编译项目。您只需要保存编辑的文件并重新加载网页。

我被告知 Java 源代码被编译为字节码,然后用 JIT 编译器编译,那么 Play 框架内部有什么神奇之处?

最佳答案

在 DEV 模式下运行时,Play 的工作方式是检查 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

关于java - 玩框架。无需编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704951/

相关文章:

c - 我应该如何用 cc 编译这个旧代码

c++ - 如何编译 C++ 代码以在网页中显示(如在 PHP 中)

java - 如何让我的删除功能删除包含我输入内容的整行,而不是仅删除我输入的内容?

java - 如何在 Java GridLayout 中使用边距和填充

java - 康威的生命游戏调试 (Java)

java - 通过 Java 连接 Titan 数据库 - 引发异常

tomcat - apache 中的连接池(Web 服务器)

gradle - Gradle无法编译。库寻找不相关的可绘制对象

java - 启动嵌入式jetty时指定系统属性

python - 在 Python 中测量性能