- 浏览: 4799114 次
- 性别:
- 来自: 上海
博客专栏
-
robbin谈管理
浏览量:135739
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
Warp framework 是最近刚刚发布的、基于Google Guice的轻量级Web开发框架,我也是在JavaEye网站的新闻频道看到的这条新闻: warp-persist 1.0: 为Google Guice专门提供持久层与事务处理的框架,通过这个新闻仔细阅读了Warp网站上面的文档,感觉到很振奋,Warp是一个相当棒的Java Web框架,而且前景非常看好。
Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分:
warp-persist框架:封装Hibernate和JPA,提供事务管理和持久化资源管理
warp-dynamic-finder:提供了基于Annotation的动态查询功能,让数据库查询变得异常简单,不再需要DAO层
warp-mvc:借鉴了Tapestry5,提供了一个基于事件机制和组件化的Web层,并且组件注入方式高度IoC化
warp-servlet: 提供了一些Servlet的封装和附加的高级功能,例如URL过滤,和其他web框架集成等等
这几年来,Java在Web开发框架方面的进步显得很有限,Spring/Hibernate组合对撼JBoss Seam形成两大竞争的主流态势,但是这两个Web框架在Web快速开发方面的创新还显得不够好:Spring是越来越臃肿了,配置文件也是越来越复杂难懂了;JBoss Seam门槛又过高,而且集成的JSF一向受人垢病,并非完美的解决方案,特别是在Ruby on Rails横空出世之后,Java社区对于简洁易用的快速web开发框架的企盼也是一直很高的。
Warp在我看来是这方面做的最好的,它有以下几个鲜明的特点:
一、充分利用JDK5的annotation,简化编程和配置文件
Warp基于Google Guice并且发扬光大,自身无配置文件,所有功能完成均通过annotation,所以编程相当简洁
二、大量使用JDK5的泛型编程,提供强类型安全保证
虽说脚本语言的Duck Typing理念很流行,不过Java的优势也就是类型安全,Spring大量运用反射和XML配置等于是放弃了Java的优势。Warp在泛型方面做的很好,我相信在IDE的帮助下,Warp编程会更轻松
三、Warp-persist提供了声明式的事务管理,终于可以取代Spring了
Google Guice很好很强大,但是它没有事务管理能力和资源管理能力,所以无法取代spring,但是Warp-persist填补了这一缺憾,注入和管理Hibernate很容易:
要声明事务比spring可简单多了:
Warp支持Hibernate/JPA的所有事务管理策略,不但注入方式简单,而且声明事务方式更简单,代码看着简洁,写着更省心。
四、Dynamic Finder实在很酷!
还是直接看代码吧:
用annotation声明一下,一行查询代码都没有,你还要DAO干啥呢?
带参数的绑定变量查询,还是一行代码不用写,DAO是啥?
带分页的查询,还是一行代码不用写,谁用DAO我跟谁急 !
五、Web层也极其简单
Warp-MVC模仿了Tapestry 5的架构,但是作者做了大量的改良和简化,作者解释了一下为什么不直接使用Tapestry,而是自己开发的理由。
Warp-MVC看起来像一个Tapestry的简化版,有组件的概念,事件响应的方式,但是非常易用,非常简洁,URL映射也通过annotation方式声明,作者在自己的博客上面提供了相关的简单示例,可以参考:
http://www.jroller.com/dhanji/
Warp框架是最近几年来,我看到的第一个走在正确发展方向上的Java Web框架:结构简单、易用使用、但充分发挥了Java自身的语法优势,非常值得期待!
目前Warp框架还不是特别成熟,但是Warp-persistent已经相当稳定了,如果你是使用Hibernate/Spring/Struts来开发项目的话,不妨试试Warp,把spring换掉改成Hibernate/Warp/Struts2.0,也是一个不错的解决方案,全部运用annotation,让你的项目Zero Configuration。
友情提醒:Warp官方网站无法直接访问,建议在FireFox浏览器上面安装gladder插件,跨越GFW。
Warp Framework - 官方网站
...
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
我用spring的唯一原因是管理transaction,IOC重来就没有觉得有用。
如果是这样的话,那就更应该扔掉spring,改用warp了。
...
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
我用spring的唯一原因是管理transaction,IOC重来就没有觉得有用。
在java中这样的组合应该成经典,如果一味的最求zero 配置,也不是很完美,应该是注解和xml相结合,基本不会变动用注解,如果那些可变动的还是需要xml的,特别是spring2.5。提供的新特性(@Component,@Repository,@Service),大大简化了典型的三层结构的配置。
Spring在静态的配置文件当中描述bean的依赖关系(或者静态的Annotation),在某些情况下这是一个非常讨厌的限制,导致你很难在程序运行期修改或者创建bean的依赖关系。
比方说,你的程序根据某用户的操作,创建了quartz bean执行后台任务,这玩意你没办法事先在配置文件里面写死的,那你就麻烦大了,只能想办法自己写FactoryBean,在程序里面调用这个FactoryBean自己手工创建依赖。再例如你一个prototype的bean,在程序运行期创建的时候需要从程序里面传入一个构造器参数,这个参数可能来自你的业务逻辑,那你马上傻眼了,写FactoryBean吧,在程序里面自己create吧。类似这种情况还挺多的,Spring也就是管理Singleton的bean很好用,一旦涉及到prototype bean啥的,处处受限制。
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
在java中这样的组合应该成经典,如果一味的最求zero 配置,也不是很完美,应该是注解和xml相结合,基本不会变动用注解,如果那些可变动的还是需要xml的,特别是spring2.5。提供的新特性(@Component,@Repository,@Service),大大简化了典型的三层结构的配置。
不知道你说的限制是什么,我推荐你试试这样的框架组合: Struts2.0 + Google Guice + Warp-persist + JPA(Hibernate)
最大的区别就是底层由Google Guice驱动,而基础架构的改变会带来更多的改变。
不支持iBATIS,支持Hibernate,JPA和db4o。
Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分:
warp-persist框架:封装Hibernate和JPA,提供事务管理和持久化资源管理
warp-dynamic-finder:提供了基于Annotation的动态查询功能,让数据库查询变得异常简单,不再需要DAO层
warp-mvc:借鉴了Tapestry5,提供了一个基于事件机制和组件化的Web层,并且组件注入方式高度IoC化
warp-servlet: 提供了一些Servlet的封装和附加的高级功能,例如URL过滤,和其他web框架集成等等
这几年来,Java在Web开发框架方面的进步显得很有限,Spring/Hibernate组合对撼JBoss Seam形成两大竞争的主流态势,但是这两个Web框架在Web快速开发方面的创新还显得不够好:Spring是越来越臃肿了,配置文件也是越来越复杂难懂了;JBoss Seam门槛又过高,而且集成的JSF一向受人垢病,并非完美的解决方案,特别是在Ruby on Rails横空出世之后,Java社区对于简洁易用的快速web开发框架的企盼也是一直很高的。
Warp在我看来是这方面做的最好的,它有以下几个鲜明的特点:
一、充分利用JDK5的annotation,简化编程和配置文件
Warp基于Google Guice并且发扬光大,自身无配置文件,所有功能完成均通过annotation,所以编程相当简洁
二、大量使用JDK5的泛型编程,提供强类型安全保证
虽说脚本语言的Duck Typing理念很流行,不过Java的优势也就是类型安全,Spring大量运用反射和XML配置等于是放弃了Java的优势。Warp在泛型方面做的很好,我相信在IDE的帮助下,Warp编程会更轻松
三、Warp-persist提供了声明式的事务管理,终于可以取代Spring了
Google Guice很好很强大,但是它没有事务管理能力和资源管理能力,所以无法取代spring,但是Warp-persist填补了这一缺憾,注入和管理Hibernate很容易:
Injector injector = Guice.createInjector(..., PersistenceService .usingHibernate() .across(UnitOfWork.TRANSACTION) .buildModule());
要声明事务比spring可简单多了:
public class MyService { @Inject Provider<Session> session; @Transactional public void createNewPerson() { session.get().saveOrUpdate(new Person(...)); } }
Warp支持Hibernate/JPA的所有事务管理策略,不但注入方式简单,而且声明事务方式更简单,代码看着简洁,写着更省心。
四、Dynamic Finder实在很酷!
还是直接看代码吧:
@Finder(query="from Person") public List<Person> listAll() { return null; }
用annotation声明一下,一行查询代码都没有,你还要DAO干啥呢?
@Finder(query="from Person where firstName = :firstName") Person find(@Named("firstName") String name);
带参数的绑定变量查询,还是一行代码不用写,DAO是啥?
@Finder(query="from Person") List<Person> listAll(@FirstResult int first, @MaxResults int max);
带分页的查询,还是一行代码不用写,谁用DAO我跟谁急 !
五、Web层也极其简单
Warp-MVC模仿了Tapestry 5的架构,但是作者做了大量的改良和简化,作者解释了一下为什么不直接使用Tapestry,而是自己开发的理由。
Warp-MVC看起来像一个Tapestry的简化版,有组件的概念,事件响应的方式,但是非常易用,非常简洁,URL映射也通过annotation方式声明,作者在自己的博客上面提供了相关的简单示例,可以参考:
http://www.jroller.com/dhanji/
Warp框架是最近几年来,我看到的第一个走在正确发展方向上的Java Web框架:结构简单、易用使用、但充分发挥了Java自身的语法优势,非常值得期待!
目前Warp框架还不是特别成熟,但是Warp-persistent已经相当稳定了,如果你是使用Hibernate/Spring/Struts来开发项目的话,不妨试试Warp,把spring换掉改成Hibernate/Warp/Struts2.0,也是一个不错的解决方案,全部运用annotation,让你的项目Zero Configuration。
友情提醒:Warp官方网站无法直接访问,建议在FireFox浏览器上面安装gladder插件,跨越GFW。
Warp Framework - 官方网站
评论
20 楼
robbin
2008-03-07
ardenliu 写道
robbin 写道
...
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
我用spring的唯一原因是管理transaction,IOC重来就没有觉得有用。
如果是这样的话,那就更应该扔掉spring,改用warp了。
19 楼
jokulff
2008-03-07
Good news!
18 楼
rockjava
2008-03-07
为什么上去他的官网啊?
17 楼
bluemeteor
2008-03-07
名字应该叫AnnoWork
16 楼
ardenliu
2008-03-07
robbin 写道
...
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
我用spring的唯一原因是管理transaction,IOC重来就没有觉得有用。
15 楼
robbin
2008-03-06
melin 写道
rainlife 写道
使用struts2(CoC)+JPA+spring(注解),会是怎么样呢?
在java中这样的组合应该成经典,如果一味的最求zero 配置,也不是很完美,应该是注解和xml相结合,基本不会变动用注解,如果那些可变动的还是需要xml的,特别是spring2.5。提供的新特性(@Component,@Repository,@Service),大大简化了典型的三层结构的配置。
Spring在静态的配置文件当中描述bean的依赖关系(或者静态的Annotation),在某些情况下这是一个非常讨厌的限制,导致你很难在程序运行期修改或者创建bean的依赖关系。
比方说,你的程序根据某用户的操作,创建了quartz bean执行后台任务,这玩意你没办法事先在配置文件里面写死的,那你就麻烦大了,只能想办法自己写FactoryBean,在程序里面调用这个FactoryBean自己手工创建依赖。再例如你一个prototype的bean,在程序运行期创建的时候需要从程序里面传入一个构造器参数,这个参数可能来自你的业务逻辑,那你马上傻眼了,写FactoryBean吧,在程序里面自己create吧。类似这种情况还挺多的,Spring也就是管理Singleton的bean很好用,一旦涉及到prototype bean啥的,处处受限制。
所以这个IoC的玩意,你要在程序运行期玩花样,灵活起来,动态起来,Google Guice就比Spring好用不是一点半点。这就是为啥我推崇基于Google Guice的warp的原因,当然warp自己也有一些很不错的地方。
14 楼
melin
2008-03-06
rainlife 写道
使用struts2(CoC)+JPA+spring(注解),会是怎么样呢?
在java中这样的组合应该成经典,如果一味的最求zero 配置,也不是很完美,应该是注解和xml相结合,基本不会变动用注解,如果那些可变动的还是需要xml的,特别是spring2.5。提供的新特性(@Component,@Repository,@Service),大大简化了典型的三层结构的配置。
13 楼
rainlife
2008-03-06
使用struts2(CoC)+JPA+spring(注解),会是怎么样呢?
12 楼
robbin
2008-03-06
ssuupv 写道
我们现在产品基于spring hibernate,这个框架有些功能确实没办法解决.最近在选型,看了一段seam框架,感觉对工具依赖性太大了,并且跟jboss绑定的很紧.哎,不知道用什么好了.
不知道你说的限制是什么,我推荐你试试这样的框架组合: Struts2.0 + Google Guice + Warp-persist + JPA(Hibernate)
11 楼
robbin
2008-03-06
lllyq 写道
是不错,但也没什么新意,annotation事务spring本来也支持,Dynamic Finder主要就是hibernate提供的,不过是用上了annotation,DAO本来就是该省的,别的没法省,原来该做的工作还是要做
最大的区别就是底层由Google Guice驱动,而基础架构的改变会带来更多的改变。
10 楼
lllyq
2008-03-06
是不错,但也没什么新意,annotation事务spring本来也支持,Dynamic Finder主要就是hibernate提供的,不过是用上了annotation,DAO本来就是该省的,别的没法省,原来该做的工作还是要做
9 楼
ssuupv
2008-03-06
我们现在产品基于spring hibernate,这个框架有些功能确实没办法解决.最近在选型,看了一段seam框架,感觉对工具依赖性太大了,并且跟jboss绑定的很紧.哎,不知道用什么好了.
8 楼
robbin
2008-03-06
JDK5.0是一个很大的分水岭,基于JDK5.0之前的框架比方说Struts2.0,Spring,JSF,Tapestry之类无论如何添加新的特性和功能支持,都因为限制于整体设计思路的影响,无法真正发挥JDK5的优势,在和RoR这种Web框架的较量下肯定是完败的。所以在JDK5之后出现的新框架才能令人真正耳目一新,比方说Google Guice,Warp都是这样,这样的新框架才是Java Web开发的未来。
7 楼
rainlife
2008-03-06
看了robbin的介绍,的确挺振奋的framework,一直怀疑annotation,但的确到了它大展宏图的时候了。
6 楼
CherryRemind
2008-03-06
前两天 theserverside消息, 不过那个官网打不开
5 楼
robbin
2008-03-06
xuanhan863 写道
等会去看看,不知能否和ibatis集成...
不支持iBATIS,支持Hibernate,JPA和db4o。
4 楼
xuanhan863
2008-03-06
等会去看看,不知能否和ibatis集成...
3 楼
差沙
2008-03-06
不太明白功夫网为啥不让访问呢???
warp确实值得关注
warp确实值得关注
2 楼
dennis_zane
2008-03-06
尽管不做web开发了,看到这样简洁的东西还是很有兴趣。呵呵,有人要跳出来大喊:滥用annotation了,可要我说,annotation怎么看也比xml顺眼。
1 楼
惊鸿逝水
2008-03-06
看到这样的代码我就兴奋,真是太简洁了!!
发表评论
-
WebObjects的来龙去脉
2012-06-08 15:30 7440在知乎上回答的一个问题:http://www.zhihu.co ... -
缓存技术浅谈
2010-09-24 18:08 21644有我在两年前写的一个培训的ppt,是介绍缓存知识的。有兴趣的可 ... -
对领域模型实现的总结性观点
2008-11-30 15:16 19416陶文发起的对领域模型 ... -
发现JBoss Seam很棒呀!有用Seam做过项目的吗?
2008-07-06 20:56 30051上周去见了一个朋友Mark,他应邀在Red Hat的研讨会上面 ... -
Spring Application Platform - SpringSource的应用服务器发布
2008-05-05 17:04 68322008年的5.1劳动节,Spring ... -
Google Android会成为手机领域的微软Windows吗?
2007-11-16 17:23 9577Google gPhone手机的传言已经沸沸扬扬好几个月了,然 ... -
Java已经过时了吗?
2007-07-02 15:43 59625在四年以前,当我开始 ... -
Java开源框架发展的遐想
2007-05-23 00:04 34724上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命 ... -
漫谈应用缓存的命中率问题
2007-05-09 14:19 26218这篇文章源自于: http://www.iteye.com/ ... -
为什么ORM性能比iBATIS好?
2007-05-06 11:16 34403缓存是有很多层次的,有web server前端缓存,有动态页面 ... -
点评Grails vs RoR
2007-03-30 17:49 8240Grails的革新和RoR相比,非常不彻底,很多地方兼容Jav ... -
缓存简述
2007-03-30 09:55 12209缓存实现的层面有很多: 1、对象缓存 由ORM框架提供,透明 ... -
JRuby0.9.8,正式宣布支持ruby on rails
2007-03-07 10:35 15597http://jruby.codehaus.org/ 自从S ... -
domain model的延伸讨论
2007-03-03 01:17 40515domain model,又称为领域模型,是Java企业应用讨 ... -
可以开始用Struts2.0了
2007-02-27 14:56 55985http://struts.apache.org/ Apac ... -
Google Guice - 比Spring快100倍的IoC容器
2007-02-27 14:46 58080http://code.google.com/p/google ... -
Spring2.0和EJB3.0随谈
2007-02-08 14:26 18411Spring自从2003年发布以来 ... -
Java程序员的推荐阅读书籍
2007-02-07 20:12 101216《Java程序员的推荐阅读 ... -
应该如何正确使用Quartz
2006-12-27 11:40 34087对于Web容器来说,最忌讳应用程序私自启动线程,自行进行线程调 ... -
静态类型语言的优势究竟是什么?
2006-11-13 10:03 33296在参与这个讨论的过程中,产生了一个新的话题,很想和大家探讨一下 ...
相关推荐
warp-persist-2.0是最近刚刚发布的、基于Google Guice的轻量级Web开发框架。 Warp是一个相当棒的Java Web框架,而且前景非常看好。 Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个...
Themes-Warp-Framework-7 一款快速和简洁的主题框架,它提供了丰富的工具集,用于开发跨平台的主题。 适用于YOOtheme出品的基于 Warp 7 框架的所有 Wordpress 主题和 Joomla 模板。 中文语言包:
Warp框架是使用Python构建的应用程序框架。 它具有仅基于元数据的智能属性和对象管理功能。 当前支持Zope,并具有将其扩展到基于GTK / SQL / etc。的应用程序的空间。
Cloudflare_WARP_Release-x64.msi
资源分类:Python库 所属语言:Python 资源全名:warp10-jupyter-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Grafana Warp 10:trade_mark:数据源插件 安装插件 使用grafana-cli sudo grafana-cli plugins install ovh-warp10-datasource installing ovh-warp10-datasource @ 2.2.0 from: ...
Cloudflare_WARP_Release-x64.msi.cab
借助Guice+Struts2+Warp-persist来构建一个比较轻盈的web开发框架,目的是想抛砖引玉。随后还会将Scala部分整合进来,目的就是唯恐框架不烂!(*^__^*)。 对于代码的不妥之处欢迎各路高手斧正。 mail to : meconsea@...
一个简单的命令行,用于快速启动Web服务器,该服务器将您的请求代理到外部服务器或本地文件(JSON)。 对于测试和开发非常有帮助。 不用于生产。 使用风险自负。 入门 使用安装warp-proxy: npm install warp-...
资源分类:Python库 所属语言:Python 资源全名:warp_rnnt-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
2016年新年伊始,百度硅谷实验室向 GitHub上传了 Warp-CTC C 代码库,并在一篇博客文章中鼓励开发者使用这些代码。据悉,CTC 代码结合了多个不同的神经网络设计,以处理不完美的数据集,并采用更复杂的数据模式,...
经线 基于Blessed库的CLI工具集原型 概述 安装 $ npm install warp-cli --save 用法 $ npm start
meta-warp7-distro 该自述文件包含有关构建meta-warp7-distro DISTRO层的信息。 有关详细信息,请参见下面的相应部分。 快速开始 要获取BSP,您需要安装回购协议并将其用作: 安装回购实用程序: $: mkdir ~/bin...
一个GPU实现RNN换能器(格雷夫斯 , )。 该代码是从移植的(由Awni Hannun编写),并且充分利用了CUDA warp机制。 损失的主要瓶颈是基于动态规划算法的前进/后退。 特别是,存在一个嵌套循环,用于填充形状为(T,...
一个在Warp +上获得无限GB的项目( ) [?!]更新日志 修复gui版本(v 2.0)。 修复gui版本(v 2.1)ssl错误。 下载适用于Windows OS的App 测试在线版本 [?]如何在Windows,Mac,Linux上使用此脚本 首先下载...
warp 让您通过一个简单的命令安全地共享您的终端
Warp-CTC是百度前期为了在最新的计算机芯片上更快速运行而专门研发的一种改良版深度学习算法。
为了解决这个烦恼,大佬们推出了很多好用的工具来解决这个麻烦,这里上传的就是其中一个,相当好用的,通过精选一些可用的ip,实现Cloudflare原始功能,亲测选择延迟最低的那一个ip就好了,有很多可以选择的ip,网速...
轻量级的Guice2.0代替了Spring,速度更快,项目体积更小,Hibernate3.2与JPA的结合使用代替了传统的配置文件,使Hibernate的开发更简单,本项目基本上是零配置开发,由于我只能上传小于15M的文件,故JAR被我删除了,...