search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Java之路——Java初接觸

本文大綱

1.Java 是什麼

2.Java 歷史

3.Java 技術範圍

3.1 Java SE 平台技術範圍

3.2 Java EE 技術範圍

3.3 Java 體系技術範圍

4. 總結

1.Java 是什麼

我認為,要學好一樣東西,首先要知道,自己在學的東西是什麼。沒有一個總體的概念,就會覺得所學到的知識都是一些零星的概念,沒有總體的感覺,很難形成一個知識體系,那東西就很難記得住了。所以在學習 Java 的時候,我們首先要弄明白, Java 是什麼這一問題。

那 Java 是什麼呢? Java 必然是一門編程語言,這是毋庸置疑的。但它卻不僅僅是一門編程語言,它還是一個由一系列計算機軟體和規範形成的技術體系,這個技術體系提供了完善的用於軟體開發和跨平台部署的支持環境,並廣泛應用於嵌入式系統、移動終端、企業伺服器、大型機等各種場景 [1] 。這句話怎麼理解呢?接觸到後面的內容,你將會深入理解到。在這裡我簡單介紹一下。首先, Java 是一門面向對象的編程語言,就如同C#等語言一樣,而與C語言等面向過程的語言不一樣。其次,Java的口號是"Write Once, Run Anawhere",它能通過 Java 虛擬機等技術,代碼只需一份,編譯成中間語言之後,放到 Java 虛擬機上運行, Java 虛擬機根據本地硬體環境編譯成最終操作系統能識別的語言進行處理,從而擺脫硬體平台的束縛,進行跨平台的開發部署。再有, Java 已經廣泛應用到各大場景,那究竟有多廣泛呢,可以看一下以下數據 [2]

  • 97% 的企業桌面運行 Java
  • 美國有 89% 的桌面(或計算機)運行 Java
  • 全球有 900 萬 Java 開發人員
  • 開發人員的頭號選擇
  • 排名第一的部署平台
  • 有 30 億部行動電話運行 Java
  • 100% 的藍光碟播放器附帶了 Java
  • 有 50 億張 Java 卡在使用
  • 1.25 億台 TV 設備運行 Java
  • 前 5 個原始設備製造商均提供了 Java ME

2.Java 歷史

Java 語言在 1995 年正式發布 1.0 版本,距今已經有 22 年了。在這漫長的時間裡, Java 又得到了很大的發展。大概的發展歷程和版本升級可以看下圖的發展歷程 [3] ,詳細的情況網上到處可查,我就不多說了。在這裡我主要抽幾個重點時刻來講一下。

  • 1995 年 5 月, Sun Microsystems公開發布了 Java 語言 1.0 版本,並提出口號" Write Once, Run Anywhere" ( WORA )。
  • 1996 年 1 月, JDK1.0 版本正式發布, Java 語言有了第一個正式版本的運行環境。
  • 1998 年底, JDK1.2 版本發布。在此版本中, Java 技術體系開始拆分為我們目前經常說的三個方向,分別是面向桌面應用開發的 J2SE ( Java 2 Platform, Standard Edition),面向企業級開發的J2EE(Java 2 Platform, Enterprise Edition)和面向手機等移動終端開發的J2ME(Java 2 Platform, Micro Edition)。關於J2這個名字,直到2006年,Sun公司又對這三個方向進行了重新命名,分別為Java SE, Java EE和Java ME。所以大家有時候看到有些地方說J2EE,有些地方又說Java EE,基本都是指一樣的東西,只是時代不一樣而已,不要太過糾結。在這個1.2的版本中,還有很多代表性的技術出現,如EJB、Java IDL、Swing等,有興趣了解的同學可以查一下。
  • 2000 年 5 月, HotSpot 虛擬機(一種 Java 虛擬機,名字叫 HotSpot )成為了 JDK1.3 及之後所有版本的 Sun JDK 的默認虛擬機。也就是說,我們現在默認使用的 Java 虛擬機就是 HotSpot 虛擬機,所以大家在今後的學習中,特別是要進行性能調優等方便處理的時候,要注意對 HotSpot 虛擬機的學習。
  • 2006 年 11 月, Sun 公司宣布對 Java 開源,並在隨後的一年多時間內,陸續將 JDK 的各個部分在 GPL v2(一種開源協議)協議下公開了源碼,並建立了OpenJDK組織對這些源碼進行獨立管理。所以,很多時候我們都會接觸到OpenJDK這個名詞,特別是在裝linux的時候,如果你選擇了某些安裝包,就會自動裝上OpenJDK,其實就代表著JDK的開源版本。
  • 2009 年 4 月, Oracle 收購了 Sun 公司。所以現在 Java 商標屬於 Oracle 的了。

了解一個產品的發展歷史,有助於我們對這個產品產生更深刻的認識。也能從中知道一些我們經常用的技術,其實已經在很多年前就出現成熟了。這能讓我們對技術的發展有個大概的了解,知道了技術發展的趨勢,更好的學習各種技術。直至目前, Oracle 官網最新發布的 JDK 為 8u111/8u112 ,想必大家對 Java 8的很多特性都還沒有完全熟悉,Java 9又準備到來了。所以不要猶豫,緊跟技術發展路線,才能跟上時代的步伐。

3.Java 技術範圍

本來想將這一節命名為" Java 技術體系"的,但感覺題目太技術了,說實在我也說不準究竟 Java 技術體系最正規的表現是怎樣了,所以思前想後,還是命名為" Java 技術範圍"這樣一個聽上去不是很響亮的名字,給自己留個餘地。

學習一樣東西,我認為比較重要的是先了解究竟這東西包含了什麼內容。對所包含的內容有個大概了解,才能分清主次,知道自己要學什麼,次學什麼。如果對所學習的知識沒有個認識,那就像在沙漠中走路,你永遠不知道什麼時候是個盡頭,心裡沒有底,學起來就漫無目的,事倍功半了。

3.1 Java SE 平台技術範圍

首先,要了解 Java 技術體系,就需要先了解我們經常聽到的 JRE 、 JDK 包含了什麼內容。我們通常把 Java 編程語言、 Java 虛擬機及 Java API類庫三部分統稱為JDK(Java Development Kit),它除包含JRE中所有的東西以外,還有一些開發者用於編譯、調試等工具。下圖是摘自Oracle官網上的Java SE 8的組成描述 [4]

圖中有各種專業名詞,看著挺暈的,所以這裡暫不累贅,如想了解的同學可以先參考官方文檔( http://docs.oracle.com/javase/8/docs/technotes/guides/desc_jdk_structure.html ),後續會抽取重點內容進行展開。在這裡講幾點直觀看到的內容。

  • JRE 是 JDK 的一個子集, JDK 包含了 JRE 的所有內容,同時多了開發時所需要用到的 Tools 和 Tools API。所以大家在開發的時候,要使用JDK作為 Java 的環境,不要僅僅用JRE,不然當做一些開發工作,如使用IDE進行調試的時候會報錯。
  • JDK 包含了最頂層的 Java 編程語言、最底層的 Java 虛擬機以及中間的一大堆 Java API。
  • 在 Java SE 8中,Java虛擬機還是使用HotSpot虛擬機作為默認虛擬機。
  • 在基礎類庫中,我們可以看到, lang 和 util 尤為突出,說明他們是使用頻率最高的類庫,在學習過程中,最好對裡面的類有所了解。

3.2 Java EE 技術範圍

平時在工作中,通常建的網站項目,都需要用到 Java EE部分的內容了。Java EE與Java SE有什麼關係呢?簡單來說,Java SE是基礎,沒有Java SE,什麼Java內容都運行不了。而Java EE,是在Java SE基礎上,提供更多的組件供企業級應用開發。從網上找了一幅圖,描述了Java EE 7中的各個組件 [5]

展示這幅圖,主要是想讓大家看看, Java EE涵蓋了我們經常見到的JSP、Servlet、EJB、JPA、JMS等內容,大家先有個印象,知道這些組件是屬於Java EE的內容,今後再對各個組件進行展開講解。

3.3 Java 體系技術範圍

Java 平台的相關知識,也就是 JDK 裡面的內容,是 Java 的基礎知識,需要打好堅實的基礎。有很多人一開始學習 java 就去了解框架啊之類的東西,可能可以在短時間內應付到工作,做一些小東西,但當遇到問題的時候,卻不知如何入手,無法解決,這就是基礎知識沒有打牢固的緣故了。學習一門知識,最重要把基礎打牢,能做到舉一反三,其實上層的技術都是底層技術累積出來的,萬變不離其中。所以基礎要打好,才能將一門知識學習。

那基礎打牢之後,就如剛剛所說的,還會有很多累積起來的上層技術、框架以及圍繞其中心的周邊技術、工具等內容。這些知識也是日常工作中會用到的,我們同樣也需對其有所了解。 ZeroTurnaround 對於當年的 Java 工具和技術的使用情況等會做一些報告,其中對 2014 年的報告做了一個思維導圖 [6] ,雖然這兩年的技術會有所發展,開發者的使用比例也會有所改變,但是主流的技術不是一時半刻可以轉變的。圖中提到的技術對我們了解 Java 體系的技術內容,還是很有參考價值的。

在實際的工作中,我們對上圖中 14 個範疇幾乎每個都會有所涉及,可見學好 Java 並不是一件容易的事情。每個範疇的技術都有好幾項,我們精力有限,所以主要關注每個範疇的前一兩項就好。精力無限的同學,在精通了每個範疇的前兩項后,可以再接觸一下後面的技術,做一些對比,總結一下為什麼那個多人用,這個少人用,能力也就得到質的提高了。 ZeroTurnaround 也對 2016 的 Java 工具和技術做了個報告總結,但沒有做成思維導圖,所以沒展示出來,有興趣的同學可以通過此地址 https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/ 了解到 2016 年的情況。

4. 總結

總結一下,這是 Java 初學的第一篇內容—— Java 初接觸。文章內沒有對技術進行太多的展開講解,可能有些同學就不耐煩了,認為講這麼多東西沒講到重點,一篇文章看下來沒有學到什麼東西。我個人認為不然。學任何東西,都應該知道自己在學什麼東西,這樣對所學的東西才能應付自如。就好比你要對付一個敵人,人家門口放著刀槍炮艦你就嚇得半死,倉皇逃跑。但如果你走進去看,發現只是只虛張聲勢的蟑螂,那你就能胸有成竹的把刀槍炮彈一一拆解了。本文章主要對 Java 是什麼、歷史、及技術範圍等內容作了闡述,了解清楚了這些部分,後續的學習就不會彷徨,不會一邊學習,一邊在問自己,"我究竟在學什麼"了!

學習Java的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:392216227我們一起學Java!



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦