【程序源代碼】《JAVA基礎(chǔ)》之Java語言基礎(chǔ)

序
時令已經(jīng)過了白露,轉(zhuǎn)眼就快到了中秋佳節(jié),天天漸漸變涼,一派秋天肅殺的景象。2020年注定是一個不平凡的一年。新型肺炎帶來的影響還在持續(xù)。生活和經(jīng)濟都蒙上了一些不確定的薄薄的灰色。最近疫情期,自己憋在家里除了日常的活動外,沒有其它事情要做,感覺時間都浪費掉了。同時由于疫情經(jīng)濟和情感上壓力也有些大。為了排解壓力讓自己充實起來,我決定自己用一個月的時候自學(xué)一個新語言,選來選去決定學(xué)習(xí)python。在學(xué)習(xí)的過程中接有時感覺特別累,每天總體上也堅持自學(xué)至少三個小時。學(xué)習(xí)中發(fā)現(xiàn)了一個比較好的軟件xmind,通過xmind這個思維導(dǎo)圖軟件制作了一些自學(xué)筆記,把每節(jié)的重點整理成圖形的方式,很容易直觀理解和掌握。最近整理出來一些圖例分享給大家一起學(xué)習(xí),希望大家能喜歡。自學(xué)確實不容易,貴在堅持!前一段時間給幾個同學(xué)培訓(xùn),錄制了一些關(guān)于java基礎(chǔ)方面的視頻,我發(fā)布到公眾號和視頻網(wǎng)站上,最近好多朋友聯(lián)系我給我鼓勵讓我繼續(xù)接著寫下去。所以今天陸續(xù)整理前面的一些文稿,整理成冊分享給大家,歡迎鑒閱。希望大家能喜歡我的文章,繼續(xù)鼓勵我。共同成長。

第三節(jié)
Java語言介紹

圖-1:?思維圖
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年,推出Java SE 7.0 Dolphin(海豚);2014年,推出Java SE 8.0。
Java為消費類智能電子產(chǎn)品而設(shè)計,但智能家電產(chǎn)品并沒有像最初想象的那樣擁有大的發(fā)展。然而到了20世紀(jì)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)境。跨平臺是Java語言的核心優(yōu)勢,趕上了最初互聯(lián)網(wǎng)的發(fā)展,并隨著互聯(lián)網(wǎng)的發(fā)展而發(fā)展,建立了強大的生態(tài)體系,目前已經(jīng)覆蓋IT各行業(yè)成為“第一大語言”,它被喻為計算機界的“英語”。雖然,目前也有很多跨平臺的語言,但是已經(jīng)失去先機,無法和Java強大的生態(tài)體系抗衡。Java仍將在未來幾十年成為編程語言的主流。
Java SE(Java Standard Edition):標(biāo)準(zhǔn)版,定位于個人計算機的應(yīng)用開發(fā)
Java EE(Java Enterprise Edition):企業(yè)版,定位于服務(wù)器端的應(yīng)用開發(fā)
Java ME(Java Micro Edition):微型版,定位于消費性電子產(chǎn)品的應(yīng)用開發(fā)
1.跨平臺/可移植性
跨平臺/可移植性是Java的核心優(yōu)勢。Java在設(shè)計時就很注重移植和跨平臺性。例如Java的int永遠(yuǎn)都是32位,不像C++可能是16或32位,會根據(jù)編譯器廠商規(guī)定的變化而變化,給程序的移植帶來麻煩。
2.安全性
Java適用于網(wǎng)絡(luò)/分布式環(huán)境。為了達到這個目標(biāo),Java系統(tǒng)的開發(fā)人員在安全性方面投入了很大的精力,使Java可以很容易構(gòu)建出防病毒、防篡改的系統(tǒng)。
3.面向?qū)ο?/span>
面向?qū)ο笫且环N程序設(shè)計技術(shù),非常適合大型軟件的設(shè)計和開發(fā)。由于C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向?qū)ο蟮膹氐仔裕鳭ava則是完全面向?qū)ο蟮恼Z言。
4.簡單性
Java就是C++語法的簡化版。我們也可以將Java稱之為“C++-”,即“C加加減”,指將C++的一些內(nèi)容去掉,例如頭文件、指針運算、結(jié)構(gòu)、聯(lián)合、操作符重載、虛基類等。同時,由于語法基于C語言,因此學(xué)習(xí)起來完全不費力。
5.高性能
Java在最初發(fā)展階段,總是被人詬病性能低。客觀上,高級語言運行效率總是低于低級語言的,這是無法避免的。Java語言本身在發(fā)展中通過對虛擬機的優(yōu)化提升了幾十倍的運行效率,例如,通過即時編譯(JUST IN TIME,JIT)技術(shù)提高運行效率,將一些“熱點”字節(jié)碼編譯成本地機器碼,并將結(jié)果緩存起來,在需要的時候重新調(diào)用。這樣使得Java程序的執(zhí)行效率大大提高,某些代碼甚至接近C++的效率。至此,Java低性能的缺陷已經(jīng)被完全解決了。在業(yè)界發(fā)展方面,我們也看到很多C++應(yīng)用轉(zhuǎn)到Java開發(fā),很多C++程序員轉(zhuǎn)型為Java程序員。
6.分布式
Java是為Internet的分布式環(huán)境而設(shè)計的,因為它能夠處理TCP/IP協(xié)議。事實上,通過URL訪問一個網(wǎng)絡(luò)資源和訪問本地文件一樣簡單。Java還支持遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI),使程序能夠通過網(wǎng)絡(luò)調(diào)用方法。
7.多線程
多線程的使用可以帶來更好的交互響應(yīng)和實時行為。Java多線程的簡單性是Java成為主流服務(wù)器端開發(fā)語言的主要原因之一。
8.健壯性
Java是一種健壯的語言,它吸收了C/C++ 語言的優(yōu)點,但去掉了其影響程序健壯性的部分(如指針、內(nèi)存的申請與釋放等)。Java程序不可能造成計算機崩潰。Java程序也可能有錯誤,即使出現(xiàn)某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。
? ? ? ?五、Java應(yīng)用程序的運行機制
計算機高級語言的類型主要有編譯型和解釋型兩種,Java語言是兩種類型的結(jié)合。Java程序員首先利用文本編輯器編寫Java源程序,源文件的擴展名為.java;再利用編譯器(javac)將源程序編譯成字節(jié)碼文件,字節(jié)碼文件的擴展名為.class;最后利用虛擬機(解釋器,java)解釋執(zhí)行。詳細(xì)參考如下是圖示:

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

圖-3:?不同的操作系統(tǒng)有不同的虛擬機
JRE(Java Runtime Environment)包含Java虛擬機、庫函數(shù)和運行Java應(yīng)用程序所必需的文件。JDK(Java Development Kit)包含JRE以及編譯器和調(diào)試器等用于程序開發(fā)的文件。JDK、JRE和JVM的關(guān)系如圖1-7所示。

圖-4:?JDK和JVM的關(guān)系
—————————————
【如果大家喜歡,請一定關(guān)注我哦】
聯(lián)
方
式
公眾號ID:??itcode
微信ID:??itcoder
免
聲
明
?????
?????
?????
?????
?????
?
?????
?????
?????
?????
?????
———————

————————
