论坛首页 Java企业应用论坛

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

浏览 16008 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (7)
作者 正文
   发表时间:2008-10-27  

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
   发表时间:2008-10-28  
好东西,下一个试试.有问题再请教
0 请登录后投票
   发表时间:2008-10-28  
发现这个确实是好东西,先下下来体验下,感谢楼主分享
0 请登录后投票
   发表时间:2008-10-28  
用是可以用, 但是当你调试的时候 你会发现它把类改得乱七八糟了。 你真的想实现不用重启的话 用Groovy吧。
0 请登录后投票
   发表时间:2008-10-29  
这东西不是免费的啊,150美圆
0 请登录后投票
   发表时间:2008-10-29  
停,别拿恶心的ror说事行不?
就是一个不用重启web服务器的小工具而已。咱不拿ror说事。反胃。
0 请登录后投票
   发表时间:2008-10-29  
fireflyc 写道
停,别拿恶心的ror说事行不?
就是一个不用重启web服务器的小工具而已。咱不拿ror说事。反胃。

他能提高开发效率,开发效率高了成本就下来了,程序员们就能多拿奖金。反胃你可以去吐,恶心你可以看医生,反正多拿了money我们开心,所以我不认为这是小工具。给你个电信的项目你用ror做做试试,就算你敢你的客户也不敢!
0 请登录后投票
   发表时间:2008-10-29  
hua0424 写道
这东西不是免费的啊,150美圆

貌似出于非盈利目的可以免费,你不拿去给客户部署就OK了吧。
0 请登录后投票
   发表时间:2008-10-29  
dengyin2000 写道
用是可以用, 但是当你调试的时候 你会发现它把类改得乱七八糟了。 你真的想实现不用重启的话 用Groovy吧。

Groovy私底下玩玩可以,但是用在大项目中还是有很多风险的,学习曲线、性能之类的都要考虑。
0 请登录后投票
   发表时间:2008-10-29  
cats_tiger 写道
dengyin2000 写道
用是可以用, 但是当你调试的时候 你会发现它把类改得乱七八糟了。 你真的想实现不用重启的话 用Groovy吧。

Groovy私底下玩玩可以,但是用在大项目中还是有很多风险的,学习曲线、性能之类的都要考虑。



我赞同javarebel是玩具。 我有用过它, 不知道你有没有认真用过没。 除非你不用eclipse调式程序。 如果还想调试的话还是别用javarebel了。 Groovy就是java, Groovy可以编译成class运行。 Groovy作为前端是没有什么效率问题的。 我经历过的大多数效率都是在数据库这端。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics