給初學者之二:從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,應用程序編程接口。在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