暴强的Javarebel——让JavaEE开发像ROR一样方便
来源:互联网 发布:日本mac口红价格 编辑:程序博客网 时间:2024/06/07 02:32
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 。
- 暴强的Javarebel——让JavaEE开发像ROR一样方便
- 暴强的Javarebel--让JavaEE开发像ROR一样方便
- 让DropDownlist像GridView一样方便的显示ToolTip
- 让你的Emacs像VS一样方便
- 像Excel一样冻结HTML表格的表头-博计报表让你更方便
- 好工具Javarebel-----提高JavaEE开发效率
- 王道QT,让linux的开发和在windows下一样方便
- Jindent——让intellij idea 像eclipse一样生成模版化的javadoc注释
- 映射文件到内存,像操作内存一样方便读写文件——MemFile
- 《Nodejs开发加密货币》之三:Nodejs让您的前端开发像子弹飞一样
- VIM:像终端一样方便,比IDE更强大──让VIM执行外部Shell
- 可视化编程的游戏引擎让iOS游戏开发像做沙拉一样简单
- 如何用HotSwapAgent和DCEVM让java开发像js开发一样高效(JRebel的替代方案)
- 让你的程序像office一样有位小助手.
- 让eclipse有像vs2005一样的智能感知能力
- 程序员的野心:让GPU像CPU一样运行
- 程序员的野心:让GPU像CPU一样运行
- 让你的程序像系统命令一样运行
- pku 3687
- [托业]TOEIC词汇汇总(完整篇)3
- [托业]TOEIC词汇汇总(完整篇)4
- 大家推荐几个讲.net比较牛的老师
- 终于可以开始了
- 暴强的Javarebel——让JavaEE开发像ROR一样方便
- 学C++时要注意的
- RPM 的介绍和应用
- RGB/YUV 格式转换
- Java中使用代理访问网络的几种方法
- hibernate通用分页类
- [托业]TOEIC词汇汇总(完整篇)5
- mySql5.1的 mysql command line client命令窗口每次一点它,它就一闪而过,不会显示了.这是什么问题?
- 棋盘覆盖问题(分治)(C语言)