19-动态类装载-1

第十九章 动态类装载

      

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

       内建于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://动态装载类的字节代码,当需要这个类定义时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值