1. 程式人生 > >Java 平臺透析

Java 平臺透析

Java 平臺透析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、什麼是Java 平臺?

現在,計算機世界裡存在多種操作平臺,在微軟的WindowsMacintoshOS/2Unix以及NetWare等眾多的操作平臺中,軟體必須在每個平臺上單獨進行編譯執行。在一個平臺上執行的一個應用程式的二進位制檔案就不可能運行於另一個別的平臺之上,因為這個二進位制檔案是基於特殊的機器編碼的。

Java平臺是一種新型的軟體平臺,可用來在網路計算機系統中釋出和執行高互動性、動態的、安全的Java

小程式(applets)和應用程式(applications)。但是,另Java平臺顯得比其他操作品平臺有優勢的是它位於它們之上,將應用程式編譯成位元組碼,這種編碼機制並不特定於任何一種機器編碼,而是為一種所謂的Java虛擬機器產生機器指令集。用Java編寫的程式可以編譯成位元組碼檔案,這種檔案可以在任何具有Java平臺的底層作業系統上執行。也就是說,同一個編譯檔案可以運行於任何執行Java平臺的作業系統上。因為Java平臺的核心是Java虛擬機器機制,所以這種可移植性就變得可能了。

儘管每一種底層平臺對於Java虛擬機器都有它自己的實現方法,但是現在只有一種Java虛擬機器規範。正因為如此,

Java平臺才能夠為運行於任何硬體上的appletsapplications提供一種標準的、統一的程式設計介面。因此,Java平臺對Internet來說是非常理想的解決方案,在Internet上,一個程式應該具有可以運行於世界上任何一臺計算機上的能力。Java平臺的被設計成能夠提供這樣一種能力:“編譯一次,就可以運行於任何地方”(“write onceRun anywhere”)。

開發人員利用Java語言編寫強大的Java應用程式原始碼。他們在Java平臺上而不是在底層系統中編譯一次。Java原始碼編譯成一種中間的、可移植的位元組碼形式,然後就可以運行於任何有Java平臺的地方。

開發人員可以用

Java語言編寫面向物件的、多執行緒的、動態連結的應用程式。Java平臺內建了安全、違例處理以及自動垃圾回收機制。在將Java位元組碼轉換成機器語言時,即時編譯器可以加速執行速度。為了獲得更快的速度或者其他特殊的功能,開發人員也可以在Java語言中編寫或從Java語言外呼叫本地方法——用CC++或是其他語言編寫的,在一個特殊的底層作業系統中編譯的方法。

Java語言是進入Java平臺的一個通道。用Java語言編寫並編譯的程式能夠執行在Java平臺上。

Java平臺具有兩個基本的組成部分:

Java虛擬機器

Java應用程式介面(Java API

他們將在後續章節中詳細敘述。這兩部分的結合,為終端使用者開發InternetIntranet應用程式提供了執行環境。

二、Java 基本平臺

Java基本平臺是一種開發人員可以進行安全的應用的微型平臺,目前用來執行高效能的Java appletsapplication。這種平臺應用於網路計算機、桌上型電腦和工作站(下一部分描述為更小型的系統提供的平臺)。它內部包含一個與前面所提到的一樣的Java虛擬機器,但卻擁有一個執行基本的Java小程式applets和應用程式(applications)所必需的小型Java API(應用程式介面)。眾所周知這套小型APIJava applet API或者是基本JAVA應用程式API。在這一套小型API基礎之上進行編碼工作的開發人員對於這一點是可以放心的,就是在此基礎之上的開發的程式同樣可以執行在任何地方,而不需要其他額外的類庫的支援。

特定的具有Java平臺操作許可的人已經同意將基本的Java API包含在他們的個人的Java平臺應用實現中。隨著更多地Java類庫開發,Java基礎平臺將會不斷增長,這些增加的類庫將以適時的形式新增到Java基礎平臺中,並呈現於每一個許可使用者的作業系統上。

另外一套被稱作標準擴充套件API的應用程式介面(APIs),是由JavaSoft以及其他引領行業發展的主要公司一起來制定,用以擴充套件平臺的基本功能。隨著時間的逝去,一些標準擴充套件API的補充將會新增到Java基礎平臺中。

三、內嵌Java平臺

內嵌Java平臺的目標是針對一些消費裝置,這些諸如置頂盒、印表機、影印機和手機等消費裝置與網路計算機相比,需要更少的資源和更多的個性化功能。這些裝置自身具有儲存空間少、無顯示畫面或是不能連線到網路等限制。

用於此平臺的應用程式介面(API)叫做Java嵌入式API,它是最小的一套Java API,可以用於並執行在要求較少功能的嵌入裝置上。由於這個平臺仍處於開發當中,所以這套API還沒有達到成為一個標準的程度。因此,該API仍沒有完成制定,但大體上它可能是由java.langjava.util這兩個包組成。為一個特殊的裝置所編寫的一個Java應用程式,可以運行於大部分相似的專用裝置上。

四、Java平臺的好處

Java平臺有益於終端使用者和開發人員,支援人員如下所示:

終端使用者的獲益

現在,Java平臺通過即時軟體接入,在環球網上提供生動、互動的內容。Java應用程式在所有作業系統中都可以立即執行,在此基礎上,已經把使用者從不得不選擇作業系統的工作中解放出來。更小型,價格更低廉的專用系統最終都將會有他們自己的應用程式。

開發者的獲益

Java語言是一個小型的、易學的語言系統,並伴有一套越來越全面的APIs。開發人員可以“編譯一次,運行於任何地方”,這一點為Java語言提供了凌駕於其他語言之上的巨大的市場優勢。而且,在所有作業系統上的Java開發環境,只是將檔案編譯成單一的二進位制格式。現在,開發人員可以在一個平臺上開發,儲存,在同一個平臺上釋出,然後就可以運行於所有平臺,而不用分別在多種平臺上開發,再在每一種平臺上釋出。Java的這種“編譯一次,運行於任何地方”的能力,為一些開發人員把Java作為CC++的替代品,進而轉向Java提供了充足的理由,即使是用來便以獨立的、非網路的應用程式。

而且,通過分佈的、可重用的組建建立應用程式,可以使開發人員集中精力處理那些新的東西,從而大大降低了開發成本。開發人員可以通過網路進行分散式開發,而不必在有隔間的專用於軟體開發的房間中完成工作。

五、Java平臺內部探祕

Java平臺分成兩個主要的部分:Java虛擬機器和Java APIs,如圖2所示:

Java虛擬機器——Java虛擬機器是一個“軟”計算機,可以在軟體或硬體上實現。它是一個抽象的機器,被設計用來在已有的處理器之前處理Java程式。介面和介面卡的埠可以使它很容易的接入到新的作業系統中,而不必進行完全重新編寫。

Java API——Java APIApplets和應用程式提供了標準的介面,不管它們執行在何種作業系統之上。Java API是應用程式開發環境的基本框架。API規定了一套基本介面,開發人員將利用這些介面在不斷增多的主要領域中進行Java應用程式程式設計。

——Java基本API提供了非常基礎的語言、應用程式、I/O、網路、GUI以及Applets服務;已經許可JavaOS公司已經同意在他們任何部署Java平臺的地方都將包括上述功能。

——Java標準擴充套件API擴充套件了Java在基本API之外的一些功能。這些擴充套件中的一些將最終融合到Java基本API之中。其他的一些非標準的擴充套件APIs可以有Applets,應用程式或是底層作業系統提供。隨著每一個新的擴充套件API規範的釋出,在它被最終確定之前,整個行業都將對它進行審定並給出反饋。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

在上圖中,Java基礎平臺就是以黑色顯示的部分,包括那些被介面卡(Adapter)標識的部分。Java API包括Java基本APIJava標準擴充套件API。類是API的實現。Java虛擬機器是整個平臺的核心。介面的埠位於Java虛擬機器和作業系統或瀏覽器之間。介面的埠擁有兩部分,一部分獨立於平臺(如圖中黑色部分所示);另一部分依賴於平臺,如圖中介面卡所示。作業系統和Java作業系統提供了視窗、文件和網路功能。不同的機器可以通過網路互連,如圖中所示。

Java API框架是開放的和可擴充套件的。每一個介面的規範都是由每一領域的整個行業的專家們共同制定的。新制定的規範將會公開發布並進行面向整個行業的修改驗證。API規範對於JavaSoft和整個行業內的其他公司來說,都是可以實現的。在當今快速發展的環境中,Java API框架允許對於它的創新發展的存在,就行Java平臺能夠被擴充套件一樣。

API被以分組或成套的方式組織的。每一套API都可以作為一個或更多的包(名稱空間)來處理。每一個包同一些類或介面組織在一起定義了一套相關的域、構造器和方法。

六、Java 虛擬機器

Java虛擬機器是程式與底層作業系統和硬體無關的關鍵——它是一個平臺,將Java Applets和應用程式與底層作業系統相分離。通過虛擬機器接入到瀏覽器或者其他作業系統是非常容易的。而且,虛擬機器定義了一種與機器無關的被稱為類的二進位制檔案格式。這種格式以位元組碼的形式儲存著用於操作虛擬計算機的指令集。代表任何Java語言程式的位元組碼本質上是一個象徵,它表明方法的索引與偏移量並不是一個常數值,相反的,是被作為一個字元名字象徵性的給出。方法首次被呼叫時,首先是在類檔案中通過方法的名字尋找它,為了在以後的查詢中更加快速的找到該方法,它的偏移量的數值大小便在此時確定出來。因此,任何新的或基本的方法可以在執行的晚些時候被引入到類框架中的任何地方。它將能夠在不打亂原有編碼的情況下,象徵性的正確的被引入。位元組碼是程式的高階表示形式,以至於程式優化和機器碼的產生(通過即時編譯器)都可以在這個水平上來完成。而且,由於在Java平臺的定址空間中虛擬機器將變數儲存在堆疊中,因此可以在虛擬機器的內部進行垃圾回收處理。

七、Java編譯和執行環境

Java語言開發環境包括編譯時和執行時環境兩部分,如圖3所示:

執行時環境代表著Java平臺。開發人員編寫Java原始碼(.java檔案),然後將之編譯成位元組碼(.class檔案)。這些位元組碼就是操作Java虛擬機器的指令集。為了建立一個applet,開發人員將這些位元組碼檔案儲存在HTTP伺服器上,在web頁中加入這樣一個標籤:<applet code=filename>,這個標籤就是指向位元組碼檔案的入口。當一個終端使用者訪問這個頁面的時候,<applet>標籤就會導致這個位元組碼檔案從伺服器上通過網路傳遞到使用者的Java平臺上的瀏覽器中。最後,位元組碼被裝入記憶體,在進入虛擬機器之前進行安全檢查。一旦進入到虛擬機器,位元組碼就會被直譯器解釋執行,或者是被即時(just-in-timeJIT)程式碼發生器,通常稱為即時編譯器,有選擇的轉換成機器碼執行。直譯器和JIT編譯器在執行時系統中根據情況進行操作(執行緒、儲存以及其他系統原始碼)。Java類庫中的任何類檔案在applet需要時動態的調入。

相關推薦

Java 平臺

Java 平臺透析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、什麼是Java 平臺? 現在,計算機世界裡存在多種操作平臺,在微軟的Windows,Ma

Java設計模式之 —— 模板方法(Template Method)

style 格式 XML nis 實現 rgs format) font 原因 轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你還是像往常一樣來上班,一如既往地開始了你的編程工作。

Java設計模式之 —— 單例(Singleton)

too 不能 占用內存 有道 機會 title bugs 功能 就是 轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/8860649 寫軟件的時候經常需要用到打印日誌功能,可以幫助你調試和定位問題,項目上

java本質的36個話題-第一章基本概念筆記

記得大三時在圖書館看過這本書,當時一口氣就看完了,參加工作後又回過頭來再看,還是收益很多,我是先看的這本書,然後再看了深入理解jvm虛擬機器這本經典之作,必須反覆看。現在又回過頭來看 透析java本質的36個話題 這本書,全書一共5章,我謹以5篇博文紀念。 1、開門見山

Java深入解析-Java本質的36個話題》筆記_第四章

## 第4 章 方法、構造器與變數143 ### 話題23 相差無幾——main 方法很“特殊”嗎? 143 public static void main(String[] args) 1.5 可以使用可變引數寫法: public static void mai

java Service和Servlet的區別 概念

1. 整體概念 Servlet是Java對於Web開發而產生的一項技術,可以說Servlet技術是Java專有的,它是伺服器端的技術,客戶端通常是瀏覽器,Servlet提供了請求/響應模式,是J

Java本質-運算順序的詳細挖掘

package com.java.essence_36; import java.util.Arrays; /** * Created by lw on 14-5-18. * 註釋僅代表個人想法,具體結果run後檢視 * <p/> * 運算順序的詳細

[] 卷積神經網絡CNN究竟是怎樣一步一步工作的?(轉)

caff 素數 aec near chris line 旋轉 均值 水平 視頻地址:https://www.youtube.com/embed/FmpDIaiMIeA 轉載:http://www.jianshu.com/p/fe428f0b32c1 文檔參閱:pdf

Java CAS簡

tun 級別 integer 樂觀鎖 操作 func pri off title 什麽是CAS CAS:Compare and Swap,它是一種原子操作,什麽是原子操作,可以在多線程編程中實現數據交換而不被打斷。是用來更新變量的,當多個線程使用CAS來更新變量時,只有一個

Java平臺與.Net平臺在服務器端前景預測

運行 切換 cor src 行業趨勢 代碼 不足 基本 這也 如果是服務器端, 毫無疑問C#是很難跟Java拼的。 就算將來,微軟逆襲的機會也很渺茫了。就技術的先進性來說, Java平臺是不如.Net平臺, 但是, 程序員對於兩個平臺,直接接觸的基本以語言為主,

遞歸應用-換零錢

什麽 format con 成了 數據分布 equals integer equal 方便 題目源於《SICP》,這裏做一下調整,如下: 給了面值為50元、20元、10元、5元、1元的五種零錢若幹,思考把面值100元人民幣換成零錢一共有多少種方式? SICP給出的遞歸算

從經典架構項目中微服務架構的核心概念和充血模型

java 架構 微服務 微服務架構和SOA區別 微服務現在辣麽火,業界流行的對比的卻都是所謂的Monolithic單體應用,而大量的系統在十幾年前都是已經是分布式系統了,那麽微服務作為新的理念和原來的分布式系統,或者說SOA(面向服務架構)是什麽區別呢? 我們先看相同點: 需要Registry,實

阿裏P8架構專家帶你分布式架構

java 分布式 架構 什麽是分布式系統 分布式系統是由一組通過網絡進行通信、為了完成共同的任務而協調工作的計算機節點組成的系統。分布式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、存儲任務。其目的是利用更多的機器,處理更多的數據。 首先需要明確的是,只有當單個節點的處理能力無

Java核心技術】Java平臺的理解

巨集觀角度: 跟c/c++最大的不同點在於,c/c++程式設計是面向作業系統的,需要開發者極大地關心不同作業系統之間的差異性;而Java平臺通過虛擬機器遮蔽了作業系統的底層細節,使得開發者無需過多地關心不同作業系統之間的差異性。 通過增加一個間接的中間層來進行”解耦“是計算機領域非常常用的一種”

一、java平臺的瞭解

一、特點 1.一次書寫,多次執行(跨平臺) 2.面向物件(封裝,繼承,多型) 注意:多次執行的指在安裝了java執行環境的主機上可以執行。與硬體無關,與作業系統無關。 JDK>JRE>JVM>JAVA 二、流程 編寫好java原始碼->javac(ja

百度T7架構師Python物件你需要知道這些

1. Python物件 Python使用物件模型來儲存資料。構造任何型別的值都是一個物件。 所有的Python物件都擁有三個特性:身份,型別和值。 身份: 每一個物件都有一個唯一的身份標識自己,任何物件的身份可以使用內建函式 id() 來得到。這個值可以被認為是該物件的記憶體地址。您極少會用到

SOA、RPC、SOAP、REST、ICE、ESB模型發展史

最初的程式全是單機程式,沒有網路,沒有RPC,更沒有RESTful。程式猿寫的東西孤獨執行在單機上。 那時的程式猿們語言相通,參與開發同一套系統的團隊可以面對面溝通。 網路出現了。網路,也帶來變亂。網路是不同系統之間的通訊,無論是早期網路,還是web,如何實行系統間的互聯互通是個頭痛的問題。 而SOA就

java 平臺的理解

一:java不僅僅是解釋執行(java編譯成位元組碼,在轉換成機器碼),還有動態編譯,在程式執行時,利用jit編譯將熱點程式碼編譯成機器碼,這時候就是編譯執行,不是解釋執行 二:   三:jdk8是解釋和編譯混合模式,也有server和client模式,也有c1,c2的內建的jit編譯 四:

談談我畢業半年後對java平臺的瞭解

1、“一次編譯,處處執行”,談談我對這句話的理解 從課本到面試題,都說java是一門跨平臺的語言,就是這句話體現的吧。其實能跨平臺的不至是java啊,java只是其中比較成熟的一種,為什麼這麼說,首先我們要了解java怎麼實現跨平臺的。 支撐著跨平臺的最主要就是java虛擬機器。它就像一個小

前端面試重點難點--TCP協議的三次握手和四次分手

一.什麼是TCP 要了解TCP協議的三次握手和四次分手我們先來簡單介紹下TCP是什麼,TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線(連線導向)的、可靠的、 基於IP的傳輸層協議。TCP在IP報文的協議號是6。TCP是一個超級麻煩的協議,而它又是