首頁 > 運動
從零開始學Java系列之Java是什麼?它到底是個啥?
由 IT千鋒教育 發表于 運動2023-01-01
簡介到了1996年1月,Sun公司釋出了Java的第一個開發工具包(JDK 1
1995年5月9號是什麼星座
全文大約
【
5000】
字,不說廢話,只講可以讓你學到技術、明白原理的純乾貨!文章帶有豐富案例及配圖,只為讓你更好的理解和運用文中的技術概念,給你帶來具有足夠的思想啟迪……
————————————————
前戲已做完,精彩即開始
——————————————
既然各位小夥伴現在已經決定要學習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之間的關係,
壹哥
給大家繪製了下面這張圖片:
從上圖中你應該可以看出來,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路線圖
:
對於短期支援版本(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事務的底層原理
想了解更多精彩內容,快來關注北京千鋒教育