当前位置: 代码迷 >> Web前端 >> Warp framework - 一个对等有前途的Java轻量级Web开发框架
  详细解决方案

Warp framework - 一个对等有前途的Java轻量级Web开发框架

热度:447   发布时间:2012-08-31 12:55:03.0
Warp framework - 一个相当有前途的Java轻量级Web开发框架

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很容易:?

Java代码? ?收藏代码
  1. Injector?injector?=?Guice.createInjector(...,?PersistenceService??
  2. ????????????.usingHibernate()??
  3. ????????????.across(UnitOfWork.TRANSACTION)??
  4. ????????????.buildModule());??



要声明事务比spring可简单多了:

Java代码? ?收藏代码
  1. public?class?MyService?{??
  2. ????@Inject?Provider<Session>?session;???
  3. ??
  4. ????@Transactional???
  5. ????public?void?createNewPerson()?{??
  6. ????????session.get().saveOrUpdate(new?Person(...));???
  7. ????}???
  8. }??



Warp支持Hibernate/JPA的所有事务管理策略,不但注入方式简单,而且声明事务方式更简单,代码看着简洁,写着更省心。?

四、Dynamic Finder实在很酷!?

还是直接看代码吧:

Java代码? ?收藏代码
  1. @Finder(query="from?Person")??
  2. public?List<Person>?listAll()?{?return?null;?}??


用annotation声明一下,一行查询代码都没有,你还要DAO干啥呢?

Java代码? ?收藏代码
  1. @Finder(query="from?Person?where?firstName?=?:firstName")??
  2. Person?find(@Named("firstName")?String?name);??


带参数的绑定变量查询,还是一行代码不用写,DAO是啥?

Java代码? ?收藏代码
  1. @Finder(query="from?Person")??
  2. 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 - 官方网站

?

?

  相关解决方案