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很容易:?
- 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 - 官方网站
?