看了论坛上最近关于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的。
分享到:
相关推荐
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam
随着JavaEE更名为JakartaEE,JSF也在持续发展。最新的JSF版本(如JSF 3.0)引入了更多新特性,如响应式设计支持、改进的错误处理和增强的类型安全EL。 总结来说,这份“JSF很全面的帮助文档”将引导开发者深入理解...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...
**JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发人员创建交互式、数据驱动的Web界面的过程。JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面...
这些Bean可以通过JSF EL(Expression Language)在视图层中访问,也可以接收和返回数据。 ### JSF事件类型 JSF支持多种事件类型,这些事件可以在组件之间或应用程序级别触发。例如: - **组件级事件**:发生在特定...
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种声明式的方式来构建用户界面,简化了开发过程,并且与Java EE平台无缝集成。本系列资料包括《JSF...
JSF(JavaServer Faces)是Java平台上用于构建用户界面的Web框架,尤其在处理表单和数据交互方面表现强大。本项目聚焦于JSF的文件上传功能,特别是针对大文件的上传,允许用户上传最大可达1.99GB的文件。在实际应用...
8. **异常处理**:当用户输入无效或发生错误时,JSF可以通过`FacesMessage`来显示错误信息,也可以自定义错误页面来优雅地处理异常情况。 9. **JSF生命周期**:理解JSF的请求处理流程对于调试和优化非常重要,包括...
**JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
**JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web...而`core jsf.chm`文件很可能是关于JSF 1.2的官方文档或教程集合,可以帮助深入学习和掌握这些概念。
此外,自定义标签也是JSF中的一大特色,它允许开发者扩展和封装功能。 3. **JSF的LIB**:JSF的核心库包含了许多内置的组件和实用程序,这些库在JSF应用中是必不可少的。学习这部分,你需要了解如何导入和使用JSF的...
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
**JSF 文件下载实现** 在JavaServer Faces (JSF)框架中,实现文件下载功能是一项常见的需求。在本文中,我们将深入探讨如何使用JSF来实现在Web应用程序中下载文件的功能。主要涉及的关键知识点包括: 1. **JSF上...
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces
JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种组件化的方式来构建用户界面,简化了前后端交互的复杂性。在JSF中,开发者可以使用声明式编程模型...
JavaScript Faces (JSF) 是Java平台上用于构建企业级Web应用程序的一种服务器端的用户界面框架。JSF 是Java Community Process (JCP) 规范的一部分,最初由Sun Microsystems开发,现在由Oracle公司维护。JSF的核心...
在数据处理方面,JSF内置了标准转换器和验证器,这些转换器和验证器能够自动处理数据类型转换和输入验证,开发者也可以实现自定义转换器和验证器来满足特定的业务需求。JSF还包含了一套错误信息处理机制,能够在用户...