原来SUN JSF RI 是基?Sun Java Research License [Sun, JRL]对”开攑ּ发”发布。基本上Q这意味着你可以免费获得它的代码和源代码,q且你可以修改和分发它,只要你不是用作商业目? 或者用作内部非生之用。如果你修改了二q制代码和源代码用作商业用途或者内部生产之用,你必M用商业许可证q且通过 JSF 技术兼容包 (TCK)的测试。你也可以提交补丁给 JSF RI 代码基?/P>
q且在Java.netC也launch了一个专门的目Javaserver FacesQ地址是:https://javaserverfaces.dev.java.net/
Ed Burns 也在其BLog中公布了 JavaServer Faces 1.2 ?JavaServer Pages 2.1 Proposed Final Draft Specification的一些细节:
JSPQJSTL和Faces ELl一hQƈ且类g OGNL 的用方式。这极度方便表现层之间的整合,和MVC之间的简化?/P>
虽然可以不用JSP而用FacesQ但是因为技术、技能和各种生开发环境的支持QJSP/JSF应用实最现实和富有效率的。当Ӟq里q有一些集成问题,比如OnJava中的 Hans Bergsten 的这文章所q?nbsp;所以规范中修攚w对JSP的Faces ViewHandler 的实玎ͼ以及所有Faceslg标签所用的JSP定制标签句柄的基cȝ实现来解册些问题?/P>
有一个问题是JSTL不支持PostBackQ所以?JSTL?<c:forEach> 包含Faces 输入lg会出现问题。所以需要在JSTL中引入类gPostBack的新概念Q将在下一个版本中发布Qƈ且更好地支持所有Faceslg?/P>
因ؓ在Multi Frame 或?Multi Window 应用中用Facesa在State Management API斚w会出问题Q即览器的Back按钮会造成状态错误。这个问题已l解冟?nbsp;
d了一个新?<resource-bundle>?faces-config 中,列出应该暴露l用ELResolver 铄EL的资源束。这样可以优化性能?/P>
原文见:http://weblogs.java.net/blog/edburns/archive/2005/08/javaserver_face_3.html
lglgQJAVA一直希望有.NET和Delphi的RAD和拖攑ּ开发,虽然现在和那两种q有差距Q但毕竟已经是开始了。第3方组件厂商也开始出现萌芽的态势。另外一个值得注意的趋势就是,AppleQ这个艺术与技术的完美~造者,其WebObjectQ作为Web的组建式框架的祖宗,也准备开放了。而且Q按照Apple也{向Intelq_的介l来看,也许不久的一天,它就可以完美地运行在WinTel架构下了?/EM>
支持渲染包可以是一个非帔R要的特征Q这样可以支持不同的昄技术。移植性很好。针对XMLQ?PDFQ?VML{等。不需要改动其它的东西?/EM>
其实比较特色的是Method Binding,q点在其他EL或者类似的技术上q没有?/EM>
只有Spring 才IoC吗?不是的,其实现在IoC无处不在?/EM>
Struts是一个品,而JSF是一个标准。二者层面不一栗有很多优秀的实C出现的?/EM>
甚以为是Q故摘录于此。原文见Q?A >http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer
其实QJSF的学习曲UK怹低,呵呵?BR>
在JavaOne 2005大会上,Oracle的资深副总裁Thomas Kurianq行了一ơ主题演Ԍ展示了Oracle在构建和l护面向服务架构QSOAQ方面的观点和解x案?/P>
Kurian表示QOracle的“新应用蓝图”将采用JSF实现用户界面Q用BPELQ业务流E执行语aQ描qC务流E,用EJB 3.0开发业务逻辑。该计划q将借助web service和Java业务整合规范来整合遗留系l?/P>
Kurian表示在这个应用蓝图中QJSF和EJB 3.0Q主要用于对象持久化Q将扮演非常重要的角艌Ӏ?/P>
全文LQ?A >http://www.javaworld.com/javaworld/jw-06-2005/jw-0629-iw-oracle_p.html
希望ADF Faces早些正式发表。不qJD免费之后Q希望Oracle再将ADF的许可搞得友好一些?/P>
Is JSF ready to take on ASP.Net?
M来看 JSF逐渐在Java开发向着更加RAD的方向发展,JB, Oracle Jdeveloper, IBM WSAD/RADQ?SUN JSF Creator{等都作的不错,提供了一定的visual可视化组件开发的能力和数据帮定能力。但是距MS的可用性还是相差甚q?BR>其是VS.NET 2005一Z后,q个差距更大更需要努力了?BR>
JSF预计出现的第3方组件市场ƈ没有出现蓬勃发展Q是因ؓJSF本n没有hQ还是IDE不够标准。可能两者都有,特别是后者,规范中ƈ没有界定lg需要IDE支持Q必L供的元数据集合,那么到底是针对oracle呢,q是IBM?或者自行其是?BR>
Strutsl箋占据着前端框架的霸d位,WebWork和Tapstry艰难求生。连Spring也将触角伸到前端。JSFq是困难啊?BR>
Matte Railbe的BLog中有一个关于框架的发展现状Q?/A>
因ؓ对Web应用来说Q不象其桌面应用堂兄弟,它必LL要满_个客?(比如桌面览器,Ud?sh)话和PDA{?, JSF 有一个强大的架构来以不同的方式显C组件。它也有一个可扩展的机制来q行输入校验 (如字D长? 以及在显C字W串和对象之间进行{换?/P>
Faces 也能够自动的保持你的UI lg和收集用戯入值的Java 对象之间的同步,q且通过调用后台Bean来对事gq行响应。另外,它有一个强大的Dpȝq且全面支持多语a特征。这些特征构成了JSF的应用基架构—即Ҏ(gu)应用pȝ必不可少的基本构建块?/P>
JavaServer Faces 定义了工h持的基础Q但是其实现留给了工具厂商,q是Java的习惯。你可以自行选择业界领导提供的工P它们都可以是你能够像使用其他RAD 开发工具如Visual Studio. NET一般可视化的布局和设计你的Web UI?(如图1.1, 1.2, ?1.3 分别展示了在IBM, Oracle, ?Sun的IDE开发工具中开发JSF是什么样? 。或者,如果你愿意在没有设计工具下开发Faces 应用?/P>
在这些赞之词之后,我们应该指出JavaServer Faces 和桌面UI 框架如Swing 或者SWT之间的关键不同之处: JSF 是运行在服务器之上。因此, Faces 应用运行在一个标准的Java web 容器之中Q如Apache Tomcat [ASF, Tomcat]QOracle Application Server [Oracle, AS]Q或者IBM WebSphere Application Server [IBM, WAS]Q然后向客户昄HTML 或者其他标记语a?/P>
如果你点M个Swing 应用中的按钮Q它?yu)生一个事Ӟ而你可以直接在驻留在桌面中的代码来处理该事g。相反, web 览器ƈ不知道JSFlg和其事g的Q何东西;它仅仅知道显CHTML而已。所以当你点M个Faces 应用按钮Q它?yu)生一个请求,有浏览器发送到服务器。Faces 负责该h转换成一个可以被服务器中的应用逻辑所处理的事件。它也负责保证你在服务器所定义的每一个UI 部g都正显C给览器?/P>
?.4 昄了一个Faces 应用的高阶视图。你可以看到Q应用运行在服务器上可以和其他子pȝ集成Q如EJB服务或者数据库服务。当Ӟ JSFq提供许多其他服务可以帮助你你更的代h(hun)构徏强大的Web应用?/P>
JavaServer Faces 有一个特定的目标Qweb 开发更快更Ҏ(gu)。它允许开发h员以lgQ事Ӟ后台Bean以及它们之间的交互来q行思考,而不是请求,响应和标记。换句话_它掩盖了Web开发的大量的复杂性,是开发h员能够集中于如何使他们的应用做的最好?/P>
对JCPC和Sun 扩展Java的方式来_最好的事情莫过于有大量的公司,l织和个人投w其中。通过JCP 产生一U规范实际上不上快速,但结果却是非常好的。JavaServer Faces ?001q?月通过Java 规范h(JSR) 127 引入Q规范的最l版本,JSF 1.0Q在2004q??日才发布。而JSF 1.1 (l护发布? 则是2004q??7日发布的。参与开发Faces的公司和l织 (除Sun之外)包括Apache软g基金Q?BEA pȝQ?Borland 软gQ?IMG height=1 alt=5 src="file:///E|/Apache%20Group/Apache2/htdocs/sugar/clip_image010.jpg" width=1>IBMQOracleQMacromediaQ等{?/P>
q些公司开发的产品可分?c?某些可能适合不止一c?QJ2EE 容器Q开发工P和UI 框架。因为JavaServer Faces是一个与工具一起工作和q行于J2EE 容器中的UI框架Q这样做则非怹好。最重要的是q些公司中包括许多业界巨头。这意味着你可以期望JSF h大量的工业支持。ƈ且,如果你的供应商不支持JSFQ你也可以免费下载Sun的参考实?[Sun, JSF RI]?/P>
要跟t最新的JSF 新闻Q文章,产品和供应商Q请讉KJSF Central [JSF Central]Q本书作者所q作的一个社区站炏V?
我们面对q一情况Q有大量的Java web 框架可用。它们中某些Q如Struts [ASF, Struts] ?WebWork [OpenSymphony, WebWork]Q有助于表单处理和其他问题,比如遵@Model 2Q集成数据源Q以及通过XML配置文g中心化控制引用的所有应用资源。这些基本框架提供了q泛的基设施Q但是还没有屏蔽基本的HTTPh响应处理?/P>
其他框架Q象Tapestry [ASF, Tapestry]QOracle的应用开发框?(ADF) UIX [Oracle, ADF UIX]Q以及SOFIA [Salmon, SOFIA]Q都提供一个UI lg模型和某些事件处理机制。这些UI 框架Q包括JSFQ目的是化整体变成模型。经常,基础架构和UI 框架h重叠的功能?/P>
Z理解q种重叠Q你可以惌web 应用架构师一个服务栈。靠q栈底部的服务没能抽象基协议的许多细节;它们更像_加工品。栈中靠q顶部的服务则隐藏了更多讨厌的细节,提供更高U别的抽象。最低层的服务由web serversQServlet APIQ和JSP处理。大部分框架都提供一些附加服务的子集。图1.6昄了这个栈Q以及与JSFQStrutsQservletsQJSPQ和典型的web server的关pR?/P>
你可以从图中看到JSF 支持_多的服务Q这也得它自己成ؓ强大的框架。在大多数情况下Q这是你需要的东西。后l发布的Faces极有可能也会包括传统的服务?/P>
然而,即Faces 与Strutsq样的框架有些重叠,也ƈ不是必须替代它们?(事实上,如Struts的领? Craig McClanahan, 是JavaServer Faces的开发指? 如果你将他们集成hQ你可以访问栈中的所有服?W?14 章将包含Struts 集成)。你也可以和其他框架一起用JSFQ比如Spring [Spring-Faces]?/P>
对于面向UI的框ӞJSF 和他们很多功能都有重叠。这些项目的某些x在其未来版本中支持JSF。Faces 的独特之处在于有通过JCP的工业巨头参与的开发联盟,以及成为J2EE的一部分。作为结果,它将分n受强有力的工h持,q将随很多J2EE server一起交付?/P>
令h(zhn)哀的是Q“组件”一词的q度使用在今天已l到处蔓延了。操作系l是一个组Ӟ应用E序是一个组ӞEJBs 是组Ӟ库是lgQ甚臛_房的水槽也是。有大量的书论及lgQ有好的书指出组件有好多定义存在?/P>
如果你知道他的确实意义,对这个词的滥用,你就不会感到陌生。如果你在词怸查找“组ӞcomponentQ”这个词Q你׃看到他有一个同义词供选—整体的一个部分。因此,如果你用这个词的字面意思,在一个分布式应用Ƣ迎用,操作pȝ实是一个组件?/P>
更有的是,从概念上Ԍ厨房水槽Ҏ(gu)作系l相比对Faceslg来说更有共通之处。你不用自己从头刉它—你只需要购C个符合你需要的水槽Q尺寸,颜色Q材料,容器敎ͼ{等。对其他厨房用品也是如此Q比如橱柜和工作台面。所有这些组仉有特定的接口可以使他们能够和其他东西q行集成Q但是依赖于特定的环境服务?例如Q接口管)。最l结果可能是独特的,但整体是q立可重用的部件组成?/P>
如果我们采用厨房lg的概念,q应用到软g商,我们会得个定义:
厨房的“环境依赖性”就是诸如房间本w,配管Q电(sh)路等{的因素。本质上Q环境是所有组件的容器。一个容器是拥有lgQƈ且提供一pd允许q行lg操作的服务的pȝ。有Ӟq种操作在IDE (设计?中进行,有时则在部v环境中运行,比如J2EE server之中 (q行??/P>
短语“独立部|y?意味着一个组件是一个自包含的单元,可以被安装到一个容器中。厨房水槽是一个独立的Q自包含的组Ӟ可以安装在工作台中?/P>
当你攚w你的厨房时Q你雇用一个承包商Q由他来l装你所选择的组?(柜Q抽屉,水槽{等) 成ؓ一个完整的厨房。我们用组件构Y件时Q我们也是将各种lgl装hQ创够运行的软gpȝ?/P>
JSF lgQ?Swing lgQ?servlet, EJB, JavaBean, ActiveX 控gQ以及Delphi 可视lg?(VCL) lg都符合这个定义。但q些lg却集中于不同的事情。JSF 和Swing lg单独针对UI 开发,而ActiveX ?VCL 控g可以也可以不影响UI。Servlets ?EJBs 则更_糙一些?他们在应用和业务逻辑领域提供大量的功能?/P>
因ؓJSF 着gUI lgQ我们来相应H化我们的组件定义?/P>如果你是在开发传l的GUI应用Q那么UI lg的概念应该对你非常熟(zhn)了。JavaServer Faces 的精彩之处在于将标准的UI lg模型引入到Web世界?