Java是一個通用的編程語言,其實可以干很多事,怎么學Java就看怎么用了,但有一些一般的步驟:
熟悉一種文本編輯器,比如Vim,Emacs,Notepad++,TextMate等。知道哪些是開源的,哪些是閉源的,哪些要收費。養(yǎng)成不用盜版軟件的習慣。
安裝JDK(建議用你的Linux發(fā)行版自帶的軟件包管理器安裝openjdk,過程中可能需要讀發(fā)行版特定的文檔)
寫一個Java的Helloworld程序,并用命令行工具javac編譯,再用java命令運行這個程序。過程中熟悉源代碼、字節(jié)碼、虛擬機這些東西,以及Java的包(package)對.class文件所在的路徑的影響。如果這兩個命令行工具使用熟練了,可以開始選一個喜歡的集成開發(fā)環(huán)境,比如Eclipse。當然,養(yǎng)成不用盜版軟件的習慣。熟悉一下如何建立“工程”,以及快捷鍵的使用。
學習Java的面向過程編程,包括基本數據結構、表達式、語句、控制流、函數調用。
學習Java的面向對象編程,包括類、引用類型和值類型的區(qū)別、成員、方法、訪問控制、繼承、多態(tài)、接口、接口實現。順便學習一下面向對象的基本思想,即對象、消息、封裝、繼承、多態(tài)等,這些通用的內容不是Java特有的。這時候應該已經涉及了Java的垃圾回收。要留意即使有垃圾回收的情況下也會發(fā)生的內存泄露(如自己設計數組容器,元素是引用,邏輯上刪除了元素,但并沒有清成null)。注意垃圾回收只能回收內存中的對象,除了內存以外,其它資源不能依靠垃圾回收來關閉。比如,文件、管道、Socket、數據庫連接等,垃圾回收是不會幫你關閉的。
學習Java的異常處理,但更重要的是學習什么時候用特殊返回值而不使用異常,什么時候應該拋出異常而不處理異常,知道什么是pokemon catch及其危害,了解為什么Java的checkedexception是一個糟糕的特性。如果愿意,同時學習一下Java1.7的try-with-resource語句和AutoCloseable接口。
熟悉Java常用的數據結構,如基本的數組類型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList實現;以及java.util.Map接口和java.util.HashMap實現。(java1.5以前的沒有泛型參數的就不用碰了)同時留意一下基本類型int,double等和裝箱類型Integer和Double的區(qū)別,以及它們是如何自動轉換的。
熟悉Java標準庫里的各種工具,包括日期時間、字符串格式化、IO等。**知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器會幫你關掉文件。
學習一下Java的命名習慣,以及JavaBeans的常規(guī),知道為什么getter/setter比直接操作成員變量好。按這種方式給Java的變量、方法命名。同時看看你的IDE能不能自動幫你生成getter和setter。
使用一個第三方的庫(比如Apache CommonsLang通用工具庫),讓你的程序依賴于它的二進制jar包(而不是直接拷貝源代碼),用命令行編譯、運行(注意classpath等);也熟悉一下如何用你的集成開發(fā)環(huán)境添加第三方依賴。感受一下手動管理依賴關系的麻煩。
學習Maven的使用,試著讓Maven幫你解決依賴關系,再試著讓Maven幫你創(chuàng)建一個Eclipse工程。再試試用Maven打包發(fā)布。
學習軟件測試,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。
讀讀四人幫寫的《設計模式》(這本書是用C++和Smalltalk語言為例子的,但仍然適合Java)。