`
javafenger
  • 浏览: 243271 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论
阅读更多

1.性能方面<o:p></o:p>

JSF<o:p></o:p>

从测试数据可以看出在只使用JSFJSF自定义组件的情况下,webmail demo应用速度最快,200用户并发访问的响应时间为1.8秒,基本上可以达到servlet + jsp的性能。<o:p></o:p>

使用JSF + 5Facelet composition组件的情况下,webmail demo应用仍可达到200用户并发访问的响应时间为2.6秒的性能。<o:p></o:p>

使用JSF + 20Facelet composition组件的情况下,webmail demo应用可达到200用户并发访问的响应时间为3.1秒的性能。<o:p></o:p>

如果在业务层方法没有大的效率问题、并在压力较大的页面适当使用缓存的情况下,JSF应用程序可以达到在dell 2850机器上100-200并发5秒内响应的性能<o:p></o:p>

Tapestry<o:p></o:p>

从测试数据可以看到tapestry在使用相同数量框架自身提供组件的情况下,运行效率比JSF明显要低一些,但也算是在可以接受的范围内。<o:p></o:p>

<o:p> </o:p>

2.开发方面<o:p></o:p>

JSF<o:p></o:p>

JSFservlet API进行了封装,程序员在使用组件做JSF应用程序的开发时基本上不需要直接操作HttpRequestHttpResponse,并且对用户输入验证,手机等其它设备(通过rendererKit),多语言(通过资源文件方式)和换肤(通过rendererKit)的支持都有相应的封装,可以方便的实现。目前开源的组件库有MyFaces,ADF等可以使用,其中有些组件内置AJAX支持。<o:p></o:p>

开发工具中IBM WebSphere Studio,Oracle JDeveloper <st1:chmetcnv w:st="on" unitname="g" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">10g</st1:chmetcnv>FaceIDEIDEJSF应用开发提供可视化编辑支持。下面是对JSF自定义组件和JSF+facelet composition组件开发进行比较<o:p></o:p>

<o:p> </o:p>

JSF自定义组件开发:<o:p></o:p>

JSF自定义组件由java代码和tag库文件组成,开发难度应该与现有I2SS组件开发的难度基本一致,JSF自定义组件通过自定义标记构造页面,在页面上增加组件的数量对性能有较大的影响。<o:p></o:p>

<o:p> </o:p>

JSF + facelet composition组件开发:<o:p></o:p>

facelet composition组件在个性化、重用方面对JSF提供了很好的补充。通过编写tag库文件,使用facelet可以把多个JSF自定义组件组合成facelet composition组件,或者把几个facelet composition组件组合成新的facelet composition组件,这个过程不需要开发或设计人员编写Java代码。facelet composition组件是live模式运行时生成,从测试结果上看组件数量对性能的影响不大<o:p></o:p>

<o:p> </o:p>

JSF已经作为j2ee5标准的一部分,具体可以查看http://java.sun.com/javaee/5/javatech.html<o:p></o:p>

<o:p> </o:p>

学习曲线上,开发难度与组件基本一致,只要写过组件或写过servlet+jsp的人,加上适当培训,一周内都可掌握JSFTapestry开发<o:p></o:p>

<o:p> </o:p>

Tapestry<o:p></o:p>

组件和页面的开发过程完全一致,都是由模板、page/component classspecification文件组成。IDE方面目前有开源社区开发的eclipse插件SpindleTapestry Palette可用,对开发效率有一定的提升。<o:p></o:p>

3.集群支持方面<o:p></o:p>

JSF<o:p></o:p>

目前在I2SS上做的集群实验是使用apache+jboss来实现,结构是apache做集群前端实现stick sessionjboss做应用服务器。<o:p></o:p>

I2SS架构应用程序Session中放入的对象并不能全部串行化,所以在做集群时只能使用粘贴会话方式(stick session)实现,这样容易出现的情况是如果一台机器down掉,这台机器上的所有在线用户都会无法继续当前的会话。如果用户重新发起登录请求,任务会转移到其它正常工作的机器上。如果down掉的机器重新恢复,转移到其它机器上的用户不能重新使用这台新启动的机器,只有新发起的用户请求和在线用户调用session.invalidate()显式退出后,工作才会转移到新启动的机器上,这样负载的均衡时间会比较长。I2SS架构应用程序可以通过更改框架层,将现有放入session中的对象实现串行化,并且将不能串行化的对象放到session以外的地方来实现使用session replication的集群模式。<o:p></o:p>

<o:p> </o:p>

JSF上做的集群实验是使用apache+jboss来实现,支持stick sessionsession replication两种模式。stick session模式的结构和讨论如上述,session replication的结构是apache做集群前端,通过jbossTreeCache实现session replication。在编写JSF程序时要把放入会话中的backing-beans实现串行化,如果一台机器down掉,在线用户的会话会转移到其它正常工作的机器上,对于用户的感受来说可能是速度变慢,但是不会出现会话断掉的情况。如果down掉的机器重新恢复,TreeCache通过网卡或文件系统完成session replication的过程后,在线用户的任务就可以实现与机器未down时相同的负载均衡状态。如果想减少网卡或文件系统的I/O操作,可以通过集群分区来实现。<o:p></o:p>

<o:p> </o:p>

Tapestry<o:p></o:p>

Tapestry本身提供两种state持久方式:传统的session方式和client-side方式。状态保存在session中的情况下,实现集群和JSF方式一样,需要session replication。保存在client-side的情况下,有一些局限性,但是可以实现无状态的应用,自动支持集群。<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

4.对于I2SS组件与JSF组件混合使用的说明<o:p></o:p>

<o:p> </o:p>

JSF组件应用程序是标准J2EE应用程序,JSF组件对servlet API提供了封装,同时也提供了直接得到servlet上下文的方法,所以I2SS组件与JSF组件的混合使用与现在已经实现的邮件系统中servlet+JSPI2SS组件的混合使用方法是一样的,都可以用手动创建EbiContext实例的方法来实现。<o:p></o:p>

<o:p> </o:p>

* I2SS组件要和tapestry组件混合使用的话比较困难,但是可以在tapestry组件中调用I2SS的业务处理方法。<o:p></o:p>

<o:p> </o:p>

5.目前JSF标准的进展情况,以及行业的支持情况<o:p></o:p>

JSF 体系结构
JavaServer Faces
MVC 实现
JSF
的主要优势之一就是它既是 Java Web 用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“Faces”servlet(控制器)来处理。

<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 390pt; HEIGHT: 187.5pt" filled="t" type="#_x0000_t75"><v:fill color2="black"></v:fill><v:imagedata o:title="" src="file:///C:\DOCUME~1\Admin\LOCALS~1\Temp\msohtml1\02\clip_image001.jpg"></v:imagedata></v:shape>

1JavaServer Faces MVC 实现<o:p></o:p>

JSF已经作为j2ee5标准的一部分,具体可以查看http://java.sun.com/javaee/5/javatech.html<o:p></o:p>

因为 JavaServer Faces 是一种标准的 Java 技术,因此软件开发工具完全能够为 JavaServer Faces 提供高级的集成开发工具支持。多个供应商现在不同程度地支持 JSF 开发,这大大提高了 JSF 的易用性和功能。OracleSun Borland IBM 都为 JavaServer Faces 提供了开发环境。由于开发工具供应商在竞相提供更好、更简单和更多的开发环境,因此基于 IDE JSF 开发拥有美好的前景!<o:p></o:p>

目前JSR 127: JavaServer Faces处于final状态
JSR 252: JavaServer Faces 1.2处于In Progress状态
Facelets
处理Preview Draft状态<o:p></o:p>

JSF技术已经作为J2EE5的一部分可以在J2EE5preview版本中使用,预计J2EE5正式发布后,所有的应用服务器提供商都会提供对JSF技术的内建支持。但JSFFaclet技术并不依赖于容器和JDK,现阶段JSF已可以在Jboss4.0+JDK<st1:chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.4.2</st1:chsdate>的环境中投入使用。<o:p></o:p>



根据JSR-252官方网站上的描述<o:p></o:p>

JavaServer Faces 1.2是对JavaServer Faces 1.1的增强<o:p></o:p>

 <o:p><

分享到:
评论

相关推荐

    Tapestry,JSF和Struts的比较

    word文档。 &lt;br&gt;这里我们要将 Tapestry 与其它主要的 Java Web 框架做一番比较,包括 Struts,JSF。 ……

    web开发框架——JSF开发实战一(图)

    JSF最大的竞争对手是tapestry,是apache的产品,但是apache又弄出了个myfaces,是对jsf标准的一个实现。也许你也和我一样,在jsf和tapestry之间犹豫很久,将来从apache的态度上应该可以看出二者的走向。

    JSF2.0快速入门的基本教程.ppt

    JSF最大的竞争对手是tapestry,是apache的产品,但是apache又弄出了个myfaces,是对jsf标准的一个实现。也许你也和我一样,在jsf和tapestry之间犹豫很久,将来从apache的态度上应该可以看出二者的走向。在tss上有一...

    比jsf更成熟的框架tapestry

    比级jsp更优越,做到了组件的灵活应用,应该对项目开发的应用更有帮助

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    JSFとStruts.doc

    Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细...

    Comparing Web Frameworks; Struts, Spring MVC, WebWork, Tapestry & JSF.pdf

    此软件介绍webwork and struts and jsf的区别

    创建灵活易扩展的J2EE企业应用程序框架

    一 个典型的J2EE的应用,至少应该包括以下三部分:表现层,业务逻辑层和数据持久层,为了更加容易地创建企业应用程序,许许多多的Framework涌现 出来,表现层我们可以选择Struts, JSF, Tapestry, WebWork, Velocity...

    JSF核心编程学习指南

    JSF将是J2EE5.0中所包含的web开发框架,这应该是第一个成为jcp标准,并且随j2eesdk一起发布的web框架,可以看出...JSF最大的竞争对手是tapestry,是apache的产品,但是apache又弄出了个myfaces,是对jsf标准的一个实现

    简易Web框架EasyJWeb源码

    EasyJWeb是基于Java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主要流行的开源Web框架(Struts、JSF、Tapestry 、Webwork),吸取了其优点及精华,利用...

    struts 入门ppt

    从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和 Spring MVC等。 这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1种吸取了经验,克服了很多不足。 这些框架...

    EasyJWeb简易教程pdf版

    框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及精华,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源...

    easyjweb-core-2.0.jar

    框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及精华,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源...

    EasyJWeb开发指南

    框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及精华,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源...

    EasyJWeb1.0新特性抢先看

    EasyJWeb 是基于java 技术,用于企业级Java Web 应用程序快速开发的MVC 框架。...架,如Rails、Struts、JSF、Tapestry 等,吸取其优点及精华,是一个完全由来自的中国开源 爱好者开发,文档及注释全部为中文的开源框架

    EasyJWeb快速入门指南

    框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、 Struts、JSF、Tapestry等,吸取其优点及精华,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源...

    EasyJWeb入门手册

    框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架(Rails、Struts、JSF、Tapestry),吸取其优点及精华,是一个完全由来自中国的开源爱好者开发、文档及注释全中文的开源框架。

    EasyJWeb框架 v0.5

    基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主要流行的开源Web框架(Struts、JSF、Tapestry 、Webwork),吸取了其优点及精华,利用Velocity作为...

    简易J2EE web框架EasyJWeb源码

    EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主要流行的开源Web框架(Struts、JSF、Tapestry 、Webwork),吸取了其优点及精华,利用...

    Struts2教程/在JAVA EE中作为MVC的优秀框架

    在JAVA EE中作为MVC的优秀框架有很多,例如:常见的有:Struts、WebWork、Tapestry、JSF等,在这些优秀的框架之中,个人比较习惯使的还是:Struts和WebWork,对于JSF使的不多,虽然SUN公司主推JSF,但观察其身边的搞...

Global site tag (gtag.js) - Google Analytics