天天看點

深入Java虛拟機(4)——網絡移動性

版權聲明:本文為部落客原創文章,轉載注明出處http://blog.csdn.net/u013142781

軟體應用程式發展經曆了如下幾個階段:

服務于多個終端使用者的大型計算機系統 

孤立的個人計算機上運作孤立的軟體 

客戶機/伺服器模式 

分布式處理模式 

内容服務模式(網絡移動性的展現)

分布式處理模式綜合了網絡和處理器發展的優點,将程序分布在多個處理器上運作,并允許這些程序共享資料。盡管這種模式有許多大型計算機系統所無法比拟的優勢,但它也有個不可忽視的缺點:難于管理。軟體的更新,安裝,維護十分困難。

而内容服務模式(網絡移動性的展現)在流行的分布式處理模式的基礎上,并可以将軟體通過網絡自動傳送到各台計算機上。這樣就解決了分布式處理系統中系統管理的難題。

(1)平台無關性和安全性:java體系結構對網絡移動性支援和它對平台無關性和安全性的支援是密不可分的。雖然平台無關性和安全性對網絡移動性而言并非是必須的,但是兩者對網絡移動性的實作提供了很大幫助。平台無關性使得網絡上傳輸程式更加容易,不需要針對不同的平台準備不同的版本。 使得使用者可以自信地下載下傳各種來源的class檔案。

(2)動态連接配接:網絡移動性的主要難題就是時間。java是支援動态連接配接的。java體系結構把傳統的單一二進制可執行檔案切割成小的二進制碎片-java class檔案-來解決時間問題,類在程式需要時才動态連接配接,使用者不需要等到所有的class檔案都下載下傳完畢。

(3)動态擴充:除了動态連接配接外,java體系結構也允許動态擴充。動态擴充是裝載class檔案的另外一種方式,可以延遲到java應用程式運作時才裝載。

(4)緊湊的class檔案:除了動态連接配接和動态擴充,java體系結構對網絡移動性的直接支援還通過class檔案格式展現。為減少在網絡上傳送程式的時間,class被設計得很緊湊。java編譯器不做太多的局部優化。把優化工作留給java虛拟機。

(5)jar檔案:允許在一次網絡傳輸過程中傳送多個檔案,減少網絡協定握手的時間。

(6)不采用按需下載下傳:另外一個降低最終使用者等待時間的政策的就是不采取按需下載下傳class檔案的做法,有幾種不同的技術,列如采用訂閱模式等。

(1)java applet(網絡移動代碼的示例 ):它展示了java基于網絡的所有特性:平台無關性,網絡移動性,安全性。在任何平台上,隻要有支援java的浏覽器,java applet就可以運作。java applet也展示了java在安全上的能力,因為它們是在一個嚴格受限的沙箱中運作的。最重要的,java applet展示了它的網絡移動性。java applet可以在一個中心伺服器上維護,可以通過網絡傳送到很多種類的計算機中。要更新一個applet,隻需要更新伺服器上的即可。使用者下次使用時,就可以得到更新過後的版本。是以,維護是本地的,運作是分布的。

(2)jini 服務對象(網絡移動對象的示例 ):除了代碼的網絡移動性,java結構還有一個承諾:對象的網絡移動性。對象在網絡中穿梭,攜帶着自己的類,加上表示對象狀态的快照資料。對象的網絡移動性可以簡化軟體開發者設計和部署分布式系統的工作。通過對象序列化和遠端方法調用(rmi),java api提供了一個在本地對象模型上擴充而成的分布式對象模型,打破了java虛拟機之間的界限。