JSF伴随着Java EE 5从幕后走上前台

news/2024/7/4 13:32:53 标签: java

开发者在线 Builder.com.cn 更新时间:2008-04-22

本文关键词: 幕后 Java EE 5 JSF JAVA

 

三年前JSF就已经在Sun的实验室里诞生,但直到今天才伴随Java EE 5,作为规范的一部分,从幕后走上前台。JSF是第一个以用户界面为核心的Java Web框架,与其他Java Web框架以“页面”为控制粒度不同的是,JSF的控制粒度已经细化到页面上的“组件”,这是JSF简化Java Web开发的关键点之一。虽然已经正式成为Java EE规范的一部分,并且获得越来越多程序员的青睐,但JSF的前途依然不容乐观。

  1. 带着“用户界面”的烙印,JSF从幕后走上前台

  伴随着从J2EE 1.4向Java EE 5的升级,JSF作为Java企业应用规范的一部分,登上了Java Web编程的舞台。雪藏了将近3年时间,经过Sun专家组的一次次修订,经过JSF支持者的一轮轮测试,经过Java Web开发社区的一波波辩论,JSF终于从Sun的实验室走出,首次以规范的名义,出现在程序员的眼前。没有鲜花、没有掌声,Sun只是简单地将JSF推 上前台,如同它的很多前辈那样,Sun给予它生命,而此后漫长的成长之路,则完全要靠它自己去走。

  刚刚踏上Java Web热土的JSF,且顾且行,前方道路上的每一处拐角,似乎都隐藏着无数的未知。前途坎坷,除了Sun那鼓励中略带担忧的目光,JSF再也没有什么可以 依靠的了。正所谓生死有命,富贵在天,在危机四伏的Java Web世界里,JSF的未来,谁也无法预测。

  JSF的全称是JavaServer Faces,这是Sun的专家组赋予JSF的名称。JavaServer这个单词大家应该耳熟能详了,JSP中的“JS”也是JavaServer的缩 写,不过与JSP中的“P”所代表的“Pages”不同的是,JSF中的“F”是个称为“Faces”的新术语。虽然Sun没有对Faces的具体含义作 出官方的解释,但是,其隐含的意义非常明显,那就是“界面”。事实上,在Sun的JSF规范中,专家组正是将JSF定义为“Java Web应用的用户界面框架”。这个定义虽然寥寥数语,十分简洁,但突出了JSF的“用户界面”特征,为JSF烙下了“用户界面”的烙印。

  Java Web的程序员期待一个用户界面框架已经很久了。虽然Java Web的框架五花八门,多不胜数,但真正以“用户界面”为核心和立足点的,JSF是第一个。多数Java Web框架,不约而同地将“页面”作为用户界面的最小元素加以控制,而JSF将用户界面的最小元素聚焦到了页面上的“组件”。

  相对于前者以页面为控制粒度的粗放模式,JSF以“组件”为控制粒度的细致模式,无疑给普通Java Web程序员带来了更大的想象空间。更为重要的是,JSF细化了控制粒度,却并没有以加大Java Web编程的复杂度为代价,相反,作为Java EE 5“简化Java开发”使命的担负者之一,JSF在Java Web编程上极大地减轻了普通程序员的负担。这点我们将在后文中,通过一个具体的实例加以论证。

2. 虽然名正言顺,JSF依然前途坎坷

  JSF对于上升为官方规范的期待,甚至比Java Web程序员对用户界面框架的期待,还要久远。JSF的历史远不止三年,其生命历程的起点,可以追溯到5年前。2001年5月,Sun在JSR#127中 提出制订一个以用户界面框架为目标的规范,经过半个月的投票表决,SE/EE执行委员会以10票同意、5票反对和1票弃权的结果批准了JSR#127。从 此,JSF踏上了生命征途。2001年5月底,JSF专家组成立,着手制订规范文档。历经多次的讨论和修订,JSF的规范1.0版,在差不多三年后的 2004年3月,才得以面世。这标志着JSF可以被普通程序员正式使用了。

  为了让JSF的程序员有一个沟通交流的场所,Sun在自己的网站上为JSF开辟了一个论坛。论坛为JSF的发展起到了极大的促进作用。来自世界 各地的JSF爱好者们,在论坛里讨论JSF的使用心得,发表疑问,寻求帮助,Sun专家组也定期不定期在论坛上露面,解答一些疑难问题。JSF1.0版的 很多Bug,就是在论坛中被发现和披露的。论坛中不乏Java高手,有一些高手在发现Bug后,甚至直接分析和修改Sun的JSF代码,给出自己的解决方 案,并在论坛中和其他开发者分享。

  名不正则言不顺,三年来,未获J2EE官方规范青睐的JSF,在JSF社区虽然被炒得热火朝天,但离普通程序员一直很远。现在,JSF终于加入 了Java EE官方规范的行列,进入Java Web编程领域已经名正言顺了。官方规范的号召力是巨大的,JSF正名也就半年时间,统计表明,JSF在这半年中吸引的开发者,超过了过去三年总和的一倍 有多。JSF的前途看上去一片光明。

  那么,JSF的眼前真的是一马平川吗?现实并非如此!横亘在JSF前进道路上的障碍,不但有强大的JSP,还有Sun那令人失望的商业推广策略。

转载于:https://www.cnblogs.com/wangzhanjianshe/archive/2009/03/30/2327041.html


http://www.niftyadmin.cn/n/1390324.html

相关文章

Android LeakCanary 学习

学习内容来自文章:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0511/2861.html 为了学习,自己又徒手实现了一遍 1.AS中添加 依赖项 debugImplementation com.squareup.leakcanary:leakcanary-android:1.3releaseImplementation com.…

ListView原理与优化

一.原理:ListView是个组合列表控件。也就是它不象TextView那样,不依赖于别的控件,直接用textView.setText()方法就可以显示数据,而ListView是不可以这样显示数据的。它是以MVC模式来显示数据的,添加数据时&…

iscroll滑动区域内的div onclick事件单击一次触发了两次bug解决

1、自己写一个fn-->myclick,然后οnclick"myclick();"调用。代码:JavaScript code?123456789101112131415var t1 null;//这个设置为全局function myclick(){if (t1 null){t1 new Date().getTime();}else{ var t2 new Date().get…

[转载]Sublime Text 2支持GB2312和GBK,解决中文显示乱码问题

Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦。不过Sublime Package Control所以供的插件可以让Sublime Text 2几乎完美地支持CJK编码的文本。 安装Sublime Package Control非常简单,在Sublime T…

Android SqlLite 学习

今天学习了Android SqlLite 一些知识,记录下 一、使用SQLiteDatabase方法一: 1.创建数据库 SQLiteDatabase db SQLiteDatabase.openOrCreateDatabase("databasename.db",MODE_PRIVATE,null); 2.创建表 String sql"create table st…

DAO设置模式

区分: J2EE的组件层次: 客户端---表示层---业务层---数据层---数据库---数据库 DAO属于数据层的操作,即:在DAO中封装了一个表在项目中的多有的操作 举例: person表 id name password age 定义各种操作: 在java中只有通…

中继器的使用

目的显示,姓名对应的年龄 1、 2、设定数据源 3、拖入2个Label组件,分别命名为lbl_name、lal_age,显示姓名、年龄。 4、把数据、和视图练习起来。相当于MVC的C,控制跳转。 最后,F5运行 本文转载自SharkBin博客园博客,原…

用JS有效解决移动web浏览器中HTML元素的overflow:scroll滚动属性失效问题

web移动平台前端UI开发工作,兼容问题超多,今儿又遇到一个。产品方要求在某固定尺寸容器内显示内容,但内容条数未知;如果条数过多,容器显示滚动条。这鸟需求按说是So easy,容器设死宽、高,CSS加属…