- 浏览: 2611102 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
这篇帖子后面的回复和讨论 已经变得比主贴本身更值得一读了
希望读这篇帖子的朋友 有时间的话可以看一看后面的那些评论
我不希望这种技术讨论沦为口才的较量 ,所以我本人不会在发表什么观点了
但是我的"关于B/S的解耦性 以及UI层的可独立性"的观点不会改变.
=============================
此文是 "初看jsf后的胡言乱语"http://fins.iteye.com/blog/181093 一文的延伸
同样是在我对JSF知之甚少的情况下写的, 如有不当,请见谅
先来看看一个"我的伟大发明":
汤匙用来喝汤,刀子用来切牛扒. 多麻烦啊. 我设计了这样一个东西:
一头是勺子, 一头是刀子, 这样餐具就可以少一件了, 为我们的采购 摆放 整理 清洗, 提供了极大的方便.
相信不久的将来,这样的产品一定会彻底的淘汰掉现有的汤匙和刀子.
什么?你早想到了? 哦 那好吧 算作"英雄所见略同"好了.
========================================
我的伟大发明说完了, 该说说JSF了.
以前写过一篇文章:
"世上没有B/S系统,只有B系统和S系统"http://fins.iteye.com/blog/123265.
当时对jsf一点也不了解 所以没有谈及更多
(那篇文章里说的更多的是 错误的---我眼中的错误的---使用ajax 所引起的一些我的思考)
但是现在看看 用那篇文章里的观点来表达我对jsf的态度 也许会更合适.
我写那篇文章被很多人说是"标题党,唱高调"
其实 我真的希望我的那篇文章是"标题党,唱高调", 因为那就说明,我所说的已经是废话,已经是尽人皆知的事情.
但事实恰恰相反.有太多太多的人 依然固守着传统的桌面开发模式,并且企图把这种模式强加到B/S系统中.
希望用一种语言 一种模式 来解决B/S里的所有问题.
这种想法是好的, 但是那是多么多么多么的不现实啊.
和前面提到的"我的伟大发明"是多么多么多么的相像啊.
我承认java很好很强大, 它有如下优点:...(此处省去四万五千六百七十八个字)
但是 但是 但是, 他那四万五千六百七十八个字才能说完的优点里,偏偏不包括 编写web-ui.
而jsf 就是要利用各种手段,来让java去做它本就不擅长的事情.
用java费了 九百头犀牛二百只华南虎的力气(简称九牛二虎之力) 做出来的事情,
换作别的语言来做,也许只要九只蜗牛二只壁虎的力气(简称九牛二虎之力) 便能搞定.
关于jsf的ui层的实现有多么拙劣 我就不多说了,
如果有哪位能找出一个做的很好的 效果比ext qooxood dojo 之类的更好的东西请告诉我.
那些商业的 大公司 用jsf做出来的东西 什么 ICEfaces RCFaces RichFaces ... , 在ext面前, 你们不觉得你们的face很红吗?
也许有人会说
JSF也可以和EXT dojo相整合啊 JSF UI也是解耦的 可替换的啊,
如果一个产品能够整合一个优秀的产品,那么到底是这个产品优秀 还是被整合的优秀?
而且整合还要看成本呢,
用jsf完全的封装ext有意义吗 有必要吗 有完美的实现吗? 封装出来的东西还具备ext原有的灵活吗?
关于jsf的"可替换", 这里我们要弄明白一件事, ext可以换成dojo,我们就能说jsf的ui层是高度解耦了?
jsf在封装ext的时候,肯定要写很多标签啊 java类啊, 那些东西也是 jsf 的一部分.
我把ext换成dojo, 那些为ext封装的标签啊 java类啊还能用吗???
也许有人会说:
UI组件只是JSF的一部分, 并不是JSF的全部. JSF还有很多 例如:某某模型,某某规范,某某架构,某某机制....
一味的批评JSF的UI, 从而否定整个JSF的做法是错误的
但是 但是 但是 JSF UI这部分和JSF的其他部分---那无数个"某某"----完全紧密的结合在一起,
没有UI的JSF,根本就毫无生命力,根本就不再是一个可运行的框架,
而JSF UI孤立的拿出来, 也根本就不是一个能被称为UI的东西.
所以,我怎么可能单独的去评价JSF的ui?怎么可能脱离JSF UI单独的评价JSF身上UI以外的东西??
我再表达一下 我的观点(可能过于理想化):
任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.
整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.
最后问个问题:
你见过哪个西餐厅会放一把万能的瑞士军刀在餐桌上吗?
如果没有 那好, 请你也不要指望在 B/S系统开发领域内 见到一个万能的"瑞士军刀",
至于那个"我的伟大发明"你更是可以完全忘掉它了.
另外,我现在开发用的,基本上也是一种传统的Servlet + jsp + html + 少量的js脚本submit的开发方式。技术层面遇到的也不少,但是感觉,还是开发过程和需求变更等这方面的问题更加重要(有点偏题了),处理用户不断的业务需求,添加或者加在原有的业务逻辑里面,非常的难受。
严重同意,需求导向很重要,处理用户不断的业务需求,JSF是不够灵活的,额外增加的成本最终会抵消一开始减少的时间成本(重要原因是灵活度欠缺导致的时间成本的增加量,抵不过减少的时间成本量。技术选择其实就是找平衡点)。
另外,我现在开发用的,基本上也是一种传统的Servlet + jsp + html + 少量的js脚本submit的开发方式。技术层面遇到的也不少,但是感觉,还是开发过程和需求变更等这方面的问题更加重要(有点偏题了),处理用户不断的业务需求,添加或者加在原有的业务逻辑里面,非常的难受。
希望读这篇帖子的朋友 有时间的话可以看一看后面的那些评论
我不希望这种技术讨论沦为口才的较量 ,所以我本人不会在发表什么观点了
但是我的"关于B/S的解耦性 以及UI层的可独立性"的观点不会改变.
=============================
此文是 "初看jsf后的胡言乱语"http://fins.iteye.com/blog/181093 一文的延伸
同样是在我对JSF知之甚少的情况下写的, 如有不当,请见谅
先来看看一个"我的伟大发明":
汤匙用来喝汤,刀子用来切牛扒. 多麻烦啊. 我设计了这样一个东西:
一头是勺子, 一头是刀子, 这样餐具就可以少一件了, 为我们的采购 摆放 整理 清洗, 提供了极大的方便.
相信不久的将来,这样的产品一定会彻底的淘汰掉现有的汤匙和刀子.
什么?你早想到了? 哦 那好吧 算作"英雄所见略同"好了.
========================================
我的伟大发明说完了, 该说说JSF了.
以前写过一篇文章:
"世上没有B/S系统,只有B系统和S系统"http://fins.iteye.com/blog/123265.
当时对jsf一点也不了解 所以没有谈及更多
(那篇文章里说的更多的是 错误的---我眼中的错误的---使用ajax 所引起的一些我的思考)
但是现在看看 用那篇文章里的观点来表达我对jsf的态度 也许会更合适.
我写那篇文章被很多人说是"标题党,唱高调"
其实 我真的希望我的那篇文章是"标题党,唱高调", 因为那就说明,我所说的已经是废话,已经是尽人皆知的事情.
但事实恰恰相反.有太多太多的人 依然固守着传统的桌面开发模式,并且企图把这种模式强加到B/S系统中.
希望用一种语言 一种模式 来解决B/S里的所有问题.
这种想法是好的, 但是那是多么多么多么的不现实啊.
和前面提到的"我的伟大发明"是多么多么多么的相像啊.
我承认java很好很强大, 它有如下优点:...(此处省去四万五千六百七十八个字)
但是 但是 但是, 他那四万五千六百七十八个字才能说完的优点里,偏偏不包括 编写web-ui.
而jsf 就是要利用各种手段,来让java去做它本就不擅长的事情.
用java费了 九百头犀牛二百只华南虎的力气(简称九牛二虎之力) 做出来的事情,
换作别的语言来做,也许只要九只蜗牛二只壁虎的力气(简称九牛二虎之力) 便能搞定.
引用
用java来生成html+js+css层面的东西, 然后用java来处理发生在 html+js+css层面上的事件.
怎么可能比在html+js+css层面内部做这件事 更好呢??
怎么可能比在html+js+css层面内部做这件事 更好呢??
关于jsf的ui层的实现有多么拙劣 我就不多说了,
如果有哪位能找出一个做的很好的 效果比ext qooxood dojo 之类的更好的东西请告诉我.
那些商业的 大公司 用jsf做出来的东西 什么 ICEfaces RCFaces RichFaces ... , 在ext面前, 你们不觉得你们的face很红吗?
也许有人会说
JSF也可以和EXT dojo相整合啊 JSF UI也是解耦的 可替换的啊,
如果一个产品能够整合一个优秀的产品,那么到底是这个产品优秀 还是被整合的优秀?
而且整合还要看成本呢,
用jsf完全的封装ext有意义吗 有必要吗 有完美的实现吗? 封装出来的东西还具备ext原有的灵活吗?
关于jsf的"可替换", 这里我们要弄明白一件事, ext可以换成dojo,我们就能说jsf的ui层是高度解耦了?
jsf在封装ext的时候,肯定要写很多标签啊 java类啊, 那些东西也是 jsf 的一部分.
我把ext换成dojo, 那些为ext封装的标签啊 java类啊还能用吗???
也许有人会说:
UI组件只是JSF的一部分, 并不是JSF的全部. JSF还有很多 例如:某某模型,某某规范,某某架构,某某机制....
一味的批评JSF的UI, 从而否定整个JSF的做法是错误的
但是 但是 但是 JSF UI这部分和JSF的其他部分---那无数个"某某"----完全紧密的结合在一起,
没有UI的JSF,根本就毫无生命力,根本就不再是一个可运行的框架,
而JSF UI孤立的拿出来, 也根本就不是一个能被称为UI的东西.
所以,我怎么可能单独的去评价JSF的ui?怎么可能脱离JSF UI单独的评价JSF身上UI以外的东西??
引用
如果有一天JSF火了, 有人跑来跟我说, 看,现在是JSF的天下了.
那么我敢保证, 那时候的JSF肯定和现在的大不同, 也许只是名字未变而已.
那么我敢保证, 那时候的JSF肯定和现在的大不同, 也许只是名字未变而已.
我再表达一下 我的观点(可能过于理想化):
引用
在B/S系统中
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的
总之两个字"解耦".
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的
总之两个字"解耦".
任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.
整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.
最后问个问题:
你见过哪个西餐厅会放一把万能的瑞士军刀在餐桌上吗?
如果没有 那好, 请你也不要指望在 B/S系统开发领域内 见到一个万能的"瑞士军刀",
至于那个"我的伟大发明"你更是可以完全忘掉它了.
评论
59 楼
icewubin
2008-04-18
qjzhyf 写道
qjzhyf 写道
LZ说的太多,估计,看的人都没只是对某些部分有些印象了。建议LZ能不能整理一下你的文章观点,理清一下思路。我也想搞明白一些。虽然我现在JSF是想向往,其他的,如Ext也没用过,只是看过它的Demo。
另外,我现在开发用的,基本上也是一种传统的Servlet + jsp + html + 少量的js脚本submit的开发方式。技术层面遇到的也不少,但是感觉,还是开发过程和需求变更等这方面的问题更加重要(有点偏题了),处理用户不断的业务需求,添加或者加在原有的业务逻辑里面,非常的难受。
严重同意,需求导向很重要,处理用户不断的业务需求,JSF是不够灵活的,额外增加的成本最终会抵消一开始减少的时间成本(重要原因是灵活度欠缺导致的时间成本的增加量,抵不过减少的时间成本量。技术选择其实就是找平衡点)。
58 楼
qjzhyf
2008-04-18
qjzhyf 写道
LZ说的太多,估计,看的人都没只是对某些部分有些印象了。建议LZ能不能整理一下你的文章观点,理清一下思路。我也想搞明白一些。虽然我现在JSF是想向往,其他的,如Ext也没用过,只是看过它的Demo。
另外,我现在开发用的,基本上也是一种传统的Servlet + jsp + html + 少量的js脚本submit的开发方式。技术层面遇到的也不少,但是感觉,还是开发过程和需求变更等这方面的问题更加重要(有点偏题了),处理用户不断的业务需求,添加或者加在原有的业务逻辑里面,非常的难受。
57 楼
qjzhyf
2008-04-18
LZ说的太多,估计,看的人都没只是对某些部分有些印象了。建议LZ能不能整理一下你的文章观点,理清一下思路。我也想搞明白一些。虽然我现在JSF是想向往,其他的,如Ext也没用过,只是看过它的Demo。
56 楼
fins
2008-04-18
fangshun :
你理解错了
我不是要把 jsf 和 某种页面技术混合评价
我哪句话让你有这种错觉了呢?
我知道 jsf在ui层是一个很有包容性的东西 ext之类的页面层技术完全可以理解为是jsf的一个子集, jsf本身是一个一体化的 一站式的解决方案 不仅仅关注前台技术.....
而我质疑的就是jsf这种做法 同时 我的观点很明确, 你可以前台后台都处理都涉及,
但是不能像现在这样 拙劣的将两者糅合在一起 使其无法分离.
再举个例子吧
大家见过那样的显示器吧: 显示器左右两边或者是上下是和音箱整合的.
我不反对显示器生产厂商提供这样一体化的产品 而且我也承认这在一定程度上简化了用户的购买电脑外设的流程 为搬运 使用提供了一定的便捷.
但是我不能容忍那音箱是无法拆卸的.
音箱坏了不好修 我觉得音箱不好 或者是显示器不好时 无法单独更换.
总之 问题多多
不知道大家明白我的意思没
你理解错了
我不是要把 jsf 和 某种页面技术混合评价
我哪句话让你有这种错觉了呢?
我知道 jsf在ui层是一个很有包容性的东西 ext之类的页面层技术完全可以理解为是jsf的一个子集, jsf本身是一个一体化的 一站式的解决方案 不仅仅关注前台技术.....
而我质疑的就是jsf这种做法 同时 我的观点很明确, 你可以前台后台都处理都涉及,
但是不能像现在这样 拙劣的将两者糅合在一起 使其无法分离.
再举个例子吧
大家见过那样的显示器吧: 显示器左右两边或者是上下是和音箱整合的.
我不反对显示器生产厂商提供这样一体化的产品 而且我也承认这在一定程度上简化了用户的购买电脑外设的流程 为搬运 使用提供了一定的便捷.
但是我不能容忍那音箱是无法拆卸的.
音箱坏了不好修 我觉得音箱不好 或者是显示器不好时 无法单独更换.
总之 问题多多
不知道大家明白我的意思没
55 楼
fins
2008-04-18
To:fxy1949
看来做人不能太谦虚
谦虚一下不要紧 被你当白痴了
你压根没明白我在说什么
看来做人不能太谦虚
谦虚一下不要紧 被你当白痴了
你压根没明白我在说什么
54 楼
jianfeng008cn
2008-04-18
To:fxy1949 ...
ls两位说了等于没说,你指出的东西楼主都知道,只是你是在强调jsf的优点,说了那么多只说了一个tag的功能
补充一下:你对struts的认识也很不到位 建议搜索一下坛子里讨论truts1的老帖 再搜索一下讨论webwork2/struts2的老帖
ls两位说了等于没说,你指出的东西楼主都知道,只是你是在强调jsf的优点,说了那么多只说了一个tag的功能
补充一下:你对struts的认识也很不到位 建议搜索一下坛子里讨论truts1的老帖 再搜索一下讨论webwork2/struts2的老帖
53 楼
icewubin
2008-04-18
不高兴引用楼上的长篇大论,我看出你的问题了,我的这个回帖肯定是偏题了,专门针对你的这个回帖而回帖。
我们公司现在就是EXT2.0+SpringMVC+Spring+Hibernate,当然为了降低风险,我们从传统的SpringMVC+JSP+JSTL->SpringMVC+FreeMarker->SpringMVC(代码精简)+FreeMarker(代码精简)+EXT2.0,虽说是慢慢过渡,随时能因为一些特殊需求退回到传统模式,但是整个过程只用了半年多。
不是我不谦虚,毫不客气的说,身为架构师,我在带领人进入EXT领域的时候,时时刻刻想着两大准则,对于某项EXT效果,一,增加页面多少代码(很多时候还是减少代码)的情况下,我们能减少多少其他环节(SpringMVC+FreeMarker)的代码,二会不会造成非常高的学习曲线(也就是是否非常怪异,相对的不太规范)。
我在使用一个EXT的解决方案的时候,会通盘考虑,每前进一步,基本上都是前台和后台的代码量同时减少的,只是适当增加员工的学习量,少数情况,适当增加客户端的代码(当然这种情况下无非是非常好的页面功能效果或者是能大量减少服务段的代码)。
多以我可以说,你们公司的技术方向向Ajax迈进的过程是不佳的,新技术要很平稳很高校的落地有时候非常不容易的,这点上我只能说你们做得比较差了。
缺点:
1) 程序代码量大,很难维护,开发调试复杂
2) 需要考虑各种不同版本Browser
3) 运行稍慢
1.代码量大,难维护,呵呵,说过了。开发调试复杂,首先要确保兼容FireFox,然后利用FireBug调试。(我还想说VS2008的JS调试功能非常强大呢,虽然我鄙视微软)
2.我们用EXT2.0没碰到太多的不兼容情况。
3.运行稍慢,强烈抗议,不要把客户端计算和服务端计算混为一谈。慢的是客户端不是服务端。以后说速度请分开说。而且慢的是客户端的渲染,也不是网络传输量。
4.还有个隐藏问题,每个项目总有些东西是你之前没有积累到的或者现成组件不存在的,或多或少总会在客户端的JS上做定制开发,也就说EXT的效果看你用多少了,我们只用了10%都不到,不是为了效果而效果,因为这10%中大部分是传统方式也必须要实现的,不存在什么代码大增的情况。就因为功能重复,使用封装好的客户端框架,代码量比传统方式反而是减少的,不会比JSF的封装多到哪里去,但是JS规范、EXT灵活性都要远胜任何服务端生成为主的框架。
最后简单总结一下JSF:
1) 已经相当成熟(如果struts算是成熟的话,JSF能完成Struts的任何功能)
2) 开发速度(相对JSP,Struts)快很多.
3) 运行速度(相对Struts)慢一些.
4) Struts最大的问题是Form驱动,不是Event驱动,有挺多时侯写东西要绕弯子. 所以,如果还没有用过Struts的人应该直接用JSF.
5) JSF的任何事件都要提交服务器,刷新页面,比如做级联操作,没有Ajax支持有时会比较难受.不过现在有比较理想的解决方案,是JBoss RichFace(已经合并了AJAX4JSF),有很好的Ajax支持及很好的组件.最重要的是它是运行在JSF之上,不影响原有的JSF应用,可以和任何JSF实现(Myface等)同时运行.
1.现在是框架都比Struts1.x强。
2.是框架开发速度都比JSP,Struts快很多。(其实前两点你都没说那些必要的JS工作量的问题,等于白扯)
3.运行速度不再重复说了。
4.Form驱动很早就有了,不是Struts发明的。
5.我怎么感觉这个就是JSF的先天不足呢,呵呵。
基于这点继续介绍我们公司的结构,为了兼顾某些特殊需求和减少不必要的Ajax请求,我们的结构仍然是很少的FreeMarker+JS文件,基本上Ajax请求种类数量是页面跳转的3-10倍左右,也就是服务端要更多地考虑会客户端的Ajax请求提供更多的支持,这是根本。
我们公司现在就是EXT2.0+SpringMVC+Spring+Hibernate,当然为了降低风险,我们从传统的SpringMVC+JSP+JSTL->SpringMVC+FreeMarker->SpringMVC(代码精简)+FreeMarker(代码精简)+EXT2.0,虽说是慢慢过渡,随时能因为一些特殊需求退回到传统模式,但是整个过程只用了半年多。
不是我不谦虚,毫不客气的说,身为架构师,我在带领人进入EXT领域的时候,时时刻刻想着两大准则,对于某项EXT效果,一,增加页面多少代码(很多时候还是减少代码)的情况下,我们能减少多少其他环节(SpringMVC+FreeMarker)的代码,二会不会造成非常高的学习曲线(也就是是否非常怪异,相对的不太规范)。
我在使用一个EXT的解决方案的时候,会通盘考虑,每前进一步,基本上都是前台和后台的代码量同时减少的,只是适当增加员工的学习量,少数情况,适当增加客户端的代码(当然这种情况下无非是非常好的页面功能效果或者是能大量减少服务段的代码)。
多以我可以说,你们公司的技术方向向Ajax迈进的过程是不佳的,新技术要很平稳很高校的落地有时候非常不容易的,这点上我只能说你们做得比较差了。
引用
缺点:
1) 程序代码量大,很难维护,开发调试复杂
2) 需要考虑各种不同版本Browser
3) 运行稍慢
1.代码量大,难维护,呵呵,说过了。开发调试复杂,首先要确保兼容FireFox,然后利用FireBug调试。(我还想说VS2008的JS调试功能非常强大呢,虽然我鄙视微软)
2.我们用EXT2.0没碰到太多的不兼容情况。
3.运行稍慢,强烈抗议,不要把客户端计算和服务端计算混为一谈。慢的是客户端不是服务端。以后说速度请分开说。而且慢的是客户端的渲染,也不是网络传输量。
4.还有个隐藏问题,每个项目总有些东西是你之前没有积累到的或者现成组件不存在的,或多或少总会在客户端的JS上做定制开发,也就说EXT的效果看你用多少了,我们只用了10%都不到,不是为了效果而效果,因为这10%中大部分是传统方式也必须要实现的,不存在什么代码大增的情况。就因为功能重复,使用封装好的客户端框架,代码量比传统方式反而是减少的,不会比JSF的封装多到哪里去,但是JS规范、EXT灵活性都要远胜任何服务端生成为主的框架。
引用
最后简单总结一下JSF:
1) 已经相当成熟(如果struts算是成熟的话,JSF能完成Struts的任何功能)
2) 开发速度(相对JSP,Struts)快很多.
3) 运行速度(相对Struts)慢一些.
4) Struts最大的问题是Form驱动,不是Event驱动,有挺多时侯写东西要绕弯子. 所以,如果还没有用过Struts的人应该直接用JSF.
5) JSF的任何事件都要提交服务器,刷新页面,比如做级联操作,没有Ajax支持有时会比较难受.不过现在有比较理想的解决方案,是JBoss RichFace(已经合并了AJAX4JSF),有很好的Ajax支持及很好的组件.最重要的是它是运行在JSF之上,不影响原有的JSF应用,可以和任何JSF实现(Myface等)同时运行.
1.现在是框架都比Struts1.x强。
2.是框架开发速度都比JSP,Struts快很多。(其实前两点你都没说那些必要的JS工作量的问题,等于白扯)
3.运行速度不再重复说了。
4.Form驱动很早就有了,不是Struts发明的。
5.我怎么感觉这个就是JSF的先天不足呢,呵呵。
基于这点继续介绍我们公司的结构,为了兼顾某些特殊需求和减少不必要的Ajax请求,我们的结构仍然是很少的FreeMarker+JS文件,基本上Ajax请求种类数量是页面跳转的3-10倍左右,也就是服务端要更多地考虑会客户端的Ajax请求提供更多的支持,这是根本。
52 楼
fangshun
2008-04-18
to:fxy1949
支持你的反驳和观点!
楼主一直想把jsf和某种页面技术混淆在一起评价,这是很容易形成误导的!
支持你的反驳和观点!
楼主一直想把jsf和某种页面技术混淆在一起评价,这是很容易形成误导的!
51 楼
fxy1949
2008-04-18
一看你就是搞JavaScript出身,对JSF知之甚少,还真敢在这里"胡言乱语". He He.
只是你的观点偏颇的一塌糊涂,很容易误导了别人. 我今天认真批一下,主要是为了不想让别人受你误导(有些人一见你那5颗星,会肃然起敬的) . 同时也希望楼主能开阔一下自己的眼界,不要被自己熟悉的东西所局限了,对某些事物进行无情批判的时候,不要在”知之甚少”的情况下进行.
此文是 "初看jsf后的胡言乱语"http://fins.iteye.com/blog/181093 一文的延伸
同样是在我对JSF知之甚少的情况下写的, 如有不当,请见谅
如我所见,你确实对JSF是知之甚少.
先来看看一个"我的伟大发明":
汤匙用来喝汤,刀子用来切牛扒. 多麻烦啊. 我设计了这样一个东西:
一头是勺子, 一头是刀子, 这样餐具就可以少一件了, 为我们的采购 摆放 整理 清洗, 提供了极大的方便.
相信不久的将来,这样的产品一定会彻底的淘汰掉现有的汤匙和刀子.
什么?你早想到了? 哦 那好吧 算作"英雄所见略同"好了.
========================================
我的伟大发明说完了, 该说说JSF了.
这个伟大发明纯属你的臆想,不会有人想发明这样一个东西,而是为一个特定的场合和目的,发明一样特定的工具.不要搞错,以为我和你的最后结论英雄所见略同.而是你的这个比喻错了,你的"伟大发明用起来",比一刀一匙用起来麻烦,而且会挺难看. JSF相对来说比较优雅一些,也好用一些.
以前写过一篇文章:
"世上没有B/S系统,只有B系统和S系统"http://fins.iteye.com/blog/123265.
当时对jsf一点也不了解 所以没有谈及更多
(那篇文章里说的更多的是 错误的---我眼中的错误的---使用ajax 所引起的一些我的思考)
但是现在看看 用那篇文章里的观点来表达我对jsf的态度 也许会更合适.
我写那篇文章被很多人说是"标题党,唱高调"
其实 我真的希望我的那篇文章是"标题党,唱高调", 因为那就说明,我所说的已经是废话,已经是尽人皆知的事情.
看过你那篇东西,虽然楼层垒的高了点,不过还是脱不了标题党的干系.
但事实恰恰相反.有太多太多的人 依然固守着传统的桌面开发模式,并且企图把这种模式强加到B/S系统中.
希望用一种语言 一种模式 来解决B/S里的所有问题.
这种想法是好的, 但是那是多么多么多么的不现实啊.
和前面提到的"我的伟大发明"是多么多么多么的相像啊.
从这里开始,你开始断言了,开始臆想出了JSF的目的是要解决所有B/S的问题. 我的理解是: 1)JSF这个发明不是想一统江湖,而是简化开发,减少代码量,降低开发成本,是想对Web层开发进行规范化;2)JSF会适用很大部分B/S系统, 但不可能适用所有的B/S系统,比如某些系统对客户端体验有很高的要求,操作交互频繁. 3)JSF的出现会使一些开发模式被淘汰或改变,正如Ajax的出现也会改变传统的B/S开发(form提交模式以Struts为代表),但不会成为唯一,也不可能.
我承认java很好很强大, 它有如下优点:...(此处省去四万五千六百七十八个字)
但是 但是 但是, 他那四万五千六百七十八个字才能说完的优点里,偏偏不包括 编写web-ui.
而jsf 就是要利用各种手段,来让java去做它本就不擅长的事情.
用java费了 九百头犀牛二百只华南虎的力气(简称九牛二虎之力) 做出来的事情,
换作别的语言来做,也许只要九只蜗牛二只壁虎的力气(简称九牛二虎之力) 便能搞定.
引用
用java来生成html+js+css层面的东西, 然后用java来处理发生在 html+js+css层面上的事件.
怎么可能比在html+js+css层面内部做这件事 更好呢??
关于jsf的ui层的实现有多么拙劣 我就不多说了,
如果有哪位能找出一个做的很好的 效果比ext qooxood dojo 之类的更好的东西请告诉我.
那些商业的 大公司 用jsf做出来的东西 什么 ICEfaces RCFaces RichFaces ... , 在ext面前, 你们不觉得你们的face很红吗?
首先你根本没有搞懂JSF的两种状态: 运行态和开发态. 在运行状态JSF通过RenderKit,根据页面UI组件,生成Html+Javescript,传递给Browser运行.java根本没有处理发生在 html+js+css层面上的事件,只是处理Http Request.
另外,使用JSF开发,你根本不需要去关心生成的Html+javascript长什么样,而是去关心其结果,程序员要做的
是简单地在页面里面使用组件.
我发现你所谓的"拙劣,需要为此脸红”,其实你只有一个标准,那就是"效果"好,进一步讲是"好看”.而根本不知道一个大系统最重要的是要提高开发效率,降低维护成本.
对JSF来说,重中之重不是要有漂亮的界面,而是组件重用,统一完善的 Http request(form submit,event)的处理机制,其生命周期如下:
1. Restore view
2. Apply request values; (process events)
3. Process validations; (process events)
4. Update model values; (process events)
5. Invoke application; (process events)
6. Render response
也许有人会说
JSF也可以和EXT dojo相整合啊 JSF UI也是解耦的 可替换的啊,
如果一个产品能够整合一个优秀的产品,那么到底是这个产品优秀 还是被整合的优秀?
而且整合还要看成本呢,
用jsf完全的封装ext有意义吗 有必要吗 有完美的实现吗? 封装出来的东西还具备ext原有的灵活吗?
关于jsf的"可替换", 这里我们要弄明白一件事, ext可以换成dojo,我们就能说jsf的ui层是高度解耦了?
jsf在封装ext的时候,肯定要写很多标签啊 java类啊, 那些东西也是 jsf 的一部分.
我把ext换成dojo, 那些为ext封装的标签啊 java类啊还能用吗???
能想出JSF和Ext dojo整和之类的点子,充分证明了你对JSF和Ext等Js框架的根本区别在于什么地方还是不清楚. JSF在服务端生成所有html+javascript, Browser只是执行而已;而Ext等JS框架是在Broswer端动态生成html. 整合什么?JSF组件里整点Ext漂亮的CSS?
“jsf在封装ext的时候,肯定要写很多标签啊 java类啊”这句话是我见过的最具有想象力的一句,你也真敢想.
也许有人会说:
UI组件只是JSF的一部分, 并不是JSF的全部. JSF还有很多 例如:某某模型,某某规范,某某架构,某某机制....
一味的批评JSF的UI, 从而否定整个JSF的做法是错误的
但是 但是 但是 JSF UI这部分和JSF的其他部分---那无数个"某某"----完全紧密的结合在一起,
没有UI的JSF,根本就毫无生命力,根本就不再是一个可运行的框架,
而JSF UI孤立的拿出来, 也根本就不是一个能被称为UI的东西.
所以,我怎么可能单独的去评价JSF的ui?怎么可能脱离JSF UI单独的评价JSF身上UI以外的东西??
能做出这个假设”有人也许会说”,并有这么一大段评论,又见你对JSF的知之甚少.
JSF本身就是以UI为核心的Web框架,没有UI,谈JSF一点意义没有,所以根本就没有这个”有人会说…”.
引用
我再表达一下 我的观点(可能过于理想化):
引用
在B/S系统中
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的
总之两个字"解耦".
你先是断言了一个准则: B/S系统要”解耦”,否则都不是好系统. 其实,你应该明确的讲出这样做的好处. “UI层应该在后台系统不变的情况下可切换”,这个是好处吗? 显然不是. “UI层与系统其他层面的东西的唯一联系应该是"数据"”,这个也不是.这个顶多是为了得到那些”解耦”要遵守的原则.
那你认为的好处是什么呢? 是效果好?界面漂亮?还是就是要分开? 我试图从你下面的陈述悟出点东西:
其实服务端 与 客户端 就是两个独立的系统,而且是两个独立的异构系统.
处理他们之间的关系和处理两个大型的异构系统的关系非常类似,应该咬住"服务"二字不放.
所谓"服务"应该是: 生产者提供,消费者享用.
而不是: 你告诉我我每一步要怎样做,然后我再一步步的做给你看. 这不叫服务,这叫"奴役".
任何企图在一端生成另一端代码的做法都是欠妥当的.
发现你又在断言: 任何企图在一端生成另一端代码的做法都是欠妥当的.为啥欠妥?不得而知. Browser和Server之间”非常类似两个大型的,独立的异构系统”,更是不知从何说起.
从JSF的观点看,不存在B系统,S系统,本来就是一个系统. Browser只是执行html(就是一傻终端), Server负责处理,生成html,就是想借用桌面系统的理念,以近乎C/S的方式开发系统. 目的是什么? 提高开发效率,重用组件,减少代码,易于测试. 所以,这里根本不需要解耦,因为他们都属于展现层,在一个JSF请求生命周期内完成任务,不需要代码负责Browser到Server的数据转化,数据验证,等等. JSF负责把Browser端的任何提交转换成Server端的 Application 调用.
“解耦”被你借用来描述B/S系统实在是不妥, 解耦适合于出现在"展现层和业务逻辑层”之间,或者是不同的"模块之间",不同"系统之间".
任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.
整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.
我猜一下,你理想的B/S系统应该是这样: 前台用Ext (或YUI, DoJo之类),后台用SpringMVC之类UI不强,做个Controller能胜任的框架.
其实,不瞒你说,我现在的公司用的就是这个架构(YUI+SpringMVC+EJB). www.igindex.co.uk
优点:
1) 给客户的感觉象是桌面系统(大量使用Ajax,用Json传递数据,基本不刷新,跳转页面).
2) 界面美观,动态,用户操作灵活.
缺点:
1) 程序代码量大,很难维护,开发调试复杂
2) 需要考虑各种不同版本Browser
3) 运行稍慢
选择这种架构最主要的原因是: 客户体验要求非常高, 系统功能复杂,但功能数量不多.
但是一般的B/S系统(ERP等各类信息系统),通常都是功能繁多,但是客户体验要求不高的,绝对不适合上面的模式,而会适合用Struts, JSF之类的框架的.
所以,承认有"分工”,但不是在Browser和Server之间,不是在是否"一端生成另一端代码"之间,而是分析不同的技术适合什么样的客户需求和系统特点,去找到最适合的.
最后简单总结一下JSF:
1) 已经相当成熟(如果struts算是成熟的话,JSF能完成Struts的任何功能)
2) 开发速度(相对JSP,Struts)快很多.
3) 运行速度(相对Struts)慢一些.
4) Struts最大的问题是Form驱动,不是Event驱动,有挺多时侯写东西要绕弯子. 所以,如果还没有用过Struts的人应该直接用JSF.
5) JSF的任何事件都要提交服务器,刷新页面,比如做级联操作,没有Ajax支持有时会比较难受.不过现在有比较理想的解决方案,是JBoss RichFace(已经合并了AJAX4JSF),有很好的Ajax支持及很好的组件.最重要的是它是运行在JSF之上,不影响原有的JSF应用,可以和任何JSF实现(Myface等)同时运行.
只是你的观点偏颇的一塌糊涂,很容易误导了别人. 我今天认真批一下,主要是为了不想让别人受你误导(有些人一见你那5颗星,会肃然起敬的) . 同时也希望楼主能开阔一下自己的眼界,不要被自己熟悉的东西所局限了,对某些事物进行无情批判的时候,不要在”知之甚少”的情况下进行.
此文是 "初看jsf后的胡言乱语"http://fins.iteye.com/blog/181093 一文的延伸
同样是在我对JSF知之甚少的情况下写的, 如有不当,请见谅
如我所见,你确实对JSF是知之甚少.
先来看看一个"我的伟大发明":
汤匙用来喝汤,刀子用来切牛扒. 多麻烦啊. 我设计了这样一个东西:
一头是勺子, 一头是刀子, 这样餐具就可以少一件了, 为我们的采购 摆放 整理 清洗, 提供了极大的方便.
相信不久的将来,这样的产品一定会彻底的淘汰掉现有的汤匙和刀子.
什么?你早想到了? 哦 那好吧 算作"英雄所见略同"好了.
========================================
我的伟大发明说完了, 该说说JSF了.
这个伟大发明纯属你的臆想,不会有人想发明这样一个东西,而是为一个特定的场合和目的,发明一样特定的工具.不要搞错,以为我和你的最后结论英雄所见略同.而是你的这个比喻错了,你的"伟大发明用起来",比一刀一匙用起来麻烦,而且会挺难看. JSF相对来说比较优雅一些,也好用一些.
以前写过一篇文章:
"世上没有B/S系统,只有B系统和S系统"http://fins.iteye.com/blog/123265.
当时对jsf一点也不了解 所以没有谈及更多
(那篇文章里说的更多的是 错误的---我眼中的错误的---使用ajax 所引起的一些我的思考)
但是现在看看 用那篇文章里的观点来表达我对jsf的态度 也许会更合适.
我写那篇文章被很多人说是"标题党,唱高调"
其实 我真的希望我的那篇文章是"标题党,唱高调", 因为那就说明,我所说的已经是废话,已经是尽人皆知的事情.
看过你那篇东西,虽然楼层垒的高了点,不过还是脱不了标题党的干系.
但事实恰恰相反.有太多太多的人 依然固守着传统的桌面开发模式,并且企图把这种模式强加到B/S系统中.
希望用一种语言 一种模式 来解决B/S里的所有问题.
这种想法是好的, 但是那是多么多么多么的不现实啊.
和前面提到的"我的伟大发明"是多么多么多么的相像啊.
从这里开始,你开始断言了,开始臆想出了JSF的目的是要解决所有B/S的问题. 我的理解是: 1)JSF这个发明不是想一统江湖,而是简化开发,减少代码量,降低开发成本,是想对Web层开发进行规范化;2)JSF会适用很大部分B/S系统, 但不可能适用所有的B/S系统,比如某些系统对客户端体验有很高的要求,操作交互频繁. 3)JSF的出现会使一些开发模式被淘汰或改变,正如Ajax的出现也会改变传统的B/S开发(form提交模式以Struts为代表),但不会成为唯一,也不可能.
我承认java很好很强大, 它有如下优点:...(此处省去四万五千六百七十八个字)
但是 但是 但是, 他那四万五千六百七十八个字才能说完的优点里,偏偏不包括 编写web-ui.
而jsf 就是要利用各种手段,来让java去做它本就不擅长的事情.
用java费了 九百头犀牛二百只华南虎的力气(简称九牛二虎之力) 做出来的事情,
换作别的语言来做,也许只要九只蜗牛二只壁虎的力气(简称九牛二虎之力) 便能搞定.
引用
用java来生成html+js+css层面的东西, 然后用java来处理发生在 html+js+css层面上的事件.
怎么可能比在html+js+css层面内部做这件事 更好呢??
关于jsf的ui层的实现有多么拙劣 我就不多说了,
如果有哪位能找出一个做的很好的 效果比ext qooxood dojo 之类的更好的东西请告诉我.
那些商业的 大公司 用jsf做出来的东西 什么 ICEfaces RCFaces RichFaces ... , 在ext面前, 你们不觉得你们的face很红吗?
首先你根本没有搞懂JSF的两种状态: 运行态和开发态. 在运行状态JSF通过RenderKit,根据页面UI组件,生成Html+Javescript,传递给Browser运行.java根本没有处理发生在 html+js+css层面上的事件,只是处理Http Request.
另外,使用JSF开发,你根本不需要去关心生成的Html+javascript长什么样,而是去关心其结果,程序员要做的
是简单地在页面里面使用组件.
我发现你所谓的"拙劣,需要为此脸红”,其实你只有一个标准,那就是"效果"好,进一步讲是"好看”.而根本不知道一个大系统最重要的是要提高开发效率,降低维护成本.
对JSF来说,重中之重不是要有漂亮的界面,而是组件重用,统一完善的 Http request(form submit,event)的处理机制,其生命周期如下:
1. Restore view
2. Apply request values; (process events)
3. Process validations; (process events)
4. Update model values; (process events)
5. Invoke application; (process events)
6. Render response
也许有人会说
JSF也可以和EXT dojo相整合啊 JSF UI也是解耦的 可替换的啊,
如果一个产品能够整合一个优秀的产品,那么到底是这个产品优秀 还是被整合的优秀?
而且整合还要看成本呢,
用jsf完全的封装ext有意义吗 有必要吗 有完美的实现吗? 封装出来的东西还具备ext原有的灵活吗?
关于jsf的"可替换", 这里我们要弄明白一件事, ext可以换成dojo,我们就能说jsf的ui层是高度解耦了?
jsf在封装ext的时候,肯定要写很多标签啊 java类啊, 那些东西也是 jsf 的一部分.
我把ext换成dojo, 那些为ext封装的标签啊 java类啊还能用吗???
能想出JSF和Ext dojo整和之类的点子,充分证明了你对JSF和Ext等Js框架的根本区别在于什么地方还是不清楚. JSF在服务端生成所有html+javascript, Browser只是执行而已;而Ext等JS框架是在Broswer端动态生成html. 整合什么?JSF组件里整点Ext漂亮的CSS?
“jsf在封装ext的时候,肯定要写很多标签啊 java类啊”这句话是我见过的最具有想象力的一句,你也真敢想.
也许有人会说:
UI组件只是JSF的一部分, 并不是JSF的全部. JSF还有很多 例如:某某模型,某某规范,某某架构,某某机制....
一味的批评JSF的UI, 从而否定整个JSF的做法是错误的
但是 但是 但是 JSF UI这部分和JSF的其他部分---那无数个"某某"----完全紧密的结合在一起,
没有UI的JSF,根本就毫无生命力,根本就不再是一个可运行的框架,
而JSF UI孤立的拿出来, 也根本就不是一个能被称为UI的东西.
所以,我怎么可能单独的去评价JSF的ui?怎么可能脱离JSF UI单独的评价JSF身上UI以外的东西??
能做出这个假设”有人也许会说”,并有这么一大段评论,又见你对JSF的知之甚少.
JSF本身就是以UI为核心的Web框架,没有UI,谈JSF一点意义没有,所以根本就没有这个”有人会说…”.
引用
我再表达一下 我的观点(可能过于理想化):
引用
在B/S系统中
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的
总之两个字"解耦".
你先是断言了一个准则: B/S系统要”解耦”,否则都不是好系统. 其实,你应该明确的讲出这样做的好处. “UI层应该在后台系统不变的情况下可切换”,这个是好处吗? 显然不是. “UI层与系统其他层面的东西的唯一联系应该是"数据"”,这个也不是.这个顶多是为了得到那些”解耦”要遵守的原则.
那你认为的好处是什么呢? 是效果好?界面漂亮?还是就是要分开? 我试图从你下面的陈述悟出点东西:
其实服务端 与 客户端 就是两个独立的系统,而且是两个独立的异构系统.
处理他们之间的关系和处理两个大型的异构系统的关系非常类似,应该咬住"服务"二字不放.
所谓"服务"应该是: 生产者提供,消费者享用.
而不是: 你告诉我我每一步要怎样做,然后我再一步步的做给你看. 这不叫服务,这叫"奴役".
任何企图在一端生成另一端代码的做法都是欠妥当的.
发现你又在断言: 任何企图在一端生成另一端代码的做法都是欠妥当的.为啥欠妥?不得而知. Browser和Server之间”非常类似两个大型的,独立的异构系统”,更是不知从何说起.
从JSF的观点看,不存在B系统,S系统,本来就是一个系统. Browser只是执行html(就是一傻终端), Server负责处理,生成html,就是想借用桌面系统的理念,以近乎C/S的方式开发系统. 目的是什么? 提高开发效率,重用组件,减少代码,易于测试. 所以,这里根本不需要解耦,因为他们都属于展现层,在一个JSF请求生命周期内完成任务,不需要代码负责Browser到Server的数据转化,数据验证,等等. JSF负责把Browser端的任何提交转换成Server端的 Application 调用.
“解耦”被你借用来描述B/S系统实在是不妥, 解耦适合于出现在"展现层和业务逻辑层”之间,或者是不同的"模块之间",不同"系统之间".
任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.
整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.
我猜一下,你理想的B/S系统应该是这样: 前台用Ext (或YUI, DoJo之类),后台用SpringMVC之类UI不强,做个Controller能胜任的框架.
其实,不瞒你说,我现在的公司用的就是这个架构(YUI+SpringMVC+EJB). www.igindex.co.uk
优点:
1) 给客户的感觉象是桌面系统(大量使用Ajax,用Json传递数据,基本不刷新,跳转页面).
2) 界面美观,动态,用户操作灵活.
缺点:
1) 程序代码量大,很难维护,开发调试复杂
2) 需要考虑各种不同版本Browser
3) 运行稍慢
选择这种架构最主要的原因是: 客户体验要求非常高, 系统功能复杂,但功能数量不多.
但是一般的B/S系统(ERP等各类信息系统),通常都是功能繁多,但是客户体验要求不高的,绝对不适合上面的模式,而会适合用Struts, JSF之类的框架的.
所以,承认有"分工”,但不是在Browser和Server之间,不是在是否"一端生成另一端代码"之间,而是分析不同的技术适合什么样的客户需求和系统特点,去找到最适合的.
最后简单总结一下JSF:
1) 已经相当成熟(如果struts算是成熟的话,JSF能完成Struts的任何功能)
2) 开发速度(相对JSP,Struts)快很多.
3) 运行速度(相对Struts)慢一些.
4) Struts最大的问题是Form驱动,不是Event驱动,有挺多时侯写东西要绕弯子. 所以,如果还没有用过Struts的人应该直接用JSF.
5) JSF的任何事件都要提交服务器,刷新页面,比如做级联操作,没有Ajax支持有时会比较难受.不过现在有比较理想的解决方案,是JBoss RichFace(已经合并了AJAX4JSF),有很好的Ajax支持及很好的组件.最重要的是它是运行在JSF之上,不影响原有的JSF应用,可以和任何JSF实现(Myface等)同时运行.
50 楼
icewubin
2008-04-17
我认为讨论事情还要有一定的场景和前提,不如假设你处在一个20-100人的中小公司中,也可以认为你是普通程序员或者是拥有技术选择权的架构师和技术经理,再假设你刚到公司,或者公司Java这一块刚起步,时间不算太长,还没有自己的AppFuse。
首先就是你的上级不管是技术出身还是管理出身,都会重视项目的时间成本和人力成本。作为架构师,把上述两项成本细分为主要是开发成本、维护成本、技术学习培训成本、人员流动成本,其中非常重要的一点,不管是国内还是国外客户,正式或者非正式的需求变更是家常便饭的,意思就是变更是比较容易出现的。
我就从这几点展开来说吧,其实不仅仅是JSF,其他技术一样可以这样分析。
大家比较认可的是在一般情况下,有IDE的支持JSF的开发速度还是令人满意的,如果小组中有一个人对JSF非常熟悉的话,也是可以考虑开发自定义组件的,这个是JSF支持认同的观点吧(感觉有些话和Hibernate推广的理由如出一辙啊,考虑和Hibernate类比了)。 但是这里面时有问题的,首先需求变更,Hibernate到了3.0以后,已经成熟很多年了,经过实践的检验是非常常熟的,对于不同的场景一般都有解决方案,JSF好像没有吧,大厂商强推的结果,更像是EJB3.0,现在不是J2EE刚开始的年代了,程序员们不再迷信大厂商的标准(这点很重要,是伏笔)。前面也有人说了,灵活性上,JSF是比不过纯客户端框架的,当然灵活往往也是要付出代价的,客户端的框架还没有能一统天下的(目前EXT不错),也没有好的IDE提供足够的效率上的支持,所以就开发效率(包括变更效率),可能打个平手吧(有前提的,前面提到过了)。
维护成本,如果公司里搞出个体系,不断培养JSF人才,貌似也不会太高,也还好吧,跳过。
技术学习培训成本,JSF相关的书好像没有JS相关的多吧,虽说学习曲线都不低,但是大部分人还是懂点JS的,但是JSF很多人是一点都没有入门的。当然JSF支持者会说,将来懂得人会越来越多,OK没意见,跳过。
人员流动成本,背后的意思是除了招聘成本以外,能不能留住员工,和员工对新技术使用的动力对于项目的效率、薪水(能留住他们的标准)是至关重要的,以人为本,员工认为这个技术路线是对的,不会影响他们的饭碗,他们很容易找到类似的工作,就会努力学习,薪水相对少点也能留住人。当然这是有前提的,刚才说了,不要和我讨论什么超过200人的500强之类的企业(据我了解,即使这些企业也在逐渐转变)。
好了,焦点回来了,又变成了要看大多数人对这个技术的认可程度。
再继续分析,程序员认为某项技术有前提,途经也是不太多的,无非就是以下几种:杂志、论坛、博客、大厂商的选资料、公司的牛人的意见等等。目前情况JSF不是太妙,主要因为EJB的前车之鉴,大家对JSF不是非常的感冒。然后流行的技术中,也不见有JSF的一席之地,有相当一部分的人认为JSF架构不够优秀,当然会有人跳出来说ASP.net和JS本身不够优秀,还不是这么多人学,哦,问题来了,纯客户端框架有一个非常大的优势就是,目前的情况下,服务端不管是Java还是其他的PHP都是能互通的,这个技术在近几年之内是不会淘汰的。
大家是不是感觉我扯了这么多和技术无关的事情,非也,我想在说我的技术观点之前,上述话是很有必要的。我是不赞同目前涉足JSF的,即使要涉足至少再观察1年以上吧,我还是认为2年后JSF也不会有多少改观。支持JSF的大厂商还是太少,和广大的开源社区相比,它的组件无论从质量还是数量还是功能都是远远还不够的(不要再在这里大脑中出现什么开发效率的问题,前面的话不是白讲的)。
然后从封装上来讲,你可以说Hibernate封装的不是SQL么,封装没什么不好,我认为SQL语句很多年没有大变,非常稳定是能够很好封装的基础,客户端JS有这么稳定么,不可能的。UI展现技术、UI交互模式(想WEB2.0)、UI变化程度一直在变化(我没有说现在UI是进步,单纯从UI上来说,从以前的CS到现在的BS是倒退,当时出现这种现象时有很多历史原因的,升级成本和大厂商宣传推新技术是主要的),在如此高的变化程度下,还没到封装的时候,等到JS客户端技术相对稳定了,才可以考虑良好的封装,否则灵活性肯定是很差的,新功能的支持上也一定是非常滞后的。但是谁说JS技术能稳定下来么?Flex、SL都是虎视眈眈啊,单技术结构上来讲FLex等RIA技术确实是不错的,只不过目前还不成熟而已。
再说到性能,性能不佳一方面说明架构本身设计不够优秀(现在不是EJB时代,EJB在9年前的当时确实是比较优秀的)的表现特征之一,再者不能说企业应用就不考虑性能,将来的趋势是服务器应该能够支持更多的并发和负载,平白无故为了客户端的显示和逻辑增加服务段的资源消耗是没有道理的,应该充分利用客户端的计算资源,这也是大方向的问题之一,类似的还有就是太多的有状态的东西对集群是很不利的,叉出一句,想自己创业的程序员们,千万别去学什么性能不佳的JSF,哈哈(是不是笑得太阴险了)。
感觉自己技术方面说的话还是太少,但是现实很残酷,很多时候决定技术的未来不完全是技术的好坏,很多因素都会影响未来的技术走向。
首先就是你的上级不管是技术出身还是管理出身,都会重视项目的时间成本和人力成本。作为架构师,把上述两项成本细分为主要是开发成本、维护成本、技术学习培训成本、人员流动成本,其中非常重要的一点,不管是国内还是国外客户,正式或者非正式的需求变更是家常便饭的,意思就是变更是比较容易出现的。
我就从这几点展开来说吧,其实不仅仅是JSF,其他技术一样可以这样分析。
大家比较认可的是在一般情况下,有IDE的支持JSF的开发速度还是令人满意的,如果小组中有一个人对JSF非常熟悉的话,也是可以考虑开发自定义组件的,这个是JSF支持认同的观点吧(感觉有些话和Hibernate推广的理由如出一辙啊,考虑和Hibernate类比了)。 但是这里面时有问题的,首先需求变更,Hibernate到了3.0以后,已经成熟很多年了,经过实践的检验是非常常熟的,对于不同的场景一般都有解决方案,JSF好像没有吧,大厂商强推的结果,更像是EJB3.0,现在不是J2EE刚开始的年代了,程序员们不再迷信大厂商的标准(这点很重要,是伏笔)。前面也有人说了,灵活性上,JSF是比不过纯客户端框架的,当然灵活往往也是要付出代价的,客户端的框架还没有能一统天下的(目前EXT不错),也没有好的IDE提供足够的效率上的支持,所以就开发效率(包括变更效率),可能打个平手吧(有前提的,前面提到过了)。
维护成本,如果公司里搞出个体系,不断培养JSF人才,貌似也不会太高,也还好吧,跳过。
技术学习培训成本,JSF相关的书好像没有JS相关的多吧,虽说学习曲线都不低,但是大部分人还是懂点JS的,但是JSF很多人是一点都没有入门的。当然JSF支持者会说,将来懂得人会越来越多,OK没意见,跳过。
人员流动成本,背后的意思是除了招聘成本以外,能不能留住员工,和员工对新技术使用的动力对于项目的效率、薪水(能留住他们的标准)是至关重要的,以人为本,员工认为这个技术路线是对的,不会影响他们的饭碗,他们很容易找到类似的工作,就会努力学习,薪水相对少点也能留住人。当然这是有前提的,刚才说了,不要和我讨论什么超过200人的500强之类的企业(据我了解,即使这些企业也在逐渐转变)。
好了,焦点回来了,又变成了要看大多数人对这个技术的认可程度。
再继续分析,程序员认为某项技术有前提,途经也是不太多的,无非就是以下几种:杂志、论坛、博客、大厂商的选资料、公司的牛人的意见等等。目前情况JSF不是太妙,主要因为EJB的前车之鉴,大家对JSF不是非常的感冒。然后流行的技术中,也不见有JSF的一席之地,有相当一部分的人认为JSF架构不够优秀,当然会有人跳出来说ASP.net和JS本身不够优秀,还不是这么多人学,哦,问题来了,纯客户端框架有一个非常大的优势就是,目前的情况下,服务端不管是Java还是其他的PHP都是能互通的,这个技术在近几年之内是不会淘汰的。
大家是不是感觉我扯了这么多和技术无关的事情,非也,我想在说我的技术观点之前,上述话是很有必要的。我是不赞同目前涉足JSF的,即使要涉足至少再观察1年以上吧,我还是认为2年后JSF也不会有多少改观。支持JSF的大厂商还是太少,和广大的开源社区相比,它的组件无论从质量还是数量还是功能都是远远还不够的(不要再在这里大脑中出现什么开发效率的问题,前面的话不是白讲的)。
然后从封装上来讲,你可以说Hibernate封装的不是SQL么,封装没什么不好,我认为SQL语句很多年没有大变,非常稳定是能够很好封装的基础,客户端JS有这么稳定么,不可能的。UI展现技术、UI交互模式(想WEB2.0)、UI变化程度一直在变化(我没有说现在UI是进步,单纯从UI上来说,从以前的CS到现在的BS是倒退,当时出现这种现象时有很多历史原因的,升级成本和大厂商宣传推新技术是主要的),在如此高的变化程度下,还没到封装的时候,等到JS客户端技术相对稳定了,才可以考虑良好的封装,否则灵活性肯定是很差的,新功能的支持上也一定是非常滞后的。但是谁说JS技术能稳定下来么?Flex、SL都是虎视眈眈啊,单技术结构上来讲FLex等RIA技术确实是不错的,只不过目前还不成熟而已。
再说到性能,性能不佳一方面说明架构本身设计不够优秀(现在不是EJB时代,EJB在9年前的当时确实是比较优秀的)的表现特征之一,再者不能说企业应用就不考虑性能,将来的趋势是服务器应该能够支持更多的并发和负载,平白无故为了客户端的显示和逻辑增加服务段的资源消耗是没有道理的,应该充分利用客户端的计算资源,这也是大方向的问题之一,类似的还有就是太多的有状态的东西对集群是很不利的,叉出一句,想自己创业的程序员们,千万别去学什么性能不佳的JSF,哈哈(是不是笑得太阴险了)。
感觉自己技术方面说的话还是太少,但是现实很残酷,很多时候决定技术的未来不完全是技术的好坏,很多因素都会影响未来的技术走向。
49 楼
laiseeme
2008-04-17
我管那分层,设计原则,实现了就行
48 楼
taowen
2008-04-17
我们项目因为客户的架构师强制要求,使用了JSF。就发现JSF控件的状态是序列化到了字符串中存在了页面里。这就造成了,这个状态无法在客户端被修改。想用JS给table加一行?门都没有。最后无奈,只能把JSF当成JSP用,制作渲染。所有的提交都走了AJAX。。。另外JSF的AJAX控件,真的很烂。
47 楼
xpf7622
2008-04-17
讨论来讨论去,我觉得我们的视野是否望外看一下,我想那就是RIA。Flex,AIR,Siliverlight,JavaFX我想应该是最好的客户端技术。
46 楼
fangshun
2008-04-17
虽然自定义组件不好做,但是我的第二个项目,已经复用了很多第一个项目写的验证组件,转换组件,并且还在基础上不断完善,在第二个项目上又加入了一些有效的,特定方式的显示组件,也可以应用在以后的项目中,逐渐形成了一套自有风格的开发实践,很不错,而且代码很容易重构,变得极度精炼!
对于jsf的批评仍在进行中,但是懂得实践的人,已经逐渐尝到了基于jsf的组件化,标准化带来的开发优势,让不动手的人继续讨论它的优缺点吧。。。。。。。。。。。
对于jsf的批评仍在进行中,但是懂得实践的人,已经逐渐尝到了基于jsf的组件化,标准化带来的开发优势,让不动手的人继续讨论它的优缺点吧。。。。。。。。。。。
45 楼
upheart
2008-04-17
我觉得JSF有以下的缺点:
1.学习曲线高。也许你会说只有组件开发人员才需要深入了解JSF的声明周期和高级的东西,普通开发人员不需要学习那么多——但是随着开发的深入,你马上就会发现必须要学习这些深入的东西,否则你只能写出呆板和充满隐患的程序。
2.OO。JSF是基于组件事件驱动的,也许你觉得他很像Swing,但其实也很像struts。对于熟悉action base的开发人员可能不太熟悉他的OO方式,而喜欢OO的开发人员反而又觉得它不够OO(还不如Wicket,Tapestry)。——而且OO的人少,都是用OO的工具语言做非OO的事情,不信看看好多JSF写的程序,写着写着就写成了struts,甚至还不如。
3.写一个自定义组件太难。
4.灵活性不够。组件库本来就不够丰富,想实现一个复杂表头?想物理分页?你得找到相关的组件,往往发现这个组件满足你的这个要求,却满足不了那个需求,而满足了那个的又满足不了这个。实在没办法,就得自定义。如前所述,自定义组件有很难,尤其是一个有很多功能的组件。还有就是和其他工具的集成——想用FCKEditor吗?想用一个Office插件吗?想用数字签名的插件吗?找JSF组件吧,没有的话就自定义吧。而action base的MVC框架在这一点上就容易的多。
5.东西太多太乱。要想用好JSF,你的用几个第三方组件库吧——RichFaces,ICEFaces……看看那些组件的属性吧,想短时间弄清楚也够费力的,何况你还得知道他们用了那些css的class……,你还的用facelet吧,甚至Seam也用上……关键是乱七八糟的东西放在一起缺乏一以贯之的统一性。
6.也许IDE可以拯救JSF……也许吧,现在还看不到希望,要是能做出杀手级别的,应该早就做出来了吧……JSf都好几年了。
7.性能不好。做过企业应用或许还凑合吧,但性能确实不好。把manager bean放在session中性能不好,不放的话,你发现你写程序时又像是action base了,甚至还没有action base方便。而不是像教程上那样的OO,因为教程上的例子都是把manager bean放在session中,而且table也是内存分页,所有数据放在一个list中,最终在放在session中——程序确实很OO,但……。
推荐喜欢action base的或页面和性能要求较高的用springmvc和webwork,喜欢组件话事件驱动的用wicket吧。
不过JSF也有一个优点,就是对工具相对较友好——我最近做一个可视化的表现层的产品用的是JSF,这一点体会还很深的,当然我自己做开发的话是不会用JSF的。
1.学习曲线高。也许你会说只有组件开发人员才需要深入了解JSF的声明周期和高级的东西,普通开发人员不需要学习那么多——但是随着开发的深入,你马上就会发现必须要学习这些深入的东西,否则你只能写出呆板和充满隐患的程序。
2.OO。JSF是基于组件事件驱动的,也许你觉得他很像Swing,但其实也很像struts。对于熟悉action base的开发人员可能不太熟悉他的OO方式,而喜欢OO的开发人员反而又觉得它不够OO(还不如Wicket,Tapestry)。——而且OO的人少,都是用OO的工具语言做非OO的事情,不信看看好多JSF写的程序,写着写着就写成了struts,甚至还不如。
3.写一个自定义组件太难。
4.灵活性不够。组件库本来就不够丰富,想实现一个复杂表头?想物理分页?你得找到相关的组件,往往发现这个组件满足你的这个要求,却满足不了那个需求,而满足了那个的又满足不了这个。实在没办法,就得自定义。如前所述,自定义组件有很难,尤其是一个有很多功能的组件。还有就是和其他工具的集成——想用FCKEditor吗?想用一个Office插件吗?想用数字签名的插件吗?找JSF组件吧,没有的话就自定义吧。而action base的MVC框架在这一点上就容易的多。
5.东西太多太乱。要想用好JSF,你的用几个第三方组件库吧——RichFaces,ICEFaces……看看那些组件的属性吧,想短时间弄清楚也够费力的,何况你还得知道他们用了那些css的class……,你还的用facelet吧,甚至Seam也用上……关键是乱七八糟的东西放在一起缺乏一以贯之的统一性。
6.也许IDE可以拯救JSF……也许吧,现在还看不到希望,要是能做出杀手级别的,应该早就做出来了吧……JSf都好几年了。
7.性能不好。做过企业应用或许还凑合吧,但性能确实不好。把manager bean放在session中性能不好,不放的话,你发现你写程序时又像是action base了,甚至还没有action base方便。而不是像教程上那样的OO,因为教程上的例子都是把manager bean放在session中,而且table也是内存分页,所有数据放在一个list中,最终在放在session中——程序确实很OO,但……。
推荐喜欢action base的或页面和性能要求较高的用springmvc和webwork,喜欢组件话事件驱动的用wicket吧。
不过JSF也有一个优点,就是对工具相对较友好——我最近做一个可视化的表现层的产品用的是JSF,这一点体会还很深的,当然我自己做开发的话是不会用JSF的。
44 楼
rock_li
2008-04-17
期待 fins 研究jsf後給大家提供精彩的解答
43 楼
fins
2008-04-17
我还是决定研究一下jsf 不过它的架构注定了它不可能是我期望的那种B和S松耦合的系统.
我之所以决定研究一下是为了当反对它时让自己的底气更足.
其实任何技术都有好的一面也有不好的一面 各取所需也许就已足够
过多的争论只能让"技术辩论"沦为"口才的较量", 最后不仅谁都无法説服谁 反而伤了和气.
不过 不管怎样 我一直坚持的我想法,也许这种想法确实很理想主义 很不现实
但是我依然坚信 未来的B/S应该会离我的想法越来越近的.
解偶 是软件设计里 永恒的主题. OO OOA OOD WS SOA REST...这些东西背后的思想都离不开"解偶"二字.
我之所以决定研究一下是为了当反对它时让自己的底气更足.
其实任何技术都有好的一面也有不好的一面 各取所需也许就已足够
过多的争论只能让"技术辩论"沦为"口才的较量", 最后不仅谁都无法説服谁 反而伤了和气.
不过 不管怎样 我一直坚持的我想法,也许这种想法确实很理想主义 很不现实
但是我依然坚信 未来的B/S应该会离我的想法越来越近的.
解偶 是软件设计里 永恒的主题. OO OOA OOD WS SOA REST...这些东西背后的思想都离不开"解偶"二字.
42 楼
笨笨狗
2008-04-15
都这么多讨论了呀,别的不说什么,我一个朋友,也是javaeye的会员,他做了很久的JSF,现在天天告诉我说多烦JSF,哈哈哈哈。
还是那句话,我喜欢纯粹的js。
还是那句话,我喜欢纯粹的js。
41 楼
leegorous
2008-04-13
我完全不懂JSF,不过看完之后就想去看一下JSF。
不一定非得UI厂商才有必要自行开发UI组件的,有时为了实现一些比较特殊的复合组件,也是需要自行开发的,不过量不能多,而且要保持简单,可维护。
另外,解耦问题,前台的东西,我就一直保持在Apache上开发,数据都mock好,写了一个小东西来组装js,最后会用Ant打个包,顺便跑跑testcase,然后丢进需要的项目里。后台只管拿到什么请求就做什么处理,然后输出。不知道这算松还是紧。
引用
我觉得没有什么时候是需要开发大量UI组件的,除非你是UI厂商,如果一个开发组织不会利用已有的成果,那么基本上这个组织就是往失败的方向走。
不一定非得UI厂商才有必要自行开发UI组件的,有时为了实现一些比较特殊的复合组件,也是需要自行开发的,不过量不能多,而且要保持简单,可维护。
另外,解耦问题,前台的东西,我就一直保持在Apache上开发,数据都mock好,写了一个小东西来组装js,最后会用Ant打个包,顺便跑跑testcase,然后丢进需要的项目里。后台只管拿到什么请求就做什么处理,然后输出。不知道这算松还是紧。
40 楼
atusoft
2008-04-12
建议还是看看SEAM的DEMO代码,无须配置JSF组件,加上annomation就可以把一个POJO做为SESSION BEAN,完全做到跟RAILS的controller一样简洁明了。facelets甚至不用编译。我们现在的团队基本上没有JSF经验,却也两个月内写完了项目,但到现在也只是初步了解JSF的几个常用TAG而已。 唯一的缺点也就是慢点而已。
发表评论
-
一个商业公司如果要支持一个开源项目的话,它需要做哪些工作啊?
2009-12-07 16:55 4957一个商业公司如果要支持一个开源项目的话,它需要做哪些工作呢? ... -
如何让jxl (jexcelapi) 支持更多的数据
2009-01-08 23:52 4519jxl (jexcelapi) 一直是我比较喜欢的 java版 ... -
在java中"模拟" XMLHttpRequest
2008-11-03 12:17 13098这里所说的"模拟" 是指 : 在java中 ... -
利用google docs进行"轻量级过程管理".
2008-08-28 13:21 0利用google docs进行" ... -
[请教]jxl生成xls时,支持"合并"或"磁盘缓存"吗(导出大数据量时)
2008-07-28 09:37 6941jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-ex ... -
不错的国产开源免费的php框架: FleaPHP
2008-07-28 01:58 8519之前用他开发过一个小的网站 开发过程非常轻松愉快 体验也很好 ... -
GT-FrontController, 一个简陋的MVC控制器的设计思路
2008-07-06 23:53 2731在给GT-Grid做前后台结合的例子时, 为了"快速 ... -
h2database 普及系列一: 简介
2008-05-06 19:10 22121这不是一个新东西,但是 ... -
初看JSF后的胡言乱语
2008-04-10 09:31 4584最近看了一点jsf ---- 只 ... -
Help,如何在J2EE环境下使用Sqlite以及如何将sqlite打入war包
2008-03-27 09:46 3787需求是这样的 希望j2ee应用(基于应用 而不是整个服务器) ... -
请记住: i AM SoLiD. (关于View的事件触发顺序)
2007-11-16 04:11 2630View 提供了若干事件. 在渲染 布局 展现 相关事件的触 ... -
Android SDK下, 如何在程序中输出日志 以及如何查看日志.
2007-11-15 22:38 9846Android SDK下, 如何在程序中输出日志 以及如何查看 ... -
小胖加入Android Fans的 大军了 呵呵
2007-11-15 13:30 3142决定开始研究 Android 了. 以前研究过 j2me 对 ... -
老帖: findbugs简介
2007-11-02 10:09 3568这个时候说 findbugs ??? ... -
世上没有B/S系统,只有B系统和S系统.
2007-09-12 13:45 34353先说些与标题貌似无关的话. 随着prototype DWR ... -
[求助]有没有哪个缓存组件支持 基于访问频率的清理策略
2007-08-29 18:30 2406目前缓存清理策略几乎都是基于 存活期 和 活跃期 还有缓存队列 ... -
[发布2007-08-06]Ajax向导组件 WebWizard Component Beta1
2007-08-06 15:55 5000/****************************** ... -
寻求一个eclipse下更好的snippet插件(或代码模板管理插件 或代码生成器)
2007-07-26 11:12 4262eclipse自带一个snippet插件,但是功能有限. 只支 ... -
让Struts 1焕发青春----小议对Struts的改造.
2007-06-25 15:27 7601目前流行的新型的MVC框架 几乎都在"增强单元测试能 ... -
JProfiler与tomcat整合的视频演示
2007-06-20 12:16 8698这类东西看官方文档 或者google都能有答案 但是我最近为 ...
相关推荐
本文将深入探讨JSF 1.2的源码,重点关注`jsf-api`、`jsf-ri`、`jsf-tools`和`jsf-doc`这四个关键部分。 ### 1. `jsf-api` `jsf-api`包含了JSF框架的公共接口和类,这些定义了开发者如何在他们的应用程序中与JSF...
在部署包含JSF功能的Web应用到Tomcat时,确保所有必要的库,如`jsf-api.jar`(通常与`jsf-impl.jar`一起使用,提供JSF实现),被正确地添加到Tomcat的类路径(ClassPath)中是至关重要的。如果缺失这些库,应用程序...
《JSF-AV-rules.rar》是一个压缩包文件,包含了航空C++编程规范,这个规范主要针对的是在航空系统开发中使用C++编程时应当遵循的一系列规则和标准。航空系统的软件开发对于安全性、可靠性和可维护性有着极高的要求,...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
标题中的"jsf-api"和"jsf-impl"分别代表了JSF框架的API接口和其实现。"jsf-api" JAR文件包含了JSF框架的公共接口和类,定义了各种组件、事件和生命周期方法,供开发者在代码中引用。而"jsf-impl" JAR文件则提供了...
如果这是相关的,那么可能这个项目包含了某些与Scala相关的工具或库,用于辅助开发或者作为JSF-Spring Boot项目的一部分。 现在,让我们深入讨论JSF和Spring Boot集成的关键知识点: 1. **Java Server Faces (JSF)...
- `jsf-impl.jar` 和 `jsf-api.jar` 包含了JSF2的核心实现和API,供应用程序使用。 - `commons-collections-3.1.jar` 提供了集合操作的扩展,常常用于辅助处理数据。 - `commons-beanutils-1.8.0.jar` 提供了对...
在这个名为"jsf-by-example-源码"的压缩包中,我们很可能会找到一系列关于JSF应用开发的示例代码。 **1. JSF框架概述** JSF遵循MVC(Model-View-Controller)设计模式,提供了一种声明式的方式来管理Web界面的生命...
它是与`jsf-api.jar`配合使用的,实现了JSF规范中的所有功能。开发者通常不需要直接引用`jsf-impl.jar`,因为它的内容是给服务器使用的,用于运行时处理JSF应用程序。 3. **jstl-1.2.jar**: 这个JAR文件包含Java ...
JavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-...
3. **jsf-impl.jar**:与jsf-api.jar相对应,这个文件包含了JSF的实现代码。在实际开发中,开发者通常只需要引用api.jar进行编程,而impl.jar则在运行时提供具体的实现细节,执行用户界面的渲染和事件处理等功能。 ...
**JSF 2.0(JavaServer Faces 2.0)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。...这将有助于理解JSF的基本工作流程,为进一步学习和开发复杂的JSF应用程序打下基础。
JavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源...
JSF-1_1-API.chm
首先,JSF的核心在于它的组件库,这使得开发者可以像搭建UI部件那样构建Web界面,如按钮、表单和数据网格。JSF生命周期包括六步:恢复视图、应用请求值、处理验证、更新模型值、调用应用逻辑和渲染响应。开发者可以...
JSF API包括核心API(如FacesServlet、FacesContext等)、UI组件库(如h:inputText、p:calendar等)以及一系列的监听器和事件处理。通过阅读这本书,你可以了解JSF的基本架构、生命周期、以及如何创建、渲染和管理...
【标题】"jsf-spring-boot-autoconfigure-2.2.0.zip" 是一个基于Java的开源项目,它专门设计用于简化JavaServer Faces (JSF)在Spring Boot框架中的集成和自动化配置。JSF是一种标准的Java Web UI框架,而Spring Boot...