欧美性久久久久久久_日韩欧美精品一区二区综合视频_日韩AV免费精品一区二区_精品亚洲欧美v国产一区二区三区

您的位置: 首頁(yè) > 行業(yè)新聞

干貨|高級(jí)Java程序員進(jìn)階路線了解一下!

來(lái)源:安徽華信智原  |  發(fā)布時(shí)間:2018-06-06  |  瀏覽量:1964

做Java的朋友們總想要達(dá)到更高的境界,用更少的代碼解決更多的問(wèn)題,用更清晰的結(jié)構(gòu)為可能的傳承和維護(hù)做準(zhǔn)備。想想當(dāng)初自己摸著石頭過(guò)河,也看過(guò)不少人介紹的學(xué)習(xí)路線,十多年走過(guò)來(lái)多少還是有些收獲?,F(xiàn)通過(guò)自身經(jīng)歷總結(jié)一篇文章,供弟兄們參考。

1、用好正在用的框架

1.png

在已經(jīng)加入的團(tuán)隊(duì)中,和大家協(xié)作使用團(tuán)隊(duì)已選好的框架。不管框架優(yōu)劣與否,特點(diǎn)如何,選擇了它必然有一定的道理。并且能夠在業(yè)界經(jīng)久流行的框架也一定有它的優(yōu)秀之處。

使用框架第一步是熟悉,可能通過(guò)復(fù)制和修改前人的代碼來(lái)實(shí)現(xiàn)新的功能或修改已有功能,逐漸熟悉該框架的使用方法。

第二步是深入了解,會(huì)用、多用之后,根據(jù)用法和現(xiàn)象掌握其規(guī)律,從而形成對(duì)框架內(nèi)部結(jié)構(gòu)和運(yùn)行機(jī)制的猜測(cè),大部分肯定都是對(duì)的。

第三步是用好,在對(duì)框架內(nèi)部機(jī)制有了一定的感覺(jué)后,逐漸總結(jié)并采用更佳實(shí)踐,達(dá)到同樣目的采用更簡(jiǎn)潔清晰或更高效率的方法??梢詤⒖伎蚣艿摹白罴褜?shí)踐”文檔(比如Hibernate參考手冊(cè)的最后一章),對(duì)沒(méi)有提供“最佳實(shí)踐”文檔的可以自己總結(jié)一些經(jīng)驗(yàn),并不斷完善。

沒(méi)有絕對(duì)的最佳實(shí)踐,只有適應(yīng)于某一場(chǎng)景的最佳實(shí)踐,和適用于大多數(shù)場(chǎng)合的較好實(shí)現(xiàn)。能夠根據(jù)場(chǎng)景選擇不同的模式,是水平提高的標(biāo)志。

2、了解標(biāo)準(zhǔn)類(lèi)庫(kù)、企業(yè)級(jí)技術(shù)和開(kāi)源項(xiàng)目

2.png

Java界現(xiàn)有的積累已經(jīng)很豐富,當(dāng)遇到某個(gè)問(wèn)題感覺(jué)它是個(gè)普遍問(wèn)題時(shí),很有可能就已經(jīng)有現(xiàn)成的標(biāo)準(zhǔn)類(lèi)庫(kù)或開(kāi)源項(xiàng)目等在那里了。掌握好標(biāo)準(zhǔn)類(lèi)庫(kù)和開(kāi)源項(xiàng)目,可以減少工作量,使代碼結(jié)構(gòu)清晰容易理解。企業(yè)級(jí)技術(shù)是指JavaEE平臺(tái)內(nèi)的技術(shù),其多是從已有積累中提煉出的標(biāo)準(zhǔn),比如JPA就很大程度上來(lái)自于Hibernate。企業(yè)級(jí)技術(shù)的運(yùn)用對(duì)程序的標(biāo)準(zhǔn)化很有好處。

對(duì)標(biāo)準(zhǔn)類(lèi)庫(kù)和開(kāi)源項(xiàng)目的了解不分先后,可以是交叉進(jìn)行的,用到了哪個(gè)就看看學(xué)學(xué)哪個(gè)。也可以用業(yè)余時(shí)間挑自己喜歡的學(xué)習(xí)學(xué)習(xí)、做做實(shí)驗(yàn)。

2.1. 標(biāo)準(zhǔn)類(lèi)庫(kù)

從Java自帶的文檔中可以看到標(biāo)準(zhǔn)類(lèi)庫(kù)(以及平臺(tái)工具)的列表以及相互關(guān)系。下面這幅圖就是層次關(guān)系圖:

以挑自己感興趣的點(diǎn)進(jìn)去詳細(xì)了解。

乍一看內(nèi)容眾多,但實(shí)際上可能已經(jīng)有很多已經(jīng)被用過(guò)了。比如JDBC,應(yīng)該是每個(gè)Java程序員在涉世不深時(shí)就已經(jīng)用過(guò)的了吧。JNDI應(yīng)該也是做WEB工程必須接觸的東西。也許只是其中幾個(gè)API,不過(guò)什么都是了解、熟練、精通這三步,了解了,后面就不遠(yuǎn)。

 其中規(guī)則表達(dá)式、XML處理、applet、并發(fā)(多線程)、網(wǎng)絡(luò)、IO、圖形是比較實(shí)用的功能,可以先從它們?nèi)胧?。本地接口(JNI)、管理擴(kuò)展(JMX)、反射等可以用在更高級(jí)一些的場(chǎng)合,會(huì)了之后可以為更多的場(chǎng)景提供解決方案。

2.2. 企業(yè)及技術(shù)

包括JavaMail、JMS、EJB、JPA、JSF、web service等,具體的列表可以到JavaEE技術(shù)官網(wǎng)找到。這些技術(shù)用起來(lái)并不深?yuàn)W,甚至比標(biāo)準(zhǔn)類(lèi)庫(kù)還淺顯。

2.3. 開(kāi)源項(xiàng)目

框架一般都是開(kāi)源項(xiàng)目,目前擁有開(kāi)源項(xiàng)目最多的組織莫過(guò)于Apache??梢酝ㄟ^(guò)需要來(lái)學(xué)習(xí)開(kāi)源項(xiàng)目,比方說(shuō)需要處理Excel文檔,那就去學(xué)用POI;要用web service就看看CXF;需要字符串處理就看看Commons Lang中有沒(méi)有實(shí)現(xiàn);需要IO操作就看看Commons IO中有沒(méi)有實(shí)現(xiàn)。

除了Apache,還有eclipse、springsource和Jboss等多家開(kāi)源機(jī)構(gòu)提供了大量的免費(fèi)好貨,有時(shí)間就去了解一下不失為進(jìn)階的好手段。“君子性非異也,善假于物也“——厲害的家伙不一定是什么都會(huì)自己寫(xiě),而往往是會(huì)結(jié)合使用各種神器。

這里順便說(shuō)一句,很多開(kāi)源項(xiàng)目都用了比較少見(jiàn)的英文單詞或是自造詞作為名字,遇到時(shí)最好去官網(wǎng)上確定它的讀音。很多人把Struts(原意:大搖大擺)讀成了Structs,明顯跟struct(結(jié)構(gòu))搞混了,聽(tīng)起來(lái)實(shí)在業(yè)余。還有PostgreSQL應(yīng)讀作postgres-QL,而不是postgre-SQL,請(qǐng)尊重作者的原意。Debian應(yīng)讀作“戴博伊恩”,是作者夫婦的名字合體,讀成“大便”就太對(duì)不起人家了。Ubuntu也別讀“優(yōu)斑圖”了。

3. 把程序?qū)懙酶?/strong>

3.jpg

3.1. 代碼格式整潔優(yōu)雅

盡量遵循官網(wǎng)上的代碼格式建議,善用開(kāi)發(fā)工具(Eclipse)的自動(dòng)格式化功能。

復(fù)雜的條件、循環(huán)嵌套提煉為方法,把方法名起得有意義,盡量讓后人看程序就好像看直白的英文句子一樣。追求代碼自我注釋。要注意盡量用單詞別用拼音,特別是模塊之間交互的接口,英語(yǔ)單詞和拼音的混雜使用會(huì)讓后人昏死?,F(xiàn)在的電子詞典品種繁多、易于使用,善用它們,讓代碼優(yōu)雅的同時(shí)還可以多認(rèn)識(shí)幾個(gè)單詞。

3.2. 代碼內(nèi)容高效

用過(guò)很多框架和開(kāi)源項(xiàng)目并自己寫(xiě)了不少程序之后,可以開(kāi)始考慮實(shí)踐《Effective Java》中所講的內(nèi)容,何時(shí)何地如何運(yùn)用合適的技術(shù)與機(jī)制。

4. 通過(guò)標(biāo)準(zhǔn)類(lèi)庫(kù)、企業(yè)級(jí)技術(shù)和開(kāi)源項(xiàng)目了解模式

4.png

說(shuō)到模式大家首先想到的可能是“設(shè)計(jì)模式”,有很多初學(xué)者為了進(jìn)步也看了《設(shè)計(jì)模式》這本書(shū),不過(guò)據(jù)我經(jīng)驗(yàn),當(dāng)時(shí)看不懂,不知道那些模式為何存在,也不知道何時(shí)可以用上它們。實(shí)際上所謂“模式”不過(guò)是前人的習(xí)慣用法,被后人認(rèn)為好用并廣泛流傳。所有將前人代碼復(fù)制過(guò)來(lái)改一改就用的,這樣的代碼其實(shí)都可以說(shuō)是某種“模式”的實(shí)現(xiàn)。

有了對(duì)標(biāo)準(zhǔn)類(lèi)庫(kù)、企業(yè)級(jí)技術(shù)和一些開(kāi)源項(xiàng)目的運(yùn)用后,模式的感覺(jué)才會(huì)在頭腦中建立。這些類(lèi)庫(kù)、技術(shù)、項(xiàng)目本身實(shí)現(xiàn)了很多模式,對(duì)它們的使用也是模式。只不過(guò)后者常被稱(chēng)為實(shí)戰(zhàn),而并沒(méi)有當(dāng)做“模式”出現(xiàn)在出版物中。

“模式”除了《設(shè)計(jì)模式》包括《企業(yè)應(yīng)用架構(gòu)模式》、《J2EE核心模式》,也許還有更多其它的。標(biāo)準(zhǔn)類(lèi)庫(kù)和開(kāi)源項(xiàng)目(包括很多流行框架),出于設(shè)計(jì)的靈活性、便捷性、優(yōu)雅性,對(duì)它們有杰出的運(yùn)用。

Spring就是對(duì)工廠模式的實(shí)現(xiàn)。JDBC和JMS是對(duì)抽象工廠方法模式的實(shí)現(xiàn)。

Struts除了大家皆知的MVC,其實(shí)還實(shí)現(xiàn)了J2EE核心模式中的好幾樣。

Hibernate內(nèi)部使用了Proxy模式,而它整體的存在是《企業(yè)應(yīng)用架構(gòu)模式》中“表數(shù)據(jù)入口”的實(shí)現(xiàn)。而老的EJB2.0中的CMB更像是“行數(shù)據(jù)入口”的實(shí)現(xiàn)。

這些模式直接當(dāng)做概念來(lái)學(xué)習(xí),沒(méi)有實(shí)際經(jīng)驗(yàn),就會(huì)像我當(dāng)初一樣不知它們?yōu)楹未嬖谝膊恢绾芜\(yùn)用它們,事倍功半。

現(xiàn)成的產(chǎn)品用多了就有感覺(jué)了。感受它們帶來(lái)的方便,將它們中功能相似的互相比較,就可以看得出各種模式的存在和它們的優(yōu)秀之處了。

5. 了解面向?qū)ο蟮恼嬷B

5.png

面向?qū)ο蟮陌舜笤瓌t在《敏捷軟件開(kāi)發(fā)——原則、模式與實(shí)踐》中有所介紹,其中我最看重“單一職責(zé)”原則,這個(gè)原則在模塊劃分時(shí)很有幫助,其思想甚至可以延伸到組織結(jié)構(gòu)的建設(shè)上。

6. 展望——架構(gòu)師

6.png

有了以上幾步,應(yīng)該就可以作為一個(gè)合格的設(shè)計(jì)人員而存在了。想做到架構(gòu)師,曾經(jīng)有位培訓(xùn)師告訴我們:“學(xué)習(xí)Linux內(nèi)核?!?br/>

大的步驟是:看0.01版了解其結(jié)構(gòu),看0.10版了解其進(jìn)步,看0.12版了解其完善,看最新版了解其現(xiàn)狀。

學(xué)習(xí)方法是使用UML工具,對(duì)下載的Linux內(nèi)核源文件進(jìn)行反向工程,從得到的類(lèi)圖中可以看出模塊依賴(lài)關(guān)系,出度最大的模塊就是系統(tǒng)的核心,從這個(gè)模塊看起,看它如何調(diào)度其它各個(gè)模塊,再去看各模塊如何實(shí)現(xiàn)自己的功能。

結(jié)語(yǔ):

這些步驟并沒(méi)有嚴(yán)格的界限,可以穿插、迭代地進(jìn)行。

學(xué)習(xí)是一個(gè)先發(fā)散后收斂的過(guò)程。開(kāi)始好像面對(duì)一個(gè)扇形,越往外走發(fā)現(xiàn)不會(huì)的越多,需要學(xué)的越多。但到了后來(lái)就會(huì)發(fā)現(xiàn)學(xué)過(guò)的東西相通之處很多,新看的東西能夠快速理解,甚至能夠發(fā)現(xiàn)有些東西不過(guò)是新瓶裝舊酒,看兩眼就會(huì)了。

希望搞Java的朋友們能不斷突破自己,達(dá)到更高的境界!

相關(guān)新聞

友情鏈接 :智原在線

華信智原(貴陽(yáng)中心)|黔ICP備16004548號(hào)-1|咨詢(xún)熱線:4009978118|地址:貴陽(yáng)市花溪大道中段532號(hào)(貴陽(yáng)大數(shù)據(jù)及外包產(chǎn)業(yè)示范基地)|版權(quán)所有:貴陽(yáng)華信智原教育科技有限公司
在線報(bào)名 學(xué)費(fèi)詳情 開(kāi)班信息 職業(yè)護(hù)航 視頻下載

小小華想和您聊一聊

通江县| 绥江县| 门头沟区| 龙江县| 当雄县| 赤峰市| 普定县| 西贡区| 西峡县| 乐安县| 东乡县| 长泰县| 玛曲县| 凉山| 太保市| 宁城县| 泽普县| 禄丰县| 龙川县| 遂昌县| 望谟县| 修文县| 获嘉县| 会泽县| 巴林左旗| 花莲市| 临邑县| 田林县| 嘉祥县| 安义县| 阳高县| 神池县| 建昌县| 定兴县| 汤阴县| 名山县| 道真| 阿荣旗| 古交市| 玉溪市| 民勤县|