這是兩封信,一封來(lái)自網(wǎng)友adamed?,一封是我的回復(fù),交流的是初學(xué)者如何學(xué)習(xí)J2EE及SSH的問(wèn)題,得到adamed許可,這這里發(fā)出來(lái)跟大家分享,歡迎更多的朋友來(lái)交流。
主題: 請(qǐng)教easyjf團(tuán)隊(duì)各位大俠
?
?
您好,我是一個(gè)在職軟件開(kāi)發(fā)人員。我是05年開(kāi)始接觸java開(kāi)發(fā)。06年加入北京一家公司到現(xiàn)在。我的工作是做J2EE開(kāi)發(fā)。公司使用SSH架構(gòu)(Struts-Spring-h(huán)ibernate)進(jìn)行開(kāi)發(fā)。
雖然進(jìn)公司半年但是由于項(xiàng)目原因,真正只做過(guò)一個(gè)Struts+Hibernate的項(xiàng)目。現(xiàn)在我看了許多關(guān)于SSH的書(shū)。也看了一些代碼,就是感覺(jué)自己提高太慢。
?
偶然機(jī)會(huì)在CSDN的blog上看到 大俠 的blog知道了EasyJF。很欽佩你們的勇氣,敢于開(kāi)創(chuàng)中國(guó)開(kāi)源項(xiàng)目之先河。
?
由于接觸J2EE時(shí)間太短。而現(xiàn)在這樣的開(kāi)源項(xiàng)目名目繁多。看了Spring的一些源代碼只感覺(jué)頭暈到不行。我實(shí)在不知道該如何提高自己。所以斗膽給各位EasyJF的朋友寫(xiě)這封郵件,請(qǐng)大家給我一些建議好嘛??(由于公司使用SSH開(kāi)發(fā)。所以不看這些東西還不行。)該大家給些建議該如何學(xué)習(xí)。
?
ps:看了EasyJF的介紹我很想?yún)⑴c可惜能力實(shí)在有限。怕遭拒絕。
我現(xiàn)在有一顆火熱的心想提高,想做技術(shù),想為中國(guó)原創(chuàng)出一點(diǎn)力。但我也知道做技術(shù)不能浮躁。故請(qǐng)各位幫忙。
?
adamed?
2007-01-09?
下面是我的回信:
您好:
感謝你對(duì)EasyJF的關(guān)注以及對(duì)國(guó)內(nèi)開(kāi)源的支持,國(guó)內(nèi)環(huán)境普遍浮躁,因?yàn)橛刑嘞?a >春迷這樣的人存在,搞得大家都不敢表達(dá)自己的思想了,因此還希望以后能繼續(xù)多對(duì)國(guó)內(nèi)開(kāi)源人給予支持。
?
??? 關(guān)于您來(lái)信中說(shuō)到的問(wèn)題,我覺(jué)得可能是你對(duì)java的基礎(chǔ)的掌握還不夠的原因,簡(jiǎn)單來(lái)說(shuō)就是內(nèi)力不夠。好比中國(guó)傳統(tǒng)武俠小說(shuō)中練武人的內(nèi)力問(wèn)題,降龍十八掌這樣的絕世掌法,要是沒(méi)有一定的內(nèi)力作基礎(chǔ)的話,就只能是降蛇十八掌,甚至蛇都降不了。虛竹小和尚的武功也是因?yàn)橛辛烁呱畹膬?nèi)力,才能變得那么牛的。
而修練J2EE武學(xué)的內(nèi)力,我認(rèn)為大致分為三層,初級(jí)層次是JAVA基礎(chǔ),第二層次是OO思想及模式,第三層次是特定領(lǐng)域(如Web開(kāi)發(fā)相關(guān)技術(shù)規(guī)范、Servlet規(guī)范、JPA規(guī)范、EJB3規(guī)范等)、專(zhuān)業(yè)知識(shí)的學(xué)習(xí)。有了這些內(nèi)力,不管他是SSH還是EasyJF,使用起來(lái)都會(huì)非常容易的。
?
SSH屬于框架,屬于工具,也是中間件。他們是用來(lái)提高我們的開(kāi)發(fā)效率,提高我們軟件產(chǎn)品的可維護(hù)性、可擴(kuò)展性乃至敏捷性的。
?
他們里面有很我優(yōu)秀的設(shè)計(jì)理念及模式應(yīng)用。比如,
struts屬于MVC框架,關(guān)鍵是要了解MVC的概念及大致原理,掌握就很容易了;而hibernate屬于orm系統(tǒng),屬于持久層的解決方案,同樣需要對(duì)ORM的概念及原理有一個(gè)總體的了解,必要時(shí)可以去查查EJB1及EJB2里面用于持久層的Entity Bean的使用。而spring屬于應(yīng)用程序框架,其核心是IOC容器以及AOP,把這兩個(gè)核心概念(也可稱(chēng)為大模式)了解以后,再加上一定的內(nèi)力修為,其它就都不難了。Spring中還集成了很多適用東西(不過(guò)這些東西80%的在某一個(gè)項(xiàng)目中可能一直用不上),比如對(duì)JDBC的封裝、自己的MVC、對(duì)動(dòng)態(tài)語(yǔ)言的簡(jiǎn)潔訪問(wèn)等,這些你根據(jù)自己的項(xiàng)目情況來(lái)選擇學(xué)習(xí),用到的時(shí)候再看看他的文檔,一個(gè)項(xiàng)目下來(lái)應(yīng)該就能把握。
?
說(shuō)了那么多,我累了,你一定也有點(diǎn)暈了,下面結(jié)合你的情況,簡(jiǎn)單發(fā)表一點(diǎn)我的建議:???????
1、用一年的時(shí)間慢慢提升自己的內(nèi)力,然后這期間可以通過(guò)下面的方法同步學(xué)習(xí)使用ssh。
2、看一些國(guó)內(nèi)作者原創(chuàng)的書(shū)籍,并運(yùn)行相關(guān)代碼,比如孫衛(wèi)琴的Struts及Hibernate等入門(mén)教程,羅時(shí)飛的Spring教程。他們的書(shū)都通谷易懂,很多屬于他們?cè)趯W(xué)習(xí)過(guò)程中的點(diǎn)滴記錄,因此一定非常好懂。不要一下子就去讀Rod的《J2EE Without EJB》,或者是Spring開(kāi)發(fā)團(tuán)隊(duì)編寫(xiě)的《Spring框架高級(jí)編程》,甚至《Spring in action》!由于很多緣故,這些書(shū)看了你一定會(huì)更暈。
3、下載一些國(guó)內(nèi)原創(chuàng)的SSH應(yīng)用源碼示例。國(guó)外有很多這樣的,也可以多看看。
4、運(yùn)行這些框架所附帶Example示例,并了解其設(shè)計(jì)原理,并能簡(jiǎn)單修改。
5、運(yùn)行并多看這些框架的測(cè)試代碼。要像買(mǎi)彩民分析采票走勢(shì)圖那樣慢慢琢磨分析。
6、在自己的項(xiàng)目中多動(dòng)用,熟練使用一個(gè)開(kāi)發(fā)工具,如Eclipse,并能掌握程序調(diào)試技巧。
???
最后,關(guān)于Spring的學(xué)習(xí),可以看看我們最近在編寫(xiě)的《深入Spring 2:輕量級(jí)J2EE開(kāi)發(fā)框架原理與實(shí)踐》的電子版,現(xiàn)在有兩章可以下載,比較適合入門(mén),網(wǎng)址是:http://www.easyjf.com/spring。
?
另外,我準(zhǔn)備你給我的信及我給你的回信放到我的blog上,供大家分享我們的交流,不知道您是否愿意?
?
祝:學(xué)習(xí)愉快,工作順利!
?
EasyJF開(kāi)源 大峽
?
2007-01-10