Java基礎(chǔ)-Java的體系結(jié)構(gòu)
1 前言
到目前為止Java仍然是使用最多的編程語(yǔ)言,隨著Java以及Java社區(qū)的不斷壯大,Java也早已不再是簡(jiǎn)簡(jiǎn)單單的一門計(jì)算機(jī)語(yǔ)言了,它更是一個(gè)平臺(tái)、一種文化、一個(gè)社區(qū)。
1. 1 Java技術(shù)平臺(tái)
根據(jù)不同的技術(shù)規(guī)范,Java劃分為3中結(jié)構(gòu)獨(dú)立但又相互依賴的技術(shù)分支:Java SE(標(biāo)準(zhǔn)版)、Java EE(企業(yè)版)、Java ME(精簡(jiǎn)版)。此外, Java的發(fā)展,除了來(lái)自互聯(lián)網(wǎng)的崛起,還有Google選擇Java作為Android操作系統(tǒng),Groovy、Scala、JRuby、Kotlin等都是Java平臺(tái)的一部分。
Java SE
活躍在桌面領(lǐng)域,主要包含Java API組件。這個(gè)版本是Java平臺(tái)的核心。
Java EE
活躍在企業(yè)級(jí)領(lǐng)域,主要包含Java API組件、Web組件、事務(wù)組件、分布式組件、EJB組件、消息組件;綜合這些技術(shù)開發(fā)人員完全可以構(gòu)建出一個(gè)具備高性能、結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)钠髽I(yè)級(jí)應(yīng)用,并且Java EE也是構(gòu)建SOA架構(gòu)的首選平臺(tái)。Java EE是Java SE的擴(kuò)展。
Java ME
活躍在嵌入式領(lǐng)域,稱為精簡(jiǎn)版是因?yàn)?code>JavaME僅保留了Java API中的部分組件,以及適應(yīng)設(shè)備的一些特有組件。Java ME是Java SE的內(nèi)伸。

1.2 Java開源文化
Java幾乎成為了“開源”的代名詞。第三方開源軟件和框架。如Tomcat、Struts,MyBatis,Spring等。就連JDK和JVM自身也有不少開源的實(shí)現(xiàn),如openJDK、Harmony。
1.3 Java強(qiáng)大社區(qū)
Java的文化造就了Java社區(qū),Java擁有全世界最多的技術(shù)擁護(hù)者和開源社區(qū)支持,有數(shù)不清的論壇和資料。所謂,眾人拾柴火焰高!
2 Java體系結(jié)構(gòu)的組成
Java技術(shù)的核心就是Java虛擬機(jī)——所有Java程序都在其上運(yùn)行,需要Java虛擬機(jī)、Java API和Java,class文件的配合,Java程序才能夠運(yùn)行。
2.1 Java編程語(yǔ)言
首先我們理一下一個(gè)Java程序從編寫到最終執(zhí)行的過(guò)程:
- (1)一個(gè)A.java程序源文件執(zhí)行javac命令后編程成A.class二進(jìn)制的字節(jié)碼文件
- (2).class文件會(huì)被ClassLoader裝載到內(nèi)存中,同時(shí)裝載java相關(guān)核心類庫(kù)
- (3)調(diào)用字節(jié)碼解釋器或即時(shí)編譯器(java是解釋器和編譯器混合執(zhí)行)
- (4)執(zhí)行引擎調(diào)用操作系統(tǒng)或硬件運(yùn)行

2.2 字節(jié)碼
任何編程語(yǔ)言的編譯結(jié)果滿足并包含Java虛擬機(jī)的內(nèi)部指令集、符號(hào)表以及一些其他輔助信息的話,這個(gè)編譯結(jié)果就是一個(gè)有效的字節(jié)碼文件。
字節(jié)碼的重大作用:為Java跨平臺(tái)提供了支持。正是因?yàn)樵创a編譯后為字節(jié)碼文件,而字節(jié)碼文件相較機(jī)器指令,字節(jié)碼可以解決程序的安全性問(wèn)題、跨平臺(tái)移植性問(wèn)題。而且源碼只需一次編譯,得到的字節(jié)碼文件可以在不同的平臺(tái)上運(yùn)行。

2.3 Java API
API(Application Programming Interface)應(yīng)用程序編程接口,是一些預(yù)先定義的類。目的是使開發(fā)人員可以直接使用這些已經(jīng)被打包的類來(lái)做具體的應(yīng)用,節(jié)約了程序員大量的時(shí)間和精力。
2.4 Java虛擬機(jī)
Java虛擬機(jī)(Java Virtual Machine簡(jiǎn)稱JVM)是運(yùn)行所有Java程序的抽象計(jì)算機(jī),是Java語(yǔ)言的運(yùn)行環(huán)境,其主要任務(wù)為將字節(jié)碼裝載到內(nèi)部,解釋/編譯為對(duì)應(yīng)平臺(tái)上的機(jī)器指令執(zhí)行。

Java虛擬機(jī)規(guī)范定義了一個(gè)抽象的——而非實(shí)際的——機(jī)器或處理器。這個(gè)規(guī)范描述了一個(gè)指令集,一組寄存器,一個(gè)堆棧,一個(gè)“垃圾堆”,和一個(gè)方法區(qū)。一旦一個(gè)Java虛擬機(jī)在給定的平臺(tái)上運(yùn)行,任何Java程序(編譯之后的程序,稱作字節(jié)碼)都能在這個(gè)平臺(tái)上運(yùn)行。Java虛擬機(jī)(JVM)可以以一次一條指令的方式來(lái)解釋字節(jié)碼(把它映射到實(shí)際的處理器指令),或者字節(jié)碼也可以由實(shí)際處理器中稱作just-in-time的編譯器進(jìn)行進(jìn)一步的編譯。

3 總結(jié)
筆者是一名Java編程語(yǔ)言的深度使用者,到目前為止,Java仍是世界上的頭號(hào)編程語(yǔ)言。然而,Java最終將會(huì)減弱,就像C++一樣,淪為只在特殊情況下使用(或者只是用來(lái)支持傳統(tǒng)的代碼,因?yàn)樗荒芟馛++那樣和硬件連接)。但是無(wú)意中的好處,也是Java真正意外的光彩之處在于它為自己的替代品創(chuàng)造了一條非常暢通的道路,即使Java本身已經(jīng)達(dá)到了無(wú)法再發(fā)展的程度。未來(lái)所有的語(yǔ)言都應(yīng)該從中學(xué)習(xí):要么創(chuàng)建一個(gè)可以重構(gòu)的文化(像Python和Ruby做的那樣),要么就讓競(jìng)爭(zhēng)者茁壯成長(zhǎng)。
到此這篇關(guān)于Java基礎(chǔ)-Java的體系結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Java的體系結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java IO流體系繼承結(jié)構(gòu)圖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java IO流體系繼承結(jié)構(gòu)圖,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
MyBatis找不到mapper文件的實(shí)現(xiàn)
這篇文章主要介紹了MyBatis找不到mapper文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問(wèn)題處理
這篇文章主要介紹了詳解Spring Cloud Finchley版中Consul多實(shí)例注冊(cè)的問(wèn)題處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Java根據(jù)前端返回的字段名進(jìn)行查詢數(shù)據(jù)的實(shí)現(xiàn)方法
在Java后端開發(fā)中,我們經(jīng)常需要根據(jù)前端傳遞的參數(shù)(如字段名)來(lái)動(dòng)態(tài)查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù),這種需求通常出現(xiàn)在需要實(shí)現(xiàn)通用查詢功能或者復(fù)雜查詢接口的場(chǎng)景中,所以本文介紹了Java根據(jù)前端返回的字段名進(jìn)行查詢數(shù)據(jù)的實(shí)現(xiàn)方法,需要的朋友可以參考下2024-12-12
Java?GUI實(shí)現(xiàn)多個(gè)窗口切換效果
這篇文章主要為大家詳細(xì)介紹了Java?GUI實(shí)現(xiàn)多個(gè)窗口的切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
一篇文章帶你了解JAVA面對(duì)對(duì)象之繼承與修飾符
這篇文章主要介紹了Java面向?qū)ο缶幊讨惖睦^承,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java面向?qū)ο缶幊填惖母拍?、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2021-08-08

