﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-铁手剑谱-随笔分类-JSF系列</title><link>http://www.blogjava.net/SteelHand/category/1171.html</link><description>&lt;strong&gt;上善若水&lt;/strong&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 09:50:57 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 09:50:57 GMT</pubDate><ttl>60</ttl><item><title>Infragistics的JSF组件</title><link>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 12 Jun 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/52126.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/52126.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/52126.html</trackback:ping><description><![CDATA[好久不来写blog了，没时间。总算本期课程结束了好几门，才有时间来写上两句，相信这个假期会多些时间过来。<br /><br />前不久，大牌第三方组件厂商Infragistics终于宣布了其JSF组件，这也是除了标准组件、大厂实现（SUN JSF Web UI、IBM JSF extension以及Oracle ADF Faces）、以及开源项目（典型的Apache Myfaces）之外的第一个比较大型的第三方组件。虽然这之前也有一些小型的项目，但是被这种比较牛的组件厂商进入此领域，还是第一次。当然，这个项目还是收购自Otrix，但是凭借Infragistics在ASP组件上的成功，相信不久就会有一套非常好的组件问世。目前所推出的仅仅包括：Tab、Grid、Navigator、table、Tree、menu、Editor几个组件。JSF组件同样归入其NetAdvantage产品线中，由此可见其目标之一斑。<br /><br /><br />另，《JSF in Action》一书，终于要由人民邮件出版了。请大家再等一段时间。<br /><img src ="http://www.blogjava.net/SteelHand/aggbug/52126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-06-12 10:06 <a href="http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle ADF Faces开源拉</title><link>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 25 Jan 2006 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/29175.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/29175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/29175.html</trackback:ping><description><![CDATA[Oracle 去年将ADF Faces免费之后，目前又将其捐献出来，给了Apache的Myfaces项目。前些天看到过一些风声，现在<a href="http://www.theserverside.com/news/thread.tss?thread_id=38669">TSS</a>也公布了这一消息。<br><br>这简直是一条很好的消息，这下JSF世界终于可以有丰富的控件使用了。Myfaces本来就非常优秀，整合了Smile之后，如今再得到ADF Faces的Code base，已经兵强马壮，个人认为可以勘作企业应用了。<br><br><br><br><img src ="http://www.blogjava.net/SteelHand/aggbug/29175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-01-25 10:20 <a href="http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SUN JSF RI Opensource 以及JSF新特征</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 29 Aug 2005 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/11413.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/11413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/11413.html</trackback:ping><description><![CDATA[<P>Roger Kitain （ JavaServer Faces co-specification lead&nbsp;）在其blog宣布了开源的 "Open JavaServer Faces" ，并且在基于OSI-approved CDDL许可之下。</P>
<P>&nbsp;</P>
<P>原来SUN JSF&nbsp;RI 是基于 Sun Java Research License [Sun, JRL]对”开放开发”发布。基本上，这意味着你可以免费获得它的代码和源代码，并且你可以修改和分发它，只要你不是用作商业目的, 或者用作内部非生产之用。如果你修改了二进制代码和源代码用作商业用途或者内部生产之用，你必须使用商业许可证并且通过 JSF 技术兼容包 (TCK)的测试。你也可以提交补丁给 JSF RI 代码基。</P>
<P>&nbsp;</P>
<P>并且在Java.net社区也launch了一个专门的项目Javaserver Faces，地址是：https://javaserverfaces.dev.java.net/</P>
<P>&nbsp;</P>
<P>Ed Burns&nbsp;也在其BLog中公布了 JavaServer Faces 1.2 和 JavaServer Pages 2.1 Proposed Final Draft Specification的一些细节：</P>
<P>&nbsp;</P>
<UL>
<LI>统一 EL。</LI></UL>
<P>将JSP，JSTL和Faces EL统一起来，并且类似于 OGNL 的使用方式。这将极度方便表现层之间的整合，和MVC之间的简化。</P>
<UL>
<LI>针对JSP/JSF应用的新的Tree 创建和内容交织模型（Content Interweaving Model）。</LI></UL>
<P>虽然可以不用JSP而使用Faces，但是因为技术、技能和各种生产开发环境的支持，JSP/JSF应用确实最现实和富有效率的。当然，这里还有一些集成问题，比如OnJava中的 Hans Bergsten 的这篇文章所述。&nbsp;所以规范中将修改针对JSP的Faces ViewHandler 的实现，以及所有Faces组件标签所用的JSP定制标签句柄的基类的实现来解决这些问题。</P>
<UL>
<LI>集成JSTL。</LI></UL>
<P>有一个问题是JSTL不支持PostBack，所以使用 JSTL的 &lt;c:forEach&gt; 包含Faces 输入组件会出现问题。所以需要在JSTL中引入类似于PostBack的新概念，将在下一个版本中发布，并且更好地支持所有Faces组件。</P>
<UL>
<LI>Back Button 问题和多 Frame 或Multi Window Faces 应用。</LI></UL>
<P>因为在Multi Frame 或者 Multi Window 应用中使用Facesa在State Management API方面会出问题，即浏览器的Back按钮会造成状态错误。这个问题已经解决。&nbsp;</P>
<UL>
<LI>将消息与页面中的某个特定的组件相关联。</LI>
<LI>AJAX support</LI>
<LI>暴露一个application 层面的 ResourceBundle 给 EL.</LI></UL>
<P>添加了一个新的 &lt;resource-bundle&gt;到 faces-config 中，列出应该暴露给使用ELResolver 链的EL的资源束。这样可以优化性能。</P>
<UL>
<LI>API classes use generics</LI></UL>
<P>&nbsp;</P>
<P>原文见：http://weblogs.java.net/blog/edburns/archive/2005/08/javaserver_face_3.html</P>
<P>&nbsp;</P><img src ="http://www.blogjava.net/SteelHand/aggbug/11413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-29 10:51 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOP 10 Resesons to Perfer JSF on Struts</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 24 Aug 2005 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10856.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10856.html</trackback:ping><description><![CDATA[&nbsp;David Geary （何许人也？Core JSF的作者之一）有一篇BLog，建议新项目都最好采用JSF而不是Struts，并且列出了10大理由，分别是：<BR><BR><!--StartFragment -->&nbsp; 
<LI>Components </LI>
<P><EM>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件组件，JAVA一直希望有.NET和Delphi的RAD和拖放式开发，虽然现在和那两种还有差距，但毕竟已经是开始了。第3方组件厂商也开始出现萌芽的态势。另外一个值得注意的趋势就是，Apple，这个艺术与技术的完美缔造者，其WebObject，作为Web的组建式框架的祖宗，也准备开放了。而且，按照Apple也转向Intel平台的介绍来看，也许不久的一天，它就可以完美地运行在WinTel架构下了。</EM><BR>&nbsp;&nbsp;&nbsp;</P>
<LI>Render Kits </LI>
<P><EM>&nbsp;&nbsp; 支持渲染包可以是一个非常重要的特征，这样可以支持不同的显示技术。移植性很好。针对XML， PDF， VML等等。不需要改动其它的东西。</EM></P>
<LI>Renderers </LI>
<LI>Value Binding Expressions </LI>
<P><EM>&nbsp;&nbsp; 其实比较特色的是Method Binding,这点在其他EL或者类似的技术上还没有。</EM></P>
<LI>Event Model </LI>
<LI>Extensibility </LI>
<LI>Managed Beans (Dependency Injection) </LI>
<P><EM>&nbsp; 只有Spring 才IoC吗？不是的，其实现在IoC无处不在。</EM></P>
<LI>POJO Action Methods </LI>
<LI>JSF is the standard Java-based web app framework </LI>
<LI>There's only one <a title="" href="http://struts.apache.org" >Struts</a></LI>
<P><EM>&nbsp;&nbsp;&nbsp;Struts是一个产品，而JSF是一个标准。二者层面不一样。有很多优秀的实现会出现的。</EM></P>
<P>甚以为是，故摘录于此。原文见：<A href="http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer">http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer</A><BR><BR>其实，JSF的学习曲线非常之低，呵呵。<BR></P><img src ="http://www.blogjava.net/SteelHand/aggbug/10856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-24 09:47 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle的JSF和EJB3策略</title><link>http://www.blogjava.net/SteelHand/archive/2005/07/04/7100.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 04 Jul 2005 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/07/04/7100.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/7100.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/07/04/7100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/7100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/7100.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;
<P>在JavaOne 2005大会上，Oracle的资深副总裁Thomas Kurian进行了一次主题演讲，展示了Oracle在构建和维护面向服务架构（SOA）方面的观点和解决方案。</P>
<P>Kurian表示，Oracle的“新应用蓝图”将采用JSF实现用户界面，用BPEL（业务流程执行语言）描述业务流程，用EJB 3.0开发业务逻辑。该计划还将借助web service和Java业务整合规范来整合遗留系统。</P>
<P>Kurian表示在这个应用蓝图中，JSF和EJB 3.0（主要用于对象持久化）将扮演非常重要的角色。</P>
<P>全文请看：<A href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0629-iw-oracle_p.html">http://www.javaworld.com/javaworld/jw-06-2005/jw-0629-iw-oracle_p.html</A><BR><BR>希望ADF Faces早些正式发表。不过JD免费之后，希望Oracle再将ADF的许可搞得友好一些。</P><img src ="http://www.blogjava.net/SteelHand/aggbug/7100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-07-04 17:31 <a href="http://www.blogjava.net/SteelHand/archive/2005/07/04/7100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《JavaServer Faces in Action中文版》</title><link>http://www.blogjava.net/SteelHand/archive/2005/06/30/6953.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Thu, 30 Jun 2005 10:32:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/06/30/6953.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/6953.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/06/30/6953.html#Feedback</comments><slash:comments>94</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/6953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/6953.html</trackback:ping><description><![CDATA[本书翻译工作已经完成，正在修订和联系出版事宜。<BR>样章可以在这里<A href="http://www.blogjava.net/Files/SteelHand/JIA_Chinese_Sample.rar">下载</A>。<BR>请大家在这里留下意见。也欢迎发送给您的朋友。<img src ="http://www.blogjava.net/SteelHand/aggbug/6953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-06-30 18:32 <a href="http://www.blogjava.net/SteelHand/archive/2005/06/30/6953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF vs. ASP.NET</title><link>http://www.blogjava.net/SteelHand/archive/2005/06/07/5653.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 07 Jun 2005 03:38:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/06/07/5653.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/5653.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/06/07/5653.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/5653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/5653.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;看到JavaLobby上面有篇比较JSF和ASP的文章：<BR>
<P><A href="http://www.javalobby.org/articles/jsf-asp/">Is JSF ready to take on ASP.Net?<BR></A>总体来看 JSF逐渐在使Java开发向着更加RAD的方向发展，JB, Oracle Jdeveloper, IBM WSAD/RAD， SUN JSF Creator等等都作的不错，提供了一定的visual可视化组件开发的能力和数据帮定能力。但是距离MS的可用性还是相差甚远。<BR>尤其是VS.NET 2005一出之后，这个差距更大更需要努力了。<BR><BR>JSF预计出现的第3方组件市场并没有出现蓬勃发展，是因为JSF本身没有起来，还是IDE不够标准。可能两者都有，特别是后者，规范中并没有界定组件需要IDE支持，必须提供的元数据集合，那么到底是针对oracle呢，还是IBM?或者自行其是。<BR><BR>Struts继续占据着前端框架的霸主地位，WebWork和Tapstry艰难求生。连Spring也将触角伸到前端。JSF还是困难啊。<BR><BR><A href="http://raibledesigns.com/page/rd?anchor=java_jobs_broken_down_by ">Matte Railbe的BLog中有一个关于框架的发展现状：</A></P><img src ="http://www.blogjava.net/SteelHand/aggbug/5653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-06-07 11:38 <a href="http://www.blogjava.net/SteelHand/archive/2005/06/07/5653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaServer Faces简介</title><link>http://www.blogjava.net/SteelHand/archive/2005/04/28/3879.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Thu, 28 Apr 2005 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/04/28/3879.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/3879.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/04/28/3879.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/3879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/3879.html</trackback:ping><description><![CDATA[<P>对于RAD 工具的四个层次， JavaServer Faces 定义了其中3个：一个组件架构，一个标准的UI 部件集，以及一个应用架构。JSF的组件架构定义了通用的方式来建立UI 部件。此架构能驱动标准的JSF UI 组件(按钮，超链接，复选框，文本框等等)，也为第3方组件留了空间。组件是面向事件的，所以JSF 允许你处理客户产生的事件 (如，文本框中值的变化或者点击了按钮)。</P>
<P><IMG height=481 alt=clip_image002.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/jsf/clip_image002.jpg" width=496 border=0></P>
<P>因为对Web应用来说，不象其桌面应用堂兄弟，它必须总是要满足多个客户 (比如桌面浏览器，移动电话和PDA等), JSF 有一个强大的架构来以不同的方式显示组件。它也有一个可扩展的机制来进行输入校验 (如字段长度) 以及在显示字符串和对象之间进行转换。</P>
<P>Faces 也能够自动的保持你的UI 组件和收集用户输入值的Java 对象之间的同步，并且通过调用后台Bean来对事件进行响应。另外，它有一个强大的导航系统并且全面支持多语言特征。这些特征构成了JSF的应用基础架构—即对新应用系统必不可少的基本构建块。</P>
<P>JavaServer Faces 定义了工具支持的基础，但是其实现留给了工具厂商，这是Java的习惯。你可以自行选择业界领导提供的工具，它们都可以是你能够像使用其他RAD 开发工具如Visual Stu&shy;dio. NET一般可视化的布局和设计你的Web UI。 (如图1.1, 1.2, 和 1.3 分别展示了在IBM, Oracle, 和 Sun的IDE开发工具中开发JSF是什么样子) 。或者，如果你愿意在没有设计工具下开发Faces 应用。</P>
<P><IMG height=521 alt=clip_image004.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/jsf/clip_image004.jpg" width=496 border=0></P>
<P>在这些赞美之词之后，我们应该指出JavaServer Faces 和桌面UI 框架如Swing 或者SWT之间的关键不同之处： JSF 是运行在服务器之上。因此， Faces 应用将运行在一个标准的Java web 容器之中，如Apache Tomcat [ASF, Tomcat]，Oracle Application Server [Oracle, AS]，或者IBM WebSphere Application Server [IBM, WAS]，然后向客户显示HTML 或者其他标记语言。</P>
<P>&nbsp;</P>
<P><IMG height=512 alt=clip_image006.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/jsf/clip_image006.jpg" width=496 border=0></P>
<P>如果你点击一个Swing 应用中的按钮，它将产生一个事件，而你可以直接在驻留在桌面中的代码来处理该事件。相反， web 浏览器并不知道JSF组件和其事件的任何东西；它仅仅知道显示HTML<A href="#_ftn1" name=_ftnref1></A>而已。所以当你点击一个Faces 应用按钮，它将产生一个请求，有浏览器发送到服务器。Faces 负责将该请求转换成一个可以被服务器中的应用逻辑所处理的事件。它也负责保证你在服务器所定义的每一个UI 部件都正确显示给浏览器。</P>
<P><IMG height=351 alt=clip_image008.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/jsf/clip_image008.jpg" width=491 border=0></P>
<P>图1.4 显示了一个Faces 应用的高阶视图。你可以看到，应用运行在服务器上可以和其他子系统集成，如EJB服务或者数据库服务。当然， JSF还提供许多其他服务可以帮助你你更小的代价构建强大的Web应用。</P>
<P>JavaServer Faces 有一个特定的目标：使web 开发更快更容易。它允许开发人员以组件，事件，后台Bean以及它们之间的交互来进行思考，而不是请求，响应和标记。换句话说，它掩盖了Web开发的大量的复杂性，是开发人员能够集中于如何使他们的应用做的最好。</P>
<P>&nbsp;</P>
<H3>工业支持</H3>
<P>对JCP社区和Sun 扩展Java的方式来说，最好的事情莫过于有大量的公司，组织和个人投身其中。通过JCP 产生一种规范实际上算不上快速，但结果却是非常好的。JavaServer Faces 在2001年5月通过Java 规范请求(JSR) 127 引入；规范的最终版本，JSF 1.0，在2004年3月3日才发布。而JSF 1.1 (维护发布版) 则是2004年5月27日发布的。参与开发Faces的公司和组织 (除Sun之外)包括Apache软件基金， BEA 系统， Borland 软件，<IMG height=1 alt=5 src="file:///E|/Apache%20Group/Apache2/htdocs/sugar/clip_image010.jpg" width=1>IBM，Oracle，Macromedia，等等。</P>
<P>这些公司开发的产品可分为3类(某些可能适合不止一类)：J2EE 容器，开发工具，和UI 框架。因为JavaServer Faces是一个与工具一起工作和运行于J2EE 容器中的UI框架，这样做则非常之好。最重要的是这些公司中包括许多业界巨头。这意味着你可以期望JSF 具有大量的工业支持。并且，如果你的供应商不支持JSF，你也可以免费下载Sun的参考实现 [Sun, JSF RI]。</P>
<P>要跟踪最新的JSF 新闻，文章，产品和供应商，请访问JSF Central [JSF Central]，本书作者所运作的一个社区站点。 </P>
<H3>JSF，Struts，和其他框架</H3>
<P>我们面对这一情况：有大量的Java web 框架可用。它们中某些，如Struts [ASF, Struts] 和 WebWork [OpenSymphony, WebWork]，有助于表单处理和其他问题，比如遵循Model 2，集成数据源，以及通过XML配置文件中心化控制引用的所有应用资源。这些基本框架提供了广泛的基础设施，但是还没有屏蔽基本的HTTP请求响应处理。</P>
<P>其他框架，象Tapestry [ASF, Tapestry]，Oracle的应用开发框架 (ADF) UIX [Oracle, ADF UIX]，以及SOFIA [Salmon, SOFIA]，都提供一个UI 组件模型和某些事件处理机制。这些UI 框架，包括JSF，目的是简化整体变成模型。经常，基础架构和UI 框架具有重叠的功能。</P>
<P>为了理解这种重叠，你可以想象web 应用架构师一个服务栈。靠近栈底部的服务没能抽象基础协议的许多细节；它们更像粗加工品。栈中靠近顶部的服务则隐藏了更多讨厌的细节，提供更高级别的抽象。最低层的服务由web servers，Servlet API，和JSP处理。大部分框架都提供一些附加服务的子集。图1.6显示了这个栈，以及与JSF，Struts，servlets，JSP，和典型的web server的关系。</P>
<P>你可以从图中看到JSF 支持足够多的服务，这也使得它自己成为强大的框架。在大多数情况下，这就是你需要的东西。后续发布的Faces极有可能也会包括传统的服务。</P>
<P>然而，即使Faces 与Struts这样的框架有些重叠，也并不是必须替代它们。 (事实上，如Struts的领导, Craig McClanahan, 是JavaServer Faces的开发指导) 如果你将他们集成起来，你就可以访问栈中的所有服务(第 14 章将包含Struts 集成)。你也可以和其他框架一起使用JSF，比如Spring [Spring-Faces]。</P>
<P>对于面向UI的框架，JSF 和他们很多功能都有重叠。这些项目的某些申明将在其未来版本中支持JSF。Faces 的独特之处在于有通过JCP的工业巨头参与的开发联盟，以及将成为J2EE的一部分。作为结果，它将分享受强有力的工具支持，并将随很多J2EE server一起交付。</P><BR>
<P><IMG height=416 alt=clip_image002_0000.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/jsf/clip_image002_0000.jpg" width=492 border=0></P><BR>
<H2>组件无处不在</H2>
<P>令人悲哀的是，“组件”一词的过度使用在今天已经到处蔓延了。操作系统是一个组件，应用程序是一个组件，EJBs 是组件，库是组件，甚至厨房的水槽也是。有大量的书论及组件，有好的书指出组件有好多定义存在。</P>
<P>如果你知道他的确实意义，对这个词的滥用，你就不会感到陌生。如果你在词典中查找“组件（component）”这个词，你就会看到他有一个同义词供选—整体的一个部分。因此，如果你使用这个词的字面意思，在一个分布式应用欢迎用，操作系统确实是一个组件。</P>
<P>更有趣的是，从概念上讲，厨房水槽对操作系统相比对Faces组件来说更有共通之处。你不用自己从头制造它—你只需要购买一个符合你需要的水槽：尺寸，颜色，材料，容器数，等等。对其他厨房用品也是如此，比如橱柜和工作台面。所有这些组件都有特定的接口可以使他们能够和其他东西进行集成，但是依赖于特定的环境服务。(例如，接口管)。最终结果可能是独特的，但整体是由独立可重用的部件组成。</P>
<P>如果我们采用厨房组件的概念，并应用到软件商，我们会得出这个定义：</P>
<P>厨房的“环境依赖性”就是诸如房间本身，配管，电路等等的因素。本质上，环境是所有组件的容器。一个容器是拥有组件，并且提供一系列允许进行组件操作的服务的系统。有时，这种操作在IDE (设计时)中进行，有时则在部署环境中运行，比如J2EE server之中 (运行时)。</P>
<P>短语“独立部署” 意味着一个组件是一个自包含的单元，可以被安装到一个容器中。厨房水槽是一个独立的，自包含的组件，可以安装在工作台中。</P>
<P>当你改造你的厨房时，你雇用一个承包商，由他来组装你所选择的组件 (橱柜，抽屉，水槽等等) 成为一个完整的厨房。我们使用组件构建软件时，我们也是将各种组件组装起来，创建能够运行的软件系统。</P>
<P>JSF 组件， Swing 组件， servlet, EJB, JavaBean, ActiveX 控件，以及Delphi 可视组件库 (VCL) 组件都符合这个定义。但这些组件却集中于不同的事情。JSF 和Swing 组件单独针对UI 开发，而ActiveX 和 VCL 控件可以也可以不影响UI。Servlets 和 EJBs 则更粗糙一些— 他们在应用和业务逻辑领域提供大量的功能。</P>
<P>因为JSF 着眼于UI 组件，我们来相应窄化我们的组件定义。</P>如果你是在开发传统的GUI应用，那么UI 组件的概念应该对你非常熟悉了。JavaServer Faces 的精彩之处在于将标准的UI 组件模型引入到Web世界。 
<P>&nbsp;</P><img src ="http://www.blogjava.net/SteelHand/aggbug/3879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-04-28 10:16 <a href="http://www.blogjava.net/SteelHand/archive/2005/04/28/3879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>