java实现实时数据动态更新_Java程序动态更新的研究

摘要:软件在生命周期中会不断地发生演化,包含错误修正,功能拓展,架构调整等等。传统的更新方法会要求软件在更新过程中重新启动。但是,很多软件要求7乘24小时的不中断服务。动态更新技术能够满足这种需求。在应用动态更新技术之后,软件可以不停止服务,在适当的时候把旧版的程序替换成新版本的程序,同时,把旧版本的数据转换成新版本的数据。动态更新技术已经被证明在C语言软件和操作系统上是可行的,并且有多种方式用来实现动态更新。在现代的计算中,Java软件不断得到更广泛的应用,因此,实现Java软件的动态更新有着巨大的意义。针对Java软件,本文首先对它们的演化进行了分析,发现了Java软件在开发初期,可能发生大的架构变化,但是在一段时间的发展之后,架构会趋于稳定的规律。从而确认对Java软件应用动态更新是可行的。另外,Java语言作为一种托管语言,在动态更新技术的应用上有一些优势,比如在进行方法替换时不会增加开销;而Java语言规范要求Java程序在进行方法调用时为每一个调用创建栈帧,为动态更新技术进行线程跟踪提供了方便而规范的方法。在调研了几种动态更新技术算法后,本文提出了新的“按线程进行更新的双向写穿同步”算法。相对于现有的“在安全点进行更新”和“按函数进行更新的双向写穿同步”的算法,这种更新算法确保同一个线程访问的数据类型和调用的方法都属于同一个版本;在更新过程中,线程只需要关注自身的状态,到达了可以进行更新的位置,就对自己进行更新。而传统的两种更新算法,在寻找更新时机时都要进行线程通信。因此,这个新的更新算法更加适合多线程程序的模型。本文通过两种方式实现了这种更新算法:1、修改Java虚拟机以提供动态更新的支持;2、不修改Java虚拟机,在JVMTI接口上实现。修改Java虚拟机因为可以访问虚拟机内部信息,实现比较容易;而在JVMTI上实现有更好的可移植性和可拓展性。论文分别介绍了这两种实现,以及在JVMTI接口上实现Caprice过程中遇到的问题,和相应的解决方案。并且通过实验证实了Caprice动态更新框架的可行性。最后,本文对Caprice和其他动态更新技术进行了比较,并且根据实验中发现的问题,提出了Caprice可行的改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值