- 深入淺出Java虛擬機:JVM原理與實戰
- 李博
- 1907字
- 2025-03-28 16:45:16
1.3 網絡時代帶來的挑戰
本節承接1.2節中的內容,介紹Java體系對網絡移動性的支持及實現。這也是Java語言為什么在目前發展得這么迅猛和大受歡迎的重要因素之一。
1.3.1 什么是網絡移動性
隨著網絡的迅猛發展,B/S軟件架構模式逐漸變成了網絡服務的主流方向,B/S模式大致包括客戶端(Client)與服務端(Server),兩端分別部署在不同的IDC或者服務器上,并且通過網絡協議傳輸數據信息。服務端主要負責接收服務器端的請求,然后收集并計算相關所需的資源返回給服務器端;客戶端主要負責將從服務器上返回的數據信息進行相應處理后返回給用戶。此外,客戶端未來會操作一部分計算工作,從而減輕服務端CPU的負擔。隨著復雜度及數量級的增加,層次結構越來越復雜,分布式處理應運而生。
分布式的軟件模型主要具有兩大特征,分別是操作分布服務和數據分布服務。
(1)操作分布服務:指程序指令可以在不同服務節點下實現數據或者事件的處理操作的服務。
(2)數據分布服務:指分別存放在不同網絡節點下不同的服務節點上的數據資源,可以通過統一資源定位符互相訪問。
此外,分布式處理模型結合了網絡與處理器的發展優勢,將多個進程分布在多個處理器上運行,并且允許這些進程之間進行通信及共享數據,但這樣的處理模式也大大增加了管理的成本和復雜度。
注意:分布式處理模型不代表實現了網絡移動性,它為實現網絡移動性奠定了基礎。網絡移動性面向的更多是程序或者軟件的統一化和標準化的發展。
1.3.2 網絡時代的軟件模式
經歷了大型計算機到分布式計算模型的過渡,軟件模式也向著網絡移動性的方向不斷發展。科技生產力的日益提升,網絡帶寬及硬件成本的不斷降低,促使了計算機軟件模型化的升級,使得通過網絡的傳輸即可實現代碼或者軟件在另外一個服務器上運行,即軟件本身也允許通過網絡進行傳輸,這樣不同的服務器之間就可以形成邏輯的統一體。
網絡時代的軟件模式到底是什么?在舊的模式下,要去接收和處理其他服務請求過來的數據,一般情況下必須擁有對方許可的軟件或者程序才能處理,這保證了程序的安全性,但是因為軟件程序與數據本身屬于兩個獨立的個體,這將導致出現軟件功能不一致、版本不同步等客觀問題;而在網絡移動性的模式下,軟件程序與數據合并成為“內容信息”,這就意味著,軟件與數據配套傳輸,終端用戶無須再去考慮軟件程序與數據的適配和兼容,以及軟件版本的維護和更新了。
舉個最簡單的例子,HTML頁面展示就屬于網絡移動性模型下的一個成功案例,代碼程序與數據兩者完全融合,當更新數據的同時程序本身(HTM代碼)也會一同被更新。此外,目前發展得特別好的“容器化”技術也是一個非常典型的案例,伴隨著項目交付的“一等公民”從原來的程序包加數據庫轉變為鏡像加編排的模式,這種全新的方向使得系統的運作變得更加智能化和簡單化。
1.3.3 Java體系對網絡移動性的支持
Java體系對網絡移動性的支持是基于分布式處理模型的,能夠把軟件利用網絡技術傳送到服務器上,大大降低了分布式管理模式的復雜度。因此,網絡移動性將成為計算模式發展歷史上的關鍵里程碑。允許代碼與數據一同傳送,就可以讓網絡中各個節點的服務器擁有的代碼保持一致。
網絡移動性、平臺無關性和安全性,三者相輔相成,因為平臺無關性(跨平臺性)會使在網絡上傳輸軟件或者程序變得更加簡潔高效。此外,Class字節碼數據的安全性對網絡傳輸的場景提供了安全可靠的服務能力(主要依靠安全管理器等組件)。
此外,Java對網絡移動性的支持,還體現在網絡傳送程序的時間管理方面。如果將程序包傳輸到其他服務器上執行,那么在下載程序包的時候也可能會存在網絡方面的問題。而在Java體系的支持下,能夠將Class文件拆分成多個二進制碎片數據流,同時通過Java的動態鏈接和動態擴展功能,實現不需要等所有的程序數據流下載完成就可以提前進入工作狀態。此外,Class文件格式非常緊湊和嚴密,所以網絡傳輸數據時所占用的資源非常少。
通過自定義類加載器方式下載和讀取Class字節碼文件,從而執行相關的Class文件的程序,這也屬于Java體系對網絡移動性的支持。但是,這種方式對網絡安全而言會存在風險和隱患,目前主要依靠安全管理器和控制器建立網絡移動代碼的安全策略。以上就是關于Java體系對網絡移動性的支持的介紹。未來Java主要的焦點仍然是網絡,相信JVM及Class文件、JavaSE API等組件都將更廣泛地支持網絡移動性。
綜上所述,Java語言體系對動態化網絡和可移動性的主要支持范圍大致可以分為:動態體系下的平臺無關性與安全性、動態鏈接、動態擴展及緊湊格式的Class文件、AR文件、不采用按需下載等。
注意:本節內容主要介紹了Java體系對網絡移動性的支持,以及在分布式模型的背景下,Java是如何不斷發展和優化自身,從而與網絡移動性的體系產生了緊密的聯系。本節內容主要以擴展為主,讀者不需要過于糾結原理和概念,了解即可。
- C# 從入門到項目實踐(超值版)
- Unity Virtual Reality Projects
- R語言游戲數據分析與挖掘
- Getting Started with Python Data Analysis
- Rust Essentials(Second Edition)
- Learning Hunk
- Cybersecurity Attacks:Red Team Strategies
- Babylon.js Essentials
- JavaScript+jQuery網頁特效設計任務驅動教程
- Learning Python Data Visualization
- Go語言從入門到精通
- 零基礎學Java第2版
- 從零開始學算法:基于Python
- 用Python動手學統計學
- Kohana 3.0 Beginner's Guide