暴强的Javarebel——让JavaEE开发像ROR一样方便

阅读更多

ROR之所以开发效率比java高,除了语法的简洁和框架本身强大的功能之外,程序员不必反复的重启服务也是重要原因之一。JavaRebel 给Java带来了Ruby和PHP风格的动态重新装载类特性。虽然现在还有些局限性,但它可以显著地增加开发速度。JavaRebel允许一个应用程序(独立的或运行在应用服务器上的应用)重新装载在运行过程中发生的大多数类变化,包括增加或删除方法和域。JavaRebel可以帮助java实现快速反馈循环,使得JavaEE开发像ROR、PHP一样方便。

使用

Javarebel是一个Jvm插件,使用非常简单,只需要两步:

  • 将javarebel.jar加入classpath(不建议将javarebel.jar放在WEB-INF/lib下,因为生产环境不需要它)
  • 命令行中加入下面的启动参数
    java -noverify -javaagent:C:\libraries\javarebel.jar -Drebel.dirs=c:\workspace\project\classes
    Drebel.dirs指向工程中.class文件的目录,不必指定具体的类名。另外,javarebel.jar的名字不能修改。

在eclipse中使用也非常简单,如下图:


javarebel支持大多数jvm和常见的containers,包括Weblogic、Jboss、Tomcat、Jetty等,官网上没有提到Websphere不知道行不行。

感受

用了一个月,总得感觉是javarebel很好很强大,大约减少了80%的重启时间。很多时候都不要debug了,直接修改,然后刷新页面(ajax的话,都不用刷)就可以看到效果。以前因为担心Jboss等支持EJB3的container启动慢而没有使用seam这个强劲的框架,现在可以试试了。

Javarebel使用了动态代理,调试的时候会出现很多奇怪的类名,有点乱,不过这并不影响调试,反正spring、hibernate之类的也用了动态代理,乱就乱吧。

问题

在修改配置文件的时候仍然需要重新启动,幸好比起修改代码我们很少修改配置文件,随着Annotation的使用,这种修改配置的情况会越来越少。Javarebel会对性能产生影响,所以在性能测试和生产环境中不要使用。它会影响启动速度,但是开发中我们使用jetty,因为jetty的启动非常快,所以javareble的影响基本感觉不到。Javarebel的spring插件好像还不完善,我试了试,暂时放弃了,没多少影响的说。它是需要付费使用的,但是它提供的付费渠道俺都不会用,所以可以暂时当作免费的使用(好像没有什么限制),等俺有了Visa再说吧

其他的问题可以到官网上查,比如它的FAQ 。

 

  • 大小: 43.8 KB
  • 查看图片附件

你可能感兴趣的:(JavaEE,Groovy,单元测试,Spring,Grails)