`

warp框架

阅读更多
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());  
Injector injector = Guice.createInjector(..., PersistenceService
   .usingHibernate()
   .across(UnitOfWork.TRANSACTION)
   .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. }  
public class MyService {
    @Inject Provider<Session> session; 

    @Transactional 
    public void createNewPerson() {
        session.get().saveOrUpdate(new Person(...)); 
    } 
}


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

四、Dynamic Finder实在很酷!

还是直接看代码吧:

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

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

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

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

Java代码 复制代码
  1. @Finder(query="from Person")   
  2. List<Person> listAll(@FirstResult int first, @MaxResults int max);  
@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 - 官方网站
分享到:
评论
1 楼 yuyee 2009-11-15  
国内好像没什么反应么。。。。

相关推荐

    warp-persist-2.0-20090214.zip

    Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分: warp-persist框架:封装Hibernate和JPA,提供事务管理和持久化资源...

    Warp Framework-开源

    Warp框架目前支持Zope,这是一个久经考验的Python应用服务器,特别适用于内容管理系统和Web应用程序的开发。通过集成Zope,Warp能够利用其强大的安全、缓存和事务管理功能,为开发者提供了一个健壮的开发环境。同时...

    warp:超级便捷,可组合的Web服务器框架,可提高扭曲速度

    【warp:超级便捷,可组合的Web服务器框架,可提高扭曲速度】 Warp是一款用Rust编程语言编写的高效、轻量级且极其灵活的Web服务器框架。它以其易于使用、高性能和高度可组合性著称,为开发人员提供了一种编写Web...

    Rust开发REST Web服务指南:项目搭建与实现

    内容概要:本文详细介绍了如何使用Rust和Warp框架构建一个简单的REST Web服务。主要内容包括:安装Rust工具链、创建新项目、添加依赖、编写代码、构建项目、运行项目和测试项目。通过这些步骤,读者可以了解Rust的...

    arquillian-warp-mocked-ejb:Arquillian 和 Warp 集成测试环境中的模拟 EJB

    Arquillian、石墨烯、无人机和 Warp 组合的工作示例该项目展示了集成测试框架 Arquillian 及其扩展 Graphene、Drone 和 Warp 的工作。 真正有趣的是 EJB,它被 Mockito 模拟并且可以在 Warp 测试运行期间完全控制。 ...

    《Dependency Injection》电子书

    - **Warp框架**无缝扩展了Guice的流畅、纯Java配置风格到企业环境中,极大地提高了开发效率和代码质量。 #### 六、依赖注入的实际应用场景 - **企业级应用**:利用依赖注入可以更轻松地管理和测试复杂的业务逻辑。...

    百度硅谷warp-CTC

    在实际应用中,开发者可以通过调用Warp-CTC的API,结合TensorFlow、PyTorch等深度学习框架,构建和训练基于CTC的模型,如CTC-GRU(Gated Recurrent Unit)或CTC-LSTM(Long Short-Term Memory)网络,用于语音识别或...

    21世纪的终端工具warp.pdf

    提到的zsh+ohmyzsh是另一款流行的终端工具组合,其中zsh是一种功能丰富的命令行界面,而ohmyzsh是一个开源社区驱动的框架,用于管理zsh的配置。尽管zsh+ohmyzsh在终端工具中已经非常强大,但Warp的出现预示着有更多...

    WARP

    在Java环境中,WARP可能需要与Spring、Vaadin、Play Framework等常见的Web开发框架集成。这要求开发者了解如何将WARP的理念和工具融入到现有的开发流程中,以实现最佳性能效果。 ### 7. 代码分割与懒加载 为了...

    wasm_warp_template

    注意:您可以用基于rustwasm或仅基于vanilla rustwasm的另一个框架替换紫杉框架 这个怎么运作 1.将js文件替换为您在app/index.html在Cargo.toml中编写的项目的名称 &lt; script type =" module " &gt; import init...

    Themes-Warp-Framework-7:一款快速和简洁的主题框架,它提供了丰富的工具集,用于开发跨平台的主题。这里是中文文档

    Themes-Warp-Framework-7 一款快速和简洁的主题框架,它提供了丰富的工具集,用于开发跨平台的主题。...适用于YOOtheme出品的基于 Warp 7 框架的所有 Wordpress 主题和 Joomla 模板。 中文语言包:

    Guice+Struts2+warp-persist 简单实例

    借助Guice+Struts2+Warp-persist来构建一个比较轻盈的web开发框架,目的是想抛砖引玉。随后还会将Scala部分整合进来,目的就是唯恐框架不烂!(*^__^*)。 对于代码的不妥之处欢迎各路高手斧正。 mail to : meconsea@...

    face warp and morph的相关Python程序

    以下是一个基本的实现框架: ```python def create_morph_sequence(face1, face2, num_frames): # 对齐人脸 aligned_face1, aligned_face2 = align_faces(face1, face2) # 创建中间关键点 interp_points = ...

    arquillian-extension-warp:Warp填补了客户端和服务器端测试之间的空白

    Warp内置了对以下框架的支持: Servlet API JSF 2 并且还具有几个框架扩展: ( 领导由领导Proof of Concept -由领导2.进一步阅读使用Arquillian Warp和Graphene测试JSF 翘曲弹簧延伸Arquillian Warp和TomEE 发布...

    星穹铁道跃迁观测工具(Star Rail Warp Observe, STARWO)

    《星穹铁道跃迁观测工具(Star Rail Warp Observe, STARWO)——基于C#/.NET技术的深度解析》 星穹铁道跃迁观测工具(STARWO)是一款专为游戏《星穹铁道》设计的辅助软件,它利用C#编程语言和.NET框架的强大功能,...

    Honkai_ Star Rail Warp History出口商.zip

    在JavaScript环境中,游戏开发通常会利用各种库和框架,如Phaser、Three.js或者Unity的WebGL导出,来加速开发并实现复杂的功能。这些库可以处理图形渲染、物理模拟、碰撞检测等,为开发者提供了丰富的工具集。此外,...

    warp-core-starter-kit

    **warp-core-starter-kit** 是一个针对 Scala 开发者的工具包,旨在简化基于 Warp Core 框架的项目初始化工作。Warp Core 是一个高度模块化、高性能的微服务框架,它允许开发者以 Scala 语言构建高效、可扩展的服务...

    scotty:Haskell Web框架受Ruby的Sinatra启发,使用WAI和Warp(官方存储库)

    Haskell Web框架,受Ruby的Sinatra启发,使用WAI和Warp。 {-# LANGUAGE OverloadedStrings #-} import Web.Scotty import Data.Monoid ( mconcat ) main = scotty 3000 $ get " /:word " $ do beam &lt;- param ...

    jutf:Java单元测试框架(Warp H2Mockitojmockit工具,使Java应用程序更好)

    Java单元测试框架(Warp H2 / Mockito / jmockit工具使Java应用程序更好) 功能 jutf(无弹簧依赖版本) 使用mockito / jmockit来模拟界面 实用程序模拟get / set / construct / tostring H2内存测试数据库工具 ...

    Warp to the Future - Joint Forecasting of Features and Feature M

    在本文“Warp to the Future - Joint Forecasting of Features and Feature Motion”中,作者们探讨了如何通过预测特征和特征运动来预知场景的发展,即未来帧的语义分割。这个任务对于许多决策系统,尤其是自动驾驶...

Global site tag (gtag.js) - Google Analytics