Java的基本運(yùn)行原理、體系結(jié)構(gòu)以及Java能開發(fā)哪些應(yīng)用程序?(java的運(yùn)行原理是什么)
Hello ,歡迎來到java的世界!本書適用于零基礎(chǔ)且有興趣學(xué)習(xí)Java編程的小伙伴,全程會(huì)以理論和實(shí)踐相結(jié)合的方式,手把手地教你用Java開發(fā)出自己的程序。你是否已經(jīng)迫不及待了呢?現(xiàn)在就隨我一起來探索Java的學(xué)習(xí)之道吧!
本章我會(huì)帶領(lǐng)大家一起來認(rèn)識(shí)Java這門高級(jí)編程語言,在學(xué)習(xí)一個(gè)新技術(shù)時(shí),應(yīng)該從3個(gè)方面入手。首先,它是什么?其次,它能干什么?最后,如何使用?大家需要記住這3個(gè)步驟,我們后續(xù)的講解都是按照這個(gè)模式進(jìn)行的。好了,接下來就開始我們的Java初體驗(yàn)。
1.1 Java概述
本節(jié)帶領(lǐng)大家了解Java的基本知識(shí)、運(yùn)行原理、體系結(jié)構(gòu)、Java的用途,以及如何使用Java進(jìn)行編程。
1.1.1 什么是Java
眾所周知, IT是一個(gè)高速發(fā)展、技術(shù)更迭日新月異的行業(yè)。隨著編程技術(shù)的不斷發(fā)展、更新,越來越多的編程語言層出不窮,令大家不知如何選擇。面對(duì)種類繁多的編程語言,零基礎(chǔ)的初學(xué)者究竟應(yīng)該選擇哪種編程語言來入門呢?掌握哪門編程語言能夠更好地應(yīng)對(duì)IT技術(shù)日益革新、多態(tài)化發(fā)展的大趨勢(shì)呢?綜合以上思路,這門語言應(yīng)該具備以下特質(zhì):
容易上手;
適用于多平臺(tái);
多行業(yè);發(fā)展穩(wěn)定;
開發(fā)需求量大。
什么語言這么強(qiáng)大,可以滿足這些要求呢?沒錯(cuò),就是Java, Java是由Sun ( Stanford UniversityNetwork)公司于1995年5月23日正式推出的一套計(jì)算機(jī)高級(jí)編程語言,它擁有20多年的發(fā)展歷史,這足以表明Java很穩(wěn)定。
Java適用于多個(gè)領(lǐng)域,從早期的終端設(shè)備到現(xiàn)在流行的電商、桌面管理軟件、機(jī)頂盒設(shè)備、車載導(dǎo)航.安卓移動(dòng)端等,涵蓋面非常之廣,并且可以做到跨平臺(tái),無論是Windows系統(tǒng)、Linux系統(tǒng),還是Mac OS系統(tǒng),都可以運(yùn)行Java程序。
多年以來, Java始終在編程語言排行榜中名列前茅(見圖1-1) ,是全球范圍內(nèi)使用人數(shù)最多的編程語言之一。同時(shí),市場(chǎng)對(duì)Java開發(fā)工程師的需求量也很大,在各大招聘網(wǎng)站上, Java相關(guān)崗位的招聘信息非常多。
圖1-1
Java是面向?qū)ο蟮木幊陶Z言,面向?qū)ο笫且环N易理解、上手快的編程思想,同時(shí)Java提供了功能非常強(qiáng)大的系統(tǒng)類庫(kù),多種多樣的工具類任你使用,開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯,然后根據(jù)具體需求去調(diào)用這些工具類即可,底層的具體實(shí)現(xiàn)不需要關(guān)注。因此,相比于C 這種偏向底層的高級(jí)編程語言, Java更容易上
Java語言具備如下特點(diǎn)。
1,簡(jiǎn)潔高效
Java語言非常簡(jiǎn)潔,相比于C 中頭文件、指針等各種抽象的概念, Java更好理解、便于上手,同時(shí)還提供了功能強(qiáng)大的系統(tǒng)類庫(kù),使開發(fā)變得更加簡(jiǎn)潔高效。
2.跨平臺(tái)
程序在不同平臺(tái)的兼容性問題一直困擾著開發(fā)者,如果我們開發(fā)的程序能夠無障礙地同時(shí)運(yùn)行在
Windows, Mac OS和Linux系統(tǒng)中,那是多么美妙的一件事。Java就幫我們實(shí)現(xiàn)了這個(gè)美好的愿望,一套代碼可以在多種平臺(tái)上運(yùn)行。
3.面向?qū)ο?/p>
面向?qū)ο笫且环N編程思想,這種編程思想的誕生,對(duì)于軟件工程有著劃時(shí)代的意義。開發(fā)者告別了面向過程開發(fā)的煩瑣步驟,從一個(gè)新的維度重新解讀編程這件事,極大地提升了軟件開發(fā)效率和能力, Java就是這樣一種面向?qū)ο蟮母呒?jí)編程語言。
4.分布式計(jì)算
Java提供了一套網(wǎng)絡(luò)操作類庫(kù),很適合開發(fā)分布式計(jì)算的程序,開發(fā)者可以通過調(diào)用類庫(kù)進(jìn)行網(wǎng)絡(luò)程序開發(fā),實(shí)現(xiàn)分布式特性。
5.健壯性
Java提供了非常強(qiáng)大的排錯(cuò)機(jī)制,在程序編譯階段就可以檢測(cè)出程序中的錯(cuò)誤,無需等到運(yùn)行時(shí)才暴露出存在的問題。同時(shí)在運(yùn)行階段會(huì)再一次進(jìn)行相應(yīng)的檢查,多種手段保證了程序的穩(wěn)定性和健壯性。
6.可處理多線程
線程是進(jìn)程的基本單位,是程序開發(fā)中必不可少的一種基礎(chǔ)資料, Java提供了良好的多線程處理機(jī)制,使程序具備更為優(yōu)秀的交互性。
好了,聽完了這些,你是不是已經(jīng)迫不及待地想要開始學(xué)習(xí)Java了呢?別著急,我們說過,學(xué)習(xí)新技術(shù),首先應(yīng)該了解它是什么?其次要了解它能干什么,接下來,我們就來一起看看Java有哪些方面的實(shí)際應(yīng)用。
在全球范圍內(nèi),選擇Java作為后臺(tái)開發(fā)語言的公司數(shù)不勝數(shù),比較知名的國(guó)外互聯(lián)網(wǎng)公司包括Google、YouTube、Amazon、Twitter等,國(guó)內(nèi)的知名公司有阿里、騰訊、百度、新浪、搜狐等。尤其是在電商領(lǐng)域,大部分公司都在使用Java ,包括天貓、京東、蘇寧易購(gòu)、當(dāng)當(dāng)、美團(tuán)等,這么多知名企業(yè)都選擇Java作為開發(fā)語言,你還在猶豫什么呢?
1.1.2 Java的運(yùn)行機(jī)制
簡(jiǎn)單來講, Java開發(fā)可分為3步:
1、在后綴為java的文件中編寫Java程序,此文件稱之為Java源文件;
2、通過編譯器將源文件編譯為后綴為class的字節(jié)碼文件;
3、計(jì)算機(jī)讀取字節(jié)碼文件運(yùn)行程序。
運(yùn)行原理如圖1-2所示。
圖1-2
我們可以這樣理解, Java源文件是開發(fā)者編寫的,以開發(fā)者自己能看懂的方式去編寫代碼,但是計(jì)算機(jī)無法直接識(shí)別編寫好的程序,因?yàn)橛?jì)算機(jī)只能識(shí)別二進(jìn)制的數(shù)據(jù),相當(dāng)于兩者語言不通,要進(jìn)行交流就必須有翻譯,編譯器就是這個(gè)翻譯,它可以將開發(fā)者編寫的程序翻譯成計(jì)算機(jī)能識(shí)別的二進(jìn)制數(shù)據(jù),即將Java源文件編譯為字節(jié)碼文件,這樣一來計(jì)算機(jī)就可以運(yùn)行程序了。
Java程序并不是運(yùn)行在計(jì)算機(jī)底層的,Java擁有自己的虛擬計(jì)算機(jī),這個(gè)虛擬的計(jì)算機(jī)有自己的內(nèi)存,有自己的磁盤,我們把它叫作Java虛擬機(jī)(Java Virtual Machine , JVM )。所有的Java程序都是運(yùn)行在JVM上的,正是因?yàn)橛辛薐M這樣一種機(jī)制, Java程序才能做到跨平臺(tái),不同的操作系統(tǒng)只要可以安裝JVM ,就可以運(yùn)行Java程序。JVM可以將不同操作系統(tǒng)的底層運(yùn)行機(jī)制進(jìn)行屏蔽,讀取與平臺(tái)無關(guān)的字節(jié)碼文件,由Java解釋器將JVM的程序運(yùn)行在不同的平臺(tái)上。編譯好的字節(jié)碼文件只需要識(shí)別JVM ,而不需要關(guān)心更底層的操作系統(tǒng),由JVM去適應(yīng)并識(shí)別不同的操作系統(tǒng),如圖1-3所示。
圖1-3
舉一個(gè)生活中的例子,一個(gè)中國(guó)商人,需要同時(shí)跟來自美國(guó)、意大利和德國(guó)的3個(gè)客戶洽談合作,但是中國(guó)商人只會(huì)說漢語,所以他高價(jià)雇傭了一個(gè)同時(shí)精通英語、意大利語、德語的高級(jí)翻譯,幫他把漢語分別翻譯給來自美國(guó)、意大利和德國(guó)的客戶,這樣就可以無障礙地溝通并完成合作了。
在這個(gè)例子中,中國(guó)商人相當(dāng)于Java源程序,高級(jí)翻譯相當(dāng)于JVM ,而來自美國(guó)、意大利、德國(guó)的客戶相當(dāng)于不同的操作系統(tǒng)。
1.1.3 Java 大體系
Java語言后來衍生出3個(gè)體系分支,分別是J2SE, J2ME, J2EE
J2SE (Java2 Platform Standard Edition )定義了Java的核心類庫(kù),包含了各種常用組件,是Java開發(fā)的基礎(chǔ)
J2ME (Java2 Platform Micro Edition )是基于J2SE衍生出的專用于移動(dòng)設(shè)備的開發(fā)組件,如手機(jī)、機(jī)頂盒、車載導(dǎo)航等。
J2EE (Java2 Platform Enterprise Edition )是基于J2SE擴(kuò)展出的企業(yè)級(jí)開發(fā)組件,提供了Java Web相關(guān)的開發(fā)組件,如Servlet, JSP等,是Java開發(fā)的主流技術(shù)。
2005年之后,三大體系被重新命名,其中J2SE更名為Java SE, J2ME更名為Java ME , J2EE更名為Java EE,在三大體系中, Java SE是核心, Java ME和Java EE是在Java SE的基礎(chǔ)上發(fā)展起來的,如圖1-4所示。
圖1-4
1.2搭建Java開發(fā)環(huán)境
上一節(jié)我們學(xué)習(xí)了Java的基本概念,了解了Java的運(yùn)行原理。Java程序必須依賴于JM才能運(yùn)行,所以開發(fā)Java程序的第一步就是在計(jì)算機(jī)上安裝Java環(huán)境,本節(jié)就帶大家一起來安裝和配置Java環(huán)境。
1.2.1安裝配置Java10
Java經(jīng)歷了這么多年的發(fā)展,最新的版本是Java10 (作者在編寫本書時(shí)的最新版) ,我們就以Java10為例,給大家演示如何安裝和配置Java環(huán)境。首先我們需要了解什么是Java環(huán)境,有兩個(gè)重要的概念我們需要掌握——JRE和JDK.
JRE (Java Runtime Environment )是Java的運(yùn)行環(huán)境,包括JM和Java基礎(chǔ)類庫(kù),一臺(tái)計(jì)算機(jī)要運(yùn)行Java程序,就必須有JRE
JDK (Java Development Kit )是Java開發(fā)包,它包含JRE和編譯Java源文件的編譯器,我們要在一臺(tái)計(jì)算機(jī)上進(jìn)行Java程序開發(fā),就必須安裝JDK,
由此可知,JRE是Java程序運(yùn)行環(huán)境, JDK是Java程序開發(fā)環(huán)境,而JDK包含了JRE ,我們只需要安裝JDK即可。
1.下載JDK
(1)打開Java官方網(wǎng)站,選擇"JDK Download"下載JDK10.0.2 (作者在編寫本書時(shí)的最新版) ,如圖1-5所示。
(2)在打開的新網(wǎng)頁(yè)選中"Accept License Agreement"選項(xiàng),如圖1-6所示。
圖1-5
圖1-6
(3) 根據(jù)你的操作系統(tǒng)選擇對(duì)應(yīng)的JDK安裝文件,這里我們選擇Windows系統(tǒng)下的JDK,如圖1-7所示。
圖1-7
(4)下載好的安裝文件如何1-8所示。
圖1-8
2.安裝JDK
(1)找到JDK安裝文件,雙擊鼠標(biāo)左鍵運(yùn)行該文件。
(2)一直單擊"下一步按鈕,全部選擇"默認(rèn)"即可。
3,配置環(huán)境變量
(1)配置path環(huán)境變量使計(jì)算機(jī)在運(yùn)行程序時(shí)可以找到Java程序的路徑。
(2)配置classth可以設(shè)置class文件的路徑信息。
配置環(huán)境變量的具體步驟如下所示。
(1)找到自己安裝Java的路徑,復(fù)制下來留著下一步備用,如圖1-9所示。
(2)計(jì)算機(jī)一屬性一高級(jí)系統(tǒng)設(shè)置一高級(jí)一環(huán)境變量一系統(tǒng)變量,點(diǎn)擊"新建",為變星起名"JAVA_HOME" ,變量值設(shè)置為上一步復(fù)制的路徑,如圖1-10所示。
圖1-9
圖1-10
(3)在Path路徑的開頭添加"%JAVA_HOME%bin;" ,如圖1-11所示。
圖1-11
4. 檢測(cè)是否安裝成功
(1)按Windows R組合鍵,輸入cmd,單擊“確定”按鈕打開終端,如圖1-12所示:
圖1-12
(2)在終端輸入“javac”以及“java”,如果安裝成功就可以看到如圖1-13和圖1-14所示的信息。
圖1-13
圖1-14
(3)若出現(xiàn)“javac/java不是內(nèi)部命令”字樣,則表示環(huán)境配置失敗,需要重新配置。
(4)輸入“java-version”,可以查看java的版本信息,如圖1-15所示。
圖1-15
1.2.2 Java程序開發(fā)步驟
想必讀到這里,大家都已經(jīng)成功地配置好了Java環(huán)境,準(zhǔn)備工作就緒,接下來我們就可以正式開始寫代碼了。
我們的第一個(gè)Java程序是輸出"Hello World"。在D盤新建一個(gè)文件夾,命名為java ,進(jìn)入java文件夾,新建一個(gè)名為HelloWorld java的文件,這就是Java源文件。接下來,用記事本或者其他編輯器打開文件來編寫代碼,如代碼1-1所示。
代碼1-1
public class Hellollorld{public static void main(String[] args) {System.out.printIn("Hello World");}}
我們之前介紹過, Java程序開發(fā)分三步:第一步編寫,第二步編譯,第三步運(yùn)行。代碼1-1編寫完成之后,我們需要進(jìn)行第二步:編譯。
(1)打開CMD終端(按Windows R組合鍵,然后輸入"cmd" ) ,用"d:"命令進(jìn)入計(jì)算機(jī)的D盤,然后通過cd命令進(jìn)入Java程序所在的文件夾,如圖1-16所示, Helloworld.java保存在D盤的java文件夾中。
(2)如圖1-17所示,使用javac HelloWorldjava合令編譯HelloWorld.java文件。
(3)如圖1-18所示,在編譯成功后,會(huì)看到D:/java文件夾中自動(dòng)生成了一個(gè)HelloWorld.class文件,該文件就是我們之前提到的字節(jié)碼文件, JVM就是通過讀取這個(gè)文件來運(yùn)行程序的。
圖1-16
圖1-17
圖1-18
(5)如圖1-19所示,使用java HelloWorld命令來運(yùn)行java程序,計(jì)算機(jī)打印輸出了“HelloWorld”字符串。
圖1-19
成功!這里對(duì)代碼進(jìn)行簡(jiǎn)單的說明, public static void main(String[] args)是程序的入口,我們希望計(jì)算機(jī)執(zhí)行的代碼都寫在這里,大家可以先這樣理解,后面我們會(huì)詳細(xì)講解main方法。
注意事項(xiàng):
編譯程序的命令是javac;
運(yùn)行程序的命令是java;
編寫代碼時(shí)注意字母的大小寫, Java程序?qū)Υ笮懨舾小?/p>
1.3 小結(jié)
作為本書的開篇內(nèi)容,本章首先為大家介紹了Java的基本運(yùn)行原理、體系結(jié)構(gòu)以及Java能開發(fā)哪些應(yīng)用程序,讓初學(xué)者對(duì)Java有一個(gè)基本的認(rèn)識(shí)和概念。介紹完Java的基本概念,接下來為大家講解如何安裝配置Java環(huán)境,第一步安裝JDK,第二步配置環(huán)境變量,完成之后就可以在計(jì)算機(jī)上開發(fā)Java程序了。Java程序開發(fā)共分為3個(gè)步驟:第一步編寫Java源代碼,第二步將Java源代碼編譯成JVM能識(shí)別的字節(jié)碼文件,第三步計(jì)算機(jī)讀取字節(jié)碼文件并運(yùn)行程序。
我們?cè)趯W(xué)習(xí)一個(gè)新知識(shí)的時(shí)候,首先是要了解它是什么,它能做什么,然后才是怎么使用。本章對(duì)這3個(gè)問題做了詳細(xì)解答,為后續(xù)的深入學(xué)習(xí)做好了鋪墊。
本文節(jié)選自《Java零基礎(chǔ)實(shí)戰(zhàn)》
全書共分3部分,10章,54小節(jié)。第1部分講解Java的基本概念,運(yùn)行機(jī)制,開發(fā)方式,基礎(chǔ)語法;第2部分講解Java的核心思想:面向?qū)ο螅虝?huì)讀者使用面向?qū)ο蟮乃枷脒M(jìn)行軟件開發(fā);第3部分講解Java的高級(jí)特性,包括多線程,集合框架,實(shí)用類,IO流,反射機(jī)制,網(wǎng)絡(luò)編程。