第一篇:自學(xué)Java心得
要學(xué)好java找一份工作,需要很大的毅力,具體學(xué)多長(zhǎng)時(shí)間就可以找工作,要看個(gè)人的悟性和學(xué)習(xí)能力,以我們宿舍6個(gè)人來(lái)說(shuō),計(jì)算機(jī)專業(yè)大專學(xué)歷,我比較笨在大學(xué)里自學(xué)了一年左右的時(shí)間,畢業(yè)后在北京一家做移動(dòng)增值的公司上班了。同宿舍的其它5個(gè)人,其中一個(gè)比較強(qiáng),自學(xué)半年就去深圳華為上班了,2個(gè)找了個(gè)培訓(xùn)班學(xué)了4個(gè)月,現(xiàn)在都干上開(kāi)發(fā)了,還有2個(gè)家里有關(guān)系,工作和計(jì)算機(jī)沒(méi)關(guān)系。
總的來(lái)說(shuō),經(jīng)濟(jì)不困難的話,找個(gè)培訓(xùn)班比較好,學(xué)得比較全面,有老師指導(dǎo)學(xué)起來(lái)也不困難,就業(yè)比較順利。如果經(jīng)濟(jì)條件不好,自己又喜歡這行,自學(xué)能堅(jiān)持的話那就自學(xué),老大不小了,總不能老伸手找家里拿錢不是。選擇自學(xué)的話,基本上要分以下幾個(gè)階段:
1、要學(xué)java,肯定首先得把Java語(yǔ)言本身給掌握了,萬(wàn)事開(kāi)頭難,學(xué)java最難的也是java的入門,學(xué)習(xí)順序是先掌握java的語(yǔ)法(多練就行),再掌握java面向?qū)ο蟮乃枷耄ǚ庋b、繼承、多態(tài)、接口這些東西是重點(diǎn),要多理解),接下來(lái)就是熟悉java常用的API(集合、IO等,主要是跟著書(shū)多寫(xiě)多練),這些東西掌握后,Java語(yǔ)言就算入門了。入門java推薦大家下載張孝祥的《java就業(yè)培訓(xùn)教程》視頻教程,學(xué)java的沒(méi)有不知道這套視頻的,我們宿舍當(dāng)時(shí)都是學(xué)這套視頻入門的。這套視頻最大的好處簡(jiǎn)單易懂,并引用了很多實(shí)用案例,并且還有配套書(shū)(書(shū)名好像也是java就業(yè)培訓(xùn)教程,新華書(shū)店有),省得忘了的地方,動(dòng)不動(dòng)對(duì)著電腦翻視頻了。還有一些視頻也比較好,例如孫鑫的java視頻,馬士兵的java視頻等。不過(guò)對(duì)初學(xué)者而言,選中一套視頻了就跟著好好學(xué),不要下很多視頻,東抓一把、西抓一把,最后啥也沒(méi)學(xué)到。
2、有java基礎(chǔ)了想馬上從事實(shí)際開(kāi)發(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ǔ)后,找本好書(shū)學(xué)oracle也就不難了。這里推薦何明的《從實(shí)踐中學(xué)習(xí)Oracle/SQL》,作者來(lái)頭很大,有非常深的oracle功底,書(shū)寫(xiě)得由淺入深,相當(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開(kāi)發(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開(kāi)發(fā)內(nèi)幕-核心基礎(chǔ)》這本書(shū),還是張孝祥寫(xiě)的,這本書(shū)寫(xiě)的書(shū)很有特點(diǎn),很細(xì)很深入,書(shū)上還帶大量的實(shí)驗(yàn)案例,一步步講得非常清晰,非常適合初學(xué)者。學(xué)javaweb這本書(shū)絕對(duì)是首選,并且這本書(shū)也有配套視頻,在網(wǎng)上有下,不過(guò)視頻只有前4章,比較可惜,希望張孝祥老師能早日錄制全套視頻。還有些視頻和書(shū)也不錯(cuò),比如李興華的JSP視頻教程、孫鑫的JAVA WEB 開(kāi)發(fā)詳解等,這些也不錯(cuò),在網(wǎng)上都有免費(fèi)下的。
4、接下來(lái)為找工作就要學(xué)strutshibernatespringajax這些流行技術(shù)了。這些技術(shù)我學(xué)習(xí)的時(shí)候沒(méi)有視頻,買的孫衛(wèi)琴的書(shū)學(xué),花了我大半年時(shí)間才學(xué)明白。現(xiàn)在幸福多了,網(wǎng)上有很多視頻,個(gè)人推薦大家下傳智播客的視頻看。這個(gè)機(jī)構(gòu)的老師很牛課程很有深度,真正能學(xué)到技術(shù),不會(huì)誤了大家。不過(guò)他們的視頻里老打廣告,很煩。書(shū)籍推薦struts看孫衛(wèi)琴的,hibernate看夏昕的,spring看林信良的,具體書(shū)名叫什么忘了,大家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é)心得
Java 自學(xué)心得體會(huì)
學(xué)習(xí)一門新的知識(shí),不可能指望只看一本,或者兩本書(shū)就能夠完全掌握。需要有一個(gè)循序漸進(jìn)的閱讀過(guò)程。我推薦Oreilly出版的Java系列書(shū)籍。
在這里我只想補(bǔ)充一點(diǎn)看法,很多人學(xué)習(xí)Java是從《ThinkinginJava》這本書(shū)入手的,但是我認(rèn)為這本書(shū)是不適合初學(xué)者的。我認(rèn)為正確的使用這本書(shū)的方法應(yīng)該是作為輔助的讀物。《ThinkinginJava》并不是在完整的介紹Java的整個(gè)體系,而是一種跳躍式的寫(xiě)作方法,是一種類似tips的方法來(lái)對(duì)Java很多知識(shí)點(diǎn)進(jìn)行了深入的分析和解釋。
對(duì)于初學(xué)者來(lái)說(shuō),最好是找一本Java入門的書(shū)籍,但是比較完整的循序的介紹Java的語(yǔ)法,面向?qū)ο蟮奶匦裕诵念悗?kù)等等,在看這本書(shū)的同時(shí),可以同步來(lái)看《ThinkinginJava》,來(lái)加深對(duì)Java的理解和原理的運(yùn)用,同時(shí)又可以完整的了解Java的整個(gè)體系。
對(duì)于Java的入門書(shū)籍,蔡學(xué)鏞推薦的是Oreilly的《ExploringJava,2ndEdition》或者《JavainaNutshell,2ndEdition(針對(duì)C++背景)》,我并沒(méi)有看過(guò)這兩本書(shū)。其實(shí)我覺(jué)得電子工業(yè)出版社的《Java2編程詳解》或者《Java2從入門到精通》就很不錯(cuò)。
在所有的Java書(shū)籍當(dāng)中,其實(shí)最最有用的,并不是O 'reilly的JavaSerials,真正最最有用處是JDK的Documentation!幾乎你想獲得的所有的知識(shí)在Documentation里面全部都有,其中最主要的部分當(dāng)然是Java基礎(chǔ)類庫(kù)的API文檔,是按照package來(lái)組織的,對(duì)于每一個(gè)class都有詳細(xì)的解釋,它的繼承關(guān)系,是否實(shí)現(xiàn)了某個(gè)接口,通常用在哪些場(chǎng)合,還可以查到它所有的public的屬性和方法,每個(gè)屬性的解釋,意義,每個(gè)方法的用途,調(diào)用的參數(shù),參數(shù)的意義,返回值的類型,以及方法可能拋出的異常等等。可以這樣來(lái)說(shuō),所有關(guān)于Java編程方面的書(shū)籍其實(shí)都不過(guò)是在用比較通俗易懂的語(yǔ)言,和良好的組織方式來(lái)介紹Documentation里面的某個(gè)package里面包含的一些類的用法而已。所以萬(wàn)變不離其宗,如果你有足夠的能力來(lái)直接通過(guò)Documentation來(lái)學(xué)習(xí)Java的類庫(kù),那么基本上就不需要看其他的書(shū)籍了。除此之外,Documentation也是編程必備的手冊(cè),我的桌面上有三個(gè)Documentation的快捷方式,分別是J2SDK1.4.1的Documentation,Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了這個(gè)三個(gè)Documentation,什么其他的書(shū)籍都不需要了。
對(duì)于JavaWeb編程來(lái)說(shuō),最核心的是要熟悉和掌握HTTP協(xié)議,這個(gè)就和Java無(wú)關(guān)了,在熟悉HTTP協(xié)議之后,就需要熟悉Java的實(shí)現(xiàn)HTTP協(xié)議的類庫(kù),也就是ServletAPI,所以最重要的東西就是ServletAPI。當(dāng)然對(duì)于初學(xué)者而言,直接通過(guò)ServletAPI來(lái)學(xué)習(xí)Web編程有很大的難度,我推薦O 'reilly的《JavaServerPages》這本書(shū)來(lái)學(xué)習(xí)Web編程。
EJB的書(shū)籍當(dāng)中,《EnterpriseJavaBeans,2ndEdition》是一本很不錯(cuò)的書(shū),EJB的學(xué)習(xí)門檻是比較高,入門很難,但是這本書(shū)完全降低了學(xué)習(xí)的難度,特別重要的一點(diǎn)是,EJB的學(xué)習(xí)需要結(jié)合一種AppServer的具體實(shí)現(xiàn),所以在學(xué)習(xí)EJB的同時(shí),必須同步的學(xué)習(xí)某種AppServer,而這本書(shū)相關(guān)的出了三本書(shū),分別是Weblogic6.1,Websphere4.0
和JBoss3.0上面部署書(shū)中例子的實(shí)做。真是既有理論,又有實(shí)踐。在學(xué)習(xí)EJB的同時(shí),可以邊看邊做,EJB的學(xué)習(xí)會(huì)變得很輕松。
但是這本書(shū)也有一個(gè)問(wèn)題,就是版本比較舊,主要講EJB1.1規(guī)范和部分EJB2.0的規(guī)范。而EdRoman寫(xiě)的《MasteringEJB2.0》這本書(shū)完全是根據(jù)EJB2.0規(guī)范寫(xiě)的,深入淺出,覆蓋了EJB編程的各個(gè)方面,并且還有很多編程經(jīng)驗(yàn)tips,也是學(xué)習(xí)EJB非常推薦的書(shū)籍之一。
如果是結(jié)合Weblogic來(lái)學(xué)習(xí)J2EE的話,《J2EE應(yīng)用與BEAWeblogicServer》絕對(duì)是首選讀物,雖然是講述的Weblogic6.0,仍然值得購(gòu)買,這本書(shū)是BEA官方推薦的教材,作者也是BEA公司的工程師。現(xiàn)在中文版已經(jīng)隨處可見(jiàn)了。這本書(shū)結(jié)合Weblogic介紹了J2EE各個(gè)方面的技術(shù)在Weblogic平臺(tái)上的開(kāi)發(fā)和部署,實(shí)踐指導(dǎo)意義非常強(qiáng)。
在掌握了Java平臺(tái)基礎(chǔ)知識(shí)和J2EE方面的知識(shí)以后,更進(jìn)一步的是學(xué)習(xí)如何運(yùn)用OO的方法進(jìn)行軟件的設(shè)計(jì),那么就一定要學(xué)習(xí)“設(shè)計(jì)模式”。Sun公司出版了一本《J2EE核心模式》,是每個(gè)開(kāi)發(fā)Java企業(yè)平臺(tái)軟件的架構(gòu)師必備的書(shū)籍。這本書(shū)全面的介紹了J2EE體系架構(gòu)的各種設(shè)計(jì)模式,是設(shè)計(jì)師的必讀書(shū)籍。
JavaLearningPath
(三)過(guò)程篇
每個(gè)人的學(xué)習(xí)方法是不同的,一個(gè)人的方法不見(jiàn)得適合另一個(gè)人,我只能是談自己的學(xué)習(xí)方法。因?yàn)槲覍W(xué)習(xí)Java是完全自學(xué)的,從來(lái)沒(méi)有問(wèn)過(guò)別人,所以學(xué)習(xí)的過(guò)程基本上完全是自己摸索出來(lái)的。我也不知道這種方法是否是比較好的方法,只能給大家提供一點(diǎn)參考了。
學(xué)習(xí)Java的第一步是安裝好JDK,寫(xiě)一個(gè)HelloWorld,其實(shí)JDK的學(xué)習(xí)沒(méi)有那么簡(jiǎn)單,關(guān)于JDK有兩個(gè)問(wèn)題是很容易一直困擾Java程序員的地方:一個(gè)是CLASSPATH的問(wèn)題,其實(shí)從原理上來(lái)說(shuō),是要搞清楚JRE的ClassLoader是如何加載Class的;另一個(gè)問(wèn)題是package和import問(wèn)題,如何來(lái)尋找類的路徑問(wèn)題。把這兩個(gè)問(wèn)題摸索清楚了,就掃除了學(xué)習(xí)Java和使用JDK的最大障礙。推薦看一下王森的《Java深度歷險(xiǎn)》,對(duì)這兩個(gè)問(wèn)題進(jìn)行了深入的探討。
第二步是學(xué)習(xí)Java的語(yǔ)法。Java的語(yǔ)法是類C++的,基本上主流的編程語(yǔ)言不是類C,就是類C++的,沒(méi)有什么新東西,所以語(yǔ)法的學(xué)習(xí),大概就是半天的時(shí)間足夠了。唯一需要注意的是有幾個(gè)不容易搞清楚的關(guān)鍵字的用法,public,protected,private,static,什么時(shí)候用,為什么要用,怎么用,這可能需要有人來(lái)指點(diǎn)一下,我當(dāng)初是完全自己琢磨出來(lái)的,花了很久的時(shí)間。不過(guò)后來(lái)我看到《ThinkinginJava》這本書(shū)上面是講了這些概念的。
第三步是學(xué)習(xí)Java的面向?qū)ο蟮木幊陶Z(yǔ)言的特性的地方。比如繼承,構(gòu)造器,抽象類,接口,方法的多態(tài),重載,覆蓋,Java的異常處理機(jī)制。對(duì)于一個(gè)沒(méi)有面向?qū)ο笳Z(yǔ)言背景的人來(lái)說(shuō),我覺(jué)得這個(gè)過(guò)程需要花很長(zhǎng)很長(zhǎng)時(shí)間,因?yàn)閷W(xué)習(xí)Java之前沒(méi)有C++的經(jīng)驗(yàn),只有C的經(jīng)驗(yàn),我是大概花了一個(gè)月左右吧,才徹底把這些概念都搞清楚,把書(shū)上面的例子反復(fù)的揣摩,修改,嘗試,把那幾章內(nèi)容反復(fù)的看過(guò)來(lái),看過(guò)去,看了不下5遍,才徹底領(lǐng)悟了。不過(guò)我想如果有C++經(jīng)驗(yàn)的話,應(yīng)該一兩天時(shí)間足夠了。那么在這個(gè)過(guò)程中,可以多看看《ThinkinginJava》這本書(shū),對(duì)面向?qū)ο蟮闹v解非常透徹。可惜的是我學(xué)習(xí)的時(shí)候,并
沒(méi)有看到這本書(shū),所以自己花了大量的時(shí)間,通過(guò)自己的嘗試和揣摩來(lái)學(xué)會(huì)的。
第四步就是開(kāi)始熟悉Java的類庫(kù)。Java的基礎(chǔ)類庫(kù)其實(shí)就是JDK安裝目錄下面jrelibrt.jar這個(gè)包。學(xué)習(xí)基礎(chǔ)類庫(kù)就是學(xué)習(xí)rt.jar。基礎(chǔ)類庫(kù)里面的類非常非常多。據(jù)說(shuō)有3000多個(gè),我沒(méi)有統(tǒng)計(jì)過(guò)。但是真正對(duì)于我們來(lái)說(shuō)最核心的只有4個(gè),分別是
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
這四個(gè)包的學(xué)習(xí),每個(gè)包的學(xué)習(xí)都可以寫(xiě)成一本厚厚的教材,而O 'reilly也確實(shí)是這樣做的。我覺(jué)得如果時(shí)間比較緊,是不可能通過(guò)讀四本書(shū)來(lái)學(xué)習(xí)。我覺(jué)得比較好的學(xué)習(xí)方法是這樣的:
首先要通讀整個(gè)package的框架,了解整個(gè)package的class,interface,exception的構(gòu)成,最好是能夠找到介紹整個(gè)包框架的文章。這些專門介紹包的書(shū)籍的前幾章應(yīng)該就是這些總體的框架內(nèi)容介紹。
對(duì)包整體框架的把握并不是要熟悉每個(gè)類的用法,記住它有哪些屬性,方法。想記也記不住的。而是要知道包有哪些方面的類構(gòu)成的,這些類的用途是什么,最核心的幾個(gè)類分別是完成什么功能的。我在給人培訓(xùn)的時(shí)候一般是一次課講一個(gè)包,所以不可能詳細(xì)的介紹每個(gè)類的用法,但是我反復(fù)強(qiáng)調(diào),我給你們講這些包的不是要告訴你們類的方法是怎么調(diào)用的,也不要求你們記住類的方法調(diào)用,而是要你們了解,Java給我們提供了哪些類,每個(gè)類是用在什么場(chǎng)合,當(dāng)我遇到問(wèn)題的時(shí)候,我知道哪個(gè)類,或者哪幾個(gè)類的組合可以解決我的問(wèn)題,That 'all!,當(dāng)我們具體寫(xiě)程序的時(shí)候,只要你知道該用哪個(gè)類來(lái)完成你的工作就足夠了。編碼的時(shí)候,具體的方法調(diào)用,是邊寫(xiě)代碼,邊查Documentation,所有的東西都在Documentation里面,不要求你一定記住,實(shí)際你也記不住3000多個(gè)類的總共將近10萬(wàn)個(gè)方法調(diào)用。所以對(duì)每個(gè)包的總體框架的把握就變得極為重要。
第五步,通過(guò)上面的學(xué)習(xí),如果學(xué)的比較扎實(shí)的話,就打好了Java的基礎(chǔ)了,剩下要做的工作是掃清Documentation里面除了上面4個(gè)包之外的其他一些比較有用處的類。相信進(jìn)展到這一步,Java的自學(xué)能力已經(jīng)被培養(yǎng)出來(lái)了,可以到了直接學(xué)習(xí)Documentation的水平了。除了要做GUI編程之外,JDK里面其他會(huì)有用處的包是這些:
java.text.*;
java.net.*;
javax.naming.*;
這些包里面真正用的比較多的類其實(shí)很少,只有幾個(gè),所以不需要花很多時(shí)間。
第六步,JavaWeb編程
Web編程的核心是HTTP協(xié)議,HTTP協(xié)議和Java無(wú)關(guān),如果不熟悉HTTP協(xié)議的話,雖然也可以學(xué)好Servlet/JSP編程,但是達(dá)不到舉一反三,一通百通的境界。所以HTTP協(xié)議的學(xué)習(xí)是必備的。如果熟悉了HTTP協(xié)議的話,又有了Java編程的良好的基礎(chǔ),學(xué)習(xí)Servlet/JSP簡(jiǎn)直易如反掌,我學(xué)習(xí)Servlet/JSP就用了不到一周的時(shí)間,然后就開(kāi)始用JSP來(lái)做項(xiàng)目了。
在Servlet/JSP的學(xué)習(xí)中,重頭仍然是ServletDocumentation。ServletAPI最常用的類很少,花比較少的時(shí)間就可以掌握了。把這些類都看一遍,多寫(xiě)幾個(gè)例子試試。Servlet/JSP編程本質(zhì)就是在反復(fù)調(diào)用這些類來(lái)通過(guò)HTTP協(xié)議在WebServer和Brower之間交談。另外對(duì)JSP,還需要熟悉幾個(gè)常用JSP的標(biāo)記,具體的寫(xiě)法記不住的話,臨時(shí)查就是了。
此外JavaWeb編程學(xué)習(xí)的重點(diǎn)要放在WebApplication的設(shè)計(jì)模式上,如何進(jìn)行業(yè)務(wù)邏輯的分析,并且進(jìn)行合理的設(shè)計(jì),按照MVC設(shè)計(jì)模式的要求,運(yùn)用Servlet和JSP分別完成不同的邏輯層,掌握如何在Servlet和JSP之間進(jìn)行流程的控制和數(shù)據(jù)的共享,以及WebApplication應(yīng)該如何配置和部署。
第七步,J2EE編程
以上的學(xué)習(xí)過(guò)程如果是比較順利的話,進(jìn)行到這一步,難度又陡然提高。因?yàn)樯厦娴闹R(shí)內(nèi)容都是只涉及一個(gè)方面,而像EJB,JMS,JTA等核心的J2EE規(guī)范往往是幾種Java技術(shù)的綜合運(yùn)用的結(jié)晶,所以掌握起來(lái)難度比較大。
首先一定要學(xué)習(xí)好JNDI,JNDI是AppServer定位服務(wù)器資源(EJB組件,Datasouce,JMS)查找方法,如果對(duì)JNDI不熟悉的話,EJB,JMS這些東西幾乎學(xué)不下去。JNDI其實(shí)就是javax.naming.*這個(gè)包,運(yùn)用起來(lái)很簡(jiǎn)單。難點(diǎn)在于服務(wù)器資源文件的配置。對(duì)于服務(wù)器資源文件的配置,就需要看看專門的文檔規(guī)范了,比如web.xml的寫(xiě)法,ejb-jar.xml的寫(xiě)法等等。針對(duì)每種不同的AppServer,還有自己的服務(wù)資源配置文件,也是需要熟悉的。
然后可以學(xué)習(xí)JTA,主要是要理解JTA對(duì)于事務(wù)的控制的方法,以及該在什么場(chǎng)合使用JTA。這里可以簡(jiǎn)單的舉個(gè)例子,我們知道一般情況可以對(duì)于一個(gè)數(shù)據(jù)庫(kù)連接進(jìn)行事務(wù)控制(conn.setAutoCommit(false),....,conn.commit()),做為一個(gè)原子操作,但是假設(shè)我的業(yè)務(wù)需求是要把對(duì)兩個(gè)不同數(shù)據(jù)庫(kù)的操作做為一個(gè)原子操作,你能做的到嗎?這時(shí)候只能用JTA了。假設(shè)操作過(guò)程是先往A數(shù)據(jù)庫(kù)插一條記錄,然后刪除B數(shù)據(jù)庫(kù)另一個(gè)記錄,我們自己寫(xiě)代碼是控制不了把整個(gè)操作做為一個(gè)原子操作的。用JTA的話,由AppServer來(lái)完成控制。
在學(xué)習(xí)EJB之前要學(xué)習(xí)對(duì)象序列化和RMI,RMI是EJB的基礎(chǔ)。接著學(xué)習(xí)JMS和EJB,對(duì)于EJB來(lái)說(shuō),最關(guān)鍵是要理解EJB是如何通過(guò)RMI來(lái)實(shí)現(xiàn)對(duì)遠(yuǎn)端對(duì)象的調(diào)用的,以及在什么情況下要用到EJB。
在學(xué)習(xí)完EJB,JMS這些東西之后,你可能會(huì)意識(shí)到要急不可待學(xué)習(xí)兩個(gè)領(lǐng)域的知識(shí),一個(gè)是UML,另一個(gè)是DesignPattern。Java企業(yè)軟件的設(shè)計(jì)非常重視框架(Framework)的設(shè)計(jì),一個(gè)好的軟件框架是軟件開(kāi)發(fā)成功的必要條件。在這個(gè)時(shí)候,應(yīng)該開(kāi)始把學(xué)習(xí)的重點(diǎn)放在設(shè)計(jì)模式和框架的學(xué)習(xí)上,通過(guò)學(xué)習(xí)和實(shí)際的編程經(jīng)驗(yàn)來(lái)掌握EJB的設(shè)計(jì)模式和J2EE的核心模式。
J2EE規(guī)范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外還有很多很多的企業(yè)技術(shù),這里不一一進(jìn)行介紹了。
另外還有一個(gè)最新領(lǐng)域WebServices。WebServices也完全沒(méi)有任何新東西,它像是一種黏合劑,可以把不同的服務(wù)統(tǒng)一起來(lái)提供一個(gè)統(tǒng)一的調(diào)用接口,作為使用者來(lái)說(shuō),我只要獲得服務(wù)提供者給我的WSDL(對(duì)服務(wù)的描述),就夠了,我完全不知道服務(wù)器提供者提供的服務(wù)究竟是EJB組件,還是.Net組件,還是什么CORBA組件,還是其他的什么實(shí)現(xiàn),我也不需要知道。WebServices最偉大的地方就在于通過(guò)統(tǒng)一的服務(wù)提供方式和調(diào)用方式,實(shí)現(xiàn)了整個(gè)Internet服務(wù)的共享,是一個(gè)非常令人激動(dòng)的技術(shù)領(lǐng)域。WebServices好像目前還沒(méi)有什么很好的書(shū)籍,但是可以通過(guò)在網(wǎng)絡(luò)上面查資料的方式來(lái)學(xué)習(xí)。
JavaLearningPath
(四)方法篇
Java作為一門編程語(yǔ)言,最好的學(xué)習(xí)方法就是寫(xiě)代碼。當(dāng)你學(xué)習(xí)一個(gè)類以后,你就可以自己寫(xiě)個(gè)簡(jiǎn)單的例子程序來(lái)運(yùn)行一下,看看有什么結(jié)果,然后再多調(diào)用幾個(gè)類的方法,看看運(yùn)行結(jié)果,這樣非常直觀的把類給學(xué)會(huì)了,而且記憶非常深刻。然后不應(yīng)該滿足把代碼調(diào)通,你應(yīng)該想想看如果我不這樣寫(xiě),換個(gè)方式,再試試行不行。記得哪個(gè)高人說(shuō)過(guò)學(xué)習(xí)編程就是個(gè)破壞的過(guò)程,把書(shū)上的例子,自己學(xué)習(xí)Documentation編寫(xiě)的例子在運(yùn)行通過(guò)以后,不斷的嘗試著用不同的方法實(shí)現(xiàn),不斷的嘗試破壞代碼的結(jié)構(gòu),看看它會(huì)有什么結(jié)果。通過(guò)這樣的方式,你會(huì)很徹底的很精通的掌握J(rèn)ava。
舉個(gè)例子,我們都編過(guò)HelloWorld
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println(“HelloWorld ”);
}
}
很多初學(xué)者不是很理解為什么main方法一定要這樣來(lái)定義publicstaticvoidmain(String[]args),能不能不這樣寫(xiě)?包括我剛學(xué)習(xí)Java的時(shí)候也有這樣的疑問(wèn)。想知道答案嗎?很簡(jiǎn)單,你把main改個(gè)名字運(yùn)行一下,看看報(bào)什么錯(cuò)誤,然后根據(jù)出錯(cuò)信息進(jìn)行分析;把main的public取掉,在試試看,報(bào)什么錯(cuò)誤;static去掉還能不能運(yùn)行;不知道m(xù)ain方法是否一定要傳一個(gè)String[]數(shù)組的,把String[]改掉,改成int[],或者String試試看;不知道是否必須寫(xiě)args參數(shù)名稱的,也可以把a(bǔ)rgs改成別的名字,看看運(yùn)行結(jié)果如何。
我當(dāng)初學(xué)習(xí)Java的時(shí)候就是這樣做的,把HelloWorld程序反復(fù)改了七八次,不斷運(yùn)行,分析運(yùn)行結(jié)果,最后就徹底明白為什么了main方法是這樣定義的了。
此外,我對(duì)于staic,public,private,Exception,try{}catch{}finally{}等等等等一開(kāi)始都不是很懂,都是把參考書(shū)上面的例子運(yùn)行成功,然后就開(kāi)始破壞它,不斷的根據(jù)自己心里面的疑問(wèn)來(lái)重新改寫(xiě)程序,看看能不能運(yùn)行,運(yùn)行出來(lái)是個(gè)什么樣子,是否可以得到預(yù)期的結(jié)果。這樣雖然比較費(fèi)時(shí)間,不過(guò)一個(gè)例子程序這樣反復(fù)破壞幾次之后。我就對(duì)這個(gè)相關(guān)的知識(shí)徹底學(xué)通了。有時(shí)候甚至故意寫(xiě)一些錯(cuò)誤的代碼來(lái)運(yùn)行,看看能否得到預(yù)期的運(yùn)行錯(cuò)誤。這樣對(duì)于編程的掌握是及其深刻的。
其中特別值得一提的是JDK有一個(gè)非常棒的調(diào)試功能,-verbose
java–verbose
javac–verbose以及其它很多JDK工具都有這個(gè)選項(xiàng)
-verbose可以顯示在命令執(zhí)行的過(guò)程中,JVM都依次加載哪里Class,通過(guò)這些寶貴的調(diào)試信息,可以幫助我們分析出JVM在執(zhí)行的過(guò)程中都干了些什么。
另外,自己在學(xué)習(xí)過(guò)程中,寫(xiě)的很多的這種破壞例程,應(yīng)該有意識(shí)的分門別類的保存下來(lái),在工作中積累的典型例程也應(yīng)該定期整理,日積月累,自己就有了一個(gè)代碼庫(kù)了。遇到類似的問(wèn)題,到代碼庫(kù)里面Copy&Paste,Search&Replace,就好了,極大提高了開(kāi)發(fā)速度。最理想的情況是把一些通用的例程自己再抽象一層,形成一個(gè)通用的類庫(kù),封裝好。那么可復(fù)用性就更強(qiáng)了。
所以我覺(jué)得其實(shí)不是特別需要例程的,自己寫(xiě)的破壞例程就是最好的例子,如果你實(shí)在對(duì)自己寫(xiě)的代碼不放心的話,我強(qiáng)烈推薦你看看JDK基礎(chǔ)類庫(kù)的Java源代碼。在JDK安裝目錄下面會(huì)有一個(gè)src.zip,解開(kāi)來(lái)就可以完整的看到整個(gè)JDK基礎(chǔ)類庫(kù),也就是rt.jar的Java源代碼,你可以參考一下Sun是怎么寫(xiě)Java程序的,規(guī)范是什么樣子的。我自己在學(xué)習(xí)Java的類庫(kù)的時(shí)候,當(dāng)有些地方理解的不是很清楚的時(shí)候,或者想更加清晰的理解運(yùn)作的細(xì)節(jié)的時(shí)候,往往會(huì)打開(kāi)相應(yīng)的類的源代碼,通過(guò)看源代碼,所有的問(wèn)題都會(huì)一掃而空。
第三篇:Java自學(xué)成長(zhǎng)路線
Java自學(xué)成長(zhǎng)路線
JAVA自學(xué)之路 一:學(xué)會(huì)選擇
決心做軟件的,大多數(shù)人選的是java,或是.net,也有一些選擇了手機(jī)、嵌入式、游戲、3G、測(cè)試等。
JAVA是一種平臺(tái),也是一種程序設(shè)計(jì)語(yǔ)言,如何學(xué)好程序設(shè)計(jì)不僅僅適用于JAVA,對(duì)C++等其他程序設(shè)計(jì)語(yǔ)言也一樣管用。有編程高手認(rèn)為,JAVA也好C也好沒(méi)什么分別,拿來(lái)就用。為什么他們能達(dá)到如此境界?我想是因?yàn)榫幊陶Z(yǔ)言之間有共通之處,領(lǐng)會(huì)了編程的精髓,自然能夠做到一通百通。如何學(xué)習(xí)程序設(shè)計(jì)理所當(dāng)然也有許多共通的地方。
1.1 培養(yǎng)興趣
興趣是能夠讓你堅(jiān)持下去的動(dòng)力。如果只是把寫(xiě)程序作為謀生的手段的話,你會(huì)活的很累,也太對(duì)不起自己了。多關(guān)心一些行業(yè)趣事,多想想蓋茨。不是提倡天天做白日夢(mèng),但人要是沒(méi)有了夢(mèng)想,你覺(jué)得有味道嗎?可能像許多深圳本地農(nóng)民一樣,打打麻將,喝喝功夫茶,拜拜財(cái)神爺;每個(gè)月就有幾萬(wàn)十幾萬(wàn)甚至更多的進(jìn)帳,憑空多出個(gè)“食利階層”。你認(rèn)為,這樣有味道嗎?有空多到一些程序員論壇轉(zhuǎn)轉(zhuǎn),你會(huì)發(fā)現(xiàn),他們其實(shí)很樂(lè)觀幽默,時(shí)不時(shí)會(huì)冒出智慧的火花。
1.2 慎選程序設(shè)計(jì)語(yǔ)言
男怕入錯(cuò)行,女怕嫁錯(cuò)郎。初學(xué)者選擇程序設(shè)計(jì)語(yǔ)言需要謹(jǐn)慎對(duì)待。軟件開(kāi)發(fā)不僅僅是掌握一門編程語(yǔ)言了事,它還需要其他很多方面的背景知識(shí)。軟件開(kāi)發(fā)也不僅僅局限于某幾個(gè)領(lǐng)域,而是已經(jīng)滲透到了各行各業(yè)幾乎每一個(gè)角落。
如果你對(duì)硬件比較感興趣,你可以學(xué)習(xí)C語(yǔ)言/匯編語(yǔ)言,進(jìn)入硬件開(kāi)發(fā)領(lǐng)域。如果你對(duì)電信的行業(yè)知識(shí)及網(wǎng)絡(luò)比較熟悉,你可以在C/C++等之上多花時(shí)間,以期進(jìn)入電信軟件開(kāi)發(fā)領(lǐng)域。如果你對(duì)操作系統(tǒng)比較熟悉,你可以學(xué)習(xí)C/Linux等等,為L(zhǎng)inux內(nèi)核開(kāi)發(fā)/驅(qū)動(dòng)程序開(kāi)發(fā)/嵌入式開(kāi)發(fā)打基礎(chǔ)。如果你想介入到應(yīng)用范圍最廣泛的應(yīng)用軟件開(kāi)發(fā)(包括電子商務(wù)電子政務(wù)系統(tǒng))的話,你可以選擇J2EE或.NET,甚至LAMP組合。每個(gè)領(lǐng)域要求的背景知識(shí)不一樣。做應(yīng)用軟件需要對(duì)數(shù)據(jù)庫(kù)等很熟悉。總之,你需要根據(jù)自己的特點(diǎn)來(lái)選擇合適你的編程語(yǔ)言。
1.3 要腳踏實(shí)地,快餐式的學(xué)習(xí)不可取
先分享一個(gè)故事。
有一個(gè)小朋友,他很喜歡研究生物學(xué),很想知道那些蝴蝶如何從蛹?xì)だ锍鰜?lái),變成蝴蝶便會(huì)飛。有一次,他走到草原上面看見(jiàn)一個(gè)蛹,便取了回家,然后看著,過(guò)了幾天以后,這個(gè)蛹出了一條裂痕,看見(jiàn)里面的蝴蝶開(kāi)始掙扎,想抓破蛹?xì)わw出來(lái)。這個(gè)過(guò)程達(dá)數(shù)小時(shí)之久,蝴蝶在蛹里面很辛苦地拼命掙扎,怎么也沒(méi)法子走出來(lái)。這個(gè)小孩看著看著不忍心,就想不如讓我?guī)蛶退桑汶S手拿起剪刀在蛹上剪開(kāi),使蝴蝶破蛹而出。但蝴蝶出來(lái)以后,因?yàn)槌岚虿粔蛄Γ兊煤苡纺[,飛不起來(lái)。
這個(gè)故事給我們的啟示是:欲速則不達(dá)。
浮躁是現(xiàn)代人最普遍的心態(tài),能怪誰(shuí)?也許是貧窮落后了這么多年的緣故,就像當(dāng)年的大躍進(jìn)一樣,都想大步跨入共產(chǎn)主義社會(huì)。現(xiàn)在的軟件公司、客戶、政府、學(xué)校、培訓(xùn)機(jī)構(gòu)等等到處彌漫著浮躁之氣。就拿筆者比較熟悉的深圳IT培訓(xùn)行業(yè)來(lái)說(shuō)吧,居然有的打廣告宣稱“參加培訓(xùn),100%就業(yè)”,居然報(bào)名的學(xué)生不少,簡(jiǎn)直是藐視天下程序員。社會(huì)環(huán)境如是,我們不能改變,只能改變自己,鬧市中的安寧,彌足珍貴。許多初學(xué)者C++/JAVA沒(méi)開(kāi)始學(xué),立馬使用VC/JBuilder,會(huì)使用VC/JBuilder開(kāi)發(fā)一個(gè)Hello World程序,就忙不迭的向世界宣告,“我會(huì)軟件開(kāi)發(fā)了”,簡(jiǎn)歷上也大言不慚地寫(xiě)上“精通VC/JAVA”。結(jié)果到軟件公司面試時(shí)要么被三兩下打發(fā)走了,要么被駁的體無(wú)完膚,無(wú)地自容。到處碰壁之后才知道捧起《C++編程思想》《JAVA編程思想》仔細(xì)鉆研,早知如此何必當(dāng)初呀。
“你現(xiàn)在講究簡(jiǎn)單方便,你以后的路就長(zhǎng)了”,好象也是佛經(jīng)中的勸戒。
1.4 多實(shí)踐,快實(shí)踐
彭端淑的《為學(xué)一首示子侄》中有窮和尚與富和尚的故事。
從前,四川邊境有兩個(gè)和尚,一個(gè)貧窮,一個(gè)有錢。一天,窮和尚對(duì)富和尚說(shuō):“我打算去南海朝圣,你看怎么樣?”富和尚說(shuō):“這里離南海有幾千里遠(yuǎn),你靠什么去呢?”窮和尚說(shuō):“我只要一個(gè)水缽,一個(gè)飯碗就夠了。”富和尚為難地說(shuō):“幾年前我就打算買條船去南海,可至今沒(méi)去成,你還是別去吧!” 一年以后,富和尚還在為租賃船只籌錢,窮和尚卻已經(jīng)從南海朝圣回來(lái)了。
這個(gè)故事可解讀為:任何事情,一旦考慮好了,就要馬上上路,不要等到準(zhǔn)備周全之后,再去干事情。假如事情準(zhǔn)備考慮周全了再上路的話,別人恐怕捷足先登了。軟件開(kāi)發(fā)是一門工程學(xué)科,注重的就是實(shí)踐,“君子動(dòng)口不動(dòng)手”對(duì)軟件開(kāi)發(fā)人員來(lái)講根本就是錯(cuò)誤的,他們提倡“動(dòng)手至上”,但別害怕,他們大多溫文爾雅,沒(méi)有暴力傾向,雖然有時(shí)候蓬頭垢面的一副“比爾蓋茨”樣。有前輩高人認(rèn)為,學(xué)習(xí)編程的秘訣是:編程、編程、再編程,筆者深表贊同。不僅要多實(shí)踐,而且要快實(shí)踐。我們?cè)诳磿?shū)的時(shí)候,不要等到你完全理解了才動(dòng)手敲代碼,而是應(yīng)該在看書(shū)的同時(shí)敲代碼,程序運(yùn)行的各種情況可以讓你更快更牢固的掌握知識(shí)點(diǎn)。
1.5 多參考程序代碼
程序代碼是軟件開(kāi)發(fā)最重要的成果之一,其中滲透了程序員的思想與靈魂。許多人被《仙劍奇?zhèn)b傳》中凄美的愛(ài)情故事感動(dòng),悲劇的結(jié)局更有一種缺憾美。為什么要以悲劇結(jié)尾?據(jù)說(shuō)是因?yàn)閷?xiě)《仙劍奇?zhèn)b傳》的程序員失戀而安排了這樣的結(jié)局,他把自己的感覺(jué)融入到游戲中,卻讓眾多的仙劍迷扼腕嘆息。
多多參考代碼例子,對(duì)JAVA而言有參考文獻(xiàn)[4.3],有API類的源代碼(JDK安裝目錄下的src.zip文件),也可以研究一些開(kāi)源的軟件或框架。
1.6 加強(qiáng)英文閱讀能力
對(duì)學(xué)習(xí)編程來(lái)說(shuō),不要求英語(yǔ), 但不能一點(diǎn)不會(huì),。最起碼像JAVA API文檔(參考文獻(xiàn)[4.4])這些東西還是要能看懂的,連猜帶懵都可以;旁邊再開(kāi)啟一個(gè)“金山詞霸”。看多了就會(huì)越來(lái)越熟練。在學(xué)JAVA的同時(shí)學(xué)習(xí)英文,一箭雙雕多好。另外好多軟件需要到英文網(wǎng)站下載,你要能夠找到它們,這些是最基本的要求。英語(yǔ)好對(duì)你學(xué)習(xí)有很大的幫助。口語(yǔ)好的話更有機(jī)會(huì)進(jìn)入管理層,進(jìn)而可以成為剝削程序員的“周扒皮”。
1.7 萬(wàn)不得已才請(qǐng)教別人
筆者在ChinaITLab網(wǎng)校的在線輔導(dǎo)系統(tǒng)中解決學(xué)生問(wèn)題時(shí)發(fā)現(xiàn),大部分的問(wèn)題學(xué)生稍做思考就可以解決。請(qǐng)教別人之前,你應(yīng)該先回答如下幾個(gè)問(wèn)題。
你是否在google中搜索了問(wèn)題的解決辦法?
你是否查看了JAVA API文檔?
你是否查找過(guò)相關(guān)書(shū)籍?
你是否寫(xiě)代碼測(cè)試過(guò)?
如果回答都是“是”的話,而且還沒(méi)有找到解決辦法,再問(wèn)別人不遲。要知道獨(dú)立思考的能力對(duì)你很重要。要知道程序員的時(shí)間是很寶貴的。
1.8 多讀好書(shū)
書(shū)中自有顏如玉。比爾?蓋茨是一個(gè)飽讀群書(shū)的人。雖然沒(méi)有讀完大學(xué),但九歲的時(shí)候比爾?蓋茨就已經(jīng)讀完了所有的百科全書(shū),所以他精通天文、歷史、地理等等各類學(xué)科,可以說(shuō)比爾?蓋茨不僅是當(dāng)今世界上金錢的首富,而且也可以稱得上是知識(shí)的巨富。
筆者在給學(xué)生上課的時(shí)候經(jīng)常會(huì)給他們推薦書(shū)籍,到后來(lái)學(xué)生實(shí)在忍無(wú)可忍開(kāi)始抱怨,“天吶,這么多書(shū)到什么時(shí)候才能看完了”,“學(xué)軟件開(kāi)發(fā),感覺(jué)上了賊船”。這時(shí)候,我的回答一般是,“別著急,什么時(shí)候帶你們?nèi)タ纯次业臅?shū)房,到現(xiàn)在每月花在技術(shù)書(shū)籍上的錢400元,這在軟件開(kāi)發(fā)人員之中還只能夠算是中等的”,學(xué)生當(dāng)場(chǎng)暈倒。(注:這一部分學(xué)生是剛學(xué)軟件開(kāi)發(fā)的)
對(duì)于在JAVA開(kāi)發(fā)領(lǐng)域的好書(shū)在筆者另外一篇文章中會(huì)專門點(diǎn)評(píng)。該文章可作為本文的姊妹篇。
1.9 使用合適的工具
工欲善其事必先利其器。軟件開(kāi)發(fā)包含各種各樣的活動(dòng),需求收集分析、建立用例模型、建立分析設(shè)計(jì)模型、編程實(shí)現(xiàn)、調(diào)試程序、自動(dòng)化測(cè)試、持續(xù)集成等等,沒(méi)有工具幫忙可以說(shuō)是寸步難行。工具可以提高開(kāi)發(fā)效率,使軟件的質(zhì)量更高BUG更少。組合稱手的武器。到飛花摘葉皆可傷人的境界就很高了,無(wú)招勝有招,手中無(wú)劍心中有劍這樣的境界幾乎不可企及。在筆者另外一篇文章中會(huì)專門闡述如何選擇合適的工具(該文章也可作為本文的姊妹篇)。
2.軟件開(kāi)發(fā)學(xué)習(xí)路線
兩千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒進(jìn)也不保守并非中庸之道,而是找尋學(xué)習(xí)軟件開(kāi)發(fā)的正確路線與規(guī)律。
從軟件開(kāi)發(fā)人員的生涯規(guī)劃來(lái)講,我們可以大致分為三個(gè)階段,軟件工程師→軟件設(shè)計(jì)師→架構(gòu)設(shè)計(jì)師或項(xiàng)目管理師。不想當(dāng)元帥的士兵不是好士兵,不想當(dāng)架構(gòu)設(shè)計(jì)師或項(xiàng)目管理師的程序員也不是好的程序員。我們應(yīng)該努力往上走。讓我們先整理一下開(kāi)發(fā)應(yīng)用軟件需要學(xué)習(xí)的主要技術(shù)。
A.基礎(chǔ)理論知識(shí),如操作系統(tǒng)、編譯原理、數(shù)據(jù)結(jié)構(gòu)與算法、計(jì)算機(jī)原理等,它們并非不重要。如不想成為計(jì)算機(jī)科學(xué)家的話,可以采取“用到的時(shí)候再來(lái)學(xué)”的原則。
B.一門編程語(yǔ)言,現(xiàn)在基本上都是面向?qū)ο蟮恼Z(yǔ)言,JAVA/C++/C#等等。如果做WEB開(kāi)發(fā)的話還要學(xué)習(xí)HTML/JavaScript等等。
C.一種方法學(xué)或者說(shuō)思想,現(xiàn)在基本都是面向?qū)ο笏枷耄∣OA/OOD/設(shè)計(jì)模式)。由此而衍生的基于組件開(kāi)發(fā)CBD/面向方面編程AOP等等。
D.一種關(guān)系型數(shù)據(jù)庫(kù),ORACLE/SqlServer/DB2/MySQL等等
E.一種提高生產(chǎn)率的IDE集成開(kāi)發(fā)環(huán)境JBuilder/Eclipse/VS.NET等。
F.一種UML建模工具,用ROSE/VISIO/鋼筆進(jìn)行建模。
G.一種軟件過(guò)程,RUP/XP/CMM等等,通過(guò)軟件過(guò)程來(lái)組織軟件開(kāi)發(fā)的眾多活動(dòng),使開(kāi)發(fā)流程專業(yè)化規(guī)范化。當(dāng)然還有其他的一些軟件工程知識(shí)。
H.項(xiàng)目管理、體系結(jié)構(gòu)、框架知識(shí)。
正確的路線應(yīng)該是:B→C→E→F→G→H。
還需要補(bǔ)充幾點(diǎn):
1).對(duì)于A與C要補(bǔ)充的是,我們應(yīng)該在實(shí)踐中逐步領(lǐng)悟編程理論與編程思想。新技術(shù)雖然不斷涌現(xiàn),更新速度令人眼花燎亂霧里看花;但萬(wàn)變不離其宗,編程理論與編程思想的變化卻很慢。掌握了編程理論與編程思想你就會(huì)有撥云見(jiàn)日之感。面向?qū)ο蟮乃枷朐谀壳皝?lái)講是相當(dāng)關(guān)鍵的,是強(qiáng)勢(shì)技術(shù)之一,在上面需要多投入時(shí)間,給你的回報(bào)也會(huì)讓你驚喜。
2).對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō)是獨(dú)立學(xué)習(xí)的,這個(gè)時(shí)機(jī)就由你來(lái)決定吧。
3).編程語(yǔ)言作為學(xué)習(xí)軟件開(kāi)發(fā)的主線,而其余的作為輔線。
4).軟件工程師著重于B、C、E、D;軟件設(shè)計(jì)師著重于B、C、E、D、F;架構(gòu)設(shè)計(jì)師著重于C、F、H。
3.如何學(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ǔ),你才能在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í)際開(kāi)發(fā)還有很長(zhǎng)的一段路要走。
3.1.2 OO思想的領(lǐng)悟
掌握了基礎(chǔ)語(yǔ)法和JAVA程序運(yùn)行原理后,我們就可以用JAVA語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮乃枷肓恕C嫦驅(qū)ο螅且环N方法學(xué);是獨(dú)立于語(yǔ)言之外的編程思想;是CBD基于組件開(kāi)發(fā)的基礎(chǔ);屬于強(qiáng)勢(shì)技術(shù)之一。當(dāng)以后因工作需要轉(zhuǎn)到別的面向?qū)ο笳Z(yǔ)言的時(shí)候,你會(huì)感到特別的熟悉親切,學(xué)起來(lái)像喝涼水這么簡(jiǎn)單。
使用面向?qū)ο蟮乃枷脒M(jìn)行開(kāi)發(fā)的基本過(guò)程是:
●調(diào)查收集需求。
●建立用例模型。
●從用例模型中識(shí)別分析類及類與類之間的靜態(tài)動(dòng)態(tài)關(guān)系,從而建立分析模型。
●細(xì)化分析模型到設(shè)計(jì)模型。
●用具體的技術(shù)去實(shí)現(xiàn)。
●測(cè)試、部署、總結(jié)。
3.1.3 基本API的學(xué)習(xí)
進(jìn)行軟件開(kāi)發(fā)的時(shí)候,并不是什么功能都需要我們?nèi)?shí)現(xiàn),也就是經(jīng)典名言所說(shuō)的“不需要重新發(fā)明輪子”。我們可以利用現(xiàn)成的類、組件、框架來(lái)搭建我們的應(yīng)用,如SUN公司編寫(xiě)好了眾多類實(shí)現(xiàn)一些底層功能,以及我們下載過(guò)來(lái)的JAR文件中包含的類,我們可以調(diào)用類中的方法來(lái)完成某些功能或繼承它。
那么究竟應(yīng)該選擇什么方向呢?
我的意見(jiàn)是,不要太過(guò)相信各種培訓(xùn)機(jī)構(gòu)或是搶手文章的說(shuō)法(包括我),當(dāng)你要走向社會(huì)的時(shí)候,就不要再把自己當(dāng)成學(xué)生,不要把自己的將來(lái)交給別人,學(xué)會(huì)運(yùn)用自己的眼睛去觀察,去了解這個(gè)世界吧。
每個(gè)培訓(xùn)機(jī)構(gòu)都會(huì)宣傳自己的好處,并不能說(shuō)明大的趨勢(shì)。一些新聞文章很有可能是槍手寫(xiě)的,不必太過(guò)相信。國(guó)外背景的教師和課程,未必適合你。
那么怎么才能確定自己將來(lái)的方向?如何才能從紛繁復(fù)雜、或真或假的數(shù)據(jù)世界中挖出一條路?
我講一個(gè)通過(guò)招聘網(wǎng)站的觀察方法。
可以到各種招聘的網(wǎng)站上查詢信息(可以到google上查詢招聘的網(wǎng)站),例如: http:// 得到別人的回答,要懂得感恩。
第四篇:Java心得
JAVA心得
1.Only public & abstract are permitted for interface.2.Only public, abstract & final are permitted for class.3.main方法作為程序的入口,其modifier必須是 public static void
且必須有一個(gè)類型為String的數(shù)組參數(shù), 否則不能運(yùn)行.4.非static內(nèi)部類中不能有static的域和方法.static的域和方法只能存在于頂級(jí)類中或者是static嵌套類中.5.interface 中定義的變量都是public static final的, 且必須賦值.6.如果試圖在方法中更改final變量的值, 則編譯不能通過(guò);
7.兩個(gè)int類型的數(shù)相除其結(jié)果也是int型且不會(huì)四舍五入而是直接截取整數(shù)部分.一個(gè)浮點(diǎn)型數(shù)字與整數(shù)相除其結(jié)果是浮點(diǎn)型.8.try{}塊后面必須有catch(Exception){}或者finally{}
try{return a;}
finally{
}
執(zhí)行順序是return語(yǔ)句返回結(jié)果之前 先執(zhí)行finally{}再返回結(jié)果.9.子類override父類方法是可見(jiàn)修飾符級(jí)別不能降低,例如父類是protected
子類可以是protected和public 但不可以是default和private.如果子類有個(gè)方法與父類同名且參數(shù)類型也相同,則必須返回值類型也相同 否則不能編譯.Java允許方法名與類名相同, IDE會(huì)給出警告但可以編譯和運(yùn)行.
第五篇:程序員自學(xué)之路——Java方向
程序員自學(xué)之路——Java方向
Unix/Linux操作系統(tǒng)
Unix開(kāi)發(fā)環(huán)境
Unix操作系統(tǒng)概述、Unix文件系統(tǒng)、Unix的Kernel和Shell、遠(yuǎn)程登錄的原理、用戶管理命令、基本文件和目錄操作命令、Unix操作系統(tǒng)的特殊字符、使用vi命令編輯文本文件、使用FTP進(jìn)行文件傳輸、初始化文件及環(huán)境變量的配置、Shell腳本及crontab命令。
熟練掌握Sun Solaris Unix系統(tǒng)基本操作命令,能夠勝任Unix/Linux系統(tǒng)下的Java程序開(kāi)發(fā)和管理工作。
Java SE開(kāi)發(fā)
Java語(yǔ)言基礎(chǔ)
Java SE 6.0核心語(yǔ)法歸納講解,包括Java語(yǔ)言的特點(diǎn)、環(huán)境的配置、開(kāi)發(fā)基本命令、類的定義技巧、方法調(diào)用過(guò)程、對(duì)象生成原理與內(nèi)存分布、標(biāo)識(shí)符、關(guān)鍵字和數(shù)據(jù)類型、運(yùn)算符和表達(dá)式、Java商業(yè)運(yùn)算要點(diǎn)、流程控制語(yǔ)句、Java數(shù)組和鏈表等算法和數(shù)據(jù)結(jié)構(gòu);同時(shí)掌握Eclipse開(kāi)發(fā)工具的使用。
熟練掌握J(rèn)ava核心語(yǔ)法
Java面向?qū)ο缶幊?/p>
囊括了Java面向?qū)ο蟮木瑁嫦驅(qū)ο笕筇匦浴庋b、繼承與多態(tài),各種修飾符在面向?qū)ο笏枷胂碌木C合運(yùn)用,抽象類的特點(diǎn)和使用技巧,面向接口編程的思想和實(shí)踐,內(nèi)部類的應(yīng)用,JDK核心類包括Object、String、Date和Calendar等類的使用和設(shè)計(jì)思想,正則表達(dá)式,自動(dòng)封箱和解箱,Java異常處理,Java集合框架,泛型的語(yǔ)法和使用等。
熟練掌握J(rèn)ava面向?qū)ο笏枷?/p>
Java高級(jí)應(yīng)用
主要研究:中高級(jí)軟件工程師的必修利器——Java反射編程,Java圖形開(kāi)發(fā)組件的開(kāi)發(fā)步驟和應(yīng)用技巧,事件模型的設(shè)計(jì)理念和應(yīng)用,Java多線程編程,Java的I/O流,Java網(wǎng)絡(luò)編程等。
熟練掌握J(rèn)ava高級(jí)編程,這部分是作為高級(jí)程序員必須掌握的技術(shù)
XML語(yǔ)法與解析
XML(eXtensible Markup Language)的中文名稱是可擴(kuò)展標(biāo)記語(yǔ)言,是樹(shù)形的概念層次結(jié)構(gòu),簡(jiǎn)而言之它就是一種保存結(jié)構(gòu)化數(shù)據(jù)的格式。XML作為一種面向內(nèi)容的描述語(yǔ)言,通過(guò)基于樹(shù)形數(shù)據(jù)結(jié)構(gòu)的層次化概念分類體系模型,在很大程度上彌補(bǔ)了HTML作為網(wǎng)絡(luò)標(biāo)準(zhǔn)語(yǔ)言在概念層次關(guān)系的語(yǔ)義表達(dá)上的不足。
主要學(xué)習(xí)內(nèi)容:XML的意義、語(yǔ)法結(jié)構(gòu)、XML良構(gòu)的規(guī)范;DTD的意義和語(yǔ)法、使用名稱空間的技巧;Schema的意義、語(yǔ)法,使用Java API解析XML;基于Java DOM和SAX的XML處理技術(shù)。
掌握目前最通用的網(wǎng)絡(luò)數(shù)據(jù)格式,并能熟練在商業(yè)開(kāi)發(fā)中應(yīng)用
數(shù)據(jù)庫(kù)編程
Oracle SQL
Oracle公司的Oracle數(shù)據(jù)庫(kù)產(chǎn)品是當(dāng)今的高端企業(yè)級(jí)應(yīng)用的主流產(chǎn)品。我們主要學(xué)習(xí):Oracle 10g數(shù)據(jù)庫(kù)原理,SQL語(yǔ)句(DDL、DML、TCL、DCL)的語(yǔ)法,項(xiàng)目中經(jīng)典SQL語(yǔ)句重現(xiàn),Oracle數(shù)據(jù)庫(kù)函數(shù)包括字符函數(shù)、數(shù)值函數(shù)、日期函數(shù)、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)以及組函數(shù),數(shù)據(jù)庫(kù)的設(shè)計(jì),表連接包括等值連接、非等值連接、自連接和外連接,SQL子查詢,Oracle序列對(duì)象在項(xiàng)目中的運(yùn)用,索引及視圖,系統(tǒng)表的應(yīng)用技巧,Oracle SQL的錯(cuò)誤排查及調(diào)優(yōu)解決方案。
掌握Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)、操作和開(kāi)發(fā)
MySQL數(shù)據(jù)庫(kù)
MySQL5.0數(shù)據(jù)庫(kù)的管理和開(kāi)發(fā)要領(lǐng),掌握MySQL和Oracle數(shù)據(jù)庫(kù)的異同點(diǎn)。掌握MySql數(shù)據(jù)庫(kù)的設(shè)計(jì)、操作和開(kāi)發(fā)
JDBC編程
JDBC為Java開(kāi)發(fā)者使用數(shù)據(jù)庫(kù)提供了統(tǒng)一的編程接口,使得開(kāi)發(fā)人員可以使用純Java的方式來(lái)連接數(shù)據(jù)庫(kù),并進(jìn)行操作。學(xué)習(xí)的主要內(nèi)容有:JDBC的編程步驟,重要的編程接口,JDBC異常處理,JDBC中使用事務(wù),Batch Updates批量更新,Blob/Clob等新數(shù)據(jù)類型,JNDI,DataSource,數(shù)據(jù)庫(kù)連接池的管理等。逐步掌握基于JDBC的Oracle,SQLServer,DB2,MySQL等數(shù)據(jù)庫(kù)連接技術(shù)。
熟練掌握J(rèn)ava語(yǔ)言對(duì)各種數(shù)據(jù)庫(kù)的連接技術(shù)
系統(tǒng)分析與設(shè)計(jì)
軟件開(kāi)發(fā)流程及UML
學(xué)習(xí)軟件開(kāi)發(fā)過(guò)程包括瀑布模型、統(tǒng)一開(kāi)發(fā)過(guò)程(USDP),CMMI5級(jí)軟件設(shè)計(jì)規(guī)范,掌握統(tǒng)一建模語(yǔ)言UML,掌握軟件的靜態(tài)建模和動(dòng)態(tài)建模。掌握面向?qū)ο笾袑?duì)象的關(guān)系。
掌握軟件開(kāi)發(fā)流程及UML
設(shè)計(jì)原則與模式
原則和模式是分析設(shè)計(jì)人員與程序員在開(kāi)發(fā)過(guò)程中經(jīng)驗(yàn)的總結(jié),學(xué)習(xí)模式就是獲取經(jīng)驗(yàn)。
掌握面向?qū)ο蟮脑O(shè)計(jì)原則:“開(kāi)—閉”原則(OCP)、里氏代換原則(LSP)、依賴倒轉(zhuǎn)原則(DIP)、接口隔離原則(ISP)、組合/聚合復(fù)用原則(CARP)、迪米特法則(LoD)。
掌握主流的設(shè)計(jì)模式:工廠模式(Factory)、單例模式(Singleton)、觀察者模式
(Observer)、組合模式(Composite)、狀態(tài)模式(State)等,以及重要的架構(gòu)模式:Dao模式、MVC模式。
掌握面向?qū)ο蟮脑O(shè)計(jì)原則和模式。區(qū)別于激情代碼,重點(diǎn)在于知道軟件為什么要這么做,保證代碼質(zhì)量,保證科學(xué)的開(kāi)發(fā)流程。按照CMM3的標(biāo)準(zhǔn)來(lái)設(shè)計(jì)軟件和管理開(kāi)發(fā)過(guò)程。
Web開(kāi)發(fā)基礎(chǔ)
HTML
基于瀏覽器的語(yǔ)言HTML:
了解HTML基本文檔結(jié)構(gòu)、常用的meta,掌握HTML列表和表格基本操作,了解HTTP GET和POST請(qǐng)求及響應(yīng)的協(xié)議格式,掌握表單的基本原理,掌握GET和POST提交方式及其區(qū)別,熟練掌握常用表單元素。
掌握企業(yè)級(jí)應(yīng)用客戶端頁(yè)面技術(shù)
CSS
CSS意為層疊樣式表(Cascading Style Sheets)用于定義HTML元素的位置和樣式。CSS樣式定義通常存儲(chǔ)在單獨(dú)的文件中, 可以極大提高工作效率。掌握CSS基本語(yǔ)法和CSS選擇器,掌握CSS定位技術(shù),了解CSS內(nèi)外邊距、邊框等特性。
掌握企業(yè)級(jí)應(yīng)用客戶端頁(yè)面樣式技術(shù)
JavaScript
基于瀏覽器的動(dòng)態(tài)腳本技術(shù)JavaScript:
JavaScript 被設(shè)計(jì)用來(lái)向 HTML頁(yè)面添加交互行為,是一種被瀏覽器解釋執(zhí)行的腳本語(yǔ)言。我們可以應(yīng)用JavaScript來(lái)響應(yīng)事件, 實(shí)現(xiàn)復(fù)雜交互,驗(yàn)證數(shù)據(jù), 提高系統(tǒng)健壯性,獲取和改變HTML元素及CSS屬性,動(dòng)態(tài)改變頁(yè)面外觀,逐步向RIA(Rich Internet Applications)邁進(jìn)。
掌握J(rèn)avaScript基本數(shù)據(jù)類型及其運(yùn)算,熟練使用數(shù)組、日期等,掌握基本的對(duì)于頁(yè)面元素的操作,掌握Prototype.js的基本方法,掌握HTML DOM模型,Window對(duì)象,操作Cookie,定時(shí)器等。
掌握企業(yè)級(jí)應(yīng)用客戶端動(dòng)態(tài)腳本技術(shù)
Java Web開(kāi)發(fā)
Servlet編程
以經(jīng)典項(xiàng)目BookStore為導(dǎo)向,技術(shù)要點(diǎn)的講解深入淺出,并有機(jī)地與項(xiàng)目結(jié)合,為項(xiàng)目的順利完成服務(wù)。
學(xué)習(xí)要點(diǎn):Web服務(wù)器的安裝和配置,編寫(xiě)及部署Servlet,讀取請(qǐng)求信息,生成響應(yīng)信息,維護(hù)客戶狀態(tài),過(guò)濾請(qǐng)求和響應(yīng),監(jiān)聽(tīng)器的應(yīng)用,對(duì)持久層資源的訪問(wèn),使用包裝器攔截響應(yīng),Session與Cookie技術(shù),Servlet互操作,訪問(wèn)應(yīng)用上下文,MVC架構(gòu)模式的思想和運(yùn)用。
JSP編程
JSP是在Java服務(wù)器端運(yùn)行的頁(yè)面,JSP本身就是一個(gè)基于文本的文檔,他不僅可以包含靜態(tài)的HTML內(nèi)容,也可以包含動(dòng)態(tài)的Java代碼,服務(wù)器容器可以將JSP轉(zhuǎn)換成Servlet發(fā)布,并接受請(qǐng)求,提供響應(yīng)。
學(xué)習(xí)內(nèi)容:JSP的特點(diǎn)、運(yùn)行原理及執(zhí)行過(guò)程,JSP的腳本元素,JSP指令的分類及詳解,JSP中中常用的動(dòng)作,JavaBean組件在JSP中的應(yīng)用,JSP內(nèi)置對(duì)象詳解,JSP異常處理及提高程序健壯性要領(lǐng),重定向與轉(zhuǎn)發(fā)的本質(zhì)區(qū)別,URL回寫(xiě),自定義標(biāo)簽要領(lǐng),EL表達(dá)式,JSTL核心標(biāo)簽庫(kù),字符集的處理和國(guó)際化。
Web系統(tǒng)架構(gòu)
著重掌握B/S架構(gòu)、B/S/A/D架構(gòu)下的程序設(shè)計(jì)與開(kāi)發(fā),深入理解Web MVC架構(gòu)模式,完成Web應(yīng)用的調(diào)試和部署,動(dòng)態(tài)發(fā)布Web應(yīng)用。
Ajax編程
Ajax(Asynchronous JavaScript and XML)由 HTML、JavaScript技術(shù)、DHTML和DOM組成,這一杰出的方式可以將笨拙的Web界面轉(zhuǎn)化成交互性優(yōu)越的Ajax應(yīng)用程序。
主要內(nèi)容:Ajax技術(shù)構(gòu)成及核心編程,發(fā)送請(qǐng)求及處理響應(yīng),Ajax數(shù)據(jù)傳輸格式(純文本、XML及JSON),XMLHttpRequest詳解,Ajax庫(kù)及框架介紹。
3G應(yīng)用:Android開(kāi)發(fā)
Android開(kāi)發(fā)平臺(tái)、Eclipse+ADT開(kāi)發(fā)環(huán)境、AVD及傳感模擬器調(diào)試、Android核心組件、Android常用組件、Android高級(jí)組件、文件及網(wǎng)絡(luò)訪問(wèn)、SQLite數(shù)據(jù)庫(kù)編程、后臺(tái)服務(wù)編程。
Java企業(yè)應(yīng)用開(kāi)發(fā)
Hibernate編程
Hibernate是對(duì)象/關(guān)系映射(Object/Relation Mapping)的解決方案,是一個(gè)可以自動(dòng)的根據(jù)xml配置文件來(lái)完成對(duì)象關(guān)系映射,并持久化到數(shù)據(jù)庫(kù)的開(kāi)源組件。學(xué)員通過(guò)學(xué)習(xí)可以很好地掌握面向?qū)ο蟮臄?shù)據(jù)庫(kù)訪問(wèn)技術(shù)和各種數(shù)據(jù)庫(kù)訪問(wèn)模式。熟練掌握Hibernate3產(chǎn)品在實(shí)際項(xiàng)目中的應(yīng)用技巧,充分理解O-R Mapping產(chǎn)品的內(nèi)涵和外延。
熟練掌握Hibernate在項(xiàng)目中的開(kāi)發(fā)
Struts開(kāi)發(fā)
Struts是由Apache開(kāi)源聯(lián)盟提供的一套用于構(gòu)建Java Web應(yīng)用程序的MVC框架。它的目標(biāo)是希望分離Web程序的表示層、控制層和模型層,使程序員將更多的精力投入后臺(tái)的業(yè)務(wù)邏輯設(shè)計(jì),而不是底層的Web基礎(chǔ)框架,提高了開(kāi)發(fā)效率。Apache Struts1自從推出以來(lái)一直深受廣大Web編程者青睞,是到目前為止應(yīng)用的最廣泛的基于MVC的Web編程框架。Webwork,采用XWork command pattern內(nèi)核,配合請(qǐng)求處理攔截器(intercepter),成為目前設(shè)計(jì)的亮點(diǎn)。集Struts1的成熟社區(qū)和Webwork的先進(jìn)、優(yōu)雅的設(shè)計(jì)于一身的Struts2框架又將成為未來(lái)基于Web開(kāi)發(fā)的MVC框架的領(lǐng)航者。
學(xué)習(xí)內(nèi)容:不僅要掌握Struts1的使用,也要學(xué)習(xí)Struts1的設(shè)計(jì)思想,并嘗試自己開(kāi)發(fā)核心程序,而且還要掌握Struts2的開(kāi)發(fā)要領(lǐng)。
掌握Struts框架核心技術(shù)
Spring開(kāi)發(fā)
Spring的核心是輕量級(jí)的容器,它實(shí)現(xiàn)了IoC容器、非侵入性的框架,并提供AOP概念的實(shí)現(xiàn)方式,提供對(duì)持久層(Persistence)、事務(wù)(Transaction)的支持,提供MVC Web框架的實(shí)現(xiàn),并對(duì)一些常用的企業(yè)服務(wù)API提供一致的模型封裝,是一個(gè)全方位的應(yīng)用程序框架,我們不僅要領(lǐng)悟和實(shí)踐以上內(nèi)容,而且還將重點(diǎn)掌握Spring對(duì)現(xiàn)有框架(Struts、Hibernate等)的整合方案。
掌握應(yīng)用層框架Spring的設(shè)計(jì)思想和開(kāi)發(fā)要點(diǎn)
EJB3.0
EJB3.0規(guī)范、Weblogic服務(wù)器應(yīng)用、JBoss服務(wù)器應(yīng)用
掌握EJB 3.0規(guī)范的基本原理和應(yīng)用;較為熟練的配置Weblogic和JBoss服務(wù)器。
Web服務(wù)編程
Web Services是一種使用WSDL、SOAP技術(shù),并使用xml文檔來(lái)交換信息的網(wǎng)絡(luò)應(yīng)用程序,通過(guò)Web Service技術(shù)使原來(lái)各孤立的站點(diǎn)之間的信息能夠相互通信、共享。我們要學(xué)習(xí)Web服務(wù)的三個(gè)重要角色、掌握Web服務(wù)的編程要領(lǐng)。