【Java基礎(chǔ)】1.2 Java語言入門

一、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語言的logo

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版本

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)品能夠隨時增加支持的能力。

Java 三大版本的關(guā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í)行。如圖所示。

Java程序運行機制

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)跨平臺的核心機制。如圖所示。

JVM

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

老鳥建議:

  • 如果只是要運行 Java 程序或者玩 Minecraft 這樣的 JAVA 游戲,只需要 JRE 就可以。JRE 通常非常小,其中包含了 JVM。(不知道大家在玩的時候有沒有注意到)
    (~ ̄ ̄)~
  • 如果要開發(fā) Java 程序,就需要安裝 JDK。

Java 開發(fā)環(huán)境搭建

重點來啦?。。?/strong>
重點來啦?。。?/strong>
重點來啦?。?!

JDK 下載和安裝

JDK下載

  1. 下載地址,點擊進入:www.oracle.com/technetwork/java/javase/downloads/index.html
    這里我們下載的是JavaSE 8.0

    下載 JDK——進入下載主頁

  2. 進入后向下尋找適合自己電腦操作系統(tǒng)的版本進行下載(不要下錯哦,可以通過右擊“我的電腦” -> “屬性”中查找)

選擇合適的版本下載

點擊下載

JDK安裝

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



安裝 JDK——指定 JDK 安裝目錄

安裝 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)到哪些目錄下尋找。

  1. 右鍵計算機——>屬性——>高級系統(tǒng)設(shè)置


    設(shè)置環(huán)境變量——進入設(shè)置窗口
  2. 單擊環(huán)境變量按鈕


    設(shè)置環(huán)境變量——操作主界面
  3. 單擊新建按鈕,新建 JAVA_HOME 變量(變量值為JDK 的安裝根目錄目錄)


    設(shè)置環(huán)境變量——設(shè)置 JAVA_HOME 變量
  4. 修改系統(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即安裝成功)。


設(shè)置環(huán)境變量——驗證 JDK 安裝和配置是否成功

??本章結(jié)束了,大家下去要自己動手做哦,學(xué)習(xí)編程最重要的技巧就是多動手,大家加油?。?!

??用心做到極致,堅持改變命運

??歡迎大家點擊了解百戰(zhàn)程序員并評論分享的你的想法和建議,在下一篇文章中,我們就要開始自己動手編寫Java代碼了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容