程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java之路——Java初接觸,java之路接觸

Java之路——Java初接觸,java之路接觸

編輯:JAVA綜合教程

Java之路——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是什麼、歷史、及技術范圍等內容作了闡述,了解清楚了這些部分,後續的學習就不會彷徨,不會一邊學習,一邊在問自己,"我究竟在學什麼"了!

   

   

參考資料:

[1] 周志明(2016年5月),《深入裂解Java虛擬機第二版》

[2] 了解Java技術,2017.1.12取自https://www.java.com/zh_CN/about/

[3] A Short History of Nearly Everything Java, 2017.1.12取自https://zeroturnaround.com/rebellabs/a-short-history-of-nearly-everything-java/3/

[4] Java Platform Standard Edition 8 Documentation,2017.1.12取自http://docs.oracle.com/javase/8/docs/index.html

[5] Java EE 8願望清單:缺少這些,Java EE將不會完美,2017.1.12取自http://www.okbase.net/doc/details/4727

[6] The complete "Java Tools and Technology Landscape for 2014" report data in a single mind map image, 2017.1.12取自https://zeroturnaround.com/rebellabs/the-complete-java-tools-and-technology-landscape-for-2014-report-data-in-a-single-mind-map-image/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved