第一篇:-動力節(jié)點(diǎn)=java程序員菜鳥的成長之路
筑基階段:
1.敲代碼速度要快,要求手指靈活,盡量減少輸入出錯。這個是基本功,不然何以達(dá)到一定的代碼量。
2.精通幾個常用的代碼編輯工具。(注意,這里說的是編輯工具,除了常用的eclipse,myeclipse,jBuilder等IDE工具外,還必須掌握文本編輯工具,如notepad++,vim)。
3.掌握Linux系統(tǒng)中常規(guī)命令。(這個是所有程序員都必須掌握的基本功)。
4.隨時隨地的做筆記。(這個就不解釋了,反正善于總結(jié)經(jīng)驗不會錯了,可以推薦使用有道筆記)。
5.學(xué)會一些主流的代碼管理工具的使用。(如SVN,gitHub,maven等)
初級階段:
動力節(jié)點(diǎn)
6.熟悉并精通某種編程語言的基礎(chǔ)和特性。(java語言必須掌握corejava基礎(chǔ)部分)
7.善于給自己寫一些工具,拿來即用的那種。(如數(shù)據(jù)庫連接,文件讀寫操作等等)
8.掌握web開發(fā)的常用技術(shù)。(如HTML,CSS,javascript,Ajax,JSP,jQuery)
9.掌握常用數(shù)據(jù)庫的基本操作。(如oracle,mysql)
中級階段
10.掌握一些主流開源框架,設(shè)計思想。(如,spring MVC,Struts2+hibernate+spring/SSH,EJB等)
11.掌握設(shè)計模式,學(xué)會使用一些開發(fā)模式。
12.掌握Linux中的shell編程
14.學(xué)會使用數(shù)據(jù)庫的DDL,DML,以及存儲過程。
15.熟悉項目的整個生命周期,從需求到上線中的各個階段。
16.關(guān)注技術(shù)網(wǎng)站和社區(qū),開拓思路,汲取他人的優(yōu)序經(jīng)驗,同時分享自己經(jīng)驗。(如csdn ,oschina等)
17.熟悉整個項目周期的中的各類文檔。
動力節(jié)點(diǎn)
18.定期給自己策劃一個項目,練手。
高級階段
19.關(guān)注科技,了解IT界動態(tài),學(xué)會發(fā)現(xiàn)和創(chuàng)新。
20.開始學(xué)習(xí)項目管理相關(guān)知識,學(xué)會如何成為一個優(yōu)秀的項目管理人。
21.適時給自己買一些書籍,給自己大腦及時充電。
22.經(jīng)常參加一些培訓(xùn)講座,開拓視野。
23.關(guān)注政策,了解時代互聯(lián)網(wǎng)發(fā)展趨勢,學(xué)習(xí)和創(chuàng)新。
動力節(jié)點(diǎn)
第二篇:java程序員的成長之路
Java目前是最流行的語言之一,是很多公司和程序員喜愛的一門程序語言.而且, Java的入門比C++相對來說要簡單一些, 所以有很大一部分程序員都選擇Java作為自己的開發(fā)語言.我也是其中之一, 就是因為覺得學(xué)C++太難, 當(dāng)初在學(xué)校學(xué)了將近一個學(xué)期的C++, 啥進(jìn)步都沒有, 哈哈, 天資太差, 所以才選擇自學(xué)Java(當(dāng)時學(xué)校并沒有開設(shè)Java的課程), 才走上了程序開發(fā)這條路.Java雖然入門要容易, 然而要精通它, 要成為專家卻很難.主要原因是Java所涉及的技術(shù)面比較寬, 人的精力總是有限的.有些Java方面的技術(shù)是必須要要掌握的, 鉆研得越深入越好, 比如多線程技術(shù).1.基礎(chǔ)階段
基礎(chǔ)階段, 可能需要經(jīng)歷1-2年吧.這個時段, 應(yīng)該多寫一些基礎(chǔ)的小程序(自己動手寫的越多越好).計算機(jī)是一門實踐性很強(qiáng)的學(xué)科, 自己動手的東西, 記憶非常深刻, 效果要勝過讀好多書.當(dāng)然, 學(xué)Java基礎(chǔ)的時候, 書籍的選擇也非常重要, 好的書籍事半功倍, 能讓你打個非常好的基礎(chǔ).而差的書籍, 很容易將你帶入歧途, 多走很多彎路.書籍不在多, 而在乎讀得精(有些書, 你讀十遍都不為過).我記得我學(xué)Java的第一本書是
2.中級階段
中級階段, 是一個更漫長的時期, 能否突破此階段, 跟個人的努力和天資有著很大的關(guān)系.你不得不承認(rèn), 同樣一門新技術(shù), 有些人一個月領(lǐng)悟到的東西, 比你一年的都多.這就是天資, 程序員是一個需要天才的工作.我想, 很多人聽說李一男吧, 此君就是這樣的人物, 三個月的時間就能解決好大一幫人幾年解決不了的問題, 給華為某部門帶來了很多的收益.哦, 這是題外話了, 與此篇的主題無關(guān), 只是本人偶爾的感慨而已:).這個階段, 就需要研究很多專題性的東西了, 比如: IO的實現(xiàn)原理, 多線程和Java的線程模型, 網(wǎng)絡(luò)編程, swing, RMI, reflect, EJB, JDBC等等很多很多的專題技術(shù), 鉆研得越深越好.為了更好的提高, 研究的更深入, 你需要經(jīng)常到網(wǎng)絡(luò)上搜索資料, 這個時候往往一本書起不來很大的作用.選一個JDK版本吧, 目前建議選用1.6, 多多研究它, 尤其是源
代碼(盡量!就是盡自己最大的努力, 雖然研究透是不可能滴).比如
說: util, collection, io, nio, concurrent等等包.可能有人會反對我說, 不是有API文檔嗎, 為什么還要研究這么多的源代碼? 錯了, 有API文檔, 你僅僅只是知道怎么用而已, 而認(rèn)真仔細(xì)的研讀這些大牛的源碼, 你就會深入更高的一個階層, 自己的編碼, 設(shè)計都會有很大的提高.如果有能力和精力, 我建議你把JDK的每一行代碼都熟悉一遍, 絕對只有好處, 沒有壞處!而且你會有些意外的收獲, 比如, 當(dāng)你仔細(xì)地讀完concurrent包的時候(不多, 好像總共是86個類吧), 你就會對Doug Lea佩服得五體投地.這個時候最忌碰到難題就去尋找?guī)椭? 去網(wǎng)上找答案!先把自己的腦袋想破吧, 或者等你的老板拿著砍刀沖過來要把你殺了, 再去尋求幫助吧.對于專題的學(xué)習(xí), 英文原版的閱讀是非常必要的, 看的越多越好, 多上上IBM的developer, SUN的網(wǎng)站吧, 當(dāng)然Javaeye也很不錯:), 有很多大牛, 呵呵.這個時候, 你應(yīng)該建立自己的代碼庫了, 你應(yīng)該自己去研究很多有意思的東西了.從一個200多M的文件中尋找一個字段, 最壞情況(在文件的末尾咯)也只需要1秒左右的時間, 你知道嗎?這個階段, 有很多很多類似的有趣的東西可以供你去研究, 你需要更多地關(guān)注性能, 規(guī)范性, 多解決一些疑難問題.需要學(xué)會所有的調(diào)試技術(shù), 運(yùn)用各種性能工具, 還有JDK附帶的很多工具, 這些你都要熟練得跟屠夫操刀一樣.也可以看看
3.高級階段
高級階段, 我就不敢妄言了.呵呵, 我感覺自己也是處于中級階段吧.也是根據(jù)自己的一些經(jīng)驗, 談?wù)勛约旱睦斫獍?
這個階段, 需要研究各種框
架, Spring, struts, Junit, Hibernate, iBatis, Jboss, Tomcat, snmp4j等等, 我覺得這個時候, 只要是用Java實現(xiàn)的經(jīng)典框架, 你都可以去研究.------在此申明一下, 我的意思不是說會用.光會用其實是遠(yuǎn)遠(yuǎn)不夠的, 你可以選擇自己喜歡鉆研的框架, 去好好研究一下, 興趣是最好的老師嘛.建議開始的時候, 研究Junit和Struts吧, 小一點(diǎn), 里面都采用了很多的模式, 呵呵, 可以熟悉一下, 盡量想想人家為什么這么做.我建議主要的精力可以花在spring和jboss上, 尤其是jboss,經(jīng)典中的經(jīng)典, 設(shè)計, 性能, 多線程, 資源管理等等, 你從中可以學(xué)到的東西簡直是太多了.而且它還有一本寫得很好的參考書, 叫
程和UML方面的資料, 或者自己主持一個項目玩玩, 不一定非得出去拉項目賺錢(能賺錢當(dāng)然更好), 不管成功或失敗, 都是很寶貴的經(jīng)驗, 都能提高很多!
第三篇:java程序員之路
JAVA程序員之路--
每個人的學(xué)習(xí)方法是不同的,一個人的方法不見得適合另一個人,我只能是談自己的學(xué)習(xí)方法。因為我學(xué)習(xí)Java是完全自學(xué)的,從來沒有問過別人,所以學(xué)習(xí)的過程基本上完全是自己摸索出來的。我也不知道這種方法是否是比較好的方法,只能給大家提供一點(diǎn)參考了。
學(xué)習(xí)Java的第一步是安裝好JDK,寫一個Hello World,? 其實JDK的學(xué)習(xí)沒有那么簡單,關(guān)于JDK有兩個問題是很容易一直困擾Java程序員的地方:一個是CLASSPATH的問題,其實從原理上來說,是要搞清楚JRE的ClassLoader是如何加載Class的;另一個問題是package和import問題,如何來尋找類的路徑問題。把這兩個問題摸索清楚了,就掃除了學(xué)習(xí)Java和使用JDK的最大障礙。推薦看一下王森的《Java深度歷險》,對這兩個問題進(jìn)行了深入的探討。
第二步是學(xué)習(xí)Java的語法。Java的語法是類C++的,基本上主流的編程語言不是類C,就是類C++的,沒有什么新東西,所以語法的學(xué)習(xí),大概就是半天的時間足夠了。唯一需要注意的是有幾個不容易搞清楚的
關(guān)鍵字的用法,public,protected,private,static,什么時候用,為什么要用,怎么用,這可能需要有人來指點(diǎn)一下,我當(dāng)初是完全自己琢磨出來的,花了很久的時間。不過后來我看到《Thinking in Java》這本書上面是講了這些概念的。
第三步是學(xué)習(xí)Java的面向?qū)ο蟮木幊陶Z言的特性的地方。比如繼承,構(gòu)造器,抽象類,接口,方法的多態(tài),重載,覆蓋,Java的異常處理機(jī)制。對于一個沒有面向?qū)ο笳Z言背景的人來說,我覺得這個過程需要花很長很長時間,因為學(xué)習(xí)Java之前沒有C++的經(jīng)驗,只有C的經(jīng)驗,我是大概花了一個月左右吧,才徹底把這些概念都搞清楚,把書上面的例子反復(fù)的揣摩,修改,嘗試,把那幾章內(nèi)容反復(fù)的看過來,看過去,看了不下5遍,才徹底領(lǐng)悟了。不過我想如果有C++經(jīng)驗的話,應(yīng)該一兩天時間足夠了。那么在這個過程中,可以多看看《Thinking in Java》這本書,對面向?qū)ο蟮闹v解非常透徹??上У氖俏覍W(xué)習(xí)的時候,并沒有看到這本書,所以自己花了大量的時間,通過自己的嘗試和揣摩來學(xué)會的。
第四步就是開始熟悉Java的類庫。Java的基礎(chǔ)類庫其實就是JDK安裝目錄下面jre/lib/rt.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)容介紹。
對包整體框架的把握并不是要熟悉每個類的用法,記住它有哪些屬性,方法。想記也記不住的。而是要知道包有哪些方面的類構(gòu)成的,這些類的用途是什么,最核心的幾個類分別是完成什么功能的。我在給人培訓(xùn)的時候一般是一次課講一個包,所以不可能詳細(xì)的介紹每個類的用法,但是我反復(fù)強(qiáng)調(diào),我給你們講這
些包的不是要告訴你們類的方法是怎么調(diào)用的,也不要求你們記住類的方法調(diào)用,而是要你們了解,Java給我們提供了哪些類,每個類是用在什么場合,當(dāng)我遇到問題的時候,我知道哪個類,或者哪幾個類的組合可以解決我的問題,That'all!,當(dāng)我們具體寫程序的時候,只要你知道該用哪個類來完成你的工作就足夠了。編碼的時候,具體的方法調(diào)用,是邊寫代碼,邊查Documentation,所有的東西都在Documentation里面,不要求你一定記住,實際你也記不住3000多個類的總共將近10萬個方法調(diào)用。所以對每個包的總體框架的把握就變得極為重要。
第五步,通過上面的學(xué)習(xí),如果學(xué)的比較扎實的話,就打好了Java的基礎(chǔ)了,剩下要做的工作是掃清Documentation里面除了上面4個包之外的其他一些比較有用處的類。相信進(jìn)展到這一步,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),如果不熟悉HTTP協(xié)議的話,雖然也可以學(xué)好Servlet/JSP編程,但是達(dá)不到舉一反三,一通百通的境界。所以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的標(biāo)記,具體的寫法記不住的話,臨時查就是了。
此外Java Web編程學(xué)習(xí)的重點(diǎn)要放在Web Application的設(shè)計模式上,如何進(jìn)行業(yè)務(wù)邏輯的分析,并且進(jìn)行合理的設(shè)計,按照MVC設(shè)計模式的要求,運(yùn)用Servlet和JSP分別完成不同的邏輯層,掌握如何在Servlet和JSP之間進(jìn)行流程的控制和數(shù)據(jù)的共享,以及Web Application應(yīng)該如何配置和部署。
第七步,J2EE編程
以上的學(xué)習(xí)過程如果是比較順利的話,進(jìn)行到這一步,難度又陡然提高。因為上面的知識內(nèi)容都是只涉及一個方面,而像EJB,JMS,JTA等核心的J2EE規(guī)范往往是幾種Java技術(shù)的綜合運(yùn)用的結(jié)晶,所以掌握起來難度比較大。
首先一定要學(xué)習(xí)好JNDI,JNDI是App Server定位服務(wù)器資源(EJB組件,Datasouce,JMS)查找方法,如果對JNDI不熟悉的話,EJB,JMS這些東西幾乎學(xué)不下去。JNDI其實就是javax.naming.*這個包,運(yùn)用起來很簡單。難點(diǎn)在于服務(wù)器資源文件的配置。對于服務(wù)器資源文件的配置,就需要看看專門的文檔規(guī)范了,比如web.xml的寫法,ejb-jar.xml的寫法等等。針對每種不同的App Server,還有自己的服務(wù)資源配置文件,也是需要熟悉的。
然后可以學(xué)習(xí)JTA,主要是要理解JTA對于事務(wù)的控制的方法,以及該在什么場合使用JTA。這里可以簡單的舉個例子,我們知道一般情況可以對于一個數(shù)據(jù)
庫連接進(jìn)行事務(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)對遠(yuǎn)端對象的調(diào)用的,以及在什么情況下要用到EJB。
在學(xué)習(xí)完EJB,JMS這些東西之后,你可能會意識到要急不可待學(xué)習(xí)兩個領(lǐng)域的知識,一個是UML,另一個是Design Pattern。Java企業(yè)軟件的設(shè)計非常重視框架(Framework)的設(shè)計,一個好的軟件框架是軟件開發(fā)成功的必要條件。在這個時候,應(yīng)該開始把學(xué)習(xí)的重點(diǎn)放在設(shè)計模式和框架的學(xué)習(xí)上,通過學(xué)習(xí)和實際的編程經(jīng)驗來掌握EJB的設(shè)計模式和J2EE的核心模式。
J2EE規(guī)范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外還有很多很多的企業(yè)技術(shù),這里不一一進(jìn)行介紹了。
另外還有一個最新領(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í)。
JAVA程序員之路
很多網(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的標(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)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點(diǎn)深奧,而且一般開發(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,那么事情要好辦的多,如果沒有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的
HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說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://?csdn IBM可是Web服務(wù)的力推者
嗚…你費(fèi)勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動??!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……
如上是在網(wǎng)上考下來的,但個人認(rèn)為SCJP證書也好,程序員等級證書也好,不要太看重它;關(guān)鍵是你手中有沒有技術(shù),能不能拿出活來。我面試時候都是以證書為參考,主要衡量你的手段還是提問技術(shù)性問題以及一些編程方面的基礎(chǔ)問題。建議不要把證書看的太重。
一個JAVA程序員一年學(xué)習(xí)之路的感慨2005-07-25 14:47一個JAVA程序員一年學(xué)習(xí)之路的感慨作者:汪瑜佯 來自:CSDN 下面幾條就是我的反思或者說自己在學(xué)習(xí)中形成的一些想法,與諸君共勉,希望大家能夠提一些學(xué)習(xí)上面的建議以及糾正我得錯誤觀點(diǎn):
1.書讀百遍,其義自現(xiàn)
我看書就是這樣,看書看不懂很正常,技術(shù)書籍不是武俠書籍,看不懂沒什么好奇怪的!我遇到看不懂的地方,就不會在那兒阻塞太久,實在看不懂我就咕嚕吞下去,等到看完這一章或者這一節(jié)再回過頭來學(xué)習(xí),反復(fù)的讀!我的學(xué)習(xí)就是一個往返的曲線,不時的會把前面所學(xué)過的復(fù)習(xí)一遍!我覺得就是讀過好幾遍的書,就像我現(xiàn)在再讀《Thinking in Java》,每次都有新的收獲,雖然收獲一次比一次小吧,但是卻不是可以抹殺的!這可能就是所謂的溫故而知新吧!
2.勿在浮沙筑高臺
這里引用了候老師在《深入淺出MFC》中的一句話,其實貫穿這篇文章我無時無刻不在強(qiáng)調(diào)基礎(chǔ)的重要性,而且平時這個觀念也是deeply rooted in my mind
3.天下大事,必作于細(xì)
又引用了候老師的話,學(xué)習(xí)技術(shù)就是要從細(xì)處下功夫!看一本書要理解透徹,其實也要分什么書籍了,原理性的書籍那是來不得半點(diǎn)馬虎,至于很多應(yīng)用類書籍,實例類書籍,看過知道在哪兒找就行了!
4.業(yè)精于勤荒于嬉,行成于思?xì)в陔S
這和本文的題目所要表達(dá)的思想是一樣的,學(xué)習(xí)沒有捷徑,只有刻苦努力不要放棄才能成功!不管前面的路如何,自己只要堅持走,等登上頂峰了,回頭一看,自己走過的路就是成功路!不論多聰明,或者有些許的愚頓,都請記住“騏驥一躍,不能十步;駑馬十駕,功在不舍”。
5.不積跬步,無以至千里;不積小流,無以成江海
要達(dá)到高手的境界,非一朝一日之功,平時要多看,多積累,博聞強(qiáng)識,厚積而薄發(fā)才是正道!很多積累就在每天那么幾分鐘,半小時中。很多同學(xué),我以前也是這樣,比如看電影看了一晚上,以前我就想反正都浪費(fèi)了幾個小時了,也就不去自習(xí)了,剩下的時間也就再上上網(wǎng)聽聽音樂什么的就過了!現(xiàn)在就是還剩10分鐘我也要去自習(xí)室(不過這有一個前提條件,^_^,偶們學(xué)校小,宿舍到圖書館很近),因為這幾分鐘浪費(fèi)也是浪費(fèi)了,為何不用這幾分鐘看看書呢?多看書總是有幫助的!
6.武學(xué)之道貴在精而不在多
《天龍八步》中的一句話,其實都是一個道理,打個比方說,鳩摩智對于武學(xué)所學(xué)甚博,結(jié)果和喬峰比呢,喬峰就一個降龍十八掌,可以練到天下無敵!有些同
學(xué),今天想學(xué)Java,明天想學(xué)C++,過了幾天又想學(xué)習(xí)C#,不過到頭來還是竹籃打水!其實只要有一樣你學(xué)精通了(要能稱的上是精通,彈何容易?。。?,其他的很快就能觸類旁通了!
7.聞道有先后,術(shù)業(yè)有專攻
技術(shù)上強(qiáng)人太多了,不過不要妄自菲薄。很多同學(xué),包括我自己在學(xué)習(xí)過程中都有這種妄自菲薄的感覺,真強(qiáng)啊,我怎么什么都不會!其實沒關(guān)系,慢慢來,對自己說,汝所到之處,吾亦可至!
8.天行健,君子以自強(qiáng)不息;地勢坤,君子以厚德載物
一句話,一條鞭子,鞭策自己前進(jìn)!
PS:很久以來就想寫這樣一篇文章,總結(jié)自己一年以來的學(xué)習(xí),好好看看一年自己走過的道路,也算是封存自己03年的記憶好讓以后有所回憶!雖然元旦過后就開始寫,但其中寫寫停停直到今天才把這篇文章完成,如釋重負(fù)!我個人不善于寫作,所以所謂文章也只是心中想到什么也就附之紙上,可能錯字別字誤用的成語不在少數(shù),之所以發(fā)到CSDN也是為了那句話:發(fā)表是最好的記憶!
一個java程序員應(yīng)該知道的東西2008-03-29 23:391、知道java語言。這應(yīng)該是廢話,不過還是提一下,也確實有人連關(guān)鍵字都認(rèn)不全。
2、知道接口和抽象類的區(qū)別。這似乎也是老生常談了,不過認(rèn)識了這點(diǎn),也就會明白為什么java語言沒有采用多繼承。
3、知道RuntimeException和Exception的區(qū)別。在項目中你也許永遠(yuǎn)用不到。
5、知道怎么使用ant。
4、知道怎么用javac、java、jdb。這是基本功,雖然
6、知道jvm的類裝載過程、gc。如swing。
7、知道類庫是什么,至少熟悉一個類庫的設(shè)計結(jié)構(gòu),8、你不一定要非常熟悉Thread以及如何編制多線程程序,但是必須知道什么叫線程安全。buffer的概念。
9、你不一定要知道cache的概念,但是一定要知道
10、如果你使用IDE,至少知道這個IDE下如何debug,而不是用println出信息來進(jìn)行所謂的“debug”。
11、知道為什么使用logger,而不是習(xí)慣性的或程序性的添加log代碼。試框架,如junit。
12、知道如何測試你的代碼,最好會使用一種單元測
13、如果你開發(fā)web應(yīng)用,知道request、response、servlet的概念,最好還知道filter和listener。
14、如果你使用web framework開發(fā)web應(yīng)用,并認(rèn)為你使用的framework是最好的,那么一定要知道為什么它是最好的,而不是僅僅說出“它是最好用的,最方便的”這樣子的理由,否則就默默的使用而不要到處宣揚(yáng)它是最好的。如何使用JDBC。
15、鑒于大部分的應(yīng)用都會使用數(shù)據(jù)庫,你應(yīng)該知道
Java程序員必需了解的七大開源協(xié)議(摘抄)2008年04月06日 星期日 20:42筆者偶爾在網(wǎng)上亂轉(zhuǎn)的時候,發(fā)現(xiàn)了幾個跟開源協(xié)議相關(guān)的約定說明,所以就仔細(xì)查了了一些資料和大家分享,下面只列決了個人認(rèn)為Java程序員必須了解的七大開源協(xié)議:Mozilla Public License
MPL License,允許免費(fèi)重發(fā)布、免費(fèi)修改,但要求修改后的代碼版權(quán)歸軟件的發(fā)起者。這種授權(quán)維護(hù)了
商業(yè)軟件的利益,它要求基于這種軟件得修改無償貢獻(xiàn)版權(quán)給該軟件。這樣,圍繞該軟件得所有代碼得版權(quán)都集中在發(fā)起開發(fā)人得手中。但MPL是允許修改,無償使用得。MPL軟件對鏈接沒有要求。BSD開源協(xié)議
BSD開源協(xié)議是一個給于使用者很大自由的協(xié)議??梢宰杂傻氖褂?,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。當(dāng)你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時,需要滿足三個條件:須帶有原來代碼中的BSD協(xié)議。
1.如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必
2.如果再發(fā)布的只是二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議。
3.不可以用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場推廣。
BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權(quán)。BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時候都首選BSD協(xié)議,因為可以完全
控制這些第三方的代碼,在必要的時候可以修改或者二次開發(fā)。
Apache Licence 2.0
Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件:
1.需要給代碼的用戶一份Apache Licence
2.如果你修改了代碼,需要再被修改的文件中說明。
3.在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明。
4.如果再發(fā)布的產(chǎn)品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改。
Apache Licence也是對商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。GPL
GPL許可證是自由軟件的應(yīng)用最廣泛的軟件許可證,人們可以修改程式的一個或幾個副本或程式的任何部
分,以此形成基於這些程式的衍生作品。必須在修改過的檔案中附有明顯的說明:您修改了此一檔案及任何修改的日期。您必須讓您發(fā)布或出版的作品,包括本程式的全部或一部分,或內(nèi)含本程式的全部或部分所衍生的作品,允許第三方在此許可證條款下使用,并且不得因為此項授權(quán)行為而收費(fèi)。LGPL
Linux就是采用了GPL。GPL協(xié)議和BSD, Apache Licence等鼓勵代碼重用的許可很不一樣。GPL的出發(fā)點(diǎn)是代碼的開源/免費(fèi)使用和引用/修改/衍生代碼的開源/免費(fèi)使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費(fèi)的各種linux,包括商業(yè)公司的linux和linux上各種各樣的由個人,組織,以及商業(yè)軟件公司開發(fā)的免費(fèi)軟件了。
GPL協(xié)議的主要內(nèi)容是只要在一個軟件中使用(“使用”指類庫引用,修改后的代碼或者衍生代碼)GPL協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費(fèi)。這就是所謂的”傳染性”。GPL協(xié)議的產(chǎn)品作為一個單獨(dú)的產(chǎn)品使用沒有任何問題,還可以享受免費(fèi)的優(yōu)勢。
由于GPL嚴(yán)格要求使用了GPL類庫的軟件產(chǎn)品必須使用GPL協(xié)議,對于使用GPL協(xié)議的開源代碼,商業(yè)軟件或者對代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發(fā)的基礎(chǔ)。BSD/Apache等類似Public Domain
其它細(xì)節(jié)如再發(fā)布的時候需要伴隨GPL協(xié)議等和
公共域授權(quán)。將軟件授權(quán)為公共域,這些軟件包沒有授權(quán)協(xié)議,任何人都可以隨意使用它。Artistic許可
使作者保持對進(jìn)一步開發(fā)的控制
第四篇:JAVA程序員之路
JAVA程序員之路
很多網(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的標(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)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點(diǎn)深奧,而且一般開發(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,那么事情要好辦的多,如果沒有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說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論壇 中國最有名的技術(shù)論壇,《程序員》雜志就是他們出版的,你可以在上面提出問題,馬上就有人回答你,如果你覺得好,你可以給那人加分;
Java研究組 上面有很多原創(chuàng)文章,高手還是挺多的; Java開發(fā)者 那里Java資料比較全;
java.com.cn看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng) IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設(shè)計嗎,你知道怎么組織人員進(jìn)行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現(xiàn)在最缺的是實際的工作經(jīng)驗,而不是書本上那些憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職?。?,在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點(diǎn)難哦!
還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設(shè)計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設(shè)計采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、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在Jive2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發(fā)團(tuán)隊在不斷升級。你可以訪問banq的網(wǎng)http:/// 去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得我也曾碰到過一個項目經(jīng)理,號稱Java很簡單,只要三個月就可以學(xué)會。其實說這種話的人就如當(dāng)年小日本號稱“三個月拿下中國”一樣大言不慚。不是我潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計模式了。設(shè)計模式是高級程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計模式反復(fù)向你強(qiáng)調(diào)一個宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計模式的資料,還是向大家推薦banq的網(wǎng),他把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)用整理出來,再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。
當(dāng)然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業(yè)做貢獻(xiàn)嘛!開發(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ù)者為俊杰”。你知道計算機(jī)界現(xiàn)在的發(fā)展形勢嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機(jī)技術(shù)將向何處發(fā)展嗎?其實從各大計算機(jī)廠商最近的動作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點(diǎn)”,而微軟的.NET藍(lán)圖和SUN ONE計劃的斗爭焦點(diǎn),也就是Web服務(wù)。Web服務(wù)就是一個嶄新的分布式計算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點(diǎn)變成一種服務(wù)而不是混亂的垃圾場。不遠(yuǎn)的將來,我們就可以在家里點(diǎn)擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點(diǎn)間自動完成的,再也不用象現(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也要懂一點(diǎn)吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點(diǎn)吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
因為剛剛興起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個網(wǎng)站吧:
中國UDDI技術(shù)聯(lián)http://004km.cn/
CSDN的柴曉路專(注:柴曉路也是互聯(lián)網(wǎng)上一個有名的人物,他發(fā)表過很多關(guān)于Web服務(wù)的文章,還出了一書,應(yīng)該稱的上是中國Web服務(wù)技術(shù)的先行者)
IBM的開發(fā)者網(wǎng)絡(luò)的XML&Web Service專欄:IBM可是Web服務(wù)的力推者
嗚…你費(fèi)勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動?。∧敲创騻€電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……
第五篇:JAVA程序員之路
怎么學(xué)好java
JAVA程序員之路
很多網(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的標(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)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點(diǎn)深奧,而且一般開發(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,那么事情要好辦的多,如果沒有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說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:/// 中國最有名的技術(shù)論壇,《程序員》雜志就是他們出版的,你可以在上面提出問題,馬上就有人回答你,如果你覺得好,你可以給那人加分;
Java研究組http:/// 那里Java資料比較全;
java.com.cn http://.cn/ 看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)http:// IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設(shè)計嗎,你知道怎么組織人員進(jìn)行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現(xiàn)在最缺的是實際的工作經(jīng)驗,而不是書本上那些憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職?。?,在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點(diǎn)難哦!
還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設(shè)計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設(shè)計采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、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在Jive2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發(fā)團(tuán)隊在不斷升級。你可以訪問banq的網(wǎng)
http:/// 去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上
ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得我也曾碰到過一個項目經(jīng)理,號稱Java很簡單,只要三個月就可以學(xué)會。其實說這種話的人就如當(dāng)年小日本號稱“三個月拿下中國”一樣大言不慚。不是我潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計模式了。設(shè)計模式是高級程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計模式反復(fù)向你強(qiáng)調(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)用整理出來,再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。
當(dāng)然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業(yè)做貢獻(xiàn)嘛!開發(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ù)者為俊杰”。你知道計算機(jī)界現(xiàn)在的發(fā)展形勢嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機(jī)技術(shù)將向何處發(fā)展嗎?其實從各大計算機(jī)廠商最近的動作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點(diǎn)”,而微軟的.NET藍(lán)圖和SUN ONE計劃的斗爭焦點(diǎn),也就是Web服務(wù)。Web服務(wù)就是一個嶄新的分布式計算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點(diǎn)變成一種服務(wù)而不是混亂的垃圾場。不遠(yuǎn)的將來,我們就可以在家里點(diǎn)擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點(diǎn)間自動完成的,再也不用象現(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也要懂一點(diǎn)吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點(diǎn)吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!因為剛剛興起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個網(wǎng)站吧:
中國UDDI技術(shù)聯(lián)http:///developerWorks/cn/xml/index.shtml?csdn IBM可是Web服務(wù)的力推者
嗚…你費(fèi)勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動啊!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……
如上是在網(wǎng)上考下來的,但個人認(rèn)為SCJP證書也好,程序員等級證書也好,不要太看重它;關(guān)鍵是你手中有沒有技術(shù),能不能拿出活來。我面試時候都是以證書為參考,主要衡量你的手段還是提問技術(shù)性問題以及一些編程方面的基礎(chǔ)問題。建議不要把證書看的太重。