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

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

服务于多个终端用户的大型计算机系统

孤立的个人计算机上运行孤立的软件

客户机/服务器模式

分布式处理模式

内容服务模式(网络移动性的体现)

分布式处理模式综合了网络和处理器发展的优点,将进程分布在多个处理器上运行,并允许这些进程共享数据。尽管这种模式有许多大型计算机系统所无法比拟的优势,但它也有个不可忽视的缺点:难于管理。软件的更新,安装,维护十分困难。

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

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

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

(1)平台无关性和安全性:Java体系结构对网络移动性支持和它对平台无关性和安全性的支持是密不可分的。虽然平台无关性和安全性对网络移动性而言并非是必须的,但是两者对网络移动性的实现提供了很大帮助。平台无关性使得网络上传输程序更加容易,不需要针对不同的平台准备不同的版本。 使得用户可以自信地下载各种来源的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可以在一个中心服务器上维护,可以通过网络传送到很多种类的计算机中。要升级一个applet,只需要升级服务器上的即可。用户下次使用时,就可以得到升级过后的版本。因此,维护是本地的,运行是分布的。

(2)Jini 服务对象(网络移动对象的示例 ):除了代码的网络移动性,Java结构还有一个承诺:对象的网络移动性。对象在网络中穿梭,携带着自己的类,加上表示对象状态的快照数据。对象的网络移动性可以简化软件开发者设计和部署分布式系统的工作。通过对象序列化和远程方法调用(RMI),Java API提供了一个在本地对象模型上扩展而成的分布式对象模型,打破了Java虚拟机之间的界限。

深入Java虚拟机(4)——网络移动性的更多相关文章

  1. 《深入Java虚拟机学习笔记》- 第4章 网络移动性

    Java虚拟机学习笔记(四)网络移动性

  2. 深入Java虚拟机

    第一章:Java体系结构介绍 1.Java为什么重要?       Java是为网络而设计的,而Java这种适合网络环境的能力又是由其体系结构决定的,可以保证安全健壮和平台无关的程序通过网络传播. 2 ...

  3. 理解Java虚拟机体系结构

    1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...

  4. Java虚拟机工作原理详解 ( 二 )

    首先这里澄清两个概念:JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的Java程序,而JVM执行引擎实例则对应了属于用户运行程序的线程:也就是JVM实例是进程级别,而执行引擎是线程级别的 ...

  5. 深入Java虚拟机读书笔记第一章Java体系结构介绍

    第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...

  6. 理解Java虚拟机体系结构(转)

    1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...

  7. 深入Java虚拟机(2)——Java的平台无关性

    一.平台无关性的好处 Java技术在网络环境下非常有用,其中一个关键理由是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台. 这样的平台无关性随之带来许多的好处.这将极大地减轻系统管理 ...

  8. 深入Java虚拟机(1)——Java体系结构

    Java体系结构 Java体系结构包括四个独立但相关的技术: 1.Java程序设计语言 2.Java class文件格式 3.Java应用编程接口(API) 4.Java虚拟机 当编写并运行一个Jav ...

  9. [转]Java虚拟机是如何判断变量类型的

    [原文]https://www.toutiao.com/i6591766777745637891/ 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java ...

随机推荐

  1. js判断网络连通性

    js判断网络连通性 if (window.navigator.onLine == true) {                         console.log("首次 -- 已连接 ...

  2. laravel5.5 使用alipay SDK报错Cannot redeclare Encrypt() (previously declared in ../vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:448)

    错误现象: 在laravel5.5 中,使用alipaySDK 报错: Cannot redeclare Encrypt() (previously declared in ../vendor/lar ...

  3. 使用redis,zookeeper实现分布式锁

    1.分布式锁 分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序.在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借 ...

  4. 解决:GitHub 远程端添加了 README.md 文件后,本地 push 代码时出现错误

    一.错误描述 To github.com:compassblog/PythonExercise.git ! [rejected] master -> master (fetch first) e ...

  5. spring copy中的一个很气人的问题(初学者渣渣的一些感受)

    把别人的工程直接导入使用,出现了各种bug......(细节决定成败,得到以下教训) 1.工程的第一步是检查版本和插件版本兼容问题.很重要 2.然后导入包,看依赖包是否版本太低,(前期做好这些,能让你 ...

  6. python AES加密解密 pycryptodome

    环境 pyhton3.6 博主为了解码 AES 用了1天的时间,安了各种包,然而走了很多坑,在这里给大家提供一个简便的方法 首先在命令行(推荐)  pip install Crypto 你会发现安装下 ...

  7. [CODEVS 1288]埃及分数

    Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数. 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的. 对于一个分数a/ ...

  8. [HAOI2016]找相同字符

    题目描述 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. 输入输出格式 输入格式: 两行,两个字符串s1,s2,长度分别为 ...

  9. [JSOI2008]最大数

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当前数列的长度. 2. 插入操作 ...

  10. BZOJ4926 皮皮妖的递推

    第二次乱出题.为了方便,以m=2为例,把原式变一下形,得f(i)+f(f(i-1))=i我们先无视掉那个-1,我们发现:诶,这个东西好像斐波那契数列.具体地,我们用f(n)表示把n用斐波那契数列进行拆 ...