论坛首页 Web前端技术论坛

JSF 与 "我的伟大发明" ---- 关于B/S UI开发的胡言乱语

浏览 67644 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-10  
这篇帖子后面的回复和讨论 已经变得比主贴本身更值得一读了
希望读这篇帖子的朋友 有时间的话可以看一看后面的那些评论

我不希望这种技术讨论沦为口才的较量 ,所以我本人不会在发表什么观点了
但是我的"关于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层面内部做这件事 更好呢??



关于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肯定和现在的大不同, 也许只是名字未变而已.



我再表达一下 我的观点(可能过于理想化):

引用
在B/S系统中
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的

总之两个字"解耦".


任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.

整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.

最后问个问题:

你见过哪个西餐厅会放一把万能的瑞士军刀在餐桌上吗?
如果没有 那好, 请你也不要指望在 B/S系统开发领域内 见到一个万能的"瑞士军刀",
至于那个"我的伟大发明"你更是可以完全忘掉它了.


   发表时间:2008-04-10  
ext
正在学习中
目的很简单
减少学习ajax的麻烦
0 请登录后投票
   发表时间:2008-04-10  
多说两句啊 说说你对jsf的看法

实际上我很希望有很多人来反驳我

我希望我可以被说服 我希望可以有人给我足够的动力去学习和研究jsf
0 请登录后投票
   发表时间:2008-04-10  
再多说两句:

我觉得 在web ui层主张使用 jsf的人里
有相当一部分是 "java专家,但是对客户端技术了解有限,甚至知之甚少"
因为了解有限 所以心生恐惧 进而排斥.




0 请登录后投票
   发表时间:2008-04-10  
我觉得评论任何东西都是需要实际运用才能有发言权
当初我也觉得jsf很麻烦,学习麻烦,还要配置,不如我自己老老实实写表现层.
但是当我用了jsf+richfaces之后,我才发现,原来效率可以如此之高.
老板让我写一个人力资源管理的一个人事档案模块.
按照平时的进度我用struts做怎么也得一周吧.
我拿JSF来做就两天,几乎都是ajax,但没有写一行javascript,界面还不错.
当然,如果你觉得javascript写起来很爽,很high,那当我没说过
别看了两天书,就随意评论一个产品.他再怎么烂,也是apache的顶级项目,jboss的顶级项目seam也是基于它的.大哥,用用再下结论好么
0 请登录后投票
   发表时间:2008-04-10  
也就是一句话,AJAX+dhtml能做的,JSF不一定能做
JSF能做的,开发效率一定比AJAX+DHTML的快.
至于JSF不能做的,他又没规定你不能在页面里用ajax+dhtml
至于上篇你反驳我的可维护性和效率是和编程水平和技术相关的,
我完全不同意.java代码百分之百的可维护性,阅读性比javascript代码强得多.
这和高手不高手,编程水平是完全两码事.
0 请登录后投票
   发表时间:2008-04-10  
两种不同的架构,JSF用于在Server端搞定一切,ajax-java是B/S系统。“客户端-服务”的架构更优秀,更解藕,更符合以后的发展。但传统的编程方式不会消失,还有一部分人在使用,因此JSF还是有一定用途的。等到大家都在使用“客户端-服务”架构的时候,目前的JSF自然就一无是处了。
0 请登录后投票
   发表时间:2008-04-10  
to terranhao:

你说了那么多 其实我觉得真正有意义的话只有一句
引用

当我用了jsf+richfaces之后,我才发现,原来效率可以如此之高


也就是说 你看到的是 jsf在 RAD方面体现的优势

你看看我的文章, 我什么时候否定jsf能够RAD了??

可以这么说: 如果有好的IDE ,足够好,那么很多技术都可以实现快速开发

但你不能说那些技术是好技术

我俩站的角度不同
我是在设计 和模式角度来分析 我觉得他的设计不够好

如果你要反驳我 能否针对我对jsf提出的质疑 逐条反驳???

1 JSF UI和JSF其他地方结合太紧密
2 JSF开发UI组件很麻烦
3 JSF没有足够出色的组件实现 (比开源免费的 纯ajax的 EXT更好的 )
4 JSF导致ui层和后台无法做到以数据为中心

另外 你是否认同我最后说的那段话:

引用
在B/S系统中
UI层与系统其他层面的东西的唯一联系应该是"数据"
UI层应该是在后台系统不变的情况下可切换的

总之两个字"解耦".

任何违背这个准则的框架我都不认为是好的框架. JSF WICKET DWR 都不是.
事实上,我不认为有哪个框架 可以同时做好 后台和前台两个层面的工作.
既然做不好 那就别做.

整齐划一是好的,但是 我们应该 必须 一定 永远都要承认"分工"的存在.

最后问个问题:

你见过哪个西餐厅会放一把万能的瑞士军刀在餐桌上吗?
如果没有 那好, 请你也不要指望在 B/S系统开发领域内 见到一个万能的"瑞士军刀"






0 请登录后投票
   发表时间:2008-04-10  
补充一下
我所说的

JSF开发UI组件很麻烦

是指 开发组件 而不是使用已经开发好的JSF UI组件
我说的是 开发 不是 使用
0 请登录后投票
   发表时间:2008-04-10  
我反驳不了你.
我都是用别人的组件,myfaces  richfaces
JSF开发组件确实很麻烦.但是,优秀的组件非常多
干嘛要重复发明轮子.
你对JSF的批评根本没到点子上
JSF最大的毛病是运行效率比JSP低了2,3倍,不过企业级的应用服务器应该都是比较牛B的,所以大致来说效率可以接受.
你去jboss看看他的rich-faces的demo吧,再想想你做个这种效果出来需要多久?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics