对我过去感兴趣的朋友们,请看十年总结系列文章---上一篇关于重构的总结,引来了很多讨论,基本上大家能够达成共识,
1、重构是提高代码质量非常重要的手段之一
2、重构要有所节制,过犹不及
3、质量是一种意识---以前可能没有详细说过,03-04年,我们用JAVA所做的项目都是基于C/S架构的,
但04年第四季度,越来越多的新项目提出了B/S架构的要求,于是我们面临一次转型。这次转型,又带来一场冲突。
原来早就说过,乐乐在04过后,就要移民澳洲了,所以他相当保守,
提出将现有系统改造成一个Applet,他认为这样最稳妥,工作量最少。我一向比较激进,我觉得改造成Applet虽然时间短,但毕竟不是长久之计,
所以我建议一次到位,按J2EE架构重新设计开发。
但这样做,我们团队的人员储备不足,时间周期也会比较长,
我自己不熟悉J2EE,因此短期内很难做出令人信服的估算,因此田田决定采用乐乐的方案。改造是很快完成了,但大家可以想象由完整的CS应用改造而来的Applet,在浏览器中运行是如何的慢。
性能的问题乐乐三番五次解决不掉,而他离开公司的日期越来越近,我从内心深处也不太愿意接手他的代码,
于是我再次建议另起炉灶,重新开发一套B/S系统。这样,在交了一个多月的学费后,我开始重点招聘B/S人员。
由于受到04年自己所学的影响,我招聘的时候逢人必问懂不懂敏捷建模,
虽然当时连知道这个概念的人都相当少,但竟然被我碰到一个,他对敏捷建模、测试驱动开发都很熟悉,
而且对开源项目非常感兴趣(我们的产品中也用了大量开源的东西)。这个人在公司呆了不到两个月就走了,我总结应该是我在B/S方面太弱,而且公司没有更强的人,他可能觉得学不到东西,
虽然干的时间不长,但他让我知道了Spring和Hibernate,也算是在B/S方面帮了我一把,我还是很感谢这个人。初接触Spring,感觉挺新奇的,很喜欢背后的IoC思想,
还有Hibernate,也是其O/R Mapping的思想让我觉得受益匪浅,
不过让我感到头疼的是配置,总总觉得本来一件简单的事情,到了框架里,要拆散了在好多个地方做配置,
出了问题,总是不能一下子定位在哪里(受C/S开发的影响),一开始还经常有录入错误,搞得一个简单问题要DEBUG好半天。可能有人会说用工具来简化配置,但我有些古怪,就是一样东西如果没有足够的信心,而只是照某种步骤去做,
心里就会患得患失,没有安全感。
况且对于我们这个刚刚组建的,没有高手的B/S团队,还是应该简单一些好。
于是,我决定放弃SSH架构,而直接采用Struts。
这一段时间的确是很有压力的,毕竟是自己主张要重新开发的啊(其实不重新开发也没办法了),
要边学习边工作,还要负责招聘。因为我也是刚接触B/S的,所以最开始的时候感觉比被面试的人还要紧张。Struts相比Spring简单太多了(现在的感受),不过我真正掌握(会合理的使用)也花了三个月的时间,
一开始我看书,我承认我对中文图书有一种成见,因此没看出个所以然(只是会用了而已),
就拿这本书来说:精通 Struts:基于 MVC 的 JavaWeb 设计与开发,
应该是很经典的,可是如果顺序看这本书,2、3、4章让我十分恼火。
第二章是一个例子,我什么都还不懂,就让我按部就班做一件事儿,我个人觉得没有任何价值,
第三章与Struts基本不搭界,我感觉去掉这一章都没有任何感觉,
第四章就开始详细介绍Struts的配置文件,让我彻底迷失了方向。
老实说,这本书作为“参考”书是可以的,但我觉得并不适合作为入门的学习书,除非你准备往复看几遍来融汇贯通。真正让我心里有底的,还是在看了官方文档之后:http://struts.apache.org/1.3.10/userGuide/index.html
我觉得通过这个文档,我很快就明白了FORM是如何被填充的,Action是如何跳转的,从页面提交、到后台方法执行、再到返回新页面,
这个过程在脑海里很清晰,这样自然就很容易理解各项配置的作用,也很容易处理出现的问题。在以后的日子里,我又接触了一些开源项目的官方文档,比如JBPM,Ant等,我发现官方文档真的是了解一个系统的最佳资料,
一般好一点的项目都会提供Tutorial或者 User Guide或者Reference,这基本上是必看的。就这样,在产品改版中,告别04年,进入05年,也是我在北京最郁闷的一年。---现在很多人都是从SSH开始接触JAVA,J2SE的东西只是浅尝辄止,了解而已,
我碰到不止一个同学,会做B/S应用,但不会用程序操作文件(当然,经过提示很快就会了)。
我从C/S入手JAVA,至少有一点好,就是打下了比较扎实的基础,那么关于JAVA的学习路径问题,虽然现在是WEB为王,但不应该放松J2SE的学习,即便要用SSH,也要从基础开始:
1、Thinking In Java,打下良好的J2SE基础
2、sun官方的Java EE Tutorial,第15章之前重点看,15章之后有选择的看
3、如果学Struts,就看Struts User Guide ,
4、如果学Spring,就学Spring Reference Manual ,兼看Martin的经典文章:http://www.martinfowler.com/articles/injection.html
5、要学hibernate,最好先看看O/R Mapping方面的知识,还有DAO设计模式,然后是Hiberante Reference Documentation。
千万不要觉得英语无所谓,也不要因为怵头而回避英语,早一天克服困难,早一天受益。最近较忙,先写这么多了。

解决方案 »

  1.   

    传统的CS架构用到的JAVA基础知识还是蛮多,谢谢楼主分享!
      

  2.   

    虽然不做java相关的开发,但看看楼主的经验和选择过程还是很有好处的。
    继续支持。
      

  3.   

    奇怪 这次咋发技术区来拉?昨天去面试 说是J2EE 结果要求会JSF、EXTJS、XHTML。。
      

  4.   

    企鹅决定不做JAVA了吗?
    哎 我E文是个老大难~老被中国的破书忽悠~
      

  5.   

    顶了,偶也是直接SSH到java   基础还不够结实啊!!
       学习...
      

  6.   

    ... JSF、EXTJS、XHTML。。公司要用到的话,应该是要会的, 如果不用到的话,很快就忘了
      

  7.   

    质量是意识,但是更是一种工作,做过CDI,也算略知一二。
      

  8.   

    是啊,楼主这些经验真得让我受益匪浅
    我现在才开始接触B/S,之前做的都是C/S
    虽然首个项目是二次开发,还是比较珍惜得
    以后向楼主学习啊
      

  9.   

    Multisim 10来实现1Hz秒冲的产生
      

  10.   

    中英日的Tutorial都能看懂一部分,所以经常要找好几份才能搞定一个问题说实话,很多中文的教程都是教会你用了,但是不知道为什么要这么用。。
    虽然很快解决了问题,但是没太多长进。
      

  11.   

    学习  C/S转B/S   ing...........
    觉得B/S吃香 机会更多
      

  12.   

    有时间当然看English book,没时间只好看Chinese book
      

  13.   

    我怎么感觉b/s 就是做网页程序,在外界一直被BS的,C/S待遇要比B/S好的多!
      

  14.   

    我想转型到java,还挤时间看英语书,呵呵,感觉时间不够用。
    想你学习.
      

  15.   

    love Java用java开发是我的乐趣