欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      JAVA學(xué)習(xí)路線

      時(shí)間:2019-05-12 18:53:15下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《JAVA學(xué)習(xí)路線》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《JAVA學(xué)習(xí)路線》。

      第一篇:JAVA學(xué)習(xí)路線

      1.JAVA學(xué)習(xí)路線

      1.1 基礎(chǔ)語(yǔ)法及JAVA原理

      基礎(chǔ)語(yǔ)法和JAVA原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當(dāng)危險(xiǎn)的。學(xué)習(xí)JAVA也是如此,必須要有扎實(shí)的基礎(chǔ),你才能在J2EE、J2ME領(lǐng)域游刃有余。參加SCJP(SUN公司認(rèn)證的JAVA程序員)考試不失為一個(gè)好方法,原因之一是為了對(duì)得起你交的1200大洋考試費(fèi),你會(huì)更努力學(xué)習(xí),原因之二是SCJP考試能夠讓你把基礎(chǔ)打得很牢靠,它要求你跟JDK一樣熟悉JAVA基礎(chǔ)知識(shí);但是你千萬(wàn)不要認(rèn)為考過(guò)了SCJP就有多了不起,就能夠獲得軟件公司的青睞,就能夠獲取高薪,這樣的想法也是很危險(xiǎn)的。獲得“真正”的SCJP只能證明你的基礎(chǔ)還過(guò)得去,但離實(shí)際開發(fā)還有很長(zhǎng)的一段路要走。

      1.2 OO思想的領(lǐng)悟

      掌握了基礎(chǔ)語(yǔ)法和JAVA程序運(yùn)行原理后,我們就可以用JAVA語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮乃枷肓?。面向?qū)ο?,是一種方法學(xué);是獨(dú)立于語(yǔ)言之外的編程思想;是CBD基于組件開發(fā)的基礎(chǔ);屬于強(qiáng)勢(shì)技術(shù)之一。當(dāng)以后因工作需要轉(zhuǎn)到別的面向?qū)ο笳Z(yǔ)言的時(shí)候,你會(huì)感到特別的熟悉親切,學(xué)起來(lái)像喝涼水這么簡(jiǎn)單。

      使用面向?qū)ο蟮乃枷脒M(jìn)行開發(fā)的基本過(guò)程是:

      ●調(diào)查收集需求。

      ●建立用例模型。

      ●從用例模型中識(shí)別分析類及類與類之間的靜態(tài)動(dòng)態(tài)關(guān)系,從而建立分析模型。

      ●細(xì)化分析模型到設(shè)計(jì)模型。

      ●用具體的技術(shù)去實(shí)現(xiàn)。

      ●測(cè)試、部署、總結(jié)。

      1.3 基本API的學(xué)習(xí)

      進(jìn)行軟件開發(fā)的時(shí)候,并不是什么功能都需要我們?nèi)?shí)現(xiàn),也就是經(jīng)典名言所說(shuō)的“不需要重新發(fā)明輪子”。我們可以利用現(xiàn)成的類、組件、框架來(lái)搭建我們的應(yīng)用,如SUN公司編寫好了眾多類實(shí)現(xiàn)一些底層功能,以及我們下載過(guò)來(lái)的JAR文件中包含的類,我們可以調(diào)用類中的方法來(lái)完成某些功能或繼承它。那么這些類中究竟提供了哪些方法給我們使用?方法的參數(shù)個(gè)數(shù)及類型是?類的構(gòu)造器需不需要參數(shù)?總不可能SUN公司的工程師打國(guó)際長(zhǎng)途甚至飄洋過(guò)海來(lái)告訴你他編寫的類該如何使用吧。他們只能提供文檔給我們查看,JAVA DOC文檔(參考文獻(xiàn)4.4)就是這樣的文檔,它可以說(shuō)是程序員與程序員交流的文檔。

      基本API指的是實(shí)現(xiàn)了一些底層功能的類,通用性較強(qiáng)的API,如字符串處理/輸入輸

      出等等。我們又把它成為類庫(kù)。熟悉API的方法一是多查JAVA DOC文檔(參考文獻(xiàn)4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。

      1.4 特定API的學(xué)習(xí)

      JAVA介入的領(lǐng)域很廣泛,不同的領(lǐng)域有不同的API,沒(méi)有人熟悉所有的API,對(duì)一般人而言只是熟悉工作中要用到的API。如果你做界面開發(fā),那么你需要學(xué)習(xí)Swing/AWT/SWT等API;如果你進(jìn)行網(wǎng)絡(luò)游戲開發(fā),你需要深入了解網(wǎng)絡(luò)API/多媒體API/2D3D等;如果你做WEB開發(fā),就需要熟悉Servlet等API啦。總之,需要根據(jù)工作的需要或你的興趣發(fā)展方向去選擇學(xué)習(xí)特定的API。

      1.5 開發(fā)工具的用法

      在學(xué)習(xí)基礎(chǔ)語(yǔ)法與基本的面向?qū)ο蟾拍顣r(shí),從鍛煉語(yǔ)言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時(shí)候不要急于上手JBuilder/Eclipse等集成開發(fā)環(huán)境,以免過(guò)于關(guān)注IDE的強(qiáng)大功能而分散對(duì)JAVA技術(shù)本身的注意力。過(guò)了這一階段你就可以開始熟悉IDE了。

      程序員日常工作包括很多活動(dòng),編輯、編譯及構(gòu)建、調(diào)試、單元測(cè)試、版本控制、維持模型與代碼同步、文檔的更新等等,幾乎每一項(xiàng)活動(dòng)都有專門的工具,如果獨(dú)立使用這些工具的話,你將會(huì)很痛苦,你需要在堆滿工具的任務(wù)欄上不斷的切換,效率很低下,也很容易出錯(cuò)。在JBuilder、Eclipse等IDE中已經(jīng)自動(dòng)集成編輯器、編譯器、調(diào)試器、單元測(cè)試工具JUnit、自動(dòng)構(gòu)建工具ANT、版本控制工具CVS、DOC文檔生成與更新等等,甚至可以把UML建模工具也集成進(jìn)去,又提供了豐富的向?qū)椭煽蚣艽a,讓我們的開發(fā)變得更輕松。應(yīng)該說(shuō)IDE發(fā)展的趨勢(shì)就是集成軟件開發(fā)中要用到的幾乎所有工具。

      從開發(fā)效率的角度考慮,使用IDE是必經(jīng)之路,也是從一個(gè)學(xué)生到一個(gè)職業(yè)程序員轉(zhuǎn)變的里程碑。

      JAVA開發(fā)使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder占有的市場(chǎng)份額是最大的。JBuilder在近幾年來(lái)一直是JAVA集成開發(fā)環(huán)境中的霸主,它是由備受程序員尊敬的Borland公司開發(fā),在硝煙彌漫的JAVA IDE大戰(zhàn)中,以其快速的版本更新?lián)魯BM的Visual Age for JAVA等而成就一番偉業(yè)。IBM在Visual Age for JAVA上已經(jīng)無(wú)利可圖之下,干脆將之貢獻(xiàn)給開源社區(qū),成為Eclipse的前身,真所謂“柳暗花明又一村”。浴火重生的Eclipse以其開放式的插件擴(kuò)展機(jī)制、免費(fèi)開源獲得廣大程序員(包括幾乎所有的骨灰級(jí)程序員)的青睞,極具發(fā)展?jié)摿Α?/p>

      2.學(xué)習(xí)要點(diǎn)

      確立的學(xué)習(xí)路線之后,我們還需要總結(jié)一下JAVA的學(xué)習(xí)要點(diǎn),這些要點(diǎn)在前文多多少少提到過(guò),只是筆者覺(jué)得這些地方特別要注意才對(duì)它們進(jìn)行匯總,不要嫌我婆婆媽媽啊。

      2.1勤查API文檔

      當(dāng)程序員編寫好某些類,覺(jué)得很有成就感,想把它貢獻(xiàn)給各位苦難的同行。這時(shí)候你要使用“javadoc”工具(包含在JDK中)生成標(biāo)準(zhǔn)的JAVA DOC文檔,供同行使用。

      J2SE/J2EE/J2ME的DOC文檔是程序員與程序員交流的工具,幾乎人手一份,除了菜鳥之外。J2SE DOC文檔官方下載地址:。

      對(duì)待DOC文檔要像毛主席語(yǔ)錄,早上起床念一遍,吃飯睡覺(jué)前念一遍。

      當(dāng)需要某項(xiàng)功能的時(shí)候,你應(yīng)該先查相應(yīng)的DOC文檔看看有沒(méi)有現(xiàn)成的實(shí)現(xiàn),有的話就不必勞神費(fèi)心了直接用就可以了,找不到的時(shí)候才考慮自己實(shí)現(xiàn)。使用步驟一般如下:

      ●找特定的包,包一般根據(jù)功能組織。

      ●找需要使用類,類命名規(guī)范的話我們由類的名字可猜出一二。

      ●選擇構(gòu)造器,大多數(shù)使用類的方式是創(chuàng)建對(duì)象。

      ●選擇你需要的方法。

      2.2 查書/google->寫代碼測(cè)試->查看源代碼->請(qǐng)教別人

      當(dāng)我們遇到問(wèn)題的時(shí)候該如何解決?

      這時(shí)候不要急著問(wèn)別人,太簡(jiǎn)單的問(wèn)題,沒(méi)經(jīng)過(guò)思考的問(wèn)題,別人會(huì)因此而瞧不起你??梢韵日艺視絞oogle中搜一下看看,絕大部分問(wèn)題基本就解決了。而像“某些類/方法如何使用的問(wèn)題”,DOC文檔就是答案。對(duì)某些知識(shí)點(diǎn)有疑惑是,寫代碼測(cè)試一下,會(huì)給你留下深刻的印象。而有的問(wèn)題,你可能需要直接看API的源代碼驗(yàn)證你的想法。萬(wàn)不得已才去請(qǐng)教別人。

      2.3學(xué)習(xí)開源軟件的設(shè)計(jì)思想

      JAVA領(lǐng)域有許多源代碼開放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對(duì)這些工具、框架進(jìn)行分析,領(lǐng)會(huì)其中的設(shè)計(jì)思想,有朝一日說(shuō)不定你也能寫一個(gè)XXX框架什么的,風(fēng)光一把。分析開源軟件其實(shí)是你提高技術(shù)、提高實(shí)戰(zhàn)能力的便捷方法。

      2.4 規(guī)范的重要性

      沒(méi)有規(guī)矩,不成方圓。這里的規(guī)范有兩層含義。第一層含義是技術(shù)規(guī)范,多到

      http:///docs/codeconv/,中文的也有,啊,還要問(wèn)我在哪,請(qǐng)參考3.2.2節(jié)。

      2.5 不局限于JAVA

      很不幸,很幸運(yùn),要學(xué)習(xí)的東西還有很多。不幸的是因?yàn)橐獙W(xué)的東西太多且多變,沒(méi)時(shí)間陪老婆家人或女朋友,導(dǎo)致身心疲憊,嚴(yán)重者甚至導(dǎo)致抑郁癥。幸運(yùn)的是別人要搶你飯碗絕非易事,他們或她們需要付出很多才能達(dá)成心愿。

      JAVA不要孤立地去學(xué)習(xí),需要綜合學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、OOP、軟件工程、UML、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)技術(shù)等知識(shí)。

      軟件工程的由來(lái)

      據(jù)說(shuō)上個(gè)世紀(jì)60年代的程序員都是天才,寫程式就像寫日記一樣,吃過(guò)晚飯沒(méi)事干隨手就可以寫幾個(gè)出來(lái)玩,第二天還可以拿去賣錢。所以那時(shí)候程序員在大家眼中,跟那些搞美術(shù),音樂(lè)的是一類的,被稱為“藝術(shù)家”。

      但事過(guò)境遷,就像任何人都不會(huì)嫌錢多一樣,永遠(yuǎn)都不會(huì)有人嫌CPU快的。于是,隨之而來(lái)的就是硬件的迅猛發(fā)展和越來(lái)越變態(tài)的軟件。記得以前常去同學(xué)家拷游戲,通常幾張軟盤就可以搞定,而現(xiàn)在的游戲,兩三張CD-ROM都算少的了。像如此龐大復(fù)雜的怪物,就算你是如何的天才,一個(gè)人肯定是搞不定的,否則,等你把程式寫出來(lái),人家Intel連奔騰N都開發(fā)出來(lái)了。既要開發(fā)大型的軟件還要追求速度(這樣才能賺錢),于是很自然地,合作的概念被提了出來(lái)。

      在開始合作的初期,由于大家都習(xí)慣了當(dāng)很有個(gè)性的“藝術(shù)家”,結(jié)果可想而知,一個(gè)是畢加索派的,而另一個(gè)是意大利印象派的,再加上一個(gè)畫潑墨山水畫的,要是像這樣湊出來(lái)的東西都能不出問(wèn)題的話,那么Bill早就轉(zhuǎn)行了。所以,那時(shí)侯的大型軟件,據(jù)說(shuō)“藍(lán)屏”比WINDOWS 98還多。

      馬克思告訴我們,萬(wàn)物都是從量變到質(zhì)變的。隨著問(wèn)題的不斷涌現(xiàn),一些master們開始嘗試去總結(jié)經(jīng)驗(yàn),并歸納了一些規(guī)范去指導(dǎo)軟件的分析,設(shè)計(jì),實(shí)現(xiàn),測(cè)試,維護(hù),人員交流協(xié)作,項(xiàng)目預(yù)算及時(shí)限控制等方方面面,這就是軟件工程的前身。

      軟件工程到現(xiàn)在已發(fā)展了30多年,可以說(shuō)是相當(dāng)成熟的了?,F(xiàn)在開發(fā)軟件,據(jù)說(shuō)都是一大幫人排排坐,按著一整套的規(guī)章制度來(lái)干活。于是,軟件開發(fā)成了“工程”,程序員也就淪為“工人”了。

      最初提出問(wèn)題的是Dijkstra。他于1968年寫給ACM的一封題為Goto Statement

      Considered Harmful 的信中,指出了GOTO語(yǔ)句的負(fù)面作用,并提出了解決之道,其引發(fā)的一系列效應(yīng)最終帶來(lái)了軟件工程的誕生。(信的原文可在004km.cn/classics/oct95 上看到,不過(guò),當(dāng)你看到本文的時(shí)候,天知道它還在不在那里?。?/p>

      軟件工程的核心

      無(wú)論是在上個(gè)世紀(jì)還是在現(xiàn)在,軟件開發(fā)所涉及的工作基本上都沒(méi)有變化,它們都起始于一個(gè)實(shí)際需要或某個(gè)靈感,然后就是分析,設(shè)計(jì),編碼,調(diào)試,維護(hù)。這些任務(wù)以某種方式動(dòng)態(tài)地結(jié)合起來(lái)就構(gòu)成了軟件開發(fā)的整個(gè)過(guò)程,這就是所謂的“軟件開發(fā)周期”。

      但對(duì)于這些工作,具體怎樣做,什么時(shí)候做,每個(gè)人都有自己的一套方式,甚至有的人有幾套方式。這樣,當(dāng)幾個(gè)人合在一起干活的時(shí)候,最終的結(jié)果就只能是一片混亂。所以就需要一套規(guī)則,大家都按規(guī)則來(lái)辦事,問(wèn)題就會(huì)少得多。好的規(guī)則就叫做規(guī)范,規(guī)范都是由一些master們根據(jù)經(jīng)驗(yàn)總結(jié)的,又經(jīng)過(guò)長(zhǎng)時(shí)間的歷練,不斷地被補(bǔ)充修正,可以說(shuō)都是精華,按照規(guī)范來(lái)干活,對(duì)于提高軟件質(zhì)量和工作效率自然大有幫助。

      而軟件工程,說(shuō)白了,就是這樣一套用于軟件的團(tuán)隊(duì)開發(fā),以提高軟件質(zhì)量和程序員工作效率為目的的規(guī)范。其核心就是,對(duì)于軟件開發(fā)的5個(gè)重要組成部分:需求分析,設(shè)計(jì),編碼,調(diào)試,維護(hù),如何組織這5個(gè)部分的工作,以及如何完成每一個(gè)工作。簡(jiǎn)單來(lái)說(shuō),就是對(duì)于總體的組織和對(duì)于局部的實(shí)現(xiàn)。

      規(guī)范只是提供一個(gè)好的例子,以描述一種思想,具體到每一個(gè)環(huán)節(jié)怎樣實(shí)現(xiàn),對(duì)于不同的公司或團(tuán)體則是各有千秋,因?yàn)楦揪筒豢赡艽嬖谝惶追胖煜陆钥尚械臉?biāo)準(zhǔn)。就像C++,也只是提供了一套標(biāo)準(zhǔn),不同的編譯器都有各自的實(shí)現(xiàn),對(duì)標(biāo)準(zhǔn)的支持程度也互不相同。所以,在不同的公司或團(tuán)體中,盡管核心思想都是大同小異,但具體到每一個(gè)步驟,往往都是不相同的。我手上就有一份GB8567-88的文檔模板,對(duì)于那些頂多只有幾千行的小程序來(lái)說(shuō),假如真按上面的要求全寫上了,簡(jiǎn)直就是一種折磨!據(jù)說(shuō),當(dāng)前業(yè)界最權(quán)威的標(biāo)準(zhǔn)是CMM。

      軟件開發(fā)過(guò)程的組織

      如何組織軟件開發(fā)過(guò)程中的每一個(gè)步驟,就是軟件開發(fā)周期模型要解決的問(wèn)題。其實(shí)開發(fā)軟件,就像是解決一個(gè)邏輯問(wèn)題。想想自己平時(shí)是怎樣寫程序的。首先是要有一個(gè)想法,即我寫的這個(gè)程序是要干什么的;然后就是對(duì)要實(shí)現(xiàn)的核心功能大概構(gòu)思一種或多種實(shí)現(xiàn)方法,并從中選出一種自認(rèn)為是較好的;接下來(lái)就是將涉及的各種主要或次要功能分成各個(gè)模塊;最后就是分模塊來(lái)編碼和DEBUG。在我看來(lái),除了第一步外,其余的步驟應(yīng)該是一個(gè)循環(huán)的過(guò)程。在編碼的過(guò)程中,你總是需要不斷地回過(guò)頭來(lái)修改原先的模塊設(shè)計(jì),甚至最初選定的實(shí)現(xiàn)算法。例如,最簡(jiǎn)單的情況是,你通常都會(huì)突然發(fā)現(xiàn)在兩個(gè)成員函數(shù)中有相同的代碼,這時(shí),程序員的直覺(jué)告訴你,你應(yīng)該為你的類再添加一個(gè)private成員函數(shù)并將公共的代碼放于其中;又或者是,你突然發(fā)現(xiàn)一個(gè)模塊中的某個(gè)功能具有很高的通用性,完全可以提取出來(lái)作為一個(gè)獨(dú)立的功能組件,而你也確實(shí)應(yīng)該這樣做;要是倒霉一點(diǎn)的話,你很有可能會(huì)在最后調(diào)試的時(shí)候突然發(fā)現(xiàn),你的程序跑得太慢了,連你自己都無(wú)法忍受。于是你找呀找,終于找到了80/20中的那段可惡的20,原來(lái)是用了一個(gè)O(N)的算法,這時(shí)你就得老老實(shí)實(shí)地?fù)Q一個(gè)更好的算法。

      總之,除非你是先知,否則,對(duì)于一個(gè)具有一定規(guī)模和復(fù)雜度的軟件來(lái)說(shuō),在“設(shè)計(jì)—編碼”這個(gè)過(guò)程中,實(shí)在有太多的不可預(yù)知性和變化性,你根本不可能全盤地把握住每一個(gè)細(xì)節(jié)。當(dāng)然,這是建立在我現(xiàn)時(shí)的水平之上的觀點(diǎn)。我不知道是否成為高手以后會(huì)有所不同,因?yàn)槲疑磉厸](méi)有那樣的人。

      既然軟件開發(fā)是一個(gè)具有不可預(yù)知性和變化性的動(dòng)態(tài)的過(guò)程,那么,對(duì)其每一個(gè)步驟的組織,即周期模型,就必須包容它的這種性質(zhì)。

      現(xiàn)在來(lái)看一下最古老,最經(jīng)典,同時(shí)也是最倍受批評(píng)的瀑布模型。

      瀑布模型是一種線性模型,其最大的特點(diǎn)就是簡(jiǎn)單直觀。它將軟件開發(fā)過(guò)程規(guī)劃為“分析—設(shè)計(jì)—編碼—測(cè)試—維護(hù)”的線性過(guò)程,也就是說(shuō),你必須首先把你的軟件要干的每一件工作都分析得徹徹底底,再對(duì)每一個(gè)模塊,每一個(gè)接口,事無(wú)巨細(xì),都設(shè)計(jì)得非常完美,然后才開始編碼的工作,并且在編碼的時(shí)候就像在對(duì)著圖紙砌模型,根本不用再回頭作任何修改,當(dāng)然,是在把所有的代碼都寫完以后才開始測(cè)試的。

      整個(gè)過(guò)程,光想一下就覺(jué)得冒冷汗!

      瀑布模型完全忽視了軟件開發(fā)過(guò)程的動(dòng)態(tài)變化??峙轮挥心切┮呀?jīng)發(fā)展得非常成熟,且規(guī)模不大的系統(tǒng),例如:用Access做后臺(tái),用VB畫前端的數(shù)據(jù)庫(kù)應(yīng)用程序,才有瀑布模型一展拳腳的地方。

      相比之下,現(xiàn)在常用的一些周期模型則更接近于人的自然思維,例如螺旋模型就是一種我比較喜歡的模型。

      軟件開發(fā)過(guò)程的實(shí)現(xiàn)

      具體到每一步的工作要怎樣完成,我前面已提到過(guò),是非常靈活的,只要把握住大體的方向就行。在進(jìn)行分析,設(shè)計(jì),編碼,調(diào)試,維護(hù)這幾部分的工作的時(shí)候,最核心的就是文檔的編寫。文檔的作用在于以下3個(gè)方面:一是可以幫助整理思路。把要完成的目標(biāo),系統(tǒng)的結(jié)構(gòu),每一個(gè)模塊的功能等整理一下,然后分門別類地寫下來(lái),這樣在開發(fā)的過(guò)程中,就有據(jù)可依,在需要回過(guò)頭來(lái)修改設(shè)計(jì)的時(shí)候,也有證可考。二是便于交流。想象一下開會(huì)時(shí)的情形。一大幫子人爭(zhēng)先恐后,激烈辯論,然后會(huì)終人散,思想靈感也就隨之散了,結(jié)果是開了半天會(huì),什么也沒(méi)討論出來(lái)。這就是后來(lái)會(huì)議記錄被發(fā)明出來(lái)的原因。在腦子里的東西一多,就會(huì)散而且亂,用語(yǔ)言表達(dá)的時(shí)候,很容易會(huì)丟三落四,別人也很難把握住你的思想。但經(jīng)過(guò)整理寫在紙上以后,則會(huì)清晰得多,無(wú)論是別人還是自己,看起來(lái)都可以一目了然。三是可以作為以后維護(hù)時(shí)的參考資料。有一句名言:“筆和紙永遠(yuǎn)都比大腦可靠”,意思就是說(shuō),放在大腦里的東西說(shuō)不準(zhǔn)哪天就忘了,但寫在紙上的東西,只要不發(fā)生什么意外,一般是丟不了的。當(dāng)過(guò)了一段時(shí)間,你需要再回過(guò)頭來(lái)修改你的程序的時(shí)候,你就會(huì)發(fā)現(xiàn),你以前寫下的文檔實(shí)在太有價(jià)值了。別指望你的源代碼,對(duì)于復(fù)雜一點(diǎn)的程序來(lái)說(shuō),單純的源代碼幾乎會(huì)扼殺掉你所有的時(shí)間。

      至于文檔怎樣寫,教科書上大多都是一條一條列得滿滿的,就像一些地方政府的規(guī)章制度一樣,其實(shí)大可不必,只要能滿足需要就行。如果是在公司,則每個(gè)公司大多都有一套自己內(nèi)部的文檔模板,個(gè)人沒(méi)有選擇的余地。而對(duì)于像我這種業(yè)余的,寫個(gè)程序除了練練手藝,無(wú)非就是供自己和親朋好友玩玩,則根本沒(méi)必要搞得過(guò)于復(fù)雜。以下就是我自己的一份文檔模板的概要,麻雀雖小,但五臟俱全。

      可行性分析 就是關(guān)于當(dāng)前項(xiàng)目能不能干的分析結(jié)果。主要考慮的方面包括:是否能把這個(gè)項(xiàng)目開發(fā)出來(lái);假如可以的話,預(yù)計(jì)需要多少時(shí)間,能否滿足客人的時(shí)間要求;需要多少人力和資金的投入;最重要的是,這個(gè)項(xiàng)目能否賺錢,能賺多少。還要對(duì)可能存在的風(fēng)險(xiǎn)進(jìn)行評(píng)估,例如,萬(wàn)一項(xiàng)目主管被車撞了要怎么辦。當(dāng)然,這對(duì)于我來(lái)說(shuō)毫無(wú)意義,我在這里寫上只是為了保持完整而已。

      項(xiàng)目描述 這是在決定立項(xiàng)以后,對(duì)當(dāng)前項(xiàng)目的一份扼要說(shuō)明。必須包括以下幾個(gè)方面:

      (1)項(xiàng)目的名稱或編號(hào);(2)對(duì)客戶方的描述;(3)對(duì)開發(fā)人員的描述;(4)工程任務(wù)的描述;(5)工程的輸入和輸出;(6)開發(fā)環(huán)境;(7)其他的附加條件。在這里,對(duì)工程任務(wù)的描述是從整體的角度來(lái)說(shuō)的,例如:能對(duì)當(dāng)前的象棋棋局進(jìn)行分析并作出最優(yōu)決策的人工智能系統(tǒng)。而工程的輸入輸出則可以這樣寫:輸入當(dāng)前的象棋棋局的數(shù)據(jù)描述;輸出最優(yōu)的棋步,包括選擇行動(dòng)的棋子和步法。

      需求分析 就是對(duì)客戶要求的功能的定義。注意這里用了“定義”這個(gè)詞,這就意味著對(duì)客戶需求的說(shuō)明,盡管不一定要是形式定義,但也必須是精確,無(wú)歧義的。同時(shí),還要列

      出程序的功能模塊和邏輯流程,即與客戶的每一項(xiàng)功能要求對(duì)應(yīng)的程序功能模塊有哪些以及這些功能模塊是按照怎樣的邏輯步驟來(lái)逐項(xiàng)完成客戶的要求的。注意這里所說(shuō)的功能模塊與編碼時(shí)所說(shuō)的程序模塊的區(qū)別。對(duì)于客戶的一個(gè)復(fù)雜的功能要求,一般可以用分治法分為一個(gè)或多個(gè)子功能,每一個(gè)子功能對(duì)應(yīng)一個(gè)功能模塊,而每一個(gè)功能模塊則可以由一個(gè)或多個(gè)程序模塊來(lái)實(shí)現(xiàn)。功能模塊是建立在設(shè)計(jì)邏輯上的,而程序模塊則是直接面向?qū)崿F(xiàn)的。在用OO編程的時(shí)候,我通常以類作為程序模塊劃分的基本單元。綜上所述,這個(gè)部分的文檔必須包括3個(gè)部分:(1)客戶需求的詳細(xì)描述;(2)程序功能模塊的劃分以及其與客戶需求的對(duì)應(yīng)關(guān)系;(3)功能模塊的邏輯流程。

      軟件設(shè)計(jì) 這就是對(duì)程序的每一個(gè)模塊的詳細(xì)設(shè)計(jì)的說(shuō)明文檔。其由以下幾部分組成:

      (1)程序模塊與功能模塊的對(duì)應(yīng)關(guān)系和相關(guān)描述;(2)實(shí)現(xiàn)每個(gè)功能模塊的程序模塊的邏輯流程和組織結(jié)構(gòu);(3)對(duì)每一個(gè)程序模塊的詳細(xì)描述。這個(gè)部分的文檔是改動(dòng)得最多的,如果與螺旋周期模型結(jié)合,甚至需要循環(huán)地對(duì)每一個(gè)模塊進(jìn)行深入設(shè)計(jì)和細(xì)化,所以,為了便于管理,我通常都對(duì)每一個(gè)較復(fù)雜的模塊都單獨(dú)立一份文檔。至于模塊的流程圖或結(jié)構(gòu)圖,一直都是我最頭疼的問(wèn)題,那一大堆琳瑯滿目的畫法和符號(hào)往往令人無(wú)所適從。其實(shí)對(duì)于個(gè)人來(lái)說(shuō),只要能把意思表達(dá)出來(lái),想怎樣畫都無(wú)所謂,關(guān)鍵是自己要有一套標(biāo)準(zhǔn),別在這個(gè)圖中,矩形表示過(guò)程,而在另一個(gè)圖中,則是表示I/O。對(duì)每個(gè)符號(hào)表示的意思進(jìn)行說(shuō)明那是必須的,不然別人看起來(lái)會(huì)一頭霧水。假如嫌麻煩的話,就干脆使用那些被大多數(shù)人認(rèn)可的標(biāo)準(zhǔn),例如UML圖。但以后如果進(jìn)到公司,還是老老實(shí)實(shí)地按公司規(guī)矩辦事吧。

      開發(fā)日志 我一直都認(rèn)為這是文檔中最有趣的部分。開發(fā)日志相當(dāng)于編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時(shí)突然萌發(fā)的靈感,或?qū)Υa的一些微小的修改,或?qū)Τ绦蚪Y(jié)構(gòu)的一些微小變動(dòng)等,還要對(duì)上述這些修改變動(dòng)作些說(shuō)明,例如,為什么要改成現(xiàn)在的這個(gè)樣子。別小看這些記錄,它往往會(huì)成為你以后對(duì)程序進(jìn)行維護(hù)時(shí)的重要依據(jù)。要知道,人的IQ,EQ等,是會(huì)隨著人的生理和心理狀態(tài)的不同而變化的。在某個(gè)時(shí)刻,你可能會(huì)靈光一閃,做出了一個(gè)非常偉大的改動(dòng),但過(guò)了一段時(shí)間,當(dāng)你再回過(guò)頭來(lái)重新閱讀同一段代碼的時(shí)候,你很有可能只記得在這里的改動(dòng)是非常明智的,可是卻無(wú)論如何也想不起其明智在哪里。這時(shí),一份日志就會(huì)省卻你不少的麻煩。

      測(cè)試分析 用于指出程序存在或潛在的缺陷和錯(cuò)誤,以及程序性能的數(shù)字描述。其包括幾個(gè)部分:(1)對(duì)被測(cè)模塊的描述;(2)測(cè)試人員;(3)對(duì)該模塊每個(gè)功能的測(cè)試的詳細(xì)描述;(4)指出當(dāng)前存在或潛在的問(wèn)題。在測(cè)試描述中應(yīng)該包括輸入的數(shù)據(jù)集和輸出的結(jié)果,還有運(yùn)行的時(shí)間等。對(duì)于公司來(lái)說(shuō),對(duì)測(cè)試分析的要求是非常嚴(yán)格的。但對(duì)于我個(gè)人來(lái)說(shuō),我只是將其作為一份模塊測(cè)試的文字記錄,以防會(huì)忽略掉某些已知的缺陷和錯(cuò)誤,以及對(duì)一些核心模塊的時(shí)間和空間效率進(jìn)行簡(jiǎn)單的測(cè)試,以便日后翻查。

      第二篇:Java學(xué)習(xí)路線

      怎么學(xué)習(xí)Java,這是很多新手經(jīng)常會(huì)問(wèn)我的問(wèn)題,現(xiàn)在我簡(jiǎn)單描述下一個(gè)Java初學(xué)者到就業(yè)要學(xué)到的一些東西:

      首先要明白Java體系設(shè)計(jì)到得三個(gè)方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,我們經(jīng)常說(shuō)到的JDK,就主要指的這個(gè),它是三者的基礎(chǔ),屬于桌面級(jí)應(yīng)用開發(fā),這部分如果學(xué)得好很容易拓展J2EE和J2ME。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手機(jī),PDA等等。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業(yè)級(jí)Java,適合企業(yè)的大型應(yīng)用開發(fā)。

      J2SE:

      新手最初學(xué)習(xí)的時(shí)候先要從J2SE開始學(xué)起,所包含的內(nèi)容主要分為:面向?qū)ο蟾拍畹睦斫?、Java基本語(yǔ)法的學(xué)習(xí),Java桌面圖形界面應(yīng)用程序的開發(fā),掌握常用的Java API等(關(guān)鍵是要學(xué)會(huì)怎樣查閱)。

      重點(diǎn):Java基本語(yǔ)法(循環(huán)結(jié)構(gòu),數(shù)據(jù)類型,數(shù)組,運(yùn)算符等)、Swing,awt,事件機(jī)制、文件輸入輸出流處理等

      難點(diǎn):面向?qū)ο笏枷氲睦斫猓ń涌凇㈩惖龋?、線程、socket網(wǎng)絡(luò)編程等

      視頻教程推薦:孫鑫的Java基礎(chǔ)視頻教程、張孝祥的Java基礎(chǔ)視頻教程,講的都很細(xì),而且這兩位老師在教學(xué)方面都有很好的經(jīng)驗(yàn)。

      J2EE:

      在學(xué)習(xí)了J2SE之后,你可以嘗試著慢慢過(guò)渡到J2EE,當(dāng)然,學(xué)習(xí)J2EE海需要很多非JAVA技術(shù)的支撐,比如數(shù)據(jù)庫(kù)技術(shù),網(wǎng)頁(yè)編程技術(shù)等等,待會(huì)我會(huì)詳細(xì)介紹這兩方面的內(nèi)容。J2EE有三個(gè)必學(xué)的框架,如果你說(shuō)你學(xué)了J2EE,但又不會(huì)這三個(gè)框架的話,那會(huì)讓人笑掉大牙,這三個(gè)框架分別是Struts、Spring和Hibernate,雖然這三個(gè)框架應(yīng)用很廣,但不代表這三個(gè)框架就代表了J2EE,J2EE還有很多其他的東西,比如EJB,作為一款重量級(jí)(此重量級(jí)不是指重量級(jí)選手那個(gè)意思,此重量級(jí)非彼重量級(jí))框架,雖然這個(gè)應(yīng)用慢慢的再被其他框架所取代,但EJB3.0的出現(xiàn)也給它帶回一些生機(jī),作為一個(gè)分布式應(yīng)用的框架,也是大家要去學(xué)習(xí)和了解的知識(shí)。

      當(dāng)然,剛才說(shuō)到J2EE包含的范圍很廣,即使我把我所了解的所有技術(shù)說(shuō)出來(lái),也并不能代表J2EE,這是一個(gè)很深很廣的學(xué)問(wèn),需要大家以后再工作的時(shí)候慢慢去發(fā)現(xiàn)了。我所了解的還包括:

      JDBC:Java數(shù)據(jù)庫(kù)連接對(duì)象,基礎(chǔ)中的基礎(chǔ),Hibernate也只是對(duì)它的封裝而已 JNDI: Java 命名與目錄接口,J2EE重要規(guī)范之一 EJBS: 上面已經(jīng)提到過(guò)了

      RMI: 提供遠(yuǎn)程調(diào)用方法的支持,主要用于程序分布式開發(fā) JMS: Java消息服務(wù),中間件技術(shù)

      JAVA IDL: 提供J2EE平臺(tái)與CORBA交互能力和互聯(lián)能力的技術(shù) JTS: 組件事務(wù)監(jiān)視器 JTA: 事務(wù)劃分的一個(gè)技術(shù) JAVAMAIL: Java中的郵件技術(shù) JAF: Java啟動(dòng)框架,沒(méi)研究過(guò) Log4j,一款日志處理的框架應(yīng)用

      Junit:?jiǎn)卧獪y(cè)試的好幫手

      freemarker、velocity:兩款不錯(cuò)的模板引擎

      與Flash的交互Flex:目前很多的SNS應(yīng)用就是使用到了這個(gè)技術(shù)

      Web services:想知道我們論壇天氣預(yù)報(bào)的效果是怎么做的嗎?請(qǐng)關(guān)注這個(gè)技術(shù) SOA:面向服務(wù)架構(gòu),未來(lái)技術(shù)發(fā)展的趨勢(shì)之一 ……

      不過(guò)前面介紹到得這些都不是J2EE的基礎(chǔ),是屬于框架應(yīng)用級(jí)別的.要真正把上面說(shuō)到的知識(shí)掌握好,還是的學(xué)習(xí)J2EE最核心的東西:JDBC、JSP、servlet和JavaBean,后面三個(gè)也是學(xué)習(xí)SSH的基礎(chǔ)(StrutsSpringHibernate的簡(jiǎn)稱).鑒于J2EE的內(nèi)容太過(guò)復(fù)雜,建議大家最初只學(xué)習(xí): JSP, servlet和JavaBean,等這個(gè)基礎(chǔ)掌握好再把SSH學(xué)習(xí)了,再對(duì)其他J2EE技術(shù)有個(gè)大致的了解就可以出去找工作了。當(dāng)然,找工作的前提除了把Java學(xué)習(xí)好,還會(huì)有一些其他的技術(shù)也是必須要掌握的。數(shù)據(jù)庫(kù)技術(shù):

      數(shù)據(jù)庫(kù)幾乎是程序中不可或缺的一部分,在整個(gè)軟件開發(fā)中更是占據(jù)了重要作用.數(shù)據(jù)庫(kù)在整個(gè)軟件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做軟件,就要先設(shè)計(jì)好的數(shù)據(jù)庫(kù).目前數(shù)據(jù)庫(kù)幾乎都是關(guān)系型數(shù)據(jù)庫(kù),代表的有: SQL Server,目前最新的好像是2008,我不是很喜歡追趕時(shí)髦,用的還是2005,不過(guò)也很不錯(cuò)了,在此之前還有2000.MySQL,最知名的開源數(shù)據(jù)庫(kù)之一,我很喜歡它的小巧耐用,學(xué)過(guò)SQL SERVER數(shù)據(jù)庫(kù)再學(xué)它,無(wú)師自通,易如反掌.ORACLE.甲骨文公司的產(chǎn)品,大型數(shù)據(jù)庫(kù),正版的一般公司買不起.只有看看了,不過(guò)現(xiàn)在Java開發(fā)60%都是會(huì)使用到這個(gè)數(shù)據(jù)庫(kù),再加上現(xiàn)在甲骨文已經(jīng)把sun公司收購(gòu)了,JAVA和ORACLE得關(guān)系更加曖昧,各位得多花些時(shí)間在這上面了.除了這些,你還應(yīng)該了解一些桌面應(yīng)用軟件開發(fā)用到的數(shù)據(jù)庫(kù),比如說(shuō)sqlite。你在制作安裝程序的時(shí)候可以把這個(gè)數(shù)據(jù)庫(kù)打包進(jìn)你的安裝程序。

      網(wǎng)頁(yè)編程基礎(chǔ):

      網(wǎng)頁(yè)編程基礎(chǔ)要學(xué)的內(nèi)容也比較多,但主要集中在以下這三個(gè)技術(shù)之上,大家每天看的各種樣式的網(wǎng)頁(yè)都是它們呈現(xiàn)的: HTML:超文本標(biāo)記語(yǔ)言 CSS:層疊樣式表

      Javascript:瀏覽器客戶端腳本語(yǔ)言

      現(xiàn)在更是流行各種JavaScript庫(kù),比如:Jquery、ExtJs等,你要是會(huì)其中的某一個(gè)庫(kù)的使用,找工作so easy。

      J2ME:

      如果你在學(xué)習(xí)了以上技術(shù)還不過(guò)癮,可以再學(xué)習(xí)手機(jī)程序的開發(fā),就我個(gè)人看來(lái),開發(fā)手機(jī)程序技術(shù)其實(shí)蠻簡(jiǎn)單的,難點(diǎn)在于優(yōu)化,比如怎么讓你寫的程序盡量的節(jié)約手機(jī)資源,“代碼誠(chéng)可貴,手機(jī)價(jià)更高“,所以不得不比PC機(jī)多考慮很多成本和實(shí)用性問(wèn)題。J2ME的學(xué)習(xí)的話,切忌不要單純的再模擬器上測(cè)試,一定要找真機(jī)測(cè)試,真機(jī)和模擬器的效果之間差別是很大的。更多手機(jī)開發(fā)技術(shù),有興趣的朋友可以和我一起探討。

      開發(fā)工具:

      開發(fā)工具的選擇主要還是看大家的習(xí)慣,我個(gè)人比較喜歡使用eclispe,功能很強(qiáng)大,也很好拓展其他的功能。當(dāng)讓初學(xué)你也可以選擇JCreator,或者最好就直接用記事本。等你熟悉了Java代碼之后,就可以使用JBuilder、eclispe或者netbeans這一類的工具了。

      先說(shuō)到這里先,以后大家一起完善這個(gè)帖子。盡量再給大家整理一些學(xué)習(xí)的資源在這里。也歡迎大家一起整理我文章中提到的一些技術(shù)資源和開發(fā)工具。最后,再和大家分享一句話:生命欣欣向榮,唯奮斗不息。也和大家分享一幅Java學(xué)習(xí)路線圖:

      第三篇:JAVA學(xué)習(xí)路線

      Java是一個(gè)通用的編程語(yǔ)言,其實(shí)可以干很多事,怎么學(xué)Java就看怎么用了。

      但有一些一般的步驟:

      1.熟悉一種文本編輯器,比如vim, eclipse, notepad++, textmate等。知道哪些是開源的,哪些是閉源的,哪些要收費(fèi)。養(yǎng)成不用盜版軟件的習(xí)慣。

      2.安裝JDK(建議用你的Linux發(fā)行版自帶的軟件包管理器安裝openjdk,過(guò)程中可能需要讀發(fā)行版特定的文檔)

      3.寫一個(gè)Java的Hello world程序,并用命令行工具javac編譯,再用java命令運(yùn)行這個(gè)程序。過(guò)程中熟悉源代碼、字節(jié)碼、虛擬機(jī)這些東西,以及Java的包(package)對(duì).class文件所在的路徑的影響。

      3.5.如果這兩個(gè)命令行工具使用熟練了,可以開始選一個(gè)喜歡的集成開發(fā)環(huán)境,比如Eclipse。當(dāng)然,養(yǎng)成不用盜版軟件的習(xí)慣。熟悉一下如何建立“工程”,以及快捷鍵的使用。

      4.學(xué)習(xí)Java的面向過(guò)程編程,包括基本數(shù)據(jù)結(jié)構(gòu)、表達(dá)式、語(yǔ)句、控制流、函數(shù)調(diào)用。

      5.學(xué)習(xí)Java的面向?qū)ο缶幊蹋?、引用類型和值類型的區(qū)別、成員、方法、訪問(wèn)控制、繼承、多態(tài)、接口、接口實(shí)現(xiàn)。順便學(xué)習(xí)一下面向?qū)ο蟮幕舅枷?,即?duì)象、消息、封裝、繼承、多態(tài)等,這些通用的內(nèi)容不是Java特有的。

      5.5 這時(shí)候應(yīng)該已經(jīng)涉及了Java的垃圾回收。要留意即使有垃圾回收的情況下也會(huì)發(fā)生的內(nèi)存泄露(如自己設(shè)計(jì)數(shù)組容器,元素是引用,邏輯上刪除了元素,但并沒(méi)有清成null)。

      6.學(xué)習(xí)Java的異常處理,但更重要的是學(xué)習(xí)什么時(shí)候用特殊返回值而不使用異常,什么時(shí)候應(yīng)該拋出異常而不處理異常,知道什么是pokemon catch及其危害,了解為什么Java的checked exception是一個(gè)糟糕的特性。如果愿意,同時(shí)學(xué)習(xí)一下Java1.7的try-with-resource語(yǔ)句和AutoCloseable接口。

      7.熟悉Java常用的數(shù)據(jù)結(jié)構(gòu),如基本的數(shù)組類型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList實(shí)現(xiàn);以及java.util.Map接口和java.util.HashMap實(shí)現(xiàn)。(java1.5以前的沒(méi)有泛型參數(shù)的就不用碰了)同時(shí)留意一下基本類型int, double等和裝箱類型Integer和Double的區(qū)別,以及它們是如何自動(dòng)轉(zhuǎn)換的。

      8.熟悉Java標(biāo)準(zhǔn)庫(kù)里的各種工具,包括日期時(shí)間、字符串格式化、IO等。知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器會(huì)幫你關(guān)掉文件。

      9.學(xué)習(xí)一下Java的命名習(xí)慣,以及JavaBeans的常規(guī),知道為什么getter/setter比直接操作成員變量好。按這種方式給Java的變量、方法命名。同時(shí)看看你的IDE能不能自動(dòng)幫你生成getter和setter。

      10.使用一個(gè)第三方的庫(kù)(比如Apache Commons Lang通用工具庫(kù)),讓你的程序依賴于它的二進(jìn)制jar包(而不是直接拷貝源代碼),用命令行編譯、運(yùn)行(注意classpath等);也熟悉一下如何用你的集成開發(fā)環(huán)境添加第三方依賴。感受一下手動(dòng)管理依賴關(guān)系的麻煩。

      11.學(xué)習(xí)Maven的使用,試著讓Maven幫你解決依賴關(guān)系,再試著讓Maven幫你創(chuàng)建一個(gè)Eclipse工程。再試試用Maven打包發(fā)布。

      12.學(xué)習(xí)軟件測(cè)試,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。

      13.讀讀四人幫寫的《設(shè)計(jì)模式》(這本書是用C++和Smalltalk語(yǔ)言為例子的,但仍然適合Java)。具體的是這本書,http:///Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 圖書館應(yīng)該能還借到英文原版,因?yàn)槲医璧竭^(guò)。

      接下來(lái)就看具體要做哪方面的應(yīng)用了,看需求。比如(下面的沒(méi)有順序)

      【....】如果學(xué)Java學(xué)得不舒服了,學(xué)Python。

      * 如果對(duì)面向?qū)ο缶幊痰母拍钣悬c(diǎn)不習(xí)慣,學(xué)Smalltalk。(Ruby也行,但不如Smalltalk經(jīng)典。Ruby的文檔是一大硬傷。)

      * 如果嫌Java太啰嗦,學(xué)Python

      * 如果嫌Java太啰嗦,又想用JVM,自己又有精力,學(xué)Scala

      * 如果對(duì)對(duì)象之間的關(guān)系有點(diǎn)暈,學(xué)一學(xué)UML,以及它的一些圖,可以對(duì)程序和運(yùn)行進(jìn)行直觀的建模。你的IDE也許有插件可以生成UML圖。但是不要太沉迷于這些方法論。

      【調(diào)試和輔助工具】學(xué)習(xí)一下你的集成開發(fā)環(huán)境提供的調(diào)試工具,加一些斷點(diǎn)試試

      * 試試用jconsole或者VisualVM監(jiān)控另一個(gè)jvm的狀態(tài)。

      * 用profiling工具尋找程序中慢的地方。Eclipse有profiling工具。VisualVM也有這樣的功能。(如果不介意使用閉源軟件的話,也試試JProfiler和YourKit)

      * 有的JVM允許在運(yùn)行時(shí)更新代碼。Eclipse可以和某些JVM集成。這樣你可以頻繁修改代碼而不用頻繁重啟JVM。對(duì)于某些“重型”工程很有用。(如果不介意使用閉源軟件的話,也試試jRebel)

      【多線程】學(xué)習(xí)Java的多線程編程以及l(fā)ock、condition的用法(包括傳統(tǒng)Java的synchronized語(yǔ)句以及新加的java.util.concurrent.*),學(xué)習(xí)一下如何讓線程停下來(lái),以及為什么要頻繁確認(rèn)isInterrupted()而不要用Thread.stop()。了解一下多核處理器、緩存、內(nèi)存的關(guān)系,以及為什么多線程編程這么難。

      * 如果還舒服,學(xué)習(xí)一下Runnable的用法,以及自帶的Executer等基本多線程工具。* 應(yīng)該已經(jīng)留意到j(luò)ava.util里面的很多容器不是線程安全的,但是java.util.Collections可以幫你創(chuàng)建一些安全的版本。另外關(guān)注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。

      * 如果有空的話,看看memory model(內(nèi)存一致性模型)和無(wú)鎖同步(見(jiàn)java memory model和java.util.concurrent.atomic)。

      * 如果還有空,再了解一下除了“共享內(nèi)存多線程編程”以外有沒(méi)有別的模型(多進(jìn)程multi-processing、消息傳遞message passing等)。

      【反射、元編程】學(xué)習(xí)Java的反射機(jī)制,以及Annotation的用法。

      * 如果還舒服,試試java.lang.reflect.Proxy的用法。

      * 如果仍然還舒服,玩一玩CGLib(一個(gè)第三方的庫(kù))。

      【網(wǎng)絡(luò)編程】學(xué)習(xí)一下IP, TCP協(xié)議(計(jì)算機(jī)專業(yè)的應(yīng)該學(xué)過(guò),復(fù)習(xí)一下),學(xué)習(xí)Socket編程(注意垃圾回收器不會(huì)幫你關(guān)掉Socket)。

      1.如果不是很關(guān)心HTTP,看看java.nio,學(xué)習(xí)單線程輪詢式IO復(fù)用(Selector)。

      * 如果有點(diǎn)不明白nio的意圖的話,了解一下c10k問(wèn)題。

      * 如果身體沒(méi)有異樣的話,大概了解一下操作系統(tǒng)(包括C語(yǔ)言)提供的select, poll, epoll, kqueue等接口。

      * 如果身體仍然沒(méi)有異樣的話,試著用java.nio寫一個(gè)文件服務(wù)器。

      * 如果還有精力的話,上網(wǎng)扒一扒有沒(méi)有其他的通信庫(kù),如netty等。

      2.如果關(guān)心Web還有HTTP,就學(xué)習(xí)一下HTTP協(xié)議,以及用Java進(jìn)行HTTP的客戶端編程。

      * 如果還舒服,學(xué)學(xué)HTML,寫寫HTML的靜態(tài)網(wǎng)頁(yè)(不需要Java)

      * 如果還舒服,用Java寫一個(gè)基于DOM、XPath或者CSS Selector的網(wǎng)頁(yè)解析器(爬網(wǎng)頁(yè))。

      * 如果還舒服,學(xué)學(xué)Java的Servlet接口(先別學(xué)jsp)進(jìn)行Web服務(wù)器端編程。學(xué)學(xué)標(biāo)準(zhǔn)的Servlet容器怎么用,包括web.xml的用法以及l(fā)istener、filter等概念。以及某個(gè)Servlet容器(如Jetty或者Tomcat)的具體用法。

      * 如果仍然還舒服,試著學(xué)一種模板語(yǔ)言(如haml, velocity, freemarker,【還有其他更好的框架嗎?我不知道】, String.format,如果真的想學(xué)JSP的話JSP倒是也行,但不推薦)。* 如果仍然覺(jué)得舒服,學(xué)學(xué)Spring框架中的Web框架,或者Struts,看你的口味。* 如果還舒服,看看Spring Bean Container以及里面各種亂七八糟的工具。

      * 如果還舒服,或者有需求,了解一下什么是RESTful Web Service,復(fù)習(xí)一下HTTP,找找適合的Java工具。

      * 你可能會(huì)覺(jué)得Jackson是一個(gè)解析JSON用的好用的東西。

      【數(shù)據(jù)庫(kù)】學(xué)習(xí)一下關(guān)系數(shù)據(jù)庫(kù)(計(jì)算機(jī)專業(yè)的應(yīng)該學(xué)過(guò),復(fù)習(xí)一下),包括SQL。選一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)熟悉一下(比如MariaDB,或者(如果你不討厭Oracle的話)用被Oracle收購(gòu)了的MySQL。先脫離Java單獨(dú)學(xué)學(xué))。然后看它們的官方文檔教你怎么用Java連接這種數(shù)據(jù)庫(kù)。這中間會(huì)涉及到JDBC接口。同時(shí)一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!。建議看 http://bobby-tables.com/

      * 可能中間會(huì)涉及“事務(wù)”問(wèn)題,讓你不知不覺(jué)地開始去了解java transaction api(JTA)。* 如果還舒服,學(xué)一學(xué)對(duì)象關(guān)系轉(zhuǎn)換(如Hibernate)。

      * 也可以學(xué)學(xué)非關(guān)系數(shù)據(jù)庫(kù),以及如何用Java訪問(wèn)它們。

      【日志記錄】學(xué)習(xí)一下slf4j和logback的用法。

      * 如果有精力的話,以及大概知道世界上有多少種Java日志框架,以及slf4j是怎么橋接這些框架的。

      【構(gòu)建(build)系統(tǒng)】學(xué)習(xí)一下Ant的用法。

      * 如果還舒服的話,學(xué)習(xí)一下用Ivy從Maven的倉(cāng)庫(kù)里下載軟件包,解決依賴關(guān)系。

      【版本控制】學(xué)習(xí)一種分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推薦Git)的基本用法,以及如何用它管理Java工程。希望你已經(jīng)開始使用Maven了。然后了解一下如何在IDE中使用(Eclipse自帶Git插件)。

      * 如果感覺(jué)很舒服的話,為你們實(shí)驗(yàn)室搭建一個(gè)Linux+SSH+Git服務(wù)器,裝個(gè)GitLab(一種Web界面)。并說(shuō)服同事們不要再用SVN、CVS或者SourceSafe等老舊的“集中式版本控制器”了。

      * 開設(shè)一個(gè)GitHub賬戶。如果你不喜歡Git,就用BitBucket等。

      【持續(xù)集成】自己(或者為你們實(shí)驗(yàn)室)搭建一個(gè)持續(xù)集成(Continuous Integration)服務(wù)器,定期編譯你的程序。

      【零碎工具】淘一淘java.nio.files里面有什么好用的東東,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。

      【XML】學(xué)學(xué)XML、DOM、XPath。XML這東西到處都可能用到。也可以用它寫自己的配置文件。

      * 如果覺(jué)得不舒服了,就學(xué)學(xué)JSON和YAML。

      * 如果還是不舒服,就學(xué)學(xué)文本文件解析。

      【語(yǔ)法分析和編譯器】學(xué)學(xué)Antlr或者別的Parser Generator的用法

      * 如果覺(jué)得舒服,自己寫一個(gè)計(jì)算器。

      * 如果還覺(jué)得舒服,自己寫一種Domain-Specific Language(DSL)。

      【高效容器】學(xué)學(xué)FastUtil或者Trove,如果你需要進(jìn)行大量數(shù)值運(yùn)算的話。

      【分布式計(jì)算】學(xué)學(xué)MapReduce的思想以及它的實(shí)現(xiàn)。

      * 如果還舒服,學(xué)學(xué)Scala語(yǔ)言以及號(hào)稱比MapReduce快得多的Apache Spark。

      【進(jìn)程間通信】看看ActiveMQ、MINA和RMI。

      【其他語(yǔ)言(JVM)】學(xué)習(xí)另一門跑在JVM上的語(yǔ)言或者實(shí)現(xiàn)(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)

      * 如果還舒服,學(xué)一學(xué)Java Scripting API(注意不是JavaScript。給個(gè)鏈接: http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/),然后試著在自己的Java程序里嵌入腳本。

      【其他語(yǔ)言(非JVM)】學(xué)習(xí)另一門通用腳本語(yǔ)言(如Python、Ruby,其實(shí)perl也行,但不推薦),知道什么時(shí)候Java不是最好的選擇。

      【Java語(yǔ)言和Java虛擬機(jī)】通讀一遍(一目十行地讀,不用細(xì)讀)Java Language Specification,以及Java Virtual Machine Specification。

      * 了解以下解釋器(interpreter)、編譯器(compiler)、即時(shí)編譯器(just-in-time compiler)和優(yōu)化器(optimiser)的概念。

      * 如果對(duì)編譯器的話題不感到畏懼,了解一下method JIT和tracing JIT的概念和區(qū)別。

      【內(nèi)存管理】學(xué)學(xué)垃圾回收的幾種基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及為什么樸素的reference counting是不完整的。知道為什么finalizer性能很糟糕,而且標(biāo)準(zhǔn)并不要求finalizer在程序退出前一定會(huì)執(zhí)行。* 如果還舒服,了解一下如何設(shè)置Java虛擬機(jī)的堆大小限制(如HotSpot虛擬機(jī)的-Xmx選項(xiàng)等)。

      * 了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它們什么時(shí)候有用,以及為什么它們實(shí)現(xiàn)起來(lái)有些困難。

      * 如果有精力,了解一下Hotspot虛擬機(jī)的內(nèi)存管理算法是什么樣的。

      【動(dòng)態(tài)裝載】學(xué)學(xué)Java的動(dòng)態(tài)裝載(class loading)

      * 如果還舒服的話,學(xué)學(xué)OSGI以及它的一種實(shí)現(xiàn)(如Felix或者Equinox)

      * 如果仍然很舒服的話,學(xué)學(xué)寫基于Eclipse平臺(tái)的程序。不是Eclipse集成開發(fā)環(huán)境,只是利用他們的圖形框架,寫自己的應(yīng)用程序。

      * 如果還覺(jué)得舒服的話,寫Eclipse集成開發(fā)環(huán)境的插件。

      【本地/外語(yǔ)接口】學(xué)習(xí)一下Java Native Interface(JNI),試著寫一個(gè)Java和C語(yǔ)言混合編程的程序。

      * 如果覺(jué)得不舒服了或者覺(jué)得欲仙欲死,就學(xué)一學(xué)Java Native Access(JNA),試一試不用任何膠水代碼而從Java直接裝載C庫(kù),直接調(diào)用C函數(shù)。

      * 如果連JNA也懶得學(xué),就學(xué)一學(xué)SWIG,自動(dòng)生成綁定。

      * 如果覺(jué)得舒服,就學(xué)一學(xué)Java Virtual Machine Tooling Interface(JVMTI),用C程序來(lái)監(jiān)視JVM的狀態(tài)。

      【密碼學(xué)】學(xué)一學(xué)密碼學(xué),包括編碼、密碼分析、攻擊、對(duì)稱密鑰、公鑰系統(tǒng)、數(shù)字簽名、哈希算法等,看看Java有沒(méi)有實(shí)現(xiàn)。

      * 如果覺(jué)得有點(diǎn)不舒服(你應(yīng)該不會(huì)覺(jué)得舒服吧,除非你是學(xué)密碼學(xué)的,要不然總會(huì)覺(jué)得自己寫的程序有安全漏洞),就寫一個(gè)“人品計(jì)算器”來(lái)放松一下,要求每次輸入同一個(gè)姓名,得到的人品值是固定的,但又要讓人無(wú)法用別人的人品值猜自己的人品值。

      【移動(dòng)終端】學(xué)一學(xué)Android開發(fā)。

      * 如果有精力的話,看看Dalvik虛擬機(jī)是怎么回事。

      * 建議買一個(gè)iPhone或者iPad,或許你再也不想用Android手機(jī)或者平板了。

      【歷史】如果覺(jué)得有些無(wú)聊,就去挖一挖歷史上比較火的可能和Java相關(guān)技術(shù),比如:* Applet,想想它比起html5+css3+javascript的缺點(diǎn)在哪里。

      * AWT、Swing,想想為什么很少有人用Java寫圖形界面程序。你覺(jué)得Swing的程序看上去舒服嗎?中國(guó)人和殘疾人喜歡用Swing程序嗎?

      * JNDI,想想它比起Spring Bean Container的缺點(diǎn)在哪里。

      * JSP,想想它比起MVC結(jié)構(gòu)的缺點(diǎn)在哪里。

      * WSDL/SOAP,把它們和XML-RPC、RESTful Web Service比較一下。

      * XSLT,以及為什么它是圖靈完備的。可是它真的比Java本身更好用嗎?

      * Log4j、java.util.logging、Apache Commons Logging,各自有什么問(wèn)題,以及Log4j的作者本人為什么又開發(fā)了SLF4j和Logback?

      * Java最早是為什么設(shè)計(jì)的?

      * Type erasure是怎么回事?為什么ArrayList不行但ArrayList就可以?挖一挖歷史。

      第四篇:java學(xué)習(xí)的路線

      1、要學(xué)java,肯定首先得把Java語(yǔ)言本身給掌握了,萬(wàn)事開頭難,學(xué)java最難的也是java的入門,學(xué)習(xí)順序是先掌握java的語(yǔ)法(多練就行),再掌握java面向?qū)ο蟮乃枷耄ǚ庋b、繼承、多態(tài)、接口這些東西是重點(diǎn),要多理解),接下來(lái)就是熟悉java常用的API(集合、IO等,主要是跟著書多寫多練),這些東西掌握后,Java語(yǔ)言就算入門了。入門java推薦大家下載張孝祥的《java就業(yè)培訓(xùn)教程》視頻教程,學(xué)java的沒(méi)有不知道這套視頻的,我們宿舍當(dāng)時(shí)都是學(xué)這套視頻入門的。這套視頻最大的好處簡(jiǎn)單易懂,并引用了很多實(shí)用案例,并且還有配套書(書名好像也是java就業(yè)培訓(xùn)教程,新華書店有),省得忘了的地方,動(dòng)不動(dòng)對(duì)著電腦翻視頻了。還有一些視頻也比較好,例如孫鑫的java視頻,馬士兵的java視頻等。不過(guò)對(duì)初學(xué)者而言,選中一套視頻了就跟著好好學(xué),不要下很多視頻,東抓一把、西抓一把,最后啥也沒(méi)學(xué)到。

      2、有java基礎(chǔ)了想馬上從事實(shí)際開發(fā)還是不夠的,接下來(lái)就需要掌握1-2門數(shù)據(jù)庫(kù)技術(shù)了,對(duì)java來(lái)說(shuō)數(shù)據(jù)庫(kù)當(dāng)然是oracle和mysql。oracle數(shù)據(jù)庫(kù)現(xiàn)在還沒(méi)發(fā)現(xiàn)好的視頻,不過(guò)現(xiàn)在大學(xué)都學(xué)了數(shù)據(jù)庫(kù),有了數(shù)據(jù)庫(kù)基礎(chǔ)后,找本好書學(xué)oracle也就不難了。這里推薦何明的《從實(shí)踐中學(xué)習(xí)Oracle/SQL》,作者來(lái)頭很大,有非常深的oracle功底,書寫得由淺入深,相當(dāng)不錯(cuò)。對(duì)程序員來(lái)講,學(xué)數(shù)據(jù)庫(kù)關(guān)鍵是把增刪改查的sql語(yǔ)句學(xué)好了就OK了,不要去摳什么數(shù)據(jù)庫(kù)管理方面的東西。學(xué)了oracle后,要把數(shù)據(jù)庫(kù)和java程序聯(lián)系起來(lái),這時(shí)候就要學(xué)jdbc了,jdbc不難,網(wǎng)上很多資料,大概一周時(shí)間就可以掌握了。

      3、有了上面的基礎(chǔ)后,恭喜你已經(jīng)具備用java開發(fā)企業(yè)級(jí)應(yīng)用的基礎(chǔ)了。這時(shí)候你可以學(xué)習(xí)javaweb試著做點(diǎn)小項(xiàng)目玩了。不過(guò)學(xué)javaweb需要很多雜七雜八的知識(shí)點(diǎn),比如xml、html、javascript、tomcat服務(wù)器等,學(xué)了這些后,大家才可以學(xué)servlet、jsp。學(xué)javaweb推薦大家買《深入體驗(yàn)Javaweb開發(fā)內(nèi)幕-核心基礎(chǔ)》這本書,還是張孝祥寫的,這本書寫的書很有特點(diǎn),很細(xì)很深入,書上還帶大量的實(shí)驗(yàn)案例,一步步講得非常清晰,非常適合初學(xué)者。學(xué)javaweb這本書絕對(duì)是首選,并且這本書也有配套視頻,在網(wǎng)上有下,不過(guò)視頻只有前4章,比較可惜,希望張孝祥老師能早日錄制全套視頻。還有些視頻和書也不錯(cuò),比如李興華的JSP視頻教程、孫鑫的JAVA WEB 開發(fā)詳解等,這些也不錯(cuò),在網(wǎng)上都有免費(fèi)下的。

      4、接下來(lái)為找工作就要學(xué)strutshibernatespringajax這些流行技術(shù)了。這些技術(shù)我學(xué)習(xí)的時(shí)候沒(méi)有視頻,買的孫衛(wèi)琴的書學(xué),花了我大半年時(shí)間才學(xué)明白?,F(xiàn)在幸福多了,網(wǎng)上有很多視頻,個(gè)人推薦大家下傳智播客的視頻看。這個(gè)機(jī)構(gòu)的老師很牛課程很有深度,真正能學(xué)到技術(shù),不會(huì)誤了大家。不過(guò)他們的視頻里老打廣告,很煩。書籍推薦struts看孫衛(wèi)琴的,hibernate看夏昕的,spring看林信良的,具體書名叫什么忘了,大家google一下就清楚了。

      學(xué)完上面這些就可以試著找工作了,我找了40天找著了。順便再說(shuō)一句,自學(xué)不可能不碰到問(wèn)題,CSDN的論壇很不錯(cuò),有問(wèn)題上去問(wèn),一般都會(huì)有人回答你。要找培訓(xùn)班的話北京的傳智播客還不錯(cuò),我宿舍的2個(gè)就在那里,教學(xué)質(zhì)量高,學(xué)完后很輕松都上班了,這家機(jī)構(gòu)就是在外地沒(méi)有分部,想培訓(xùn)要去北京,生活費(fèi)用高,花費(fèi)大。北京還有一些培訓(xùn)也不錯(cuò),達(dá)內(nèi)什么的,可以看看。

      第五篇:java學(xué)習(xí)路線

      1.學(xué)習(xí)路線

      首先是JAVA基礎(chǔ)JAVA SE 之后是JAVA EE,先學(xué)習(xí)Servlet、JSP,然后再學(xué)習(xí)Struts、Hibernate、Spring等框架。

      JAVA SE是JAVA EE的基礎(chǔ),Servlet、JSP是框架的基礎(chǔ)。

      還有數(shù)據(jù)庫(kù),個(gè)人建議學(xué)習(xí)oracle,當(dāng)然其它的像MySQL,MS SQL,都可以,只要會(huì)一個(gè),再學(xué)其它的就會(huì)發(fā)現(xiàn)很類似。

      另外就是html,css,javascript,xml,這些是JAVA WEB編程要用到的。

      建議學(xué)習(xí)順序:

      1、html,css,javascript,xml

      2、JAVA SE

      3、JAVA EE,包括Servlet、JSP、框架

      至于數(shù)據(jù)庫(kù)的學(xué)習(xí),在JAVA之前,之中,之后都可以,建議在JAVA之前,至少在JAVA EE之前。

      推薦資料:

      尚學(xué)堂JAVA視頻,其中較為推薦馬士兵的,在verycd上很容易就能搜到; 孫衛(wèi)琴的《JAVA面向?qū)ο缶幊獭罚懿诲e(cuò)的一本書,可以用來(lái)入門; Bruce Eckel的《Thinking in Java》,可以用來(lái)當(dāng)作參考資料。

      2.學(xué)習(xí)路線

      本人今年畢業(yè),在去年的時(shí)候,就在北京軟件公司工作。簡(jiǎn)單介紹一下學(xué)習(xí)經(jīng)驗(yàn):

      1、從大三開始全心學(xué)習(xí)Java

      2、先是學(xué)習(xí)JAVA基礎(chǔ),對(duì)于Java的學(xué)習(xí),感覺(jué)一點(diǎn)非常重要,就是對(duì)于Java的入門,Java不入門,你會(huì)感覺(jué)很難,但是一旦入門,你將會(huì)感覺(jué)很簡(jiǎn)單,只不過(guò),很多都沒(méi)有學(xué)習(xí)而已,自己可以多花時(shí)間進(jìn)行學(xué)習(xí)。所以Java基礎(chǔ)部門是學(xué)習(xí)Java的重點(diǎn)。

      3、學(xué)習(xí)完Java的語(yǔ)法,開始學(xué)習(xí)j2EE

      4、接著學(xué)習(xí)Javaweb部門,懂的如何制作web工程,這部分要學(xué)習(xí)的包括Html,JSP都是基本要學(xué)習(xí)的。

      5、此時(shí)就開始接觸一些簡(jiǎn)單的數(shù)據(jù)庫(kù)。

      6、這些都完畢之后,就是學(xué)習(xí)一些簡(jiǎn)單的框架,像經(jīng)典的SSH等等??傊?,學(xué)習(xí)Java不要圖快,把Java的基礎(chǔ)學(xué)習(xí)好,同時(shí)學(xué)習(xí)到一定基礎(chǔ)的時(shí)候,推薦看一下Thinking in Java,只要你能夠理解Java的編程思想,你會(huì)很快的入門,一旦入了門。

      你就知道如何去學(xué)習(xí),就是你自己豐富自己了。就不需要?jiǎng)e人帶了,非常期望你也能起來(lái),呵呵。

      3.學(xué)習(xí)路線

      怎么學(xué)習(xí)Java,這是很多新手經(jīng)常會(huì)問(wèn)我的問(wèn)題,現(xiàn)在我簡(jiǎn)單描述下一個(gè)Java初學(xué)者到就業(yè)要學(xué)到的一些東西:

      首先要明白Java體系設(shè)計(jì)到得三個(gè)方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,我們經(jīng)常說(shuō)到的JDK,就主要指的這個(gè),它是三者的基礎(chǔ),屬于桌面級(jí)應(yīng)用開發(fā),這部分如果學(xué)得好很容易拓展J2EE和J2ME。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手機(jī),PDA等等。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業(yè)級(jí)Java,適合企業(yè)的大型應(yīng)用開發(fā)。

      J2SE:

      新手最初學(xué)習(xí)的時(shí)候先要從J2SE開始學(xué)起,所包含的內(nèi)容主要分為:面向?qū)ο蟾拍畹睦斫?、Java基本語(yǔ)法的學(xué)習(xí),Java桌面圖形界面應(yīng)用程序的開發(fā),掌握常用的Java API等(關(guān)鍵是要學(xué)會(huì)怎樣查閱)。

      重點(diǎn):Java基本語(yǔ)法(循環(huán)結(jié)構(gòu),數(shù)據(jù)類型,數(shù)組,運(yùn)算符等)、Swing,awt,事件機(jī)制、文件輸入輸出流處理等

      難點(diǎn):面向?qū)ο笏枷氲睦斫猓ń涌凇㈩惖龋?、線程、socket網(wǎng)絡(luò)編程等

      視頻教程推薦:孫鑫的Java基礎(chǔ)視頻教程、張孝祥的Java基礎(chǔ)視頻教程,講的都很細(xì),而且這兩位老師在教學(xué)方面都有很好的經(jīng)驗(yàn)。

      J2EE:

      在學(xué)習(xí)了J2SE之后,你可以嘗試著慢慢過(guò)渡到J2EE,當(dāng)然,學(xué)習(xí)J2EE海需要很多非JAVA技術(shù)的支撐,比如數(shù)據(jù)庫(kù)技術(shù),網(wǎng)頁(yè)編程技術(shù)等等,待會(huì)我會(huì)詳細(xì)介紹這兩方面的內(nèi)容。J2EE有三個(gè)必學(xué)的框架,如果你說(shuō)你學(xué)了J2EE,但又不會(huì)這三個(gè)框架的話,那會(huì)讓人笑掉大牙,這三個(gè)框架分別是Struts、Spring和Hibernate,雖然這三個(gè)框架應(yīng)用很廣,但不代表這三個(gè)框架就代表了J2EE,J2EE還有很多其他的東西,比如EJB,作為一款重量級(jí)(此重量級(jí)不是指重量級(jí)選手那個(gè)意思,此重量級(jí)非彼重量級(jí))框架,雖然這個(gè)應(yīng)用慢慢的再被其他框架所取代,但EJB3.0的出現(xiàn)也給它帶回一些生機(jī),作為一個(gè)分布式應(yīng)用的框架,也是大家要去學(xué)習(xí)和了解的知識(shí)。

      當(dāng)然,剛才說(shuō)到J2EE包含的范圍很廣,即使我把我所了解的所有技術(shù)說(shuō)出來(lái),也并不能代表J2EE,這是一個(gè)很深很廣的學(xué)問(wèn),需要大家以后再工作的時(shí)候慢慢去發(fā)現(xiàn)了。我所了解的還包括:

      JDBC:Java數(shù)據(jù)庫(kù)連接對(duì)象,基礎(chǔ)中的基礎(chǔ),Hibernate也只是對(duì)它的封裝而已 JNDI: Java 命名與目錄接口,J2EE重要規(guī)范之一 EJBS: 上面已經(jīng)提到過(guò)了

      RMI: 提供遠(yuǎn)程調(diào)用方法的支持,主要用于程序分布式開發(fā) JMS: Java消息服務(wù),中間件技術(shù)

      JAVA IDL: 提供J2EE平臺(tái)與CORBA交互能力和互聯(lián)能力的技術(shù) JTS: 組件事務(wù)監(jiān)視器

      JTA: 事務(wù)劃分的一個(gè)技術(shù) JAVAMAIL: Java中的郵件技術(shù) JAF: Java啟動(dòng)框架,沒(méi)研究過(guò)

      Log4j,一款日志處理的框架應(yīng)用 Junit:?jiǎn)卧獪y(cè)試的好幫手

      freemarker、velocity:兩款不錯(cuò)的模板引擎

      與Flash的交互Flex:目前很多的SNS應(yīng)用就是使用到了這個(gè)技術(shù)

      Web services:想知道我們論壇天氣預(yù)報(bào)的效果是怎么做的嗎?請(qǐng)關(guān)注這個(gè)技術(shù) SOA:面向服務(wù)架構(gòu),未來(lái)技術(shù)發(fā)展的趨勢(shì)之一 ……

      不過(guò)前面介紹到得這些都不是J2EE的基礎(chǔ),是屬于框架應(yīng)用級(jí)別的.要真正把上面說(shuō)到的知識(shí)掌握好,還是的學(xué)習(xí)J2EE最核心的東西:JDBC、JSP、servlet和JavaBean,后面三個(gè)也是學(xué)習(xí)SSH的基礎(chǔ)(StrutsSpringHibernate的簡(jiǎn)稱).鑒于J2EE的內(nèi)容太過(guò)復(fù)雜,建議大家最初只學(xué)習(xí): JSP, servlet和JavaBean,等這個(gè)基礎(chǔ)掌握好再把SSH學(xué)習(xí)了,再對(duì)其他J2EE技術(shù)有個(gè)大致的了解就可以出去找工作了。當(dāng)然,找工作的前提除了把Java學(xué)習(xí)好,還會(huì)有一些其他的技術(shù)也是必須要掌握的

      -_-我很簡(jiǎn)單,Java卻要求我學(xué)這么多復(fù)雜的東西。除了這些技術(shù)的東西,在這階段,大家更多的是會(huì)接觸到比如設(shè)計(jì)模式的東西,比如工廠模式、橋梁模式、單例模式等等,還要學(xué)習(xí)建模思想(比如UML建模等等)和軟件生命周期等等。這些是升華大家編程思想的手段和途徑。

      數(shù)據(jù)庫(kù)技術(shù):

      數(shù)據(jù)庫(kù)幾乎是程序中不可或缺的一部分,在整個(gè)軟件開發(fā)中更是占據(jù)了重要作用.數(shù)據(jù)庫(kù)在整個(gè)軟件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做軟件,就要先設(shè)計(jì)好的數(shù)據(jù)庫(kù).目前數(shù)據(jù)庫(kù)幾乎都是關(guān)系型數(shù)據(jù)庫(kù),代表的有: SQL Server,目前最新的好像是2008,我不是很喜歡追趕時(shí)髦,用的還是2005,不過(guò)也很不錯(cuò)了,在此之前還有2000.MySQL,最知名的開源數(shù)據(jù)庫(kù)之一,我很喜歡它的小巧耐用,學(xué)過(guò)SQL SERVER數(shù)據(jù)庫(kù)再學(xué)它,無(wú)師自通,易如反掌.ORACLE.甲骨文公司的產(chǎn)品,大型數(shù)據(jù)庫(kù),正版的一般公司買不起.只有看看了,不過(guò)現(xiàn)在Java開發(fā)60%都是會(huì)使用到這個(gè)數(shù)據(jù)庫(kù),再加上現(xiàn)在甲骨文已經(jīng)把sun公司收購(gòu)了,JAVA和ORACLE得關(guān)系更加曖昧,各位得多花些時(shí)間在這上面了.除了這些,你還應(yīng)該了解一些桌面應(yīng)用軟件開發(fā)用到的數(shù)據(jù)庫(kù),比如說(shuō)sqlite。你在制作安裝程序的時(shí)候可以把這個(gè)數(shù)據(jù)庫(kù)打包進(jìn)你的安裝程序。

      網(wǎng)頁(yè)編程基礎(chǔ):

      網(wǎng)頁(yè)編程基礎(chǔ)要學(xué)的內(nèi)容也比較多,但主要集中在以下這三個(gè)技術(shù)之上,大家每天看的各種樣式的網(wǎng)頁(yè)都是它們呈現(xiàn)的: HTML:超文本標(biāo)記語(yǔ)言 CSS:層疊樣式表

      Javascript:瀏覽器客戶端腳本語(yǔ)言

      現(xiàn)在更是流行各種JavaScript庫(kù),比如:Jquery、ExtJs等,你要是會(huì)其中的某一個(gè)庫(kù)的使用,找工作so easy。

      J2ME:

      如果你在學(xué)習(xí)了以上技術(shù)還不過(guò)癮,可以再學(xué)習(xí)手機(jī)程序的開發(fā),就我個(gè)人看來(lái),開發(fā)手機(jī)程序技術(shù)其實(shí)蠻簡(jiǎn)單的,難點(diǎn)在于優(yōu)化,比如怎么讓你寫的程序盡量的節(jié)約手機(jī)資源,“代碼誠(chéng)可貴,手機(jī)價(jià)更高“,所以不得不比PC機(jī)多考慮很多成本和實(shí)用性問(wèn)題。J2ME的學(xué)習(xí)的話,切忌不要單純的再模擬器上測(cè)試,一定要找真機(jī)測(cè)試,真機(jī)和模擬器的效果之間差別是很大的。更多手機(jī)開發(fā)技術(shù),有興趣的朋友可以和我一起探討。

      開發(fā)工具:

      開發(fā)工具的選擇主要還是看大家的習(xí)慣,我個(gè)人比較喜歡使用eclispe,功能很強(qiáng)大,也很好拓展其他的功能。當(dāng)讓初學(xué)你也可以選擇JCreator,或者最好就直接用記事本。等你熟悉了Java代碼之后,就可以使用JBuilder、eclispe或者netbeans這一類的工具了。

      先說(shuō)到這里先,以后大家一起完善這個(gè)帖子。盡量再給大家整理一些學(xué)習(xí)的資源在這里。也歡迎大家一起整理我文章中提到的一些技術(shù)資源和開發(fā)工具。最后,再和大家分享一句話:生命欣欣向榮,唯奮斗不息。也和大家分享一幅Java學(xué)習(xí)路線圖:

      學(xué)習(xí)路線

      Java學(xué)習(xí)的路線 重點(diǎn) 與目標(biāo)

      2008-01-02 19:05:59| 分類: 計(jì)算機(jī) | 標(biāo)簽: |字號(hào)大中小 訂閱

      本文將告訴你學(xué)習(xí)Java需要達(dá)到的30個(gè)目標(biāo),學(xué)習(xí)過(guò)程中可能遇到的問(wèn)題,及學(xué)習(xí)路線。希望能夠?qū)δ愕膶W(xué)習(xí)有所幫助。對(duì)比一下自己,你已經(jīng)掌握了這30條中的多少條了呢?

      路線

      Java發(fā)展到現(xiàn)在,按應(yīng)用來(lái)分主要分為三大塊:J2SE,J2ME和J2EE。

      這三塊相互補(bǔ)充,應(yīng)用范圍不同。

      J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;

      J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機(jī)和PDA的編程;

      J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。

      先學(xué)習(xí)j2se

      要學(xué)習(xí)j2ee就要先學(xué)習(xí)j2se,剛開始學(xué)習(xí)j2se先建議不要使用IDE,然后漸漸的過(guò)渡到使用IDE開發(fā),畢竟用它方便嘛。學(xué)習(xí)j2se推薦兩本書,《java2核心技術(shù)一二卷》,《java編程思想》,《java模式》。其中《java編程思想》要研讀,精讀。這一段時(shí)間是基本功學(xué)習(xí),時(shí)間會(huì)很長(zhǎng),也可能很短,這要看學(xué)習(xí)者自身水平而定。

      不要被IDE糾纏

      在學(xué)習(xí)java和j2ee過(guò)程中,你會(huì)遇到五花八門的IDE,不要被他們迷惑,學(xué)JAVA的時(shí)候,要學(xué)語(yǔ)言本身的東西,不要太在意IDE的附加功能,JAVA編程在不同IDE之間的轉(zhuǎn)換是很容易的,過(guò)于的在意IDE的功能反而容易耽誤對(duì)語(yǔ)言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加強(qiáng)版WSAD。用好其中一個(gè)就可以了,推薦從eclipse入手j2ee。因?yàn)镴builder更適合于寫j2se程序。

      選擇和學(xué)習(xí)服務(wù)器使用配置

      當(dāng)你有了j2se和IDE的經(jīng)驗(yàn)時(shí),可以開始j2ee的學(xué)習(xí)了,web服務(wù)器:tomcat,勿庸置疑,tomcat為學(xué)習(xí)web服務(wù)首選。而應(yīng)用服務(wù)器目前主要有三個(gè):jboss、weblogic、websphere。有很多項(xiàng)目開始采用jboss,并且有大量的公司開始做websphere或weblogic向jboss應(yīng)用服務(wù)器的移植(節(jié)省成本),這里要說(shuō)的是,學(xué)習(xí)tomcat和jboss我認(rèn)為是首選,也是最容易上手的。學(xué)習(xí)服務(wù)器使用配置最好去詢問(wèn)有經(jīng)驗(yàn)的人(有條件的話),因?yàn)樗麄兓蛟S一句話就能解決問(wèn)題,你自己上網(wǎng)摸索可能要一兩天(我就干過(guò)這種傻事),我們應(yīng)該把主要時(shí)間放在學(xué)習(xí)原理和理論上,一項(xiàng)特定技術(shù)的使用永遠(yuǎn)代替不了一個(gè)人的知識(shí)和學(xué)問(wèn)。

      學(xué)習(xí)web知識(shí)

      如果你是在做電子商務(wù)網(wǎng)站等時(shí),你可能要充當(dāng)幾個(gè)角色,這是你還要學(xué)習(xí):

      html,可能要用到dreamwave等IDE。Javascript,學(xué)會(huì)簡(jiǎn)單的數(shù)據(jù)校驗(yàn),數(shù)據(jù)聯(lián)動(dòng)顯示等等。

      J2eeAPI學(xué)習(xí)

      學(xué)習(xí)j2eeAPI和學(xué)習(xí)服務(wù)器應(yīng)該是一個(gè)迭代的過(guò)程。

      先學(xué)習(xí)jsp和servlet編程,這方面的書很多,我建立看oreilly公司的兩本《jsp設(shè)計(jì)》和《java servlet編程》,oreilly出的書總是那本優(yōu)秀,不得不佩服。

      學(xué)習(xí)jdbc數(shù)據(jù)庫(kù)編程,j2ee項(xiàng)目大多都是MIS系統(tǒng),訪問(wèn)數(shù)據(jù)庫(kù)是核心。這本應(yīng)屬于j2se學(xué)習(xí)中,這里拿出來(lái)強(qiáng)調(diào)一下。

      學(xué)習(xí)jndi api,它和學(xué)習(xí)ejb可以結(jié)合起來(lái)。

      學(xué)習(xí)ejb api,推薦書《精通ejb》

      經(jīng)過(guò)上面的這些的學(xué)習(xí),大概可以對(duì)付一般的應(yīng)用了。

      有人說(shuō)跟著sun公司的《j2ee tutorial》一路學(xué)下來(lái),當(dāng)然也可以。

      學(xué)習(xí)ejb設(shè)計(jì)模式和看代碼(最重要)

      設(shè)計(jì)模式是練內(nèi)功,其重要性可以這么說(shuō)吧,如果你不會(huì)用設(shè)計(jì)模式的話,你將寫出一堆使用了ejb的垃圾,有慢又是一堆bug,其結(jié)果不如不用ejb實(shí)現(xiàn)(ejb不等于j2ee)

      無(wú)論學(xué)習(xí)什么語(yǔ)言,都應(yīng)該看大量代碼,你看的代碼量不到一定數(shù)量,是學(xué)不好j2ee的。

      目前有很多開源的工程可以作為教材:

      jive論壇

      petstore sun公司

      dune sun公司

      等等,研讀一個(gè),并把它用到自己的工程中來(lái)。

      J2ee其他學(xué)習(xí)

      當(dāng)你漸漸對(duì)j2ee了解到一定深度時(shí),你要開始關(guān)注當(dāng)前領(lǐng)域中的一些技術(shù)變化,J2ee是一塊百家爭(zhēng)鳴的領(lǐng)域,大家都在這里提出自己的解決方案,例如structs,hiberate,ofbiz等等,學(xué)習(xí)這些東西要你的項(xiàng)目和目標(biāo)而定,預(yù)先補(bǔ)充一下未嘗不可,但不用涉及太深,畢竟學(xué)習(xí)原理和理論是最最重要的事。

      目前常見(jiàn)j2eeAPI

      JavaServer Pages(JSP)技術(shù)1.2 Java Servlet技術(shù)2.3 JDBC API 2.0

      Java XML處理API(JAXP)1.1 Enterprise JavaBeans技術(shù)2.0 Java消息服務(wù)(JMS)1.0 Java命名目錄接口(JNDI)1.2 Java事務(wù)API(JTA)1.0 JavaMail API 1.2

      JavaBeans激活架構(gòu)(JAF)1.0 J2EE連接器體系結(jié)構(gòu)(JCA)1.0 Java認(rèn)證和授權(quán)服務(wù)(JAAS)1.0

      學(xué)習(xí)上面的某些API要以你的項(xiàng)目而定,了解所有他們總之是有好處的。

      上面印證了大家說(shuō)的一句話,java語(yǔ)言本身不難學(xué),但是技術(shù)太多,所以學(xué)java很費(fèi)勁?;叵胍幌拢旧厦總€(gè)初學(xué)者,在剛學(xué)習(xí)java的時(shí)候可能都會(huì)問(wèn)別人這么一句話,你怎么知道的哪個(gè)方法(api)在哪個(gè)包里的?呵呵,無(wú)他,唯手熟爾?;A(chǔ)是王道。我們的基礎(chǔ)要扎實(shí)扎實(shí)再扎實(shí)。

      以上面的整個(gè)流程來(lái)看java的技術(shù)分支很多,要想完全掌握是絕對(duì)不可能的。我們只有從中精通1到2個(gè)部分。但是java也是有通性的,所謂萬(wàn)變不離其宗。java的所有編程思路都是“面向?qū)ο蟆钡木幊?。所以大家在往更高境界發(fā)展以前一定要打好基礎(chǔ),這樣不管以后是jree還是j3d都有應(yīng)刃而解的感覺(jué)。在這里強(qiáng)烈推薦“java編程思想”.所謂打好基礎(chǔ)并不是說(shuō)要熟悉所有的java代碼。我說(shuō)的意思是要了解java的結(jié)構(gòu)。class,methode,object,各種套用import,extend 讓自己在結(jié)構(gòu)上對(duì)java有個(gè)立體而且整體的了解即刻。其實(shí)java的學(xué)習(xí)不用固執(zhí)于對(duì)代碼的熟悉,1來(lái)java本身帶有很多demo,java2d的所有問(wèn)題幾乎都有demo的樣例。2來(lái)java是開放代碼,即使沒(méi)有demo網(wǎng)絡(luò)上也有很多高手把自己的代碼分享。所以不要怕沒(méi)有參考,參考是到處都有的。最后還有1點(diǎn)經(jīng)驗(yàn)和大家分享,對(duì)sun的api一定要學(xué)會(huì)活用,不論是學(xué)習(xí)還是作為參考api都有很大的幫助,在完全了解java的結(jié)構(gòu)的基礎(chǔ)上,不論什么方法都是可以通過(guò)api來(lái)找到的.所以不要怕找不到方法,了解結(jié)構(gòu),了解api就能找到方法。

      重點(diǎn)

      精通:能夠掌握此技術(shù)的85%技術(shù)要點(diǎn)以上,使用此技術(shù)時(shí)間超過(guò)兩年,并使用此技術(shù)成功實(shí)施5個(gè)以上的項(xiàng)目。能使用此技術(shù)優(yōu)化性能或代碼,做到最大可能的重用。

      熟練:能夠掌握此技術(shù)的60%技術(shù)要點(diǎn)以上,使用此技術(shù)時(shí)間超過(guò)一年,并使用此技術(shù)成功實(shí)施3個(gè)以上的項(xiàng)目。能使用此技術(shù)實(shí)現(xiàn)軟件需求并有經(jīng)驗(yàn)的積累在實(shí)現(xiàn)之前能做優(yōu)化設(shè)計(jì)盡可能的實(shí)現(xiàn)模塊或代碼的重用。

      熟悉:能夠掌握此技術(shù)的50%技術(shù)要點(diǎn)以上,使用此技術(shù)時(shí)間超過(guò)半年上,并使用此技術(shù)成功實(shí)施1個(gè)以上的項(xiàng)目。能使用此技術(shù)實(shí)現(xiàn)軟件需求。

      了解:可以在實(shí)際需要時(shí)參考技術(shù)文檔或幫助文件滿足你的需要,基本知道此項(xiàng)技術(shù)在你運(yùn)用是所起的作用,能夠調(diào)用或者使用其根據(jù)規(guī)定提供給你的調(diào)用方式。

      二:基本要求

      1:html 掌握程度:熟練。原因:不會(huì)html你可能寫JSP?

      2:javascript/jscript:掌握程度:熟悉。原因:client端的數(shù)據(jù)校驗(yàn)、一些頁(yè)面處理需要你使用腳本。

      3:CSS 掌握程度:熟悉。原因:實(shí)現(xiàn)頁(yè)面風(fēng)格的統(tǒng)一通常會(huì)使用css去實(shí)現(xiàn)。

      4:java基礎(chǔ)編程 掌握程度:熟練。原因:不會(huì)java你能寫JSP?開玩笑吧。還有你必須非常熟悉以下幾個(gè)包java.lang;java.io;java.sql;java.util;java.text;javax.sevrlet;javax.servlet.http;javax.mail;等。

      5:sql 掌握程度:熟練。原因:如果你不使用數(shù)據(jù)庫(kù)的話你也許不需要掌握sql。同時(shí)你必須對(duì)以下幾種數(shù)據(jù)庫(kù)中的一種以上的sql比較熟悉。Oracle,DB2,Mysql,Postgresql.6:xml 掌握程度:了解 原因:AppServer的配置一般是使用XML來(lái)實(shí)現(xiàn)的。

      7:ejb 掌握程度:了解 原因:很多項(xiàng)目中商業(yè)邏輯是由ejb來(lái)實(shí)現(xiàn)的,所以呢……

      8:以下幾種AppServer(engnier)你需要了解一個(gè)以上。

      a:)Tomcat

      b:)WebLogic

      c:)WebSphere

      d:)JRun

      e:)Resin

      原因:你的jsp跑在什么上面??!

      三:選擇要求(因項(xiàng)目而定)

      1:LDAP 掌握程度:了解 原因:LADP越來(lái)越多的運(yùn)用在權(quán)限控制上面。

      2:Struts 掌握程度:熟練 原因:如果符合MVC設(shè)計(jì)通常會(huì)使用Struts實(shí)現(xiàn)C。

      3:Xsp 掌握程度:根據(jù)需要而定很多時(shí)候是不使用的,但在不需要使用ejb但jsp+servlet+bean實(shí)現(xiàn)不了的時(shí)候Xsp是一個(gè)非常不錯(cuò)的選擇。

      4:Linux 掌握程度:熟悉 原因:如果你的運(yùn)用跑在Linux/Unix上你最少要知道rm ,mv,cp,vi,tar gzip/gunzip 是用來(lái)做什么的吧。

      四:工具的使用

      1:UltraEdit(EditPlus)+jakarta-ant+jakarta-log4j;

      2:Jubilder4-6

      3:Visual Age For Java

      4:VCafe

      以上的工具你選擇你自己熟悉的吧。不過(guò)強(qiáng)烈建議你用log4j做調(diào)試工具。

      五:成長(zhǎng)之路

      1:html 學(xué)習(xí)時(shí)間,如果你的智商在80以上,15天時(shí)間應(yīng)該夠用了。至少你能手寫出一個(gè)頁(yè)面來(lái)。

      2:jacascript/jscript學(xué)習(xí)時(shí)間,這真的不好說(shuō),比較深?yuàn)W的東西,夠用的話一個(gè)禮拜可以學(xué)寫皮毛。

      3:css 學(xué)習(xí)時(shí)間,三天的時(shí)間你應(yīng)該知道如何使用css了,不要求你寫,一般是美工來(lái)寫css。

      4:java 學(xué)習(xí)時(shí)間,天才也的三個(gè)月吧。慢滿學(xué)吧。如果要精通,那我不知道需要多少時(shí)間了。用來(lái)寫

      jsp,四個(gè)月應(yīng)該夠了。

      5:sql 學(xué)習(xí)時(shí)間,只需要知道insert ,delete ,update ,select,create/drop table的話一天你應(yīng)該知道了。

      6:xml 學(xué)習(xí)時(shí)間,我不知道我還沒(méi)有學(xué)會(huì)呢。呵呵。不過(guò)我知道DTD是用來(lái)做什么的。

      7:ejb 學(xué)習(xí)時(shí)間,基本的調(diào)用看3天你會(huì)調(diào)用了。不過(guò)是建立在你學(xué)會(huì)java的基礎(chǔ)上的。

      8:熟悉AppServer,Tomcat四天你可以掌握安裝,配置。把jsp跑起來(lái)了。如果是WebLogic也夠了,但要使用ejb那不關(guān)你的事情吧。SA做什么去了。

      9:熟悉Linux那可得需要不少時(shí)間。慢慢看man吧。

      10:Struts如果需要你再學(xué)習(xí)。

      目標(biāo)

      1.你需要精通面向?qū)ο蠓治雠c設(shè)計(jì)(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應(yīng)該十分了解UML,尤其是class,object,interaction以及statediagrams。

      2.你需要學(xué)習(xí)JAVA語(yǔ)言的基礎(chǔ)知識(shí)以及它的核心類庫(kù)(collections,serialization,streams,networking,multithreading,reflection,event,handling,NIO,localization,以及其他)。

      3.你應(yīng)該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機(jī)制等。你應(yīng)該有能力反編譯一個(gè)類文件并且明白一些基本的匯編指令。

      4.如果你將要寫客戶端程序,你需要學(xué)習(xí)WEB的小應(yīng)用程序(applet),必需掌握GUI設(shè)計(jì)的思想和方法,以及桌面程序的SWING,AWT,SWT。你還應(yīng)該對(duì)UI部件的JAVABEAN組件模式有所了解。JAVABEANS也被應(yīng)用在JSP中以把業(yè)務(wù)邏輯從表現(xiàn)層中分離出來(lái)。

      5.你需要學(xué)習(xí)java數(shù)據(jù)庫(kù)技術(shù),如JDBCAPI并且會(huì)使用至少一種persistence/ORM構(gòu)架,例如Hibernate,JDO,CocoBase,TopLink,InsideLiberator(國(guó)產(chǎn)JDO紅工廠軟件)或者iBatis。

      6.你還應(yīng)該了解對(duì)象關(guān)系的阻抗失配的含義,以及它是如何影響業(yè)務(wù)對(duì)象的與關(guān)系型數(shù)據(jù)庫(kù)的交互,和它的運(yùn)行結(jié)果,還需要掌握不同的數(shù)據(jù)庫(kù)產(chǎn)品運(yùn)?,睙?oracle,mysql,mssqlserver。

      7.你需要學(xué)習(xí)JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,codesigning,digitalsignatures,cryptography,certification,Kerberos,以及其他)還有不同的安全/認(rèn)證 API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE(JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS(JavaGeneralSecurityService)。

      8.你需要學(xué)習(xí)Servlets,JSP,以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries。

      9.你需要熟悉主流的網(wǎng)頁(yè)框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他們下面的涉及模式,如MVC/MODEL2。

      10.你需要學(xué)習(xí)如何使用及管理WEB服務(wù)器,例如tomcat,resin,Jrun,并且知道如何在其基礎(chǔ)上擴(kuò)展和維護(hù)WEB程序。

      11.你需要學(xué)習(xí)分布式對(duì)象以及遠(yuǎn)程API,例如RMI和RMI/IIOP。

      12.你需要掌握各種流行中間件技術(shù)標(biāo)準(zhǔn)和與java結(jié)合實(shí)現(xiàn),比如Tuxedo、CROBA,當(dāng)然也包括javaEE本身。

      13.你需要學(xué)習(xí)最少一種的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。

      14.你應(yīng)該學(xué)習(xí)如何利用JAVAAPI和工具來(lái)構(gòu)建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ(SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging),JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。

      15.你需要學(xué)習(xí)一門輕量級(jí)應(yīng)用程序框架,例如Spring,PicoContainer,Avalon,以及它們的IoC/DI風(fēng)格(setter,constructor,interfaceinjection)。

      16.你需要熟悉不同的J2EE技術(shù),例如JNDI(JavaNamingandDirectoryInterface),JMS(JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX(JavaManagementeXtensions),以及JavaMail。

      17.你需要學(xué)習(xí)企業(yè)級(jí) JavaBeans(EJB)以及它們的不同組件模式:Stateless/StatefulSessionBeans,EntityBeans(包含 Bean-ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。

      18.你需要學(xué)習(xí)如何管理與配置一個(gè)J2EE應(yīng)用程序服務(wù)器,如WebLogic,JBoss等,并且利用它的附加服務(wù),例如簇類,連接池以及分布式處理支援。你還需要了解如何在它上面封裝和配置應(yīng)用程序并且能夠監(jiān)控、調(diào)整它的性能。

      19.你需要熟悉面向方面的程序設(shè)計(jì)以及面向?qū)傩缘某绦蛟O(shè)計(jì)(這兩個(gè)都被很容易混淆的縮寫為AOP),以及他們的主流JAVA規(guī)格和執(zhí)行。例如AspectJ和AspectWerkz。

      20.你需要熟悉對(duì)不同有用的API和frame work等來(lái)為你服務(wù)。例如Log4J(logging/tracing),Quartz(scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),Lucene(full-textsearch),JakartaCommons等等。

      21.如果你將要對(duì)接或者正和舊的系統(tǒng)或者本地平臺(tái),你需要學(xué)習(xí)JNI(JavaNativeInterface)and JCA(JavaConnectorArchitecture)。

      22.你需要熟悉JINI技術(shù)以及與它相關(guān)的分布式系統(tǒng),比如掌握CROBA。

      23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。

      24.你應(yīng)該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來(lái)編寫文件。隨便你用什么了:)

      25.JAVA(精確的說(shuō)是有些配置)是冗長(zhǎng)的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。

      26.你需要熟悉一種單元測(cè)試體系(JNunit),并且學(xué)習(xí)不同的生成、部署工具(Ant,Maven)。

      27.你需要熟悉一些在JAVA開發(fā)中經(jīng)常用到的軟件工程過(guò)程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

      28.你需要能夠深入了解加熟練操作和配置不同的操作系統(tǒng),比如GNU/linux,sunsolaris,macOS等,做為跨平臺(tái)軟件的開發(fā)者。

      29.你還需要緊跟java發(fā)展的步伐,比如現(xiàn)在可以深入的學(xué)習(xí)javaME,以及各種java新規(guī)范,技術(shù)的運(yùn)用,如新起的web富客戶端技術(shù)。

      30.你必需要對(duì)opensource有所了解,因?yàn)橹辽賘ava的很多技術(shù)直接是靠開源來(lái)驅(qū)動(dòng)發(fā)展的,如java3D技術(shù)。(BlogJava-Topquan's Blog)

      下載JAVA學(xué)習(xí)路線word格式文檔
      下載JAVA學(xué)習(xí)路線.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Java web開發(fā)學(xué)習(xí)路線

        004km.cn Java web開發(fā)學(xué)習(xí)路線 Java web開發(fā)是什么? Java web開發(fā),是用Java技術(shù)來(lái)解決相關(guān)web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和。web包括:web服務(wù)器和web客戶端兩部分。Java在......

        java WEB 學(xué)習(xí)路線 v0.1

        1. J2SE 和Eclipse工具的使用 ? 集合類 * List / Set / Map / Iterator ? Java反射機(jī)制 ? 正則表達(dá) 2. 數(shù)據(jù)庫(kù) Mysql ? 什么是數(shù)據(jù)庫(kù) ? 基本語(yǔ)法: 建表刪表、Mysql 字段類型、單......

        Java程序員成長(zhǎng)路線

        004km.cn Java程序員成長(zhǎng)路線 Java程序員 高級(jí)特性 反射、泛型、注釋符、自動(dòng)裝箱和拆箱、枚舉類、可變 參數(shù)、可變返回類型、增強(qiáng)循環(huán)、靜態(tài)導(dǎo)入 核心編程......

        Java自學(xué)成長(zhǎng)路線

        Java自學(xué)成長(zhǎng)路線 JAVA自學(xué)之路 一:學(xué)會(huì)選擇 決心做軟件的,大多數(shù)人選的是java,或是.net,也有一些選擇了手機(jī)、嵌入式、游戲、3G、測(cè)試等。 JAVA是一種平臺(tái),也是一種程序設(shè)計(jì)語(yǔ)......

        給予Java初學(xué)者的學(xué)習(xí)路線建議(范文大全)

        給Java初學(xué)者的學(xué)習(xí)路線建議 在校學(xué)生,務(wù)必要在學(xué)好基礎(chǔ)(比如計(jì)算機(jī)系統(tǒng)、算法、編譯原理等等)的前提下,再考慮去進(jìn)行下面的學(xué)習(xí)。第一部分:對(duì)于尚未做過(guò)Java工作的同學(xué),包括一些......

        java學(xué)習(xí)

        .如何學(xué)習(xí)Java? 3.1 Java學(xué)習(xí)路線 3.1.1 基礎(chǔ)語(yǔ)法及Java原理基礎(chǔ)語(yǔ)法和Java原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當(dāng)危險(xiǎn)的。學(xué)習(xí)Java也是如此,必須要有扎實(shí)的基礎(chǔ),你......

        JAVA學(xué)習(xí)

        1 買本《java瘋狂講義》 或者 在網(wǎng)上下載下來(lái)看看2 主要看java語(yǔ)法部分和面向?qū)ο缶幊滩糠? 這些要速度過(guò) 接下來(lái)開始寫一些小例子 從例子里面學(xué)習(xí)會(huì)更快4 例子差不多了就開......

        如何深入學(xué)習(xí)java

        在開發(fā)領(lǐng)域的技術(shù)人員,只有不斷地充電提高才能夠讓自己始終處于不敗之地。技術(shù)日新月異,推陳出新,讓技術(shù)人員目不暇接。我們都知道,java技術(shù)是目前最流行的編程語(yǔ)言,java入門很難......