19-动态类装载-1

原创 2004年07月29日 16:20:00

第十九章 动态类装载

      

   部署一个分布式程序是比较困难的。每个运行部分程序的机器上都必须安装相应的部分程序。对一个本地网来说,只要多费一些时间到不是太难。但如果要部署到一个大范围的、经常需要更改的环境,那部署过程会变得十分的困难。

       内建于RMI的动态类装载技术,想要尝试着使这种部署变得简单一些。在本书中,我们讲述了建立一个鲁棒性强可扩展的分布式程序的绝大数基础知识。我们讲述了设计接口的原则;花费了很多时间讨论线程;测试一个分布式应用;甚至讨论了如何优化分布式垃圾收集。现在将对部署(二次部署)进行深层次的挖掘。

19.1、部署是很困难的

       假设我们将部署银行程序的最新版。我们需要做如下工作:

l         配置服务器

l         把存根类的类路径(以及其他相关的类,像套接字工厂和值对象)加到名字服务器的CLASSPATH中,这些可能会在名字服务器中实例化。

l         如果这已经不是第一次部署(相对于第一次部署),你需要重启名称服务,并重新注册所有的对象以除去名字服务JVM中已存在的对象。

l         在每一台客户机上安装并配置程序。这包括记录下目前不在用的机器(如目前没有装载或者机器拿去修理了),以便后来安装。

 

       比较一下小应用程序的部署过程:

l         配置服务器

l         编写包含APPLET标签的网页

 

       简言之,部署一个WEB程序无需修改客户端也无需修改名字服务。相反,当浏览器下载包含APPLET标签的WEB页面时,它同时也下载了所需的JAVA类文件用于运行小应用程序。这种部署方式不仅省时而且更不会出错。

       提示:对于以往情况,除了首次部署需要的时间和精力,你还需要考虑无法避免的部署错误。

 

------------多久你就需要再部署一次?--------------

有时,当我提到部署是如何如何的痛苦时,有人会说:“的确。但是多场时间你就需要重新部署?一年一次?”

这是个很好的问题。某些程序不需要经常部署。然而这个问题有点绕。为什么程序不经常部署的部分原因是因为部署太费时太难操作。如果能够使部署变得简单,程序将会更加频繁的更改和部署。

WEB程序就是个很好的例子。部署一个WEB程序,你只需在服务器上重新配置一下即可。而WEB程序是要经常部署的。

-------------------------------------------------

       然而,每次你需要修改或者重新部署程序时,这个问题会越来越突出。

       当然小应用程序有许多限制。因为每次运行时都需要下载字节码,所以它们必须尽量的小;因为浏览器可能使用老版的JVM,所以开发者不能使用最新的JAVA特征,像Swing GUI开发包。而且,因为浏览器有严格的安全要求,小应用程序打开套接字连接或者打开文件都是受限制的。

提示:这就是开发客户-服务器小应用程序的“即使浏览器已被很好的实现”缺陷。这个缺陷现在存在而且永远都存在,不管浏览器如何改进。除了这个缺陷之外,浏览器提供的JVM可能还是极其缓慢的、充满BUG的。

       好消息是RMI有一个有趣而且有用的技术,称为动态类装载,它尝试把这两个方式合在一起。它允许你建立独立的程序,至少部分独立,而且还有一个类似小应用程序的部署模式。就是说动态类装载允许RMI程序在运行时从http://或者ftp://动态装载类的字节代码,当需要这个类定义时。

Number类

本课程介绍java.lang.Number类 详细介绍了Number类的使用,格式化,精确计算等
  • 2017年02月06日 13:33

浅谈Java类型装载、连接与初始化

类型装载、连接与初始化Java虚拟机通过装载、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。其中装载就是把二进制形式的Java class文件读入Java虚拟机中去;连接把...
  • lincolnmi
  • lincolnmi
  • 2016-01-18 17:21:50
  • 1325

java类的装载

类的装载过程:1 类加载2 链接(验证-准备-解析)3 初始化首先是类加载过程:    先是获取类的二进制流,转到内存的方法区(放置类的元数据,类型,方法,形参类型,返回值地址。。。),在堆中生成对应...
  • qq_16414483
  • qq_16414483
  • 2018-03-16 21:38:28
  • 30

Java虚拟机类装载.doc

  • 2011年04月15日 19:31
  • 39KB
  • 下载

JVM java类的装载、链接、初始化

.java文件经过最初的编译成为.class字节码,成为机器识别的二进制语言。 .class文件由JVM解释成所对应不同的硬件平台操作系统能够执行的代码。 (编译器是与平台无关,编译生成的中间码...
  • Super_Anna
  • Super_Anna
  • 2016-07-10 15:43:31
  • 915

JVM 之 类的装载机制

看到网上有一道面试题:能不能装载自定义的 java.lang.String? 答案是否定的,我们能自定义一个java.lang.String,但是加载不进来。 我相信很多人在网上看到这样的答案“可以...
  • MakeContral
  • MakeContral
  • 2017-10-28 12:28:02
  • 240

java类装载

  • 2013年04月26日 17:24
  • 814KB
  • 下载

类装载器学习笔记

        java虚拟机(JVM)的类装载就是将包含在类文件中的字节码装载到java虚拟机里来,但是类装载器也不是原封不动的装载到java虚拟机,它是将(.class)文件中的内容转换成java...
  • wongda2008
  • wongda2008
  • 2006-08-25 20:21:00
  • 1764

Class Loading ---(类装载机制,开发者不得不知道的故事)

也许你认为Class Load是一个高级话题,不管怎样,作为开发者你还是要了解它。 本文基于最新得JDK5,然而将诉的内容却包含了最基本的原理,希望你能更加深入了解自己所使用得语言。  理解CLass...
  • totodo
  • totodo
  • 2005-01-28 13:15:00
  • 5764

Class装载系统

Class装载系统系统装载Class类型分为以下几个步骤: - 加载 - 验证 - 准备 - 解析 ClassLoader 热加载 自定义ClassLoader...
  • u010209217
  • u010209217
  • 2017-10-20 17:58:05
  • 102
收藏助手
不良信息举报
您举报文章:19-动态类装载-1
举报原因:
原因补充:

(最多只允许输入30个字)