|
【IT168分析评论】 当我们在编写软件的过程中,编译,构建,测试的周期的速度直接影响着开发者的生产效率,如果我们必须重新编译,重新构建应用程序,并且重新部署,还有可能重新启动服务器,这将花费很长的时间从而减缓了开发的速度。
一些构建应用程序的平台,特别这些使用动态和脚本语言的,他们允许开发者对应用程序做出修改(代码,模板和配置)并且能够立即看到修改后的结果。
这些有着不同的叫法,例如有的叫自动重新加载,有的叫热部署,平台对和框架对这些性质支持的程度对开发者开发和维持一个web应用程序的效率有着重要的影响。
在Java中自动重新加载
大多数Java web框架都支持自动重新加载,通常以页面模板的标准开始,例如,在一个web应用程序中修改JSP文件,应用服务器就能够检测到所做的变化并能重新运行。
随着web应用程序不断变得复杂,要求重启服务器的时间也会增加,而自动重新加载可能需要更多的时间并有更多的限制,特别的与Rails上的Ruby相比更是如此。
最近几个Java web框架宣布已经增强了对自动重新加载的支持,下面对一些流行的Java web框架进行比较:
Grails
Grails 支持自动重新加载(auto-reloading)带有一些限制: 如果事务属性被设置为false,服务通常仅被重新加载。 在运行时,域的类要与数据库重新映射。如果通过''dbCreate''属性的''update''设置,数据源被配置为自动产生数据 库 ,那么数据源将尽可能更新数据库。改变域类偶尔的要求应用程序重启。
Seam
Seam 1.2.1已经引进了热部署的功能,只有支持Seam JavaBean,并不支持实体运行,也不能支持EJB3组件。
Spring MVC & Web Flow Spring 2.0.4 允许Spring MVC发报机被重新加载,Spring对支持动态语言就允许在 Beanshell和Groovy中写控制器和验证器,可以不用重启应用就可以重新刷新。
Spring Web Flow与Spring MVC一起使用,Struts 1和2与JSF能够进行导航和web应用程序的状态管理,可以使流能够被重新构建而不用重启服务器。
另外,Spring IDE 2.0支持Spring Web Flow,可以使用Spring IDE 2.0对导航逻辑以图形的方式做出变化,这些变化立刻生效。不用使容器重启。
Struts 2
Struts 2可以使行为重新加载,当他们改变时。
Tapestry 5
在一个开发模型中,Tapestry 4支持HTML模板和页面属性的重新加载,Tapestry 5增加了活动类和模板重新加载的支持。
像其他框架一行,有一些限制: 自动重新加载通常不对JAR文件的资源进行支持。 既然重新加载使用类加载,当与没有被加载的类进行通讯时,这就可那导致ClassCastExceptions 异常。 如果保持对重新加载类引用,则有可能导致内存泄漏。
1
|