首頁 > 運動

從零開始學Java系列之Java是什麼?它到底是個啥?

由 IT千鋒教育 發表于 運動2023-01-01

簡介到了1996年1月,Sun公司釋出了Java的第一個開發工具包(JDK 1

1995年5月9號是什麼星座

全文大約

5000】

字,不說廢話,只講可以讓你學到技術、明白原理的純乾貨!文章帶有豐富案例及配圖,只為讓你更好的理解和運用文中的技術概念,給你帶來具有足夠的思想啟迪……

從零開始學Java系列之Java是什麼?它到底是個啥?

————————————————

前戲已做完,精彩即開始

——————————————

既然各位小夥伴現在已經決定要學習Java了,那首先得對Java有基本的瞭解吧,所以接下來

壹哥

先用一篇文章,來給大家介紹一下Java到底是個啥。

友情提示:

大家要記住,無論我們學習任何技術,都要知道

這個技術是什麼、幹嘛的、怎麼用、為什麼這麼用,以及使用時出現了問題該怎麼解決!

一。 Java簡介

1。 起源

既然各位打算以後要靠Java來養家餬口了,那對Java的瞭解是不是應該更多一些呢?比如Java這個技術是怎麼產生的?接下來

壹哥

給大家講個小故事,讓咱們一起來看看Java的起源吧。

20世紀90年代,經濟高速發展,大家有錢了就想追求更高的生活品質。當時發明了很多稀奇古怪的電子產品,比如有錢人必備的“大哥大”、BB機、

電視機頂盒、烤箱等

。我們知道,硬體產品必須要有軟體系統進行支撐才能執行,就好比人必須有靈魂才能稱之為人。所以當時為了配合硬體的發展,研發出了著名的微控制器系統,這就

大幅提升了電子產品的

智慧化

程度。

當時有一個叫做“Sun”(不是Son哦)的公司,眼光很敏銳。為了搶佔廣大的消費電子產品市場,在1991年成立了一個名為“Green”的專案組,由

詹姆斯·高斯林

高司令

)、

帕特里克

等幾個工程師一起負責研發新技術,專攻家電產品裡的嵌入式應用開發。一開始Green專案組打算用C++進行嵌入式開發,但由於C++寫出來的程式特別複雜和龐大,不適合在嵌入式的環境中執行。而且不同廠家生產的電子產品,其底層所使用的硬體系統也各有不同,C++寫出來的東西無法實現“一次編碼,處處執行”的跨平臺需求。

所以為了解決以上這些問題,Green專案組根據嵌入式的特點,對C++進行了改造,去除了C++中不太實用及影響安全的部分,並針對實時性要求,開發出一種稱為

Oak

(橡樹)的

面嚮物件語言

。但此時Oak除了比C++更簡單之外,其實也沒有太大的區別,所以當時的硬體廠商對Oak沒有太大的熱情。而Oak也就因為缺乏硬體的支援無法進入市場,從而被擱置了下來。

到了1994年6、7月間,Green團隊決定改變接下來的發展目標。因為Oak本身是一種精簡的語言,程式非常小,很適合在網路上傳輸,所以他們決定把Oak用在

全球資訊網

上。到了1995年,Sun公司正式決定啟用Oak,並推出了可以隨同網頁在網路上傳輸的

Applet

技術。

結果就在此時,Sun公司發現Oak這個商標被別的公司給提前搶注了。所以沒辦法,只能將Oak重新改名!大家都知道,取名字是一個很令人抓狂的事,大家一時都找不到合適的名字來重新命名。在“百思不得解”之際,當時正在喝82年爪哇島咖啡的

詹姆斯·高斯林

靈機一動,乾脆就把Oak改名叫“Java”得了。於是,從此

Oak更名為Java,所以高斯林也就成了公認的“Java他爹”!幸虧高斯林當時不是在蹲坑,要不然,em……。

到了1996年1月,Sun公司釋出了Java的第一個開發工具包

(JDK 1。0)

,這也是Java發展歷程中的重要里程碑,標誌著Java真正成為了一種獨立的開發工具。

以上就是Java語言的起源由來,現在你對它的歷史知道了嗎?

2。 概念(掌握)

透過上面的介紹,相信各位已經對Java有所瞭解了,但實際上Java到底是個什麼鬼,有些朋友可能還是沒有搞清楚。別急,

壹哥

再給大家把Java的核心概念提煉一下。

Java是曾經大名鼎鼎的Sun公司,在

1995年5月

正式推出的一種

面向物件的程式設計語言

Java一開始是Sun公司的產品,但後來Sun被Oracle(甲骨文)給收購了,所以

現在Java屬於Oracle公司

Java語言是由James Gosling(

詹姆斯·高斯林

,“

高司令”

)和同事們共同研發的,通常我們認為高斯林是“Java之父”。

Java是一種介於編譯型和解釋型之間的程式語言,但更偏向於解釋型。

編譯型語言寫出的程式碼會根據CPU型別的不同,編譯成不同的機器碼執行,工作原理類似於“翻譯書籍”,如C、C++等;解釋型語言可以由直譯器直接載入原始碼執行,工作原理類似於“同聲傳譯”,但執行效率較低,如JavaScript、Python、Ruby等。

為了使得定位更清晰,Sun公司將Java分成了三個技術體系:

JavaSE(J2SE)

:Java 2 Platform Standard Edition,Java平臺標準版,包含標準的JVM和標準庫;

JavaEE(J2EE)

:Java 2 Platform,Enterprise Edition,Java平臺企業版,在JavaSE的基礎上增加了大量的API和庫,用於企業級專案開發;

JavaME(J2ME)

:Java 2 Platform Micro Edition,Java平臺微型版,主要針對移動平臺開發。

2005年6月,JavaOne大會召開,釋出Java SE 6版本,並正式將Java版本名稱中的數字“2”取消。

從此J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為 Java ME。

所以如果有誰再跟你說什麼“J2SE、J2EE、J2ME”,你就送他一個黑人問號臉,“你到底是有多out才會說出這麼老古董的話”?

3。 技術體系

雖然

壹哥

在上面的小節中已經給大家說過,Sun把Java分成了JavaSE、JavaEE、JavaME共3個平臺體系,但我還是想把這個知識點再跟大家強調一下,因為有太多的小白曾經問過我:”

壹哥

,我到底是要學JavaSE,還是JavaEE?JavaSE和JavaEE到底是什麼關係?……。“所以在我們正式開始學習Java之前,

壹哥

還是希望能夠把各位心中的這些疑惑都給你解決掉。

為了搞清楚JavaSE、JavaEE、JavaME之間的關係,

壹哥

給大家繪製了下面這張圖片:

從零開始學Java系列之Java是什麼?它到底是個啥?

從上圖中你應該可以看出來,JavaEE的“範圍是最大的“,這表示什麼意思呢?這其實主要是說,JavaEE這個分類裡包含的API(應用程式介面,我們可以暫時理解為Java提供的各種”工具“)最多,而JavaSE則完全包含在JavaEE裡面,JavaME中有一小部分的API和JavaSE是重合的。

由此我們可以得出一個結論,作為初學者,我們需要先學習JavaSE裡提供的各種常用API,等把JavaSE學完了就有”資格“去學習JavaEE或JavaME了!也就是說,

JavaSE是Java的必備入門基礎,初學者肯定要先學習JavaSE

。這就好比你要學習中醫技術,有針灸、推拿、中藥等幾個方向可以供你選擇。但無論你要選擇哪個方向,你都得先學習《中醫基礎理論》這門課,學完了這個才能有資格去學習其他具體的某個方向。現在你知道JavaSE與JavaEE的關係了嗎?

但有的小夥伴還會好奇,要不要學習JavaME呢?

壹哥

告訴你,這個就算了!JavaME本來是Sun用於開發手機等裝置的技術平臺,但後來Android、iOS的異軍突起,現在幾乎就沒人使用JavaME了,所以大家知道有這麼一個東西就可以了。

我們學習完JavaSE之後,還不具備企業級開發的能力,

接下來要學習JavaEE裡的各種API

。所以

我們學習Java的正確路線,就是先學JavaSE,再學JavaEE

,而

壹哥

的《從零開始學Java》系列文章,主要就是講解JavaSE哦!

其實對於初學者來說,你大可不必過於糾結這些沒什麼實用價值的概念。等學到後面,你自然而然就會明白它們之間的具體區別,我們只需對其有個大致的瞭解,把精力放在最核心的問題上即可。

4。 Java特性

對於Java,我們還需要了解一下Java的一些優勢和特性,有時候面試官會賤兮兮的問你:你對Java瞭解多少?你為什麼學習Java而不是其他語言?Java有哪些優勢……針對這樣的問題,咱們就簡單回答一下Java的核心特性即可。

使用簡單:

Java的語法與C和C++很接近,可以方便大量C系程式設計師快速轉向Java。但又丟棄了C++中那些特別複雜難用的特性,如運算子過載、多繼承、自動強制型別轉換等。另外Java不支援指標,而是支援引用,並提供了自動分配和GC垃圾回收機制,程式設計師不必關心記憶體管理。

面向物件:

Java提供了類、介面和單繼承等面向物件的特性,並支援類與介面之間的實現機制,全面支援動態繫結。可以說,Java語言是第一個非常純粹的面向物件的程式設計語言。

健壯安全:

Java具有強型別機制、異常處理、GC垃圾自動收集、安全檢查機制、丟棄指標等特性,保證了Java程式的健壯性。並且Java提供了安全機制來防止惡意程式碼的攻擊,可以透過ClassLoader載入器進行位元組程式碼檢查,透過SecurityManager安全管理機制設定安全哨兵,保證了Java程式的安全性。

跨平臺/可移植性:

Java基於JVM虛擬機器機制,Java檔案會被JVM編譯成適合不同平臺的class位元組碼檔案,實現了“一次編寫,處處執行”的跨平臺特性。正因為這個特性,也使得Java程式碼可以輕鬆實現不同平臺間的移植。

開源/免費

在2006年的JavaOne大會上,Sun公司宣佈要將Java開源,之後陸續將JDK的各個部分在GPL v2(GNU General Public License v2)協議下公開了原始碼(即OpenJDK)。除了極少量的產權程式碼外,OpenJDK幾乎包括了Sun JDK的全部程式碼,兩者的程式碼基本上完全一樣。目前JDK 8及以前的版本都是完全免費的,JDK 9之後Oracle宣佈會對企業進行收費,但是企業可以免費使用Open JDK。

高效能:

Java是介於編譯型與解釋型之間的語言,但更偏向於解釋型,執行效能比C語言更高效。而且現在Java的編譯器不斷更新,效能已經與C++類似了。

支援網路和多執行緒:

Java支援 Internet網路開發,提供了用於網路程式設計的類庫,比如URL、URLConnection、Socket、ServerSocket、RMI(遠端方法啟用)等,並且支援多執行緒和併發同步機制。

二。 Java發展史

對一個即將開始學習Java的小白來說,我們還是有必要適當地瞭解一下Java的發展史的,看看這些年Java都經歷了哪些歷史變革吧。

1995年5月23日,Java誕生;

1996年1月,JDK 1。0誕生;

1997年4月2日,Java One會議召開,參與者超過萬人,打破當時全球同類會議規模紀錄;

1997年9月,Java Developer Connection社群成員超十萬人;

1998年2月,JDK 1。1被下載超過 2,000,000次;

1998年12月8日,JAVA2企業平臺J2EE釋出;

1999年6月,SUN釋出Java的三個版本:JavaSE、JavaEE、JavaME;

2000年5月8日,JDK 1。3釋出;

2000年5月29日,JDK 1。4釋出;

2001年6月5日,NOKIA宣佈到2003年將會出售超 1億部支援Java的手機;

2002年2月26日,J2SE 1。4釋出,Java計算能力有了大幅提升;

2004年9月30日,J2SE 1。5釋出,成為Java語言發展史上的又一里程碑。

為了表示該版本的重要性,J2SE 1。5更名為 Java SE 5。0;

2005年6月,Java One大會召開,Sun公司釋出Java SE 6。此時Java各種版本已經全部更名,取消了其中的數字 “2”:J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為 Java ME;

2006年12月,Sun公司釋出JRE 6。0;

2009 年04月20日,甲骨文以74億美元收購Sun,取得了Java版權;

2011年7月28日,Oracle釋出Java 7。0 正式版;

2014年3月18日,Oracle釋出Java SE 8。0(目前最主流版本);

2017年9月21日,Oracle釋出Java SE 9。0;

2018年3月21日,Oracle釋出Java SE 10。0;

2018年9月25日,Oracle釋出Java SE 11;

2019年3月20日,Oracle釋出Java SE 12;

2019年9月,Oracle釋出Java SE 13;

2020年3月,Oracle釋出Java SE 14;

2020年9月,

Oracle釋出Java SE 14

2021年3月,

Oracle釋出Java SE 16

2021年9月,

Oracle釋出Java SE 17

2022年3月,

Oracle釋出Java SE 18

2022年9月,

Oracle釋出Java SE 19

……Java繼續在大步前進……

當然,對於以上歷史,大家瞭解即可,不用去記這些東西。

三。 Java版本(重點)

在上面的章節介紹中,

壹哥

給大家提到了Java的很多版本,並且這些不同的版本所具有的功能也不盡相同。所以就有小白來問了,我們學習Java時到底該選擇哪個版本呢?是越新越好嗎?

壹哥

認為很有必要就這個問題給大家解釋一下。

在Java的發展過程中,有很多不同的表述方式,有時候會給初學者造成一些誤解。但請你記住,所謂的Java版本,其實就是指JDK的版本,兩者是一回事!

1。 JDK版本

Oracle把JDK分成了兩種維護情況,

即短期支援版本和長期支援版本,

我們先來看看

Oracle官方釋出的JDK路線圖

從零開始學Java系列之Java是什麼?它到底是個啥?

對於短期支援版本(non-LTS)而言,Oracle只會提供6個月的支援維護;而對於長期支援版本(LTS),則提供8年的支援維護。

所以

根據這一規劃,

Oracle每隔6個月,就會發佈一個大版本,每個季度則釋出一箇中間特性版本

另外Oracle還承諾,新的JDK釋出週期會嚴格遵循時間點,將於每年的3月份和9月份釋出,中間不會跳票。

現在正常情況下,每隔6個月就會有一個短期維護版本(non-LTS)釋出出來,比如JDK 9、10、12、13、14、15、16;然後每隔3年,就會發布一款得到8年長期支援維護的JDK版本,比如JDK 8、11、17。

所以小夥伴們,其實你沒必要下載使用JDK9/10/12等non-LTS版本,應該使用JDK 8、11、17這樣的LTS版本。但目前絕大多數主流企業使用的版本是JKD 8,但不會使用最新的版本,而且Oracle宣佈從JDK 9。0之後開始針對企業收費,所以最新版的JDK使用情況待議。

2。 版本選擇

既然JDK版本有這麼多,作為小白,你到底該選擇哪個版本的JDK呢?是直接學習JDK 18還是19?或者等幾個月學習JDK 21?

壹哥

告訴你,如果你是一個新手小白,其實沒必要追求學習最新的JDK!

首先每一個JDK版本推出時,都存在著很多未知的bug,所以企業在開發時,都會選擇最穩定的版本!現在主流的企業級應用都在使用JDK 8。0正式版,並且JDK 8。0及之前版本都是免費的,而JDK 9。0以後則開始收費(針對企業收費,非個人)。所以公司考慮到穩定性和費用等問題,都在使用JDK 8。0,這才是主流!

另外對初學者來說,JDK的新特性其實對小白來說意義並不大。這些新特性一般是針對性能有較大提升,但你作為一個小白,連最基本的用法都不會呢,現在去追求這些新特性沒必要。等你把JavaSE學完之後,以後自己再針對性地提升即可。請先把精力放在最核心的地方,要不然基礎還沒搞紮實,卻一心貪多求快,很容易出現”空中樓閣“的狀況。

另外有些培訓機構,宣稱會重點講解JDK 12、JDK 10、JDK 9等版本的內容,不過是譁眾取寵。這些版本官方都停止維護和下載了,你講這些有啥用。

所以,為了貼合最主流的企業要求,

壹哥

的本套教程案例都是基於JDK 8來進行講解的!如果你的JDK版本比我的版本高,當然是可以直接相容執行我的案例的,不用擔心!

四、今日作業

1。

第一題:

Java他爹是誰?

A|喬布斯 B|

勒布朗·詹姆斯 C|詹姆斯·高斯林

2。

第二題:

Java現在俗屬於哪個公司?

A|喬布斯 B|

勒布朗·詹姆斯 C|詹姆斯·高斯林

3。 第三題:

Java分為哪幾個平臺體系?有什麼區別?請在評論區寫出你的答案哦!

3。

第四題:

目前Java的長期維護版本有哪些?請在評論區寫出你的答案,並說出你希望學習的JDK版本吧。

【下篇預告】

熟悉Java的執行機制和JVM虛擬機器工作原理,搭建出學習Java時的必備環境——-《JDK安裝及環境變數配置》

推薦內容:

從零開始學習Java系列之你為什麼要學Java?

面試乾貨,Spring面試題及答案最全合集,大廠真題!

Spring事務的底層原理

想了解更多精彩內容,快來關注北京千鋒教育

Tags:javaJDK版本OracleJavaSE