设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

JavaEE5与Struts、Spring、Hibernate

2013-11-7 16:11| 发布者: joejoe0332| 查看: 4579| 评论: 0|原作者: CNET科技资讯网|来自: CNET科技资讯网

摘要:   因为java技术的开放性,因为JCP所给予开发人员的诸多选择性,作为java的研发/爱好者,在进行项目开发的时候,必然会面对java世界中 的诸多框架,struts,spring,hibernate/ibatis或者servlet,ejb等等--诸多开源的或者J ...

  因为java技术的开放性,因为JCP所给予开发人员的诸多选择性,作为java的研发/爱好者,在进行项目开发的时候,必然会面对java世界中 的诸多框架,struts,spring,hibernate/ibatis或者servlet,ejb等等--诸多开源的或者JCP组织所制定的标准框 架,面对如此至多的框架,开发者该做何选择呢?


  众所周知,在java EE5规范正式发布之前,很多开源framework都非常出名,为人们喜爱并广泛使用,如Struts、Spring、Hibernate等,这些开放 源代码的作品曾经一定程度上成为Java企业级应用开发事实上的标准。然而2006年5月,随着Java EE 5规范的正式发布,随着众多厂商对java EE5规范的众多产品或者技术的支持的推出,开源与标准之间的竞争不可避免的......


  Java EE 5的出现,可能是J2EE诞生以来比较重量级的一次震撼,规范发布至今已有半年之多,业界对Java EE 5的关注也变得越来越热烈,google一下“java ee”关键字,可以得到500多万条相关纪录,而从Sun网站上进行检索(http://java.sun.com/javaee/overview /compatibility.jsp),也可以看到专业厂商已经迅速跟进,除Sun公司本身外,包括全球闻名的SAP、金蝶Apusic等另三家,已经 推出全面支持Java EE 5规范的应用服务器产品。


  Java EE 5包含JSF 1.2、EJB 3.0及JAX-WS 2.0等新功能,试图解决Java企业级应用开发的简便性、灵活性及易用性问题。在Java EE 5出现之前,很多开源框架(Open Source Framework)如雨后春笋般涌现,尝试从某种角度或某些方面去解决“委员会”规范所未能顾及的应用开发问题,如Web开发中的关注分离问题 (MVC)、业务模型实现问题(ORM)等等。很多开源framework都非常出名,为人们喜爱并广泛使用,如Struts、Spring、 Hibernate等,这些“江湖派”作品曾经一定程度上成为Java企业级应用开发事实上的标准。Java EE 5的出现,是否会改变这种状况?或者说,人们在重新选择应用框架时,是否会优先考虑全新的Java EE 5技术?带着这种疑问,笔者试图进行简单的技术比较,并辅于肤浅的评论,希望能够抛砖引玉、借花献佛,以娱大众。


  Struts vs. JSF


 

Struts

JSF

MVC

支持

支持

POJO

 

支持

页面流(Page Flow

支持

支持

UI组件(UI Component

 

支持


  MVC是模型(Model)、视图(View)、控制(Controller)分层的结构,通过分层来实现关注分离,减少传统开发中常见并重复的工 作。Struts和JSF均支持MVC。Struts对MVC支持的核心是Controller,通过Controller(一个共同的入口 Servlet)获得HTTP请求,将HTTP参数传入ActionForm,然后将ActionForm传给Action类。Struts对HTTP请 求只有一个事件处理handler,当请求过来时,由相应Action返回结果给前端Controller,并据此选择如何进行导航。JSF一般也采用一 个前端Controller(有些商用JSF能够智能识别JSF请求,无需额外的controller),不过在Controller中做的工作跟 Struts Controller截然不同,它负责触发JSF页面组件中的事件,用Render工具生成组件的展现,绑定来自Model的数据到组件等。可以看 到,JSF在在控制层更灵活,在视图层支持Render工具的变换而生成灵活的展现,在模型层实现与框架的彻底分离,因而具有更高的灵活性。


  POJO是无格式Java对象(Plain Old Java Object)。POJO与AOP结合被广泛用于快速业务模型。Struts设计的初衷主要是解决视图和控制问题,并无过多关注模型的灵活性问题。 Struts中的ActionForm模型必须继承自框架类,虽然可以通过定制类库提供一些帮助类实现模型与框架无关,但本质上还是紧耦合于JSP- and HTTP-centric方法。JSF提供了对POJO天然的良好支持,并支持通过RAD工具实现快速的业务模型生成,从而具有更高的生产力。


  页面导航的最大意义是帮助实现页面的可视化开发,在UI界面上快速定义页面流向。页面导航分静态导航和动态导航两种,静态导航是页面直接流向另一页 面,动态导航是由特定动作或逻辑决定页面的流向。Struts和JSF均支持静态和动态页面导航。不过Struts中的导航规则是绑定到Action中 的,那意味着可能需要对同一页面中不同的Action做重复性的导航规则制定,而JSF导航可以跟Action无关,可以在页面中不同组件的不同 Action间共享相同的导航规则。


  Struts本身并不提供UI组件机制,而JSF则提供了完整的UI组件机制。通过UI组件的定制和重用,能够极大地简化开发,提升用户体验。商业化的产品则往往更进一步,提供强大易用的开发工具,实现drag-and-drop方式所见即所得的Web UI开发。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部