用过一段时间的Woodstock,当时感觉有点爽,但后来对于组件的控制方面的不是很好,没有在毕业设计上使用. 对于JSF想到了一些缺点,在这里分析一下。只是浅薄见解
1.有状态编程模型
JSF把Web编程搞的非常像JAVA SE GUI编程模型。维护组件树、组件状态。这让我感觉非常不舒服。Web开发就是Web开发,本身就是无状态的。所有行为都是基于 request,session,application等范围。JSF硬要往GUI模型上套,结果就是非常不自然,有点四不像了。而且JSF维持的仅仅是视图状态,而不是数据状态,这种编程模型有点混乱。我认为Web就是Web!
2。面向组件开发,更加OO
这是在讨论去里看到有人这样为JSF宣传。我承认这句话的陈述是正确的。因为JSF把Web编程基本上变成了JAVA SE的GUI编程。确实是面向组件的。但是通过使用,我觉得这种做法的优势是否真的有那么大,值得考虑。相比JSF,PHP、Rails、 JSP(JSTL)都没有刻意提供所谓的组件。这种做法方便了操纵HTML控件,直接、简单。而使用JSF控件时,则对于他的控制能力变得比较模糊并且不够灵活。我们需要在Backingbean里对组件进行控制。我感觉--太作做了。而且这种面向组件的方式所代来的好处远不能抵消它所代来的麻烦。
至于所谓的OO论,表示层的东西有必要刻意强调像JSF这种面向组件,OO吗?对于Widget那种ajax的HTML面向组件我是可以理解的。 PHP/RoR没有面向组件但也非常好用。表示层只需要提供一些页面的重用和插入功能就足以了。这让我想起了人们对JAVA EE过度分层的抱怨。于Rails形成了鲜明的对比。所谓的OO在服务器端、业务处理的代码中有很大用处。但是Web是瘦客户端(不像Swing)!在 Web的表示层中如此大张旗鼓的宣扬JSF式的OO我认为是一种误区。我们可以看看PHP\Rails这些语言框架,做到MVC,足够了。Web的表示层需要的最重要的特性就是容易使用、容易控制、容易重用(也面片段)。
JSF那种把HTML和后端弄到一起,模仿Swing,搞OO的做法有点费力不讨好的感觉。
【编辑推荐】