`
upheart
  • 浏览: 15968 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

做JSF很久了,我也说说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的。

 

10
5
分享到:
评论
8 楼 jiangyubao 2008-04-17  
没有使用过JSF,以前我一直等JBoss5出来,等EJB3发布release版本,我等啊等啊,等得也不耐烦。现在也不做web程序,只写后台程序,前台我看好GWT或者MyGWT,使用GWT,像我这样的javascript的“文盲”我都能有足够把握写出比较满意或者比较知足的界面程序出来。
7 楼 Frederick 2008-04-17  
引用

而别的webwork,springmvc等,又太轻,需要大量js来配合
孰是孰非,现在还不太清楚

我们现在的做法是Ext作页面展现,Spring MVC作后天控制。好在对企业应用是够了,如果是想作网站的话,恐怕Ext目前还很难胜任
6 楼 metaphy 2008-04-17  
JSF往往给人的第一的模糊的印象就是笨重,有点像EJB
而别的webwork,springmvc等,又太轻,需要大量js来配合
孰是孰非,现在还不太清楚
5 楼 linliangyi2007 2008-04-17  
技术是用来用的,不是用来吵架哒!支持楼主说出自己的观点!
个人觉得JSF很晕,如果我选型,要OO我选wicket,要轻量级,使用jQuery!
4 楼 upheart 2008-04-17  
引用
实在是莫名其妙!JSF是Presentation Layer组件,如果你的Business Layer偏偏不分页,你怪JSF做什么?!


没说不能,而是说麻烦。就功能而言我相信JSF能做到其它表现层框架能做到的一切,这个说法同样适用于其他框架。
3 楼 zqrain 2008-04-17  
引用
分页在内存中进行这个问题比较大,对于有几十万上百万的数据分页,在加上app集群(session 复制)等情况估计就吃不消了。
如果上述情况不存在,那么尚可,但已经局限在较小的应用中了。


谁说JSF只能在内存分页?!

实在是莫名其妙!JSF是Presentation Layer组件,如果你的Business Layer偏偏不分页,你怪JSF做什么?!

JSF分页很简单,实现一个dynamic的List(或者用动态proxy实现)把数据传给JSF的backing bean,在这个List里根据get方法面动的index态调用Business Layer不就得了!
2 楼 a3mao 2008-04-17  
我很同意楼主的看法,我们现在用JSF开发一个财务管理软件,虽然目前没有遇到非常特殊,怪异的需求,但是我想做财务这方面的软件,需求应该是非常变化的,正如楼主提到的,JSF非常的不灵活,我始终坚持用struts2,可别的同事都坚持JSF,我没办法说服他们,只能屈服了。
1 楼 LucasLee 2008-04-17  
分页在内存中进行这个问题比较大,对于有几十万上百万的数据分页,在加上app集群(session 复制)等情况估计就吃不消了。
如果上述情况不存在,那么尚可,但已经局限在较小的应用中了。

相关推荐

    jsf实例jsf实例 JSF学习 JSF jar包 JSF

    jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam

    JSF 很全面的帮助文档

    随着JavaEE更名为JakartaEE,JSF也在持续发展。最新的JSF版本(如JSF 3.0)引入了更多新特性,如响应式设计支持、改进的错误处理和增强的类型安全EL。 总结来说,这份“JSF很全面的帮助文档”将引导开发者深入理解...

    jsf第一个例子 jsf架包 jsf实例

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...

    JSF中文教程jsf

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...

    JSF的工作方式 JSF架构 JSF模型 JSF事件类型

    这些Bean可以通过JSF EL(Expression Language)在视图层中访问,也可以接收和返回数据。 ### JSF事件类型 JSF支持多种事件类型,这些事件可以在组件之间或应用程序级别触发。例如: - **组件级事件**:发生在特定...

    《JSF_实战》非常好的JSF学习书

    《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...

    JSF入门+JSF web实战+JSF2

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...

    JSF上传 JSF大文件上传 JSF上传代码 JSF上传源代码

    JSF(JavaServer Faces)是Java平台上用于构建用户界面的Web框架,尤其在处理表单和数据交互方面表现强大。本项目聚焦于JSF的文件上传功能,特别是针对大文件的上传,允许用户上传最大可达1.99GB的文件。在实际应用...

    用jsf做的登录注册的组件

    8. **异常处理**:当用户输入无效或发生错误时,JSF可以通过`FacesMessage`来显示错误信息,也可以自定义错误页面来优雅地处理异常情况。 9. **JSF生命周期**:理解JSF的请求处理流程对于调试和优化非常重要,包括...

    JSF包,jsf包,JSF包,jsf包

    **JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...

    jsf分页 jsf分页 jsf分页

    在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...

    core jsf 1.2 jsf 核心

    **JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web...而`core jsf.chm`文件很可能是关于JSF 1.2的官方文档或教程集合,可以帮助深入学习和掌握这些概念。

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    此外,自定义标签也是JSF中的一大特色,它允许开发者扩展和封装功能。 3. **JSF的LIB**:JSF的核心库包含了许多内置的组件和实用程序,这些库在JSF应用中是必不可少的。学习这部分,你需要了解如何导入和使用JSF的...

    JSF开发必备JAR

    ================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...

    JSF文件下载实现

    **JSF 文件下载实现** 在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上...

    jsf视频jsf视频0

    jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces

    开发JSF所需要的jar包

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种组件化的方式来构建用户界面,简化了前后端交互的复杂性。在JSF中,开发者可以使用声明式编程模型...

    JSF帮助文档

    JavaScript Faces (JSF) 是Java平台上用于构建企业级Web应用程序的一种服务器端的用户界面框架。JSF 是Java Community Process (JCP) 规范的一部分,最初由Sun Microsystems开发,现在由Oracle公司维护。JSF的核心...

    JSF开发文档

    在数据处理方面,JSF内置了标准转换器和验证器,这些转换器和验证器能够自动处理数据类型转换和输入验证,开发者也可以实现自定义转换器和验证器来满足特定的业务需求。JSF还包含了一套错误信息处理机制,能够在用户...

Global site tag (gtag.js) - Google Analytics