<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>向上的心</title>
    <description></description>
    <link>http://upheart.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>做JSF很久了，我也说说JSF的缺点</title>
        <author>upheart</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://upheart.javaeye.com">upheart</a>&nbsp;
                    链接：<a href="http://upheart.javaeye.com/blog/183613" style="color:red;">http://upheart.javaeye.com/blog/183613</a>&nbsp;
          发表时间: 2008年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>看了论坛上最近关于JSF的讨论，我也说说JSF的缺点：</p>
<p><br />
1.学习曲线高。也许你会说只有组件开发人员才需要深入了解JSF的声明周期和高级的东西，普通开发人员不需要学习那么多&mdash;&mdash;但是随着开发的深入，你马上就会发现必须要学习这些深入的东西，否则你只能写出呆板和充满隐患的程序。<br />
<br />
2.OO。JSF是基于组件事件驱动的，也许你觉得他很像Swing，但其实也很像struts。对于熟悉action base的开发人员可能不太熟悉他的OO方式，而喜欢OO的开发人员反而又觉得它不够OO（还不如Wicket，Tapestry）。&mdash;&mdash;而且OO的人少，都是用OO的工具语言做非OO的事情，不信看看好多JSF写的程序，写着写着就写成了struts，甚至还不如。<br />
<br />
3.写一个自定义组件太难。<br />
<br />
4.灵活性不够。组件库本来就不够丰富，想实现一个复杂表头？想物理分页?你得找到相关的组件，往往发现这个组件满足你的这个要求，却满足不了那个需求，而满足了那个的又满足不了这个。实在没办法，就得自定义。如前所述，自定义组件有很难，尤其是一个有很多功能的组件。还有就是和其他工具的集成&mdash;&mdash;想用FCKEditor吗？想用一个Office插件吗？想用数字签名的插件吗？找JSF组件吧，没有的话就自定义吧。而action base的MVC框架在这一点上就容易的多。<br />
<br />
5.东西太多太乱。要想用好JSF，你的用几个第三方组件库吧&mdash;&mdash;RichFaces，ICEFaces&hellip;&hellip;看看那些组件的属性吧，想短时间弄清楚也够费力的，何况你还得知道他们用了那些css的class&hellip;&hellip;，你还的用facelet吧，甚至Seam也用上&hellip;&hellip;关键是乱七八糟的东西放在一起缺乏一以贯之的统一性。<br />
<br />
6.也许IDE可以拯救JSF&hellip;&hellip;也许吧，现在还看不到希望，要是能做出杀手级别的，应该早就做出来了吧&hellip;&hellip;JSf都好几年了。<br />
<br />
7.性能不好。做过企业应用或许还凑合吧，但性能确实不好。把manager bean放在session中性能不好，不放的话，你发现你写程序时又像是action base了，甚至还没有action base方便。而不是像教程上那样的OO，因为教程上的例子都是把manager bean放在session中，而且table也是内存分页，所有数据放在一个list中，最终在放在session中&mdash;&mdash;程序确实很OO，但&hellip;&hellip;。<br />
<br />
推荐喜欢action base的或页面和性能要求较高的用springmvc和webwork，喜欢组件话事件驱动的用wicket吧。<br />
<br />
不过JSF也有一个优点，就是对工具相对较友好&mdash;&mdash;我最近做一个可视化的表现层的产品用的是JSF，这一点体会还很深的，当然我自己做开发的话是不会用JSF的。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://upheart.javaeye.com/blog/183613#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Apr 2008 09:48:09 +0800</pubDate>
        <link>http://upheart.javaeye.com/blog/183613</link>
        <guid>http://upheart.javaeye.com/blog/183613</guid>
      </item>
      </channel>
</rss>