一、Java 語言介紹
Java 發(fā)展簡史
?? 1991 年,James Gosling 在 SUN 公司的工程師小組想要設(shè)計這樣一種小型計算機語言。該語言主要用于像電視盒這樣的消費類電子產(chǎn)品。另外,由于不同的廠商選擇不同的 CPU 和操作系統(tǒng),因此,要求該語言不能和特定的體系結(jié)構(gòu)綁在一起,要求語言本身是中立的,也就是跨平臺的。所以,將這個語言命名為“Green”,類似于綠色軟件的意思。后來,改名為 Oak,橡樹的意思。改名后發(fā)現(xiàn)已經(jīng)有一種語言叫這個名字了,再改名叫 Java。

Java 語言發(fā)展到今天經(jīng)歷了一系列的過程:
- 1991 年,SUN 公司的 Green項目,Oak
- 1995 年,推出 Java 測試版
- 1996 年,JDK1.0
- 1997 年,JDK1.1
- 1998 年,JDK1.2,大大改進了早期版本缺陷,是一個革命性的版本,更名為 Java2。
- 2004 年,J2SE 5.0 (1.5.0) Tiger老虎
- 2006 年,J2SE 6.0 (1.6.0) Mustang野馬
- 2011 年,JavaSE7.0 Dolphin 海豚
- 2014 年,JavaSE8.0
- 2017 年,JAVA 9.0
- 2018 年 3 月,JAVA 10
- 2018 年 9 月,JAVA 11
- 2019 年 3 月,JAVA 12
- 2019 年 9 月,JAVA 13
- 2020 年 3 月,JAVA14
?? SUN公司已經(jīng)被Oracle公司收購,目前每半年更新一次Java版本。但在企業(yè)中最常用的還是以8為主,對于初學(xué)者,應(yīng)該以企業(yè)主流應(yīng)用版本為核心進行學(xué)習(xí),沒有必須在此處追求最新版本。

Java 的核心優(yōu)勢
?? 跨平臺是 Java 語言的核心優(yōu)勢,趕上最初互聯(lián)網(wǎng)的發(fā)展,并隨著互聯(lián)網(wǎng)的發(fā)展而發(fā)展,建立了強大的生態(tài)體系,目前已經(jīng)覆蓋 IT 各行業(yè)的“第一大語言”,是計算機界的“英語”。
?? 背景:Java 為消費類智能電子產(chǎn)品而設(shè)計,但智能家電產(chǎn)品并沒有像最初想象的那樣擁有大的發(fā)展。然而 90 年代,Internet 卻進入了爆發(fā)式發(fā)展階段,一夜之間,大家都在忙著將自己的計算機連接到網(wǎng)絡(luò)上。這個時侯,遇到了一個大的問題。人們發(fā)現(xiàn)連接到 Internet 的計算機各式各樣,有 IBM PC、蘋果機、各種服務(wù)器等等,不僅硬件 CPU 不同,操作系統(tǒng)也不同,整個的網(wǎng)絡(luò)環(huán)境非常復(fù)雜。這個時候,程序員們希望他們編寫的程序能夠運行在不同的機器,不同的環(huán)境中,這需要一種體系中立的語言(即跨平臺)。Java 的研發(fā)小組忽然發(fā)現(xiàn)他們用于小范圍的語言也可以適應(yīng) Internet 這個大環(huán)境。
?? 雖然,目前也有很多跨平臺的語言,但是已經(jīng)失去先機,無法和 Java 強大的生態(tài)體系抗衡。Java 仍將在未來幾十年成為編程語言的主流語言。
Java 各版本的含義
JavaSE(Java Standard Edition):標準版,定位在個人計算機上的應(yīng)用
?? 這個版本是 Java 平臺的核心,它提供了非常豐富的 API 來開發(fā)一般個人計算機上的應(yīng)用程序,包括用戶界面接口 AWT 及 Swing,網(wǎng)絡(luò)功能與國際化、圖像處理能力以及輸入輸出支持等。在上世紀 90 年代末互聯(lián)網(wǎng)上大放異彩的 Applet 也屬于這個版本。Applet 后來為 Flash 取代,F(xiàn)lash 即將被 HTML5 取代。
JavaEE(Java Enterprise Edition):企業(yè)版,定位在服務(wù)器端的應(yīng)用
?? JavaEE 是 JavaSE 的擴展,增加了用于服務(wù)器開發(fā)的類庫。如:JDBC 是讓程序員能直接在 Java 內(nèi)使用的 SQL 的語法來訪問數(shù)據(jù)庫內(nèi)的數(shù)據(jù);Servlet 能夠延伸服務(wù)器的功能,通過請求-響應(yīng)的模式來處理客戶端的請求;JSP 是一種可以將 Java 程序代碼內(nèi)嵌在網(wǎng)頁內(nèi)的技術(shù);
JavaME(Java Micro Edition):微型版,定位在消費性電子產(chǎn)品的應(yīng)用上
?? JavaME 是 JavaSE 的內(nèi)伸,包含 J2SE 的一部分核心類,也有自己的擴展類,增加了適合微小裝置的類庫:javax.microedition.io.*等。該版本針對資源有限的電子消費產(chǎn)品的需求精簡核心類庫,并提供了模塊化的架構(gòu)讓不同類型產(chǎn)品能夠隨時增加支持的能力。

菜鳥雷區(qū):
?? 很多人開始會誤解為安卓開發(fā)就是 JavaME,這兩個是完全不同的內(nèi)容。
Java 的特性和優(yōu)勢
-
跨平臺/可移植性
?? 這是 Java 的核心優(yōu)勢。Java 在設(shè)計時就很注重移植和跨平臺性。比如:Java 的 int 永遠都是 32 位。不像 C++可能是 16,32,可能是根據(jù)編譯器廠商規(guī)定的變化。這樣的話程序的移植就會非常麻煩。 -
安全性
?? Java 適合于網(wǎng)絡(luò)/分布式環(huán)境,為了達到這個目標,在安全性方面投入了很大的精力,使 Java 可以很容易構(gòu)建防病毒,防篡改的系統(tǒng)。 -
面向?qū)ο?/strong>
?? 面向?qū)ο笫且环N程序設(shè)計技術(shù),非常適合大型軟件的設(shè)計和開發(fā)。由于 C++為了照顧大量 C 語言使用者而兼容了 C,使得自身僅僅成為了帶類的 C 語言,多少影響了其面向?qū)ο蟮膹氐仔?!Java 則是完全的面向?qū)ο笳Z言。 -
簡單性
?? Java 就是 C++語法的簡化版,我們也可以將 Java 稱之為“C++-”。跟我念“C 加加減”,指的就是將 C++的一些內(nèi)容去掉;比如:頭文件,指針運算,結(jié)構(gòu),聯(lián)合,操作符
重載,虛基類等等。同時,由于語法基于 C 語言,因此學(xué)習(xí)起來完全不費力。 -
高性能
?? Java 最初發(fā)展階段,總是被人詬病“性能低”;客觀上,高級語言運行效率總是低于低級語言的,這個無法避免。Java 語言本身發(fā)展中通過虛擬機的優(yōu)化提升了幾十倍運行效率。比如,通過 JIT(JUST IN TIME)即時編譯技術(shù)提高運行效率。 將一些“熱點”字節(jié)碼編譯成本地機器碼,并將結(jié)果緩存起來,在需要的時候重新調(diào)用。這樣的話,使 Java 程序的執(zhí)行效率大大提高,某些代碼甚至接待 C++的效率。
?? 因此,Java 低性能的短腿,已經(jīng)被完全解決了。業(yè)界發(fā)展上,我們也看到很多 C++應(yīng)用轉(zhuǎn)到 Java 開發(fā),很多 C++程序員轉(zhuǎn)型為 Java 程序員。 -
分布式
?? Java 是為 Internet 的分布式環(huán)境設(shè)計的,因為它能夠處理 TCP/IP 協(xié)議。事實上,通過 URL 訪問一個網(wǎng)絡(luò)資源和訪問本地文件是一樣簡單的。Java 還支持遠程方法調(diào)用(RMI,Remote Method Invocation),使程序能夠通過網(wǎng)絡(luò)調(diào)用方法。 -
多線程
多線程的使用可以帶來更好的交互響應(yīng)和實時行為。 Java 多線程的簡單性是 Java 成為主流服務(wù)器端開發(fā)語言的主要原因之一。 -
健壯性
?? Java 是一種健壯的語言,吸收了 C/C++ 語言的優(yōu)點,但去掉了其影響程序健壯性的部分(如:指針、內(nèi)存的申請與釋放等)。Java 程序不可能造成計算機崩潰。即使 Java 程序也可能有錯誤。如果出現(xiàn)某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。
?? 說了這么多,我們開始動手使用Java,從安裝JDK開始。
二、JDK 安裝和配置
Java 程序的運行機制
?? 計算機高級語言的類型主要有編譯型和解釋型兩種,而 Java 語言是兩種類型的結(jié)合。
?? Java 首先利用文本編輯器編寫 Java 源程序,源文件的后綴名為.java;再利用編譯器(javac)將源程序編譯成字節(jié)碼文件,字節(jié)碼文件的后綴名為.class; 最后利用虛擬機(解釋器,java)解釋執(zhí)行。如圖所示。

JVM、JRE 和 JDK
?? JVM(Java Virtual Machine)就是一個虛擬的用于執(zhí)行 bytecode 字節(jié)碼的”虛擬計算機”。他也定義了指令集、寄存器集、結(jié)構(gòu)棧、垃圾收集堆、內(nèi)存區(qū)域。JVM 負責將 Java 字節(jié)碼解釋運行,邊解釋邊運行,這樣,速度就會受到一定的影響。
?? 不同的操作系統(tǒng)有不同的虛擬機。Java 虛擬機機制屏蔽了底層運行平臺的差別,實現(xiàn)了“一次編譯,隨處運行”。 Java 虛擬機是實現(xiàn)跨平臺的核心機制。如圖所示。

?? Java Runtime Environment (JRE)包含:Java 虛擬機、庫函數(shù)、運行 Java 應(yīng)用程序所必須的文件。
?? Java Development Kit (JDK)包含:包含 JRE,以及增加編譯器和調(diào)試器等用于程序開發(fā)的文件。

老鳥建議:
- 如果只是要運行 Java 程序或者玩 Minecraft 這樣的 JAVA 游戲,只需要 JRE 就可以。JRE 通常非常小,其中包含了 JVM。(不知道大家在玩的時候有沒有注意到)
(~ ̄ ̄)~- 如果要開發(fā) Java 程序,就需要安裝 JDK。
Java 開發(fā)環(huán)境搭建
重點來啦?。。?/strong>
重點來啦?。。?/strong>
重點來啦?。?!
JDK 下載和安裝
JDK下載
-
下載地址,點擊進入:www.oracle.com/technetwork/java/javase/downloads/index.html
這里我們下載的是JavaSE 8.0
下載 JDK——進入下載主頁 進入后向下尋找適合自己電腦操作系統(tǒng)的版本進行下載(不要下錯哦,可以通過右擊“我的電腦” -> “屬性”中查找)


JDK安裝
??安裝 JDK 安裝過程和普通軟件安裝沒什么區(qū)別,過程中會讓你選擇 JDK 安裝目錄,采用默認即可。(也就是說,通通點擊“下一步”就能完成安裝)



配置環(huán)境變量
??環(huán)境變量是在操作系統(tǒng)中一個具有特定名字的對象, 它包含了一個或者多個應(yīng)用程序所將使用到的信息。這個操作可以使我們不需要在指定文件目錄下也可以執(zhí)行其文件,操作系統(tǒng)會幫我們完成路徑尋找。
環(huán)境變量 JAVA_HOME和Path 的配置
??Path 是一個常見的環(huán)境變量,它告訴操作系統(tǒng),當要求系統(tǒng)運行一個程序而沒有告訴它程序所在的完整路徑時,系統(tǒng)除了在當前目錄下尋找此程序外,還應(yīng)到哪些目錄下尋找。
-
右鍵計算機——>屬性——>高級系統(tǒng)設(shè)置
設(shè)置環(huán)境變量——進入設(shè)置窗口 -
單擊環(huán)境變量按鈕
設(shè)置環(huán)境變量——操作主界面 -
單擊新建按鈕,新建 JAVA_HOME 變量(變量值為JDK 的安裝根目錄目錄)
設(shè)置環(huán)境變量——設(shè)置 JAVA_HOME 變量 -
修改系統(tǒng)環(huán)境變量 Path(不用新建哦),在最前面追加 %JAVA_HOME%\bin 并以;和原路徑分隔。
設(shè)置環(huán)境變量——設(shè)置 Path 變量
注意:
??此處“;”是英文分號而不是中文分號! 大家以后設(shè)置相關(guān)配置時也要注意中英文符號的區(qū)別。
classpath 配置問題
??如果使用 JDK1.5 以上就不需要配置這個環(huán)境變量!JRE 會自動搜索當前路徑下的類文件及相關(guān) jar 文件。
測試 JDK 安裝成功
??進入命令行窗口,開始菜單搜索框輸入“cmd”即可。在窗口中輸入命令“java -version ”,回車。出現(xiàn)如下結(jié)果,則說明 JDK 安裝成功(小編這里是安裝的9.0的版本,如果出現(xiàn)類似并出現(xiàn)版本為8.0.x即安裝成功)。

??本章結(jié)束了,大家下去要自己動手做哦,學(xué)習(xí)編程最重要的技巧就是多動手,大家加油?。?!
??用心做到極致,堅持改變命運
??歡迎大家點擊了解百戰(zhàn)程序員并評論分享的你的想法和建議,在下一篇文章中,我們就要開始自己動手編寫Java代碼了。




