- 深入浅出Java虚拟机:JVM原理与实战
- 李博
- 1907字
- 2025-03-28 16:45:17
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是如何不断发展和优化自身,从而与网络移动性的体系产生了紧密的联系。本节内容主要以扩展为主,读者不需要过于纠结原理和概念,了解即可。