| 湖南科技职业学院 |
| ISAS文档 |
| ISAS 题目 Java程序设计中常用的框架介绍 |
| 专 业 软件技术(CMU方向) |
| 班 级 CMU—3091 |
| 指 导 教 师 金莲芳 小 组 成 员 :麻冲、刘俊、蔣科、张治君、李元钦、刘依玲 |
前言
面对日趋完善的软件市场,熟练掌握一门使用的软件编程框架成为每个编程人员的必备的技能,那么,面对那么多的框架,你是否会感到无所选择呢,说实在的,我也是如此,但今天我们小组将要向大家介绍的是JAVA程序设计中常用的几种框架技术,它们分别是:
WebWork框架技术
Struts框架技术
Hibernate框架技术
Spring框架技术
JSF框架技术
一.WebWork框架技术介绍:
主讲:刘俊
1.WebWork框架简介
WebWork框架是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架。WebWork目前最新版本是2.2.2,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目,如下示意图所示:
work简洁、灵活功能强大,它是一个标准的Command模式框架实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control依赖倒转控制)容器等。
2.WebWork 核心概念
WebWork的三个关键部分
1、Actions。一般一个Action代表一次请求或调用。在WebWork中,一般Action类需要实现Action接口,或者直接继承基础类ActionSupport。
2、Results。它是一个结果页面的定义。它用来指示Action执行之后,如何显示执行的结果。
3、Interceptors。WebWork的,WebWork截获Action请求,在Action执行之前或之后调用方法。
3.WebWork框架原理与应用
WebWork 原理
WebWork的网站上提供了一个完整的WebWork架构图。它描述了从客户端的一次请求到最后服务器端响应的的整个执行过程。架构图如下:
此架构图一个分为五个部分,其中五个部分分别有五中不同颜色表示。
1、 浅灰色方框。分别代表了客户端的一次Http请求,和服务器端运算结束之后的一次响应。
2、 浅红色方框。表示一次Action请求所要经过的Servlet filters(Servlet 过滤器)。我们可以看到最后一个filter就是我们前面介绍的WebWork的前端控制器。
3、 蓝色方框。这是WebWork框架的核心部分。
1) 一次请求到了WebWork的前端控制器,它首先会根据请求的URL解析出对应的action 名称,然后去咨询ActionMapper这个action是否需要被执行。
2) 如果ActionMapper决定这个action需要被执行,前端控制器就把工作委派给ActionProxy。接着她们会咨询WebWork的配置管理器,并读取在web.xml文件中定义的配置信息。接下来ActionProxy会创建ActionInvocation对象。
3) ActionInvocation是Xwork原理的(Command模式)实现部分。它会调用这个Action已定义的(before方法),Action方法,Result方法。
4) 最后,看上面流程的图的方向,它会再执行(after方法),再回到Servlet Filter部分,最后结束并传给用户一个结果响应。
4、 靛色方框。这是部分,在上面的章节我们已经有了详细的介绍。
5、 黄色方框。这是我们在开发Web应用时,需要自己开发的程序。其中包括:Action类,页面模板,配置文件xwork.xml。
4.WebWork 实战和技巧
1、 多视图支持。
2、 Action的数据验证功能。
3、 类型转换
4、 一个Action的多个执行方法。
5、 Action链(Action Chaining)。
6、 多模块支持解决方案。
7、 doInput 方法。
8、 prepare方法。化的代码方到prepare方法中。
9、Action的Model Driven。
10、Quick Start。
5.小结
WebWork虽然不像Struts1那样赫赫有名,但也是出身名门,WebWork来自另外一个优秀的开源组织:opensymphony,这个优秀的开源组织同样开发了大量优秀的开源项目,如Qutarz、OSWorkFlow等。
相对于Struts1存在的那些先天性不足而言,WebWork则更加优秀,它采用了一种更加松耦合的设计,让系统的Action不再与ServletAPI耦合。使单元测试更加方便,允许系统从B/S结构向C/S结构转换。
WebWork则更加优秀,它采用了一种更加松耦合的设计,让系统的Action不再与ServletAPI耦合。使单元测试更加方便,允许系统从B/S结构向C/S结构转换。
相对于Struts1仅支持JSP表现层技术的缺陷而言,WebWork支持更多的表现层技术,如Velocity、FreeMarker和XSLT等。
WebWork可以脱离Web应用使用,这一点似乎并没有太多优势,因为,一个应用通常开始已经确定在怎样的环境下使用。WebWork有自己的控制反转(InversionofControl)容器,通过控制反转,可以让测试变得更简单,测试中设置实现服务接口的Mock对象完成测试,而不需要设置服务注册。
WebWork 2使用OGNL这个强大的表达式语言,可以访问值栈。OGNL对集合和索引属性的支持非常强大。
WebWork建立在XWork之上,使用ServletDispatcher作为该框架的核心控制器,处理HTTP的响应和请求。
从处理流程上来看,WebWork与Struts 1非常类似,它们的核心都由控制器组成,其中控制器都由两个部分组成。
核心控制器ServletDispatcher,该控制器由WebWork框架提供。
业务逻辑控制器Action,该控制器由程序员提供。
相对Struts 1的Action与ServletAPI紧紧耦合的弱点来说,WebWork的Action则完全与ServletAPI分离,因而该Action更容易测试。
二 Struts框架技术介绍
主讲:李元钦,刘依玲
1.什么是Struts
Struts是Apache 基金会Jakarta 项目组的一个Open Source(开放源码) 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。Structs 框架的核心是一个弹性的控制层。有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,如 JDBC (Java数据库连接)/ EJB(Java中的商业应用组件技术) ,以及其它第三方类库。在视图层,Struts能够与JSP,包括 JSTL 与 JSF,以及 Velocity 模板,XSLT 与它表示层技术。Struts 为每个专业的 Web 应用程序做背后的支撑帮助,为你的应用创建个扩展的开发环境。
Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多性的改进,但它并不是新发布的新框架,而是在另一个框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
2.struts的优点:
一.Struts最大的优点就是是一种开源软件,能够使开发者更深入的了解其内部实现机制。
二.使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易。也为开放者提供了一个统一的标准框架。
三.实现MVC模式,使结构清晰,并有丰富的tag(标签,附加语)可以用。
四.通过一个配置文件,即可把握整个系统各部分之间的联系; 提供Exception处理机制 . 数据库链接池管理还支持I18N 。
3.struts的缺点:
一、 转到展示层涉及到转向时,需要配置forward,有时还必须重新启动服务器。
二、 Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。
三.有限的适用范围
Struts 是一种基于 Web 的 MVC 解决方案,所以必须用 HTML、JSP 文件和 servlet 来实现它。
4. struts1和struts2的比较
Action 类:
◆Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
◆Struts 2 Action类可实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
可测性:
◆测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
◆Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
类型转换:
◆Struts 1 ActionForm 属性通常是String类型。Struts1,它使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。 ◆Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
5.小结
从以上的介绍中可知 Struts是一种灵活使用的话将会大大提高开发效率它利用页面导航可以使系统脉络更加清晰。而通过一个配置文件,即可把握整个系统各部分之间的联系。表现与逻辑分离。维护扩展比较方便。便于团队的开发的一种框架技术。
三. Hibernate框架技术介绍:
主讲:麻冲
1.Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
2.Hibernate的作用
Hibernate不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。
3.Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具意义的是,Hibernate可以在应用EJB(EnterpriseJavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。
4.Hibernate在JAVA中的开发步骤
创建Hibernate的配置文件
创建持久化类
创建对象-关系的映射文件
通过Hibernate API编写访问数据库的代码
5.Hibernate 配置文件
6.Hibernate 的核心接口
Hibernate分为:Session、SessionFactory、 Transaction、Query和Configuration5个接口,这5个核心接口是在任何开发中都会用到的。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
Session接口:
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流, 包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的 HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称 为用户session。
SessionFactory接口:
SessionFactory接口负责初始化Hibernate。它充当数据存储 源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常 只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration接口
:Configuration接口负责配置并启动Hibernate,创建 SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory对象。
Transaction接口:
Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自 己的底层事务处理代码。
Query和Criteria接口:
Query和Criteria接口负责执行各种数据 库查询。它可以使用HQL语言或SQL语句两种表达方式。
Hibernate的核心接口框图:
四.Spring框架技术介绍:
主讲:张治君
1.pring的起源和背景:
Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。
2.Spring简介
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
3.Spring有如下优点:
◆低侵入式设计,代码污染极低
◆ 于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
◆Spring的DI机制降低了业务对象替换的复杂性
◆Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
4.Spring 框架
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图所示。
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
5.Spring带给我们什么
◆方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
◆AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
◆声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
◆方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。
◆方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hession、Quartz)等的直接支持。
◆降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
◆Java 源码是经典学习范例
Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。
6.热爱Spring的五个理由
1.Spring 提供更好的优势。
2.Spring支持POJO编程。
3.依赖注入有助于可测试性。
4.反向控制简化了JDBC。
5.Spring在社区中的繁荣。
五. JSF框架技术的介绍
(主讲:蔣科)
1.什么是JSF框架
JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。
2.JSF的设计模式:
Composite 模式 :Composite 模式让客户代码能够统一处理复合对象和基本对象。复合对象是基本对象的容器。在第一阶段(Restore View 阶段)和最后一个阶段(Render Response 阶段),使用 JSF UI 组件构造 UI View。UIComponentBase 就是 Composite 模式中 Component 抽象类的一个例子。UIViewRoot 是 Composite 类,而 UIOutput(比方说)就是叶子(或者基本类)。UIComponentBase 类定义了叶子和复合对象的公共方法,如编码/解码值和子节点管理函数。子节点管理函数,如 getChildren,对于叶子节点返回空列表,对于复合节点则返回其子节点。
Decorator 模式 :Decorator 模式的目的是不通过子类化动态扩展对象的行为。JSF 框架有很多扩展点(即可插入机制)。JSF 实现可使用 Decorator 模式替换默认的 PropertyResolver、VariableResolver、ActionListener、NavigationHandler、 ViewHandler 或 StateManager。通常自定义实现接受通过构造函数传递给它的默认实现的引用。自定义实现仅仅改写功能的一个子集,而将其他功能委托给默认实现。
Strategy 模式:Strategy 模式的目的是封装不同的概念。JSF 框架采用 Strategy 模式使用委托实现模型呈现 UI 组件。JSF 技术支持两种呈现模型。在直接实现模型中,UI 组件对收到的请求中的数据进行解码,然后编码这些数据进行显示。在委托实现模型中,解码和编码操作委托给和组建关联的专门呈现器。后一种模型利用了 Strategy 设计模式,比直接实现更灵活。在 Strategy 模式中,将不同的算法封装在单独的对象中,从而可以动态地改变算法。JSF 实现可以用已有的 renderkit 实例注册另外的呈现器,当应用程序启动的时候,JSF 实现读取配置文件将这些呈现器和 UI 组件联系在一起。
Template Method 模式:Template Method 模式的目的是将变化的步骤推迟到子类中,而在父类中定义那些固定的算法步骤。JSF 框架通过 PhraseListeners 展现了 Template Method 模式提供的功能。采用 Template Method(或者 “hook”)使得 Web 作者可以为不同阶段之间的可选步骤提供实现,而主要阶段仍然和 JSF 框架的定义一致。JSF 框架提供了 PhaseListeners,概念上类似于 Template Method 模式中的可变步骤。JSF 框架有六个预定义的阶段,在每个阶段之间,Web 作者可以实现 PhaseListeners 来提供类似于 Template Method hook 的 hook。事实上,这种结构比 Template Method 模式更具有扩展性。可以通过注册 PhraseId 为 ANY_PHRASE 的 PhaseListener 在每个阶段后提供 hook。如果 PhaseId 是 ANY_PHASE,JSF 实现就会在每个阶段之前和之后调用该 PhaseListener。JSF 框架中的实现略有不同,因为可以根本没有 PhaseListener,但是在 Template Method 模式中,子类通常重新定义父类中抽象的可变步骤。
Observer 模式:Observer 模式的目的是当目标对象的状态改变时自动通知所有依赖的对象(即观察器)。JSF 在 UI 组件中实现了 Observer 模式。JSF 有两类内建事件:ActionEvent 和 ValueChangedEvent。ActionEvent 用于确定用户界面组件(如按钮)的激活。当用户单击按钮时,JSF 实现通知添加到该按钮上的一个或多个动作监听程序。于是该按钮被激活,或者说按钮(主体)的状态改变了。添加到按钮上的所有监听程序(即观察器)都收到通 知该主体状态已经改变。类似的,当输入 UI 组件中的值改变时,JSF 实现通知 ValueChangeListener。
JSF 框架利用了 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy、Template Method 和 Observer 设计模式。因为它的体系结构建立在已经验证的设计模式的基础上,这是一个健壮的框架,模式在 JSF 框架中得到了很好的利用。
3.各种JSF框架
1、bean公司的workshop
2、sun公司netbean
3、eclipse 3.3.1
4、myeclipse开发工具
5、aom
6、oracle jdevelop 11g
7、icefaces
8、Myfaces Trinidad
9、Myfaces tomahawk
4:各种JSF框架比较
1、Myfaces tomahawk
这是apache组织力推的JSF框架,目前到了1.1.6版本,与Myfaces 1.1.5对应,不支持ajax,也不是rich component风格,文档比较欠缺,版本更新速度较慢,目前正在研发1.1.7版本,组件有不少,但仍不够丰富,布局组件不行,问题响应不及时,不支持换肤。
考虑到apache的背景,可以作为一个选择,但不是最好选择。
2、Myfaces Trinidad
这是oracle公司捐献给apache的JSF框架,目前到了1.2.4版本,与Myfaces 1.2.0对应,支持PPR(部分页面更新,与ajax类似),不是rich component风格,文档比较全,版本更新速度较快,组件丰富,但布局组件不行,问题响应不及时,支持换肤。
个人认为这个组件受oracle公司捐赠的影响,目前Oracle Jdevelop 11g的组件非常丰富,是rich component,计划有进一步捐赠动作,但时间不详。考虑到apache的背景,可以作为一个选择,但不是最好选择。
3、icefaces
这是一个比较美观的JSF框架,部分组件支持ajax,目前支持JSF1.1,sun ri与Myfaces的实现都可以使用,组件数量够用,但需要进一步丰富,取法布局组件,对收费用户提供最新版本,社区用户可以使用次新版本,但可以从 SVN上下载最新版本自己编译(不知为何,我自己下载没有成功),文档丰富,例子也不错,icesoft公司是一个商业公司,版本更新速度很快,也推出了 eclipse、workshop、netbean的插件,支持可视化设计,但eclipse下的响应速度很慢。可以作为一个选择,但最好能成为收费用户。
4、oracle jdevelop 11g
这是一个非常庞大的软件,我们曾经在10g、11g下做过一些测试,10g可以集成spring+hibernate,也可以支持Myfaces trinidad,但需要做一个调整,网上有文章。至于11个,目前为TP3,整体设计效果很不错,但速度非常慢,使用Oracle公司自己的设计体系是非常好的选择,但如果要使用spring+hibernate可能要费一些事。不支持其他应用服务器的开发,但可以发布。布局组件不如aom。
5、aom
我们已经决定选择aom进行核心开发。开发速度快,有本地化支持,文档齐全,组件美观大方,源生性支持ajax,非其他能比,事例、文章非常好,这个开发者非常看重的。经过一系列的比较,认为aom是首选。唯独担心的是金蝶公司的发展策略,一个开源软件需要良好的社区环境,包括捐助、收费培训、社区成员的支持等,毕竟金蝶也是一个商业公司,争取其他公司的赞助也非常重要。
6、myeclipse开发工具
这不是一个框架,仅支持sun ri、Myfaces基本组件的开发,不是JSF开发的选择。
7、eclipse 3.3.1
其推出的wtp2.0(即将推出3.0)对JSF提供了进一步的支持,任何组件库和实现都可以通过配置与工程相连,可视化拖放、编辑属性,但可视化效果不好,属性设置不提供下拉等选择,需要对组件本省较熟,导航规则的设计还需要优化。明年的版本将推出对Myfaces的可视化支持。从开发工具的角度讲,提供了非常好的选择。
8、sun公司netbean
最新的6.0版本,与oracle公司一样,提供了整体性选择,各方面都不错,也有spring的插件,但支持hibernate本人没有了解过,也有页面的布局插件,但类似导航栏的没见过,这是一个很好的选择,尤其考虑 sun的地位,ri的更新速度大大快过mufaces,组件非常丰富。
不习惯的是一个页面文件对应一个java类文件,oracle也提供了这种选择,感觉没有spring灵活。
六.总结
通过上面的介绍,我们大致可以了解到各个框架技术的概况和一些基本的运用,但既然是在JAVA环境下的框架技术,那么他们也会存在一些联系,那么,他们存在一些什么联系呢,首先,先由客户端,控制器发送HTTP请求,而控制器所运用到的是WebWork技术,然后控制器发出填充FormBean到ActionFrom模型中。ActionFrom模型主要运用Struts框架技术创建。同时,控制器又向Action模型中分发HTTP请求,由Action调用ActionFrom模型中的FormBean,同时调用到JavaBean模型中的JavaBean。这几步中,Action模型和JavaBean可以由Hibernate框架技术和Spring框架技术编写。最后是由Action模型产生的HTTP内容通过ActionForWoad返回给控制器,控制器再将这些内容通过视图模型反馈给客户端。而编写视图将通过JSF框架技术来实现。
综上所述,我们可以了解到Java程序设计中常用的几种框架,其中 WebWork,Struts,Hibernate和Spring是用于程序的底层部分,而JSF是用于程序的可视化部分。下载本文