Java界的開(kāi)源產(chǎn)品多如牛毛,不掌握一定的方法論的話覺(jué)得一方面是學(xué)不來(lái)這么多的開(kāi)源產(chǎn)品,另一方面則是根本就發(fā)揮不了開(kāi)源產(chǎn)品的作用,一直以來(lái)我就推崇技術(shù)人員按照工具型人才--->思想型人才--->創(chuàng)新型人才的發(fā)展路線,所以我覺(jué)得學(xué)習(xí)和熟悉幾種開(kāi)源產(chǎn)品是必須的基本技能,但并不是說(shuō)一定熟悉最新流行的開(kāi)源產(chǎn)品,其實(shí)這個(gè)就象基于MS做開(kāi)發(fā)的人員,最起碼要熟悉的就是.net這些東西,只有先在熟悉這些東西的基礎(chǔ)上才能形成更好的發(fā)展,一切都自己從底層摸起盡管會(huì)讓自己學(xué)習(xí)到很多也會(huì)理解很深,但會(huì)走很多的彎路,基于開(kāi)源產(chǎn)品能基于別人經(jīng)驗(yàn)的基礎(chǔ)上進(jìn)行學(xué)習(xí),這樣自然會(huì)少一些彎路,而且其實(shí)這樣是很容易形成自己的一些想法的。
對(duì)于一個(gè)開(kāi)源產(chǎn)品,覺(jué)得只要按照一定的步驟去進(jìn)行學(xué)習(xí),對(duì)于從工具型人才--->思想型人才--->創(chuàng)新型人才這樣的發(fā)展路線來(lái)說(shuō)是很有幫助的,一個(gè)開(kāi)源產(chǎn)品的學(xué)習(xí)我覺(jué)得對(duì)應(yīng)著上面說(shuō)的發(fā)展方式也同樣的可以分為三個(gè)步驟:
1、開(kāi)源產(chǎn)品的使用
首先要學(xué)會(huì)開(kāi)源產(chǎn)品的使用,這個(gè)過(guò)程看似簡(jiǎn)單,但要分開(kāi)源產(chǎn)品,有些簡(jiǎn)單的開(kāi)源產(chǎn)品學(xué)習(xí)起來(lái)會(huì)比較簡(jiǎn)單,有些則很復(fù)雜...
比如象oscache這種工具類(lèi)型的開(kāi)源產(chǎn)品會(huì)比較的簡(jiǎn)單,象hibernate、webwork這種框架類(lèi)型的開(kāi)源產(chǎn)品學(xué)習(xí)起來(lái)就沒(méi)那么簡(jiǎn)單了,而且什么樣才叫學(xué)會(huì)了開(kāi)源產(chǎn)品的使用,這個(gè)還是很難界定的一個(gè)范圍,我覺(jué)得是象開(kāi)源產(chǎn)品中提供的功能都是要學(xué)會(huì)使用的,比如說(shuō)hibernate,你不能說(shuō)只學(xué)會(huì)了單表形式的,關(guān)聯(lián)形式的就不知道該怎么辦了,然后里面的級(jí)聯(lián)、反轉(zhuǎn)、延遲加載什么的都不懂,我覺(jué)得在這樣的情況就可以認(rèn)為是在開(kāi)源產(chǎn)品的使用上學(xué)習(xí)的還不夠。
通常來(lái)講開(kāi)源產(chǎn)品的使用的學(xué)習(xí)還是有很多好的辦法的,現(xiàn)在的開(kāi)源產(chǎn)品大都提供了reference性質(zhì)的文檔、很多還提供了象sample之類(lèi)的東西,一般學(xué)習(xí)使用的時(shí)候可以參照reference做做sample,當(dāng)然,一般來(lái)說(shuō)還是得通過(guò)在實(shí)際項(xiàng)目中使用才能真正的掌握其使用的方式。
所以開(kāi)源產(chǎn)品的使用這個(gè)周期其實(shí)并不一定就很短,雖然很多的開(kāi)源產(chǎn)品上手現(xiàn)在都變得容易了...
但對(duì)于思想型或者創(chuàng)新型人才來(lái)說(shuō),在這個(gè)步驟基本都是可以快速進(jìn)行的,因?yàn)樗枷爰?jí)的改變其實(shí)在現(xiàn)在的開(kāi)源產(chǎn)品中并沒(méi)有怎么出現(xiàn),都是在易用性等方面做改進(jìn)。
2、開(kāi)源產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn)思想
在學(xué)會(huì)了開(kāi)源產(chǎn)品的使用后,為了自己在技術(shù)方面的發(fā)展的話,對(duì)于框架類(lèi)的開(kāi)源產(chǎn)品是要進(jìn)行深入的研究的,對(duì)于工具類(lèi)型的開(kāi)源產(chǎn)品就看自己是否有興趣了,對(duì)于框架類(lèi)的開(kāi)源產(chǎn)品當(dāng)然也是要有挑選的進(jìn)行,選擇符合自己感興趣的技術(shù)方向。
通常來(lái)說(shuō)去學(xué)習(xí)開(kāi)源產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn)思想最基本的方法就是先去查看該開(kāi)源產(chǎn)品基于的一種架構(gòu)層次的思想或者說(shuō)它本身的架構(gòu)層次的設(shè)計(jì),同時(shí)了解相關(guān)的這類(lèi)開(kāi)源產(chǎn)品框架通常涉及的一些架構(gòu)以及設(shè)計(jì)模式(比如MVCFramework通常采用的MVC Pattern、Command Pattern等),在這種情況下再對(duì)照著開(kāi)源產(chǎn)品的代碼進(jìn)行分析,逐步深刻的理解其中的設(shè)計(jì)和實(shí)現(xiàn)的思想。
在掌握了開(kāi)源產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn)思想的情況下,才能真正的合理的在實(shí)際的項(xiàng)目中運(yùn)用該產(chǎn)品。
3、基于開(kāi)源產(chǎn)品的實(shí)際系統(tǒng)設(shè)計(jì)和改進(jìn)點(diǎn)
在學(xué)會(huì)了開(kāi)源產(chǎn)品的使用、了解了開(kāi)源產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn)思想后,才能真正的很好的在實(shí)際的項(xiàng)目中去使用這種產(chǎn)品,因?yàn)橄罂蚣芗?jí)的開(kāi)源產(chǎn)品來(lái)說(shuō)通常會(huì)對(duì)設(shè)計(jì)造成一定的影響,這個(gè)時(shí)候的設(shè)計(jì)很多時(shí)候要基于某種開(kāi)源產(chǎn)品的功能去完成,這個(gè)時(shí)候就依賴于你對(duì)該開(kāi)源產(chǎn)品采用的設(shè)計(jì)思想的熟悉,需要盡量的去發(fā)揮它的作用,當(dāng)然其實(shí)這個(gè)時(shí)候你更多的不是限定于開(kāi)源產(chǎn)品,而是限定在了開(kāi)源產(chǎn)品采取的設(shè)計(jì)思想,其將決定到你的設(shè)計(jì),比如象采用hibernate,其實(shí)我想也許部分人都只是使用hibernate完成了一種從關(guān)聯(lián)模型到關(guān)聯(lián)型對(duì)象的映射,而沒(méi)有真正的充分發(fā)揮OO的封裝、繼承和多態(tài),在這種情況下雖然也是夠用的,但必沒(méi)有做到充分的發(fā)揮采用開(kāi)源產(chǎn)品的優(yōu)勢(shì)。
另外一個(gè)就是基于自己對(duì)開(kāi)源產(chǎn)品的使用、設(shè)計(jì)和實(shí)現(xiàn)思想以及結(jié)合項(xiàng)目的實(shí)際需求,可以考慮提供一定的改進(jìn)點(diǎn),以使得對(duì)于項(xiàng)目更加適用,這也是創(chuàng)新型人才特征的表現(xiàn),^_^