首页 > 代码库 > 深入Java虚拟机(4)——网络移动性

深入Java虚拟机(4)——网络移动性

一、软件应用程序发展的几个阶段

软件应用程序发展经历了例如以下几个阶段:

服务于多个终端用户的大型计算机系统
孤立的个人计算机上执行孤立的软件
客户机/server模式
分布式处理模式
内容服务模式(网络移动性的体现)

分布式处理模式综合了网络和处理器发展的长处,将进程分布在多个处理器上执行。并同意这些进程共享数据。虽然这样的模式有很多大型计算机系统所无法比拟的优势,但它也有个不可忽视的缺点:难于管理。

软件的更新,安装,维护十分困难。

而内容服务模式(网络移动性的体现)在流行的分布式处理模式的基础上,并能够将软件通过网络自己主动传送到各台计算机上。这样就攻克了分布式处理系统中系统管理的难题。

二、Java体系结构对网络移动性的支持

Java体系结构对网络移动性的支持主要体如今例如以下几个方面:

(1)平台无关性和安全性:Java体系结构对网络移动性支持和它对平台无关性和安全性的支持是密不可分的。

虽然平台无关性和安全性对网络移动性而言并不是是必须的。可是两者对网络移动性的实现提供了非常大帮助。平台无关性使得网络上传输程序更加easy,不须要针对不同的平台准备不同的版本号。 使得用户能够自信地下载各种来源的class文件。

(2)动态连接:网络移动性的主要难题就是时间。Java是支持动态连接的。

Java体系结构把传统的单一二进制可执行文件分割成小的二进制碎片-Java class文件-来解决时间问题,类在程序须要时才动态连接。用户不须要等到全部的class文件都完成下载。

(3)动态扩展:除了动态连接外。Java体系结构也同意动态扩展。动态扩展是装载class文件的第二种方式。能够延迟到Java应用程序执行时才装载。

(4)紧凑的class文件:除了动态连接和动态扩展。Java体系结构对网络移动性的直接支持还通过class文件格式体现。为降低在网络上传送程序的时间。class被设计得非常紧凑。Java编译器不做太多的局部优化。把优化工作留给Java虚拟机。

(5)JAR文件:同意在一次网络传输过程中传送多个文件,降低网络协议握手的时间。

(6)不採用按需下载:另外一个降低终于用户等待时间的策略的就是不採取按需下载class文件的做法,有几种不同的技术,列如採用订阅模式等。

三、Java网络移动性样例

(1)Java applet(网络移动代码的演示样例 ):它展示了Java基于网络的全部特性:平台无关性,网络移动性,安全性。在不论什么平台上,仅仅要有支持Java的浏览器,Java applet就能够执行。Java applet也展示了Java在安全上的能力。由于它们是在一个严格受限的沙箱中执行的。最重要的,Java applet展示了它的网络移动性。

Java applet能够在一个中心server上维护。能够通过网络传送到非常多种类的计算机中。要升级一个applet。仅仅须要升级server上的就可以。

用户下次使用时,就能够得到升级过后的版本号。因此,维护是本地的,执行是分布的。

(2)Jini 服务对象(网络移动对象的演示样例 ):除了代码的网络移动性。Java结构另一个承诺:对象的网络移动性。对象在网络中穿梭,携带着自己的类。加上表示对象状态的快照数据。对象的网络移动性能够简化软件开发人员设计和部署分布式系统的工作。

通过对象序列化和远程方法调用(RMI),Java API提供了一个在本地对象模型上扩展而成的分布式对象模型,打破了Java虚拟机之间的界限。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

深入Java虚拟机(4)——网络移动性