第一篇:Java從入門到精通讀書筆記—c++程序員學(xué)java
Java從入門到精通讀書筆記—c++程序員學(xué)java
第一章:
2分鐘看完,老生常談,即使沒怎么用過java也知道這些。
第二章:
1.instanceof應(yīng)該是c++中沒有的,c++使用RTTI解決這個問題的,很難用。
2.super這種引用父類的方法也是比較簡單的,C++中是用父類名::父類方法()解決的,有點難看。
3.自動類型轉(zhuǎn)換和C++一樣,精度變高的隨便轉(zhuǎn),精度變低的會丟失。
4.強制類型轉(zhuǎn)換只有(type)這一種,不像c++有static_cast、dynamic_cast、reinterpret_cast、和const_cast。
5.運算符什么的和c++幾乎一模一樣。
半小時看完。
第三章:
1.break可以跳出語句塊,c++中沒有語句塊。語句塊的定義就是在一段語句前加上花括號和冒號;
其他基本上和c++一樣,5分鐘看完。
第四章:
1.java數(shù)組越界會在運行時拋異常,c++不會,聲明數(shù)組的方法也有些不一致。
java 聲明數(shù)組的所有辦法
int[] a = new int[4];
int a[] = new int[4];
int[] a = {1, 15, 26};
int a[] = {1, 15, 26};
2.java的數(shù)組是一個對象,自帶length屬性,使用簡單。c++的數(shù)組不自帶方法和屬性,要知道數(shù)組長度只能sizeof(arrayObject)/sizeof(int)。當(dāng)然如果使用STL中的vector之類的也和java一樣簡單。
3.java的所謂數(shù)組賦值(或者叫數(shù)組拷貝)其實就是c++中的兩個數(shù)組指針的賦值,java沒有指針,所以作者費了一大堆口水。好在java有垃圾回收,要不然一個指針的內(nèi)存就算泄露了。至于真正的數(shù)組內(nèi)容賦值,是使用System.arraycopy(ir, srcPos, ir, destPos, length);而C++一般使用memcpy等函數(shù)。若使用STL中的vector,那么就看vector的拷貝構(gòu)造函數(shù)怎么寫的,應(yīng)該是vector的對象賦值過去而不是指針指過去。
4.重溫了冒泡排序(時間復(fù)雜度O(n2)),和快速排序(最壞情況的時間復(fù)雜度為O(n2),最好情況時間復(fù)雜度為O(nlog2n))。
5.For-Each語法被引入java了,在很多地方用起來真是簡單。Python和c#早就支持了,c++中雖然STL的algorithm包中引入了for_each,但是由于需要使用函數(shù)指針還是略顯繁瑣。
這章挺多,看了一個多小時啊!
第五章:類和對象
1.Java中方法的重載和c++的一樣,都是通過參數(shù)的不同來區(qū)別。但是c++中可以設(shè)置默認參數(shù),而java不可以。
2.java中的對象大部分只能new出來,或者clone出來,或者反射出來,而不能直接在棧上定義出來。而c++的對象在棧上和堆上創(chuàng)建的都很多。
3.基本類型的參數(shù)傳遞,java和c++都是傳值。對象的參數(shù)傳遞,java是傳引用,c++是拷貝,也就是傳值。其實c++中大部分時候也是傳引用或者傳指針,但java沒有指針,也沒有選擇耗時耗空間的拷貝,只能傳引用了。
這章對于c++程序員來說太簡單,幾分鐘過一遍就可以了。
第六章:繼承
1.方法被覆寫后,如果要調(diào)用父類的方法,c++必須用父類名::方法名,而java用super.方法名即可。
2.多態(tài)和動態(tài)綁定,java和c++幾乎一樣,都很簡單。
3.final關(guān)鍵字:java中的final關(guān)鍵字可以將一個類限制為無法繼承的,同樣的還有C#中的sealed關(guān)鍵字。而c++是沒有這個玩意的。
4.java的抽象類和c++幾乎一樣。
5.java是獨根語言,引入了Object類,它的clone方法就好像c++中的拷貝構(gòu)造函數(shù),它的equals方法是用來比較內(nèi)容的,而toString方法是將對象作為字符串輸出的。
這章對于c++程序員來說同樣簡單,幾分鐘過一遍就可以了。
第七章:接口
1.java中有接口。C++沒有,唯一類似的是含有純虛函數(shù)的虛類(沒有純虛基類這個說法)。但是COM、CORBA等中間件中都有IDL語言(接口定義語言),使用這些中間件的c++程序員也沒有少寫接口。
2.接口實現(xiàn)的一些規(guī)定:
1)如果實現(xiàn)接口的不是抽象類,則必須實現(xiàn)其接口的所有方法才能被實例化;
2)接口中所有的方法默認為public;
3.接口可以用來實現(xiàn)多態(tài);
4.java的內(nèi)部類和c++差不多,都沒人關(guān)心,最多懶得想名字的時候用用那個匿名內(nèi)部類(例如什么UI的響應(yīng)函數(shù))。
5.java的對象克隆,吹了一堆就是個c++中的拷貝構(gòu)造函數(shù)。所謂什么“淺克隆、深克隆”問題,就是c++中拷貝構(gòu)造是遇上類中定義了指針的問題。C++程序員一望即知。
接口是為了維護單繼承機制弄出來的,花半小時看看還是值得的。
第八章:面向?qū)ο缶幊?/p>
C++程序員不用看。
第九章:異常處理
1.java的異常處理中有finally語句塊,而c++中沒有,所以程序員要自己想辦法來處理異常發(fā)生后諸如“資源釋放”之類的問題;
第十章:線程
1.java語言自帶線程機制,c++目前還是不帶線程機制的。雖然boost::thread庫也被眾多c++程序員廣泛使用。但是windows下用得最多的還是windows SDK自帶的線程函數(shù);而linux下用得最多的還是pthread。另外還有一些號稱同時支持多個平臺的多線程庫。
2.java多線程有兩種方法實現(xiàn),第一是派生Thread類,第二種是實現(xiàn)Runnable接口。
3.java線程分為4種狀態(tài):new、runnable、non runnable和done,這和其他線程庫大同小異;
4.run、start、stop、sleep、suspend、resume、yield、wait、notify和notifyall等方法的含義也和其他線程庫一致。但suspend、resume和stop等方法是不建議使用的,因為可能會導(dǎo)致死鎖。
5.java可使用join方法來等待線程結(jié)束,而在某些線程庫中join方法經(jīng)常是不可用的。
6.java的互斥使用synchonized關(guān)鍵字實現(xiàn),它很類似于boost.thread中的lock(mutex),只不過它是對線程對象隱含的鎖加鎖。其實這很不利于新手理解。另外還介紹了synchonized的一些亂七八糟的用法,相信對于新手這只有反作用。
這一章對于線程,介紹得比較淺顯,實現(xiàn)簡單的多線程應(yīng)該沒問題,但是稍微復(fù)雜一點的也許就需要其他的開發(fā)包了。Java線程連個Mutex類都沒有,這是最讓我吃驚的,僅僅使用synchonized來實現(xiàn)同步、互斥、信號量該多麻煩啊,也許是我還沒弄懂java多線程吧。
第十一章:圖形編程
1.IDE的年代,GUI還是畫出來吧。Java中也就Layout類需要看看,其他大部分Layout類也是湊數(shù)的,根本不會有人用。
第十二章:事件處理
隨便看看了解即可,新手可以試著寫寫代碼,老手直接IDE中添加事件即可。
第十三章:Swing用戶界面設(shè)計
同第十一章,隨便看看即可。界面一般有專人搞,普通程序員能看懂就行了。
總結(jié):《java從入門到精通》這本書整體質(zhì)量尚可,c++熟手大概一到兩天可以看完,掌握程度在80%左右??赐旰竽軌蛴幸恍┗靖拍?,可以寫一些基本程序。看完后離入門還早,更談不上精通了。
說說我看完后的兩個迷惑之處吧,第一是從來沒有提到j(luò)ava中的對象、常量、代碼所在的堆、棧等內(nèi)存分布情況,對于c++程序員來說是很難適應(yīng)的,可能是篇幅的原因吧;第二沒有介紹垃圾回收機制,這可能是c++程序員更感興趣的吧。
第二篇:Java學(xué)習(xí)從入門到精通 3過程篇
學(xué)習(xí)Java的第一步是安裝好JDK,寫一個Hello World,? 其實JDK的學(xué)習(xí)沒有那么簡單,關(guān)于JDK有兩個問題是很容易一直困擾Java程序員的地方:一個是CLASSPATH的問題,其實從原理上來說,是要搞清楚JRE的ClassLoader是如何加載Class的;另一個問題是package和import問題如何學(xué)習(xí)java,如何來尋找類的路徑問題。把這兩個問題摸索清楚了,就掃除了學(xué)習(xí)Java和使用JDK的最大障礙。推薦看一下王森的《Java深度歷險》,對這兩個問題進行了深入的探討。
第二步是學(xué)習(xí)Java的語法。Java的語法是類C++的,基本上主流的編程語言不是類C,就是類C++的,沒有什么新東西,所以語法的學(xué)習(xí),大概就是半天的時間足夠了。唯一需要注意的是有幾個不容易搞清楚的關(guān)鍵字的用法,public,protected,private,static,什么時候用java學(xué)習(xí)筆記,為什么要用java學(xué)習(xí)筆記,怎么用,這可能需要有人來指點一下,我當(dāng)初是完全自己琢磨出來的,花了很久的時間。不過后來我看到《Thinking in Java》這本書上面是講了這些概念的。
第三步是學(xué)習(xí)Java的面向?qū)ο蟮木幊陶Z言的特性的地方。比如繼承,構(gòu)造器,抽象類,接口,方法的多態(tài),重載,覆蓋,Java的異常處理機制。對于一個沒有面向?qū)ο笳Z言背景的人來說,我覺得這個過程需要花很長很長時間,因為學(xué)習(xí)Java之前沒有C++的經(jīng)驗java學(xué)習(xí)筆記,只有C的經(jīng)驗,我是大概花了一個月左右吧,才徹底把這些概念都搞清楚,把書上面的例子反復(fù)的揣摩,修改,嘗試,把那幾章內(nèi)容反復(fù)的看過來,看過去,看了不下5遍,才徹底領(lǐng)悟了。不過我想如果有C++經(jīng)驗的話,應(yīng)該一兩天時間足夠了。那么在這個過程中,可以多看看《Thinking in Java》這本書,對面向?qū)ο蟮闹v解非常透徹??上У氖俏覍W(xué)習(xí)的時候,并沒有看到這本書,所以自己花了大量的時間java學(xué)習(xí)筆記,通過自己的嘗試和揣摩來學(xué)會的。
第四步就是開始熟悉Java的類庫。Java的基礎(chǔ)類庫其實就是JDK安裝目錄下面
jrelibrt.jar這個包。學(xué)習(xí)基礎(chǔ)類庫就是學(xué)習(xí)rt.jar?;A(chǔ)類庫里面的類非常非常多。據(jù)說有3000多個,我沒有統(tǒng)計過。但是真正對于我們來說最核心的只有4個,分別是java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
這四個包的學(xué)習(xí),每個包的學(xué)習(xí)都可以寫成一本厚厚的教材,而O′reilly也確實是這樣做的。我覺得如果時間比較緊,是不可能通過讀四本書來學(xué)習(xí)。我覺得比較好的學(xué)習(xí)方法是這樣的:
首先要通讀整個package的框架,了解整個package的class,interface,exception的構(gòu)成,最好是能夠找到介紹整個包框架的文章。這些專門介紹包的書籍的前幾章應(yīng)該就是這些總體的框架內(nèi)容介紹。
對包整體框架的把握并不是要熟悉每個類的用法java學(xué)習(xí)筆記,記住它有哪些屬性,方法。想記也記不住的。而是要知道包有哪些方面的類構(gòu)成的,這些類的用途是什么,最核心的幾個類分別是完成什么功能的。我在給人培訓(xùn)的時候一般是一次課講一個包,所以不可能詳細的介紹每個類的用法,但是我反復(fù)強調(diào)java學(xué)習(xí)筆記,我給你們講這些包的不是要告訴你們類的方法是怎么調(diào)用的,也不要求你們記住類的方法調(diào)用,而是要你們了解,Java給我們提供了哪些類,每個類是用在什么場合,當(dāng)我遇到問題的時候,我知道哪個類,或者哪幾個類的組合可以解決我的問題,That′all!java學(xué)習(xí)筆記,當(dāng)我們具體寫程序的時候,只要你知道該用哪個類來完成你的工作就足夠了。編碼的時候,具體的方法調(diào)用,是邊寫代碼,邊查Documentation,所有的東西都在Documentation里面,不要求你一定記住,實際你也記不住3000多個類的總共將近10萬個方法調(diào)用。所以對每個包的總體框架的把握就變得極為重要。
第五步,通過上面的學(xué)習(xí),如果學(xué)的比較扎實的話,就打好了Java的基礎(chǔ)了,剩下要做的工作是掃清Documentation里面除了上面4個包之外的其他一些比較有用處的類。相信進展到這一步,Java的自學(xué)能力已經(jīng)被培養(yǎng)出來了,可以到了直接學(xué)習(xí)Documentation的水平了。除了要做GUI編程之外,JDK里面其他會有用處的包是這些:
java.text.*;
java.net.*;
javax.naming.*;
這些包里面真正用的比較多的類其實很少,只有幾個,所以不需要花很多時間。第六步,Java Web 編程
Web編程的核心是HTTP協(xié)議,HTTP協(xié)議和Java無關(guān)java學(xué)習(xí)筆記,如果不熟悉HTTP協(xié)議的話,雖然也可以學(xué)好Servlet/JSP編程,但是達不到舉一反三,一通百通的境界。所以HTTP協(xié)議的學(xué)習(xí)是必備的。如果熟悉了HTTP協(xié)議的話,又有了Java編程的良好的基礎(chǔ),學(xué)習(xí)Servlet/JSP簡直易如反掌,我學(xué)習(xí)Servlet/JSP就用了不到一周的時間,然后就開始用JSP來做項目了。
在Servlet/JSP的學(xué)習(xí)中,重頭仍然是Servlet Documentation。Servlet API最常用的類很少,花比較少的時間就可以掌握了。把這些類都看一遍,多寫幾個例子試試。
Servlet/JSP編程本質(zhì)就是在反復(fù)調(diào)用這些類來通過HTTP協(xié)議在Web Server和Brower之間交談。另外對JSP,還需要熟悉幾個常用JSP的標記,具體的寫法記不住的話java學(xué)習(xí)筆記,臨時查就是了。
此外Java Web編程學(xué)習(xí)的重點要放在Web Application的設(shè)計模式上,如何進行業(yè)務(wù)邏輯的分析,并且進行合理的設(shè)計,按照MVC設(shè)計模式的要求,運用Servlet和JSP分別完成不同的邏輯層,掌握如何在Servlet和JSP之間進行流程的控制和數(shù)據(jù)的共享,以及Web Application應(yīng)該如何配置和部署。
第七步,J2EE編程
以上的學(xué)習(xí)過程如果是比較順利的話,進行到這一步,難度又陡然提高。因為上面的知識內(nèi)容都是只涉及一個方面,而像EJB,JMS,JTA等核心的J2EE規(guī)范往往是幾種Java技術(shù)的綜合運用的結(jié)晶,所以掌握起來難度比較大。
首先一定要學(xué)習(xí)好JNDI,JNDI是App Server定位服務(wù)器資源(EJB組件,Datasouce,JMS)查找方法,如果對JNDI不熟悉的話,EJB,JMS這些東西幾乎學(xué)不下去。JNDI其實就是javax.naming.*這個包,運用起來很簡單。難點在于服務(wù)器資源文件的配置。對于服務(wù)器資源文件的配置java學(xué)習(xí)筆記,就需要看看專門的文檔規(guī)范了,比如web.xml的寫法,ejb-jar.xml的寫法等等。針對每種不同的App Server,還有自己的服務(wù)資源配置文件,也是需要熟悉的。
然后可以學(xué)習(xí)JTA,主要是要理解JTA對于事務(wù)的控制的方法,以及該在什么場合使用JTA。這里可以簡單的舉個例子,我們知道一般情況可以對于一個數(shù)據(jù)庫連接進行事務(wù)控制(conn.setAutoCommit(false),....,conn.commit()),做為一個原子操作,但是假設(shè)我的業(yè)務(wù)需求是要把對兩個不同數(shù)據(jù)庫的操作做為一個原子操作,你能做的到嗎?這時候只能用JTA了。假設(shè)操作過程是先往A數(shù)據(jù)庫插一條記錄,然后刪除B數(shù)據(jù)庫另一個記錄,我們自己寫代碼是控制不了把整個操作做為一個原子操作的。用JTA的話,由App Server來完成控制。
在學(xué)習(xí)EJB之前要學(xué)習(xí)對象序列化和RMI,RMI是EJB的基礎(chǔ)。接著學(xué)習(xí)JMS和EJB,對于EJB來說,最關(guān)鍵是要理解EJB是如何通過RMI來實現(xiàn)對遠端對象的調(diào)用的,以及在什么情況下要用到EJB。
在學(xué)習(xí)完EJB,JMS這些東西之后java學(xué)習(xí)筆記,你可能會意識到要急不可待學(xué)習(xí)兩個領(lǐng)域的知識,一個是UML,另一個是Design Pattern。Java企業(yè)軟件的設(shè)計非常重視框架(Framework)的設(shè)計,一個好的軟件框架是軟件開發(fā)成功的必要條件。在這個時候,應(yīng)該開始把學(xué)習(xí)的重點放在設(shè)計模式和框架的學(xué)習(xí)上,通過學(xué)習(xí)和實際的編程經(jīng)驗來掌握EJB的設(shè)計模式和J2EE的核心模式。
J2EE規(guī)范里面java學(xué)習(xí)筆記,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外還有很多很多的企業(yè)技術(shù),這里不一一進行介紹了。
另外還有一個最新領(lǐng)域Web Services。Web Services也完全沒有任何新東西,它像是一種黏合劑,可以把不同的服務(wù)統(tǒng)一起來提供一個統(tǒng)一的調(diào)用接口,作為使用者來說,我只要獲得服務(wù)提供者給我的WSDL(對服務(wù)的描述),就夠了,我完全不知道服務(wù)器提供者提供的服務(wù)究竟是EJB組件,還是.Net組件,還是什么CORBA組件,還是其他的什么實現(xiàn),我也不需要知道。Web Services最偉大的地方就在于通過統(tǒng)一的服務(wù)提供方式和調(diào)用方式,實現(xiàn)了整個Internet服務(wù)的共享,是一個非常令人激動的技術(shù)領(lǐng)域。Web Services好像目前還沒有什么很好的書籍,但是可以通過在網(wǎng)絡(luò)上面查資料的方式來學(xué)習(xí)。
每個人的學(xué)習(xí)方法是不同的,一個人的方法不見得適合另一個人,我只能是談自己的學(xué)習(xí)方法。因為我學(xué)習(xí)Java是完全自學(xué)的,從來沒有問過別人,所以學(xué)習(xí)的過程基本上完全是自己摸索出來的。我也不知道這種方法是否是比較好的方法,只能給大家提供一點參考了。
第三篇:Java程序員和C++程序員的區(qū)別
004km.cn Java程序員和C++程序員的區(qū)別
首先說明,這幾年接觸的最多的程序員就是C++程序員和Java程序員,這只是我自己的一點體會而已,一個人的眼光難免是淺薄的。不過,歡迎拍磚,也歡迎對號入座。
從對基礎(chǔ)知識掌握的程度來說,例如數(shù)據(jù)結(jié)構(gòu)和算法,C++程序員要比Java程序員牢靠得多。究其原因,大概是因為C++程序員需要經(jīng)常自己實現(xiàn)那些項目基礎(chǔ)設(shè)施,但是Java程序員大多拿來即用。公平地說,C++不是一門適合程序員初學(xué)者的語言,但是Java是。C++程序看起來確實要比Java程序稍難懂一些,C++程序員往往思維更加嚴密。另一方面,我也發(fā)現(xiàn)內(nèi)地的程序員要比沿海和發(fā)達城市的程序員基礎(chǔ)扎實,而且低調(diào)內(nèi)斂,不那么浮華,但是就是善于解決那些難啃的問題。
從視野的角度來說,Java程序員往往要更寬泛一些。由于語言本身上說,Java將很多C++逃不掉的陷阱和坑洞都填補了,僅從語言上說,無論是入門還是使用都顯得更加簡單,程序員就有更多精力來關(guān)注語言本身之上的事情。而且,Java領(lǐng)域的類庫明顯要豐富得多,所以在考慮某一個設(shè)計實現(xiàn)的時候,Java程序員很喜歡到處尋找可以拿來即用的類庫,但是C++程序員習(xí)慣于自己去做其中大部分的事情。對于面向?qū)ο笤O(shè)計,模塊和組件的設(shè)計,Java程序員往往要掌握得稍好一些。
在讀書的時候,很多程序員都會給自己訂立一個方向,有的喜歡寫底層實現(xiàn),有的喜歡研究人工智能,有的喜歡做企業(yè)應(yīng)用,有的喜歡涉足互聯(lián)網(wǎng)……就像對C++和Java等語言的選擇一樣。當(dāng)然,工作有時候并不如心中所愿,這方面可能和自己最初的方向并不一致——有人選擇繼續(xù),發(fā)現(xiàn)這個活兒也不錯;有人就會選擇放棄,繼續(xù)執(zhí)著地尋找自己喜歡的事情。我有三個當(dāng)初和我一起學(xué)Java學(xué)J2EE的朋友,現(xiàn)在一個成了DBA,一個賣水果去了,還有一個在創(chuàng)業(yè)搞機頂盒。
當(dāng)然,也有很多程序員天天都在糾結(jié):學(xué)什么更賺錢?C++還是Java有前途?前端還是后端有前途?轉(zhuǎn)管理還是轉(zhuǎn)咨詢?也有人這樣問我,對于這樣深不可測的問題,為了避免顯得我沒文化、見識淺,我總是一笑置之。
以下是我的觀點:
對語言我始終沒有一個固定的方向。在學(xué)校我見長的c和C++,數(shù)據(jù)結(jié)構(gòu)及各類課程設(shè)計都是用C或C++完成的。但工作10年來,我一直在用Java,在我的博客中也大多是java的內(nèi)容。但這其中,編程過一個C++和作為項目組長管理過一個C++(pure)CenterServer級的。
語言只是工具。用的好,寫出符合要求的代碼??蛻魧崿F(xiàn)才是我的終極目標。我更喜歡架構(gòu)。最初是java或C++架構(gòu)。新的問題是java(前端web層)+ C++(底層)這樣的架構(gòu)。能夠?qū)崿F(xiàn)是最終結(jié)果。過程卻充滿樂趣。
(ps:本文章來源于北大青鳥廣安門校區(qū)官網(wǎng))
第四篇:java程序員
如何迅速成為Java高手[Tomjava原創(chuàng)]
很多網(wǎng)友問我學(xué)習(xí)Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
要想學(xué)好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來,就力圖使之無所不包,所以Java發(fā)展到現(xiàn)在,按應(yīng)用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標準版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機和PDA的編程;J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點深奧,而且一般開發(fā)者很難有開發(fā)環(huán)境。所以現(xiàn)在應(yīng)用最廣泛又最好學(xué)的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學(xué)習(xí)起來可不是一兩天的事。
那么又該如何學(xué)習(xí)J2EE呢?當(dāng)然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再從JSP學(xué)起。如果你學(xué)過HTML,那么事情要好辦的多,如果沒有,那你快去補一補HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉(zhuǎn)還是挺方便的,也令程序更清晰。接下來你應(yīng)該學(xué)習(xí)一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區(qū)別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來,便于調(diào)用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區(qū)別的。它是一個體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數(shù)據(jù)庫的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且?guī)Ч獗P的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說直接復(fù)制還不用怕出錯,何樂而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的Java方面的編程網(wǎng)站:
CSDN論壇 http:///那里Java資料比較全;
java.com.cnhttp://.cn/看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)絡(luò)http://IBM永遠的藍色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設(shè)計嗎,你知道怎么組織人員進行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現(xiàn)在最缺的是實際的工作經(jīng)驗,而不是書本上那些
憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職?。?,在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點難哦!
還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設(shè)計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,偶最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設(shè)計采用了很多先進的技術(shù),如Cache、用戶認證、Filter、XML等,而且論壇完全屏蔽了對數(shù)據(jù)庫的訪問,可以很輕易的在不同數(shù)據(jù)庫中移植。論壇還有方便的安裝和管理程序,這是我們平時編程時容易忽略的一部份(中國程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來研究一下。相信你讀完代碼后,會有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無條件的開放源代碼,同時有l(wèi)icence限制。不過幸好還有中國一流的Java程序員關(guān)注它,外國人不開源了,中國人就不能開源嗎?這里向大家推薦一個漢化的Jive版本—J道。Jive(J道版)是由中國Java界大名鼎鼎的banq在Jive 2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發(fā)團隊在不斷升級。你可以訪問banq的網(wǎng)站http:///去下載,或到同濟技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得Tomjava也曾碰到過一個項目經(jīng)理,號稱Java很簡單,只要三個月就可以學(xué)會。其實說這種話的人就如當(dāng)年小日本號稱“三個月拿下中國”一樣大言不慚。不是Tomjava潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計模式了。設(shè)計模式是高級程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進一步,更重要的是,設(shè)計模式反復(fù)向你強調(diào)一個宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計模式的資料,還是向大家推薦banq的網(wǎng)站http:///,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經(jīng)典中的經(jīng)典。有時間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開的設(shè)計思想)吧,現(xiàn)在很流行的Structs就是它的一種實現(xiàn)方式,不過Structs用起來實在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見的應(yīng)用整理出來,再精心打造一番,提高其重用性和可擴展性。你再找?guī)讉€志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。當(dāng)然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業(yè)做貢獻嘛!開發(fā)者在互聯(lián)網(wǎng)上用CVS合作開發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時開發(fā)同一個軟件,是不是很有意思呢?
下面介紹兩個好的開源項目網(wǎng)站:
湖北省軟件公共開發(fā)平臺http://gro.clinux.org/
共創(chuàng)聯(lián)盟http://cosoft.org.cn/
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識時務(wù)者為俊杰”。你知道計算
機界現(xiàn)在的發(fā)展形勢嗎?你知道微軟的.NET藍圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機技術(shù)將向何處發(fā)展嗎?其實從各大計算機廠商最近的動作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點”,而微軟的.NET藍圖和SUN ONE計劃的斗爭焦點,也就是Web服務(wù)。Web服務(wù)就是一個嶄新的分布式計算模型,它是一系列標準的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點變成一種服務(wù)而不是混亂的垃圾場。不遠的將來,我們就可以在家里點擊一下鼠標,就可以完成出門旅游的全部準備工作,包括定飛機票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點間自動完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實際上很多環(huán)節(jié)都是人工操作。也許你會覺得這是天方夜談,不過就近的說,你也很有可能承接一個項目,要集成兩個企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
因為剛剛興起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個網(wǎng)站吧: 中國UDDI技術(shù)聯(lián)盟http:///developerWorks/cn/xml/index.shtml?csdnIBM可是Web服務(wù)的力推者
嗚?你費勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動??!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的??
第五篇:java程序員到架構(gòu)師之路
作為Java程序員來說,最痛苦的事情莫過于可以選擇的范圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術(shù)書籍中挑選出來一些,按照學(xué)習(xí)的先后順序,推薦給大家,特別是那些想不斷提高自己技術(shù)水平的Java程序員們。
一、Java編程入門類
對于沒有Java編程經(jīng)驗的程序員要入門,隨便讀什么入門書籍都一樣,這個階段需要你快速的掌握Java基礎(chǔ)語法和基本用法,宗旨就是“囫圇吞棗不求甚解”,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要“知其然”。
1、《Java編程思想》
在有了一定的Java編程經(jīng)驗之后,你需要“知其所以然”了。這個時候《Java編程思想》是一本讓你知其所以然的好書,它對于基本的面向?qū)ο笾R有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,可以幫你打一個良好的Java編程基礎(chǔ)。這本書的缺點是實在太厚,也比較羅嗦,不適合現(xiàn)代人快節(jié)奏學(xué)習(xí),因此看這本書要懂得取舍,不是每章每節(jié)都值得一看的,挑重點的深入看就可以了。
2、《Agile Java》中文版
這本書是出版社送給我的,我一拿到就束之高閣,放在書柜一頁都沒有翻過,但是前兩天整理書柜的時候,拿出來一翻,竟然發(fā)現(xiàn)這絕對是一本好書!這本書一大特點是以單元測試和TDD來貫穿全書的,在教你Java各種重要的基礎(chǔ)知識的過程中,潛移默化的影響你的編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語法為基礎(chǔ)講解,要學(xué)習(xí)JDK5.0的新語法也不錯。還有這本書對于內(nèi)容取舍也非常得當(dāng),Java語言畢竟類庫龐大,可以講的內(nèi)容太多,這本書選擇的內(nèi)容以及內(nèi)容的多寡都很得當(dāng),可以讓你以最少的時間掌握Java最重要的知識,順便培養(yǎng)出來優(yōu)秀的編程思路,真是一本不可多得的好書。
雖然作者自己把這本書定位在入門級別,但我不確定這本書用來入門是不是稍微深了點,我自己也準備有空的時候翻翻這本書,學(xué)習(xí)學(xué)習(xí)。
二、Java編程進階類
打下一個良好的Java基礎(chǔ),還需要更多的實踐經(jīng)驗積累,我想沒有什么捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養(yǎng)良好的編程習(xí)慣,提高你的代碼質(zhì)量。
1、《重構(gòu) 改善既有代碼的設(shè)計》
這本書名氣很大,不用多介紹,可以在閑暇的時候多翻翻,多和自己的實踐相互印證。這本書對你產(chǎn)生影響是潛移默化的。
2、《測試驅(qū)動開發(fā) by Example》
本書最大特點是很薄,看起來沒有什么負擔(dān)。你可以找一個周末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子跑完了。這本書的作用是通過實戰(zhàn)讓你培養(yǎng)TDD的思路。
三、Java架構(gòu)師之路
到這個階段,你應(yīng)該已經(jīng)非常嫻熟的運用Java編程,而且有了一個良好的編程思路和習(xí)慣了,但是你可能還缺乏對應(yīng)用軟件整體架構(gòu)的把握,現(xiàn)在就是你邁向架構(gòu)師的第一步。
1、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著作,非常經(jīng)典,從這本書中的代碼誕生了springframework。但是好像這本書沒有中譯本。
2、《Expert One-on-One J2EE Development without EJB》
這本書由gigix組織翻譯,多位業(yè)界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力不多,實在是忝居譯者之名。
以上兩本書都是Rod Johnson的經(jīng)典名著,Java架構(gòu)師的必讀書籍。在我所推薦的這些書籍當(dāng)中,是我看過的最仔細,最認真的書,我當(dāng)時讀這本書幾乎是廢寢忘食的一氣讀完的,有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內(nèi)容和自己的經(jīng)驗知識一一印證,又被無比精辟的總結(jié)出來,讀完這本書以后,我有種被打通經(jīng)脈,功力爆增的感覺。
但是后來我看過一些其他人的評價,似乎閱讀體驗并沒有我那么high,也許是因為每個人的知識積累和經(jīng)驗不同導(dǎo)致的。我那個時候剛好是經(jīng)驗知識積累已經(jīng)足夠豐富,但是還沒有系統(tǒng)的整理成型,讓這本書一梳理,立刻形成完整的知識體系了。
3、《企業(yè)應(yīng)用架構(gòu)模式》
Martin的又一本名著,但這本書我只是泛泛的看了一遍,并沒有仔細看。這本書似乎更適合做框架的人去看,例如如果你打算自己寫一個ORM的話,這本書是一定要看的。但是做應(yīng)用的人,不看貌似也無所謂,但是如果有空,我還是推薦認真看看,會讓你知道框架為什么要這樣設(shè)計,這樣你的層次可以晉升到框架設(shè)計者的角度去思考問題。Martin的書我向來都是推崇,但是從來都沒有像Rod Johnson的書那樣非常認真去看。
4、《敏捷軟件開發(fā)原則、模式與實踐》
Uncle Bob的名著,敏捷的經(jīng)典名著,這本書比較特別,與其說是講軟件開發(fā)過程的書,不如說講軟件架構(gòu)的書,本書用了很大篇幅講各種面向?qū)ο筌浖_發(fā)的各種模式,個人以為看了這本書,就不必看GoF的《設(shè)計模式》了。
四、軟件開發(fā)過程
了解軟件開發(fā)過程不單純是提高程序員個人的良好編程習(xí)慣,也是增強團隊協(xié)作的基礎(chǔ)。
1、《UML精粹》
UML其實和軟件開發(fā)過程沒有什么必然聯(lián)系,卻是軟件團隊協(xié)作溝通,撰寫軟件文檔需要的工具。但是UML真正實用的圖不多,看看這本書已經(jīng)足夠了,完全沒有必要去啃《UML用戶指南》之類的東西。要提醒大家的是,這本書的中譯本翻譯的非常之爛,建議有條件的看英文原版。
2、《解析極限編程 擁抱變化》XP
這是Kent Beck名著的第二版,中英文對照。沒什么好說的,必讀書籍。
3、《統(tǒng)一軟件開發(fā)過程》UP
其實UP和敏捷并不一定沖突,UP也非常強調(diào)迭代,測試,但是UP強調(diào)的文檔和過程驅(qū)動卻是敏捷所不取的。不管怎么說,UP值得你去讀,畢竟在中國真正接受敏捷的企業(yè)很少,你還是需要用UP來武裝一下自己的,哪怕是披著UP的XP。
4、《敏捷建模》AM
Scott Ambler的名著,這本書非常的progmatic,告訴你怎么既敏捷又UP,把敏捷和UP統(tǒng)一起來了,又提出了很多progmatic的建議和做法。你可以把《解析極限編程擁抱變化》、《統(tǒng)一軟件開發(fā)過程》和《敏捷建?!愤@三本書放在一起讀,看XP和UP的不同點,再看AM是怎么統(tǒng)一XP和UP的,把這三種理論融為一爐,形成自己的理論體系,那么你也可以去寫書了。
五、軟件項目管理
如果你突然被領(lǐng)導(dǎo)提拔為項目經(jīng)理,而你完全沒有項目管理經(jīng)驗,你肯定會心里沒底;如果你覺得自己管理項目不善,很想改善你的項目管理能力,那么去考PMP肯定是遠水不解近渴的。
1、《快速軟件開發(fā)》
這也是一本名著??梢赃@樣說,有本書在手,你就有了一個項目管理的高級參謀給你出謀劃策,再也不必擔(dān)心自己不能勝任的問題了。這本書不是講管理的理論的,在實際的項目管理中,講這些理論是不解決問題的,這本書有點類似于“軟件項目點子大全”之類的東西,列舉了種種軟件項目當(dāng)中面臨的各種問題,以及應(yīng)該如何解決問題的點子,你只需要稍加變通,找方抓藥就行了。
六、總結(jié)
在這份推薦閱讀書籍的名單中,我沒有列舉流行的軟件框架類學(xué)習(xí)書籍,例如Struts,Hibernate,Spring之類,也沒有列舉AJAX方面的書籍。是因為這類書籍容易過時,而上述的大半書籍的生命周期都足夠長,值得你去購買和收藏。