playframework是怎么实现修改代码及时生效的呢?
修改代码即时生效!
编辑 Java 文件,保存,刷新浏览器,即可看到效果!无须编译,部署,重启服务器。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
编辑 Java 文件,保存,刷新浏览器,即可看到效果!无须编译,部署,重启服务器。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(12)
另外,我创建了一个Playframework的中文小站,目的是想大家一起翻译Playframework的文档,然后贡献出来。目前已经翻译了一小部分,剩下的,需要寻找社区的力量一起翻译。小站的网址是:
http://playframework.startup.sh/
参加翻译的人,都会在小站上得到公开,目的是让更多的人知道,你贡献过。有兴趣的人,可以发邮件给我(atell.wu#gmail.com),或到
http://weibo.com/playframework 留言。稍后会开辟一个文档贡献者的页面,计划将文档放到GitHub或Bitbucket,有意向者都可以参与翻译。
使用热部署。 Play启动jvm时,添加了javaagent的参数的。
以下是我使用ps aux | grep java 看到的命令含有的字符串:
不好意思 写少了 是: -javaagent:/home/atell/download/play-1.1.1/framework/play.jar -server
-javaagent:/home/atell/download/play-1.1.1/framework/play.jar -server
velocity,freemarker等等模板文件,都是基于时间对比的,发现模板比较新的话,从新分析语法树,node节点,当然开启缓存template!与jsp不同的是,
1,jsp编译成class,
2,remove old class,
3,reload class
基于缓存的template
1,将文本template解析为不同node节点的一个tree,暂且叫template tree
2,remove template tree
3,cache new template tree
呵呵,你这个问题让我想起来jsp,play中的的类应该与jsp一样的,在第一次请求jsp时,jsp由容器编译成servlet class文件(所以第一次比较慢),并记住当前【文件时间】属性,当下次请求时web容器会检查jsp文件与上次编译时间是否相同,如果不同将重新编译,否则继续使用已编译文件
虽然没看过play,但原理应该差不多
呵呵,你这个问题让我想起来jsp,play中的的类应该与jsp一样的,在第一次请求jsp时,jsp由容器编译成servlet class文件(所以第一次比较慢),并记住当前【文件时间】属性,当下次请求时web容器会检查jsp文件与上次编译时间是否相同,如果不同将重新编译,否则继续使用已编译文件
虽然没看过play,但原理应该差不多
应该是每个几秒扫描下字节码文件吧!貌似在哪儿看过!
play 很有动态语言的特性,好像是在字节码层面做了挺多工作的吧。模板引擎貌似用了 Groovy ,模型中貌似还能自动将 public 的属性转成 getter、setter,更诡异的是可以将 url 变量注入到方法参数。
Play 本来就这样啊
Play 本来就这样啊
自己顶一下。引大家互相讨论。