JSF,为什么把简单的事情复杂化?
Andrej Koelewijn 在他的BLOG上写了一篇文章“Creating a jsf div component”(http://www.it-eye.nl/weblog/2006/04/25/creating-a-jsf-div-component/),用大约一两千字的篇幅写了一个很简单的JSF组件。这篇文章在Tapestry的mail list(http://news.gmane.org/gmane.comp.java.tapestry.user)基本引起了哄动,有人甚至“ROTFL”(笑得在地板上打滚),因为要实现同样的功能在Tapestry中只需一行代码!一个Tapestry同仁说:“
Abstraction layers on top of abstraction layers...
They have built so many of them that they have abstracted themselfs from the
reality... the majoraty of JSF users just want to build HTML pages! So let's
make it totally complicated for them.... :-D
”
文章作者Andrej Koelewijn坐不住了,不得不又写一篇BLOG解释(http://www.it-eye.nl/weblog/2006/04/26/jsf-productivity/)。他承认,用JSF写一个组件确实比较麻烦,确实不如在Tapestry中方便。但他仍坚持认为JSF的综合生成力强于Tapestry,因为JSF有很好的IDE的支持(如JDeveloper)而Tapestry没有。
Tapestry大大简化了组件的编写工作,它鼓励开发人员在自己的WEB应用程序中编写自己的组件,以达到更高程度上的代码复用。鼓励开发人员写组件,恐怕连Delphi、VB都没有做到——有多个人能在开发软件时“顺便”写出几个组件出来?但在Tapestry中,写个组件算什么,太容易了,如果一个WEB程序中竟然没有一个自己写的组件,反而说明作者的开发思路有问题。注:这并不是因为Tapestry缺少内置组件,Tapestry中的内置组件(以及第三方组件)并不少。鼓励开发人员写组件大致有两个原因:一,写组件很容易,二,更利于代码重用。