給初學者之二:從JDK說起
在知道了java有什麼優點,能做什麼之後
就該說一下java該如何去學了
在說java如何去學之前,有必要把java的幾個大方向做一個簡單說明
早在五年前,嗯,應該說是六年前,也就是99年的時候
sun公司做出了一個決定,將java應用平台做一個劃分
畢竟在不同領域,語言應用特性是有區別的
針對不同領域內的應用,sun公司發行就緒相關高端標準來統一規範代碼
這三大塊就是J2SE,J2EE以及J2ME
這個舉措今天看來無疑是非常了不起的
正是由於這次革命性的發展,使java從一種小打小鬧遊戲性的語言
發展成為今天企業級應用的基礎
這裡要特別說明一下J2SE J2EE J2ME中2的意思
其實2就是英文單詞to的諧音,就是to的意思
而不是second edition,當然java 2本身版本號碼就是1.2,也有點2nd edition的味道
說點題外的,sun公司發布的java版本很有意思
雖然總是寫是1.X但其實外界對這種版的說法也就是X.0
比如java 2,其實就是java 1.2
1.3其實就是3.0,1.4就是4.0,現在所說的5.0 其實就是1.5
只是以前我們更習慣叫1.X而已
可能到了5.0以後,就全改叫X.0而不是1.X了
所以以後聽到別人說java 5.0,千萬別驚訝,其實就是1.5
在這三個J2*E中J2SE是基礎,就是java 2的標準版(java 2 standard edition)
也就是最基礎的java語言部分,無論學什麼java技術,J2SE都是必須掌握的
要使用J2SE就必須安裝JDK(java development kit)
JDK在sun公司的首頁上可以免費下載,下載後需要安裝,具體安裝流程看教材
JDK包含有五個部分:核心API,整合API,使用者介面API,發布技術還有java虛擬機器(JVM)
先說運行環境,運行環境最主要要說的就是java虛擬機器(JVM)
前面我們說過java是跨平台的語言,那麼如何做到跨平台呢?畢竟每種作業系統都是不同的
java的設計者們提出了一個虛擬機器的概念
在作業系統之上建立一個統一的平台,這個平台必須實現某些功能以支援程式的運行
如:
-------------------------------------
| program |
-------------------------------------
| JVM |
-------------------------------------
| UNIX | Windows | Linux | Solaris |..
-------------------------------------
程式員所寫的每一個程式都先運行在虛擬機器上
所有操作都必須經過虛擬機器才能和作業系統互動
這樣做不僅統一了所有作業系統,同時也保證了作業系統的安全
要死機的話,死的是虛擬機器(JVM)而作業系統並不會受此影響
而我們所說的java運行環境指的主要是JVM,其他的不說了,省略
下面說說JDK(java development kit)的API,其實用JDK來包括運行環境以及開發工具
個人感覺是不恰當的,因為這三個單詞僅能說明開發工具,也就是幾個標準的API
而沒有讓人感覺到有運行環境的意思在裡面,這是題外
那麼什麼是API?
簡單地說就是Application Programming Interface,API
在java裡面,就是一些已經寫好了的類打成的包
這又要解釋什麼是類什麼是包了,簡單說一下,包就是類的集合
一個包包含零個或多個類,嗯,具體的可以去看書
這些類是java的基礎類,常用的類,可以簡單理解成java的工具集
最後說一下JDK的發布技術,其實按我的理解,講白了就是編譯器
將.java檔案轉換成.class檔案的一種技術
這三部分組成了JDK,有了JDK,就可以開發出J2SE應用軟體了
最原始的只要用一個記事本寫幾行代碼就可以了
但一般來說我們會使用效果比較好的開發工具,也就是IDE
在J2SE這一塊,精選JCreator這款IDE
sun公司的產品,與JDK結合得幾乎是天衣無縫,非常適合初學者使用
教材方面中文的推薦電子工業出版社出版的《java教程》初級與進階篇各一本
還有就是《21天學通java》雖然有人說21天系列是爛書,但個人感覺
對於j2se,這本書翻譯得已經很不錯了,基本沒有什麼語法錯誤,語句也很通順
最後要說的就是《thinking in java》
這本書自然很經典,說得比較細,只是我覺得不太適合初學者,其實也不難
初學者直接看也不成問題,但個人感覺還是找本教材也就是前面推薦的兩款來看比較好
基本概念的理解還是用教材的,畢竟thinking in java有的版本翻譯得很爛
而且個人建議還是看原版比較好,當然這幾本都看最好了,但如果沒時間
至少精讀其中一本,然後再看其他兩本就可以,其實三本書內容也差不多
但看問題的角度方式以及面向的讀者也都不同,嗯,怎麼說呢,找適合自己的吧
最後要說的是
由於虛擬機器的存在,J2SE的大多數軟體的使用會比一般案頭軟體慢一些
效果不盡如人意,現在大概只有swing控制項還在使用吧,其它沒怎麼聽說
J2EE&J2ME
這是java應用的重中之重,如果想拿高薪,最好把J2EE學好
記得以前在csdn上看過一個調查,月薪上萬的程式員主要從事哪方面的工作
十個中有八個是做J2EE的,其他兩個一個做J2ME,還有一個做嵌入式
也許有些誇張,但也從某一方面說明J2EE人才的稀缺以及應用的廣泛
所以如果想學java,只精通j2se是永遠不夠的,至少還需要時間去瞭解其它兩個J2*E