1、為什么學(xué)Java? Java在工程界使用廣泛,在編程語言使用排名榜上現(xiàn)在穩(wěn)居榜首,所以學(xué)Java可以幫助你找一份好工作。
語言層面來說,和C++比較,Java更簡(jiǎn)單純粹一點(diǎn),學(xué)習(xí)和使用都不那么痛苦,也更容易體會(huì)到編程的美感。和C#比較,Java在開源項(xiàng)目更多,平臺(tái)支持也更多。
從找工作來看,由于Java應(yīng)用廣一點(diǎn),所以工作機(jī)會(huì)多一點(diǎn),但是C++難一點(diǎn),所以收入是C++職位高一點(diǎn)。但我希望初學(xué)者不要過于看重這一點(diǎn),一來待遇這個(gè)東西并不絕對(duì),風(fēng)水輪流轉(zhuǎn);二來學(xué)好一門語言后再學(xué)另一門語言會(huì)快很多。
2、Java的應(yīng)用 Java程序更多的跑在服務(wù)器端,而不是桌面。很多大公司如IBM、BEA、Oracle使用它開發(fā)服務(wù)器軟件。Java也被廣泛用于建立網(wǎng)站或者說 B/S結(jié)構(gòu)的企業(yè)應(yīng)用。Java的Applet在企業(yè)內(nèi)部網(wǎng)也比較流行(事實(shí)上我這次去工體購買周杰倫演唱會(huì)門票時(shí)發(fā)現(xiàn)其訂票選位系統(tǒng)就是用Applet 做的)。
一度Java被認(rèn)為不適合開發(fā)桌面程序,但在IBM推出Eclipse之后,人們發(fā)現(xiàn)使用Java也可以開發(fā)出如此好看的桌面程序。
總結(jié)一下,Java應(yīng)用廣泛。
3
、關(guān)于J2ME,J2SE,J2EE 在Java的發(fā)展過程中,1.2是一個(gè)脫胎換骨的版本,被成為Java 2。現(xiàn)在這幾個(gè)名詞被換成了Java ME,Java SE,Java EE。
后面那個(gè)E是Edition(版本),M代表Micro,S代表Standard,E代表Enterprise。
我們一般說的Java是SE,標(biāo)準(zhǔn)版。學(xué)習(xí)Java一般都是先學(xué)這個(gè),里面包含了Java最經(jīng)典的類庫比如String,Map,Thread,Socket等等。
Micro Edition被使用于手機(jī)或其他嵌入式系統(tǒng)(比如數(shù)字電視機(jī)頂盒)。為什么要單獨(dú)出來這個(gè)版本呢?因?yàn)槭謾C(jī)之類的東東內(nèi)存和處理能力有限,所以這個(gè)版本的Java也要小點(diǎn)。
EE,企業(yè)版,很牛的一個(gè)名字。不過這個(gè)名字包含的意義和最初已經(jīng)有點(diǎn)不一樣了。最初的EE是圍繞EJB的,需要跑在很牛的服務(wù)器中間件上?,F(xiàn)在可以認(rèn)為 Struts、Spring、Hibernate這樣的技術(shù)組合起來,建立有點(diǎn)像網(wǎng)站形式一樣的東西,差不多就叫Java EE了。
4、Java書籍 其實(shí)呢,根據(jù)我的經(jīng)驗(yàn),學(xué)一門語言,一本書肯定是不夠的...我喜歡不同的書換著看來看去,因?yàn)閷?duì)于同一點(diǎn),不同的書的闡述方式和角度不同,你看第一次和第二次的感覺也不同。(由于第二次的感覺一般比第一次清晰,所以經(jīng)常會(huì)有第二本書比第一本書好的錯(cuò)覺 Orz...)另外,網(wǎng)絡(luò)是個(gè)很好的資源,大家要多用搜索,善用搜索。
學(xué)習(xí)Java的第一本書可以是圖書館里的一本隨意的、薄薄的、中國作者的、可能印刷質(zhì)量還很差的小教材。它會(huì)帶給你對(duì)Java最初的感覺和認(rèn)識(shí)。然后有了這么一點(diǎn)感覺之后,可以看看經(jīng)典的教材了。
經(jīng)典教材首推《Core Java》(Java核心技術(shù)),本書最大的特點(diǎn)是Practical,就是很面向?qū)嶋H應(yīng)用,讓你對(duì)Java會(huì)被使用在哪里,怎么使用有較清晰的感覺。我建議先看卷一前七章,按照書上的講解一個(gè)一個(gè)程序敲打下來,也可以拿個(gè)本子做做筆記,這會(huì)給你自己一個(gè)很扎實(shí)的感覺。(我當(dāng)年就是這么傻傻的干的,汗一個(gè)~)還有就是是里面提到什么東西讓你以后再看你就趕緊跳過去。為什么要看第七章呢,我覺得這個(gè)可以讓你明白Java的事件處理模型,也能讓你對(duì)監(jiān)聽者模式有點(diǎn)感覺,The first step into Patter World。
看完前七章,后面的東西就不用按順序看了,Java的應(yīng)用很廣,網(wǎng)絡(luò)、線程、數(shù)據(jù)庫、圖形化界面等,都有相應(yīng)的包。建議用到什么看什么。
http://www.china-pub.com/208978&ref=ps http://www.china-pub.com/508881&ref=ps 這個(gè)階段一定要多些練習(xí)啊~
《Java編程思想》也是一本經(jīng)典書籍,名字就很酷,一下子提高到了思想的高度。事實(shí)上也確實(shí)是這樣,里面經(jīng)常會(huì)講到為什么Java被設(shè)計(jì)成這樣,設(shè)計(jì)成那樣會(huì)不會(huì)好點(diǎn)----這種講解對(duì)我們定義的初學(xué)者來說,要求高了點(diǎn),不如《Core Java》那樣面向編程。建議在對(duì)Java多了一些了解以后看。
http://www.china-pub.com/34838&ref=ps 另外網(wǎng)上有很多其他形式的資源,比如張孝祥的視頻以及很多PPT,也可以作為輔助??偟膩碚f,學(xué)Java要看書,要?jiǎng)邮謱?shí)踐,最好旁邊有人帶帶就更好了哈~
5、Java編輯器 我建議初學(xué)者應(yīng)該先用文本編輯器(比如UltraEdit)編寫簡(jiǎn)單的Java程序,手動(dòng)配置Path和ClassPath。傳說中所有學(xué)Java的老同志們都經(jīng)歷過這個(gè)痛苦的過程,看著簡(jiǎn)陋的命令行上的出錯(cuò)信息崩潰抓狂。必經(jīng)之路、必經(jīng)之路...唔...這里說兩句,我做得作為初學(xué)者,心態(tài)一定要好,千萬不要急。米盧說過兩句話:一、態(tài)度決定一切;二、慢慢來。所以,遇問題,先冷靜,可以嘗試上網(wǎng)查查,翻翻書什么的。如果什么時(shí)候頭漲了,可以休息一下,干干別的。不要想一定要一個(gè)星期就怎樣怎樣,也不要一遇到問題就抓人來問。不過我覺得北郵的同學(xué)們都是好同學(xué),都很有能力啊~
然后在會(huì)遇上了足夠的HelloWorld編譯問題后,就可以使用IDE(集成開發(fā)環(huán)境)了。使用一個(gè)好的IDE可以大大提高開發(fā)效率,也會(huì)讓你體會(huì)到代碼的美感,開發(fā)的快感。這是真的,至少Eclipse讓我有這個(gè)感覺。
IDE里我首推Eclipse,當(dāng)然很多人說NetBeans很不錯(cuò),還有IDEA。JBuilder就不推薦了。
初次使用Eclipse在菜單上各個(gè)按鈕嘗試多按幾下應(yīng)該就能明白個(gè)大概,也可以在網(wǎng)上稍微找一些資料。用Eclipse寫HelloWorld時(shí)要注意要新建Java工程,然后新建類,Java是面向?qū)ο蟮模械腏ava程序都要包在類里面。
Eclipse有些地方挺好的,比如:
a)編輯的時(shí)候,代碼下面會(huì)即時(shí)顯示紅線表示這句代碼有錯(cuò)。這時(shí)在該行按Ctrl+1會(huì)顯示一些糾錯(cuò)建議。
b)如果輸入完畢沒有錯(cuò),Java程序就已經(jīng)編譯好了(Eclipse自帶了一個(gè)增量編譯器)。右鍵Run As...就可以運(yùn)行了。
c)看代碼的時(shí)候,多按按F3和F4,可以看到源代碼和類繼承結(jié)構(gòu);
d)修改代碼時(shí)右鍵點(diǎn)擊refactor(重構(gòu)),可以批量修改變量名,包括在其他類中使用到的。
e)Ctrl+/能夠自動(dòng)補(bǔ)全代碼。
其他更多功能大家慢慢都會(huì)使用的。
6、Java的學(xué)習(xí)途徑 有的朋友說“感覺java越看越多,像個(gè)無底洞,特別是其中的類、庫、包之類的問題,想了解一下初學(xué)者要了解的一個(gè)基礎(chǔ),要看到哪種程度就可以了”。
沒有工程經(jīng)驗(yàn)的同志們老是覺得語言的東西看再多也不夠拿來使用(而有工程經(jīng)驗(yàn)的同志有時(shí)又會(huì)輕視語言)。
Java很龐大,它有數(shù)不清的開源類庫,有著豐富的解決方案,但總的來說,我覺得學(xué)完如下東西后可以嘗試寫一些東西了。
a)Java的基本變量類型和語法
b)面向?qū)ο蟮幕靖拍詈驼Z法,諸如:對(duì)象和類的概念,構(gòu)造函數(shù),public private等的含義,繼承的語法(子類和超類),接口的使用。還有垃圾回收。
c)異常處理機(jī)制;
d)然后有些常用類庫:String、IO流、HashSet和HashMap之類也要看看。
之后一些我感覺就相對(duì)高級(jí)了點(diǎn),Thread、Socket、DataBase(JDBC)。用到什么看什么吧。圖形界面也是用到了再學(xué)吧,不過可以看看里面的事件注冊(cè)以及監(jiān)聽模型,就是
button.addActionListener(new
ActionListener() {
public void actionPerformed(ActionEvent event) {
setBackground(backgroudColor);
}
}
}
這樣的代碼。要習(xí)慣這樣的代碼,這也是匿名內(nèi)部類最常見使用的地方了。
學(xué)習(xí)過程中要注意做點(diǎn)練習(xí),比如給大家個(gè)小題目:
計(jì)算一個(gè)目錄下的所有Java程序的實(shí)際代碼總行數(shù)。實(shí)際代碼行的意思是去除注釋行和空行。其考察點(diǎn)為:基本語法、String、File、IO。如果可以,考慮使代碼擁有擴(kuò)展性,就是代碼能夠方便的加上新的功能,比如能不能方便的支持以#開頭作為注釋的文件,后綴名不同的文件。這樣可能會(huì)用到一些繼承關(guān)系和接口等等,至少思考思考這個(gè)問題會(huì)有好處。
PS:推薦一篇文章
http://www.javaeye.com/wiki/Java_Newbie/1292-java-learning-path