浅谈Java程序动态更新技术分析

来源 :电脑迷·上旬刊 | 被引量 : 0次 | 上传用户:mulan0924
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文从高效的动态软件更新实现机制、自动化的运行时对象状态转换方法及动态更新错误自动恢复技术H个方面系统研究了Java程序动态更新支撑技术,并在工业级的Java虚拟化上实现了上述技术,得到一个高效、易用、可靠的Java程序动态软件更新。
  关键词: 动态软件;软件更新
  1 动态软件更新
  早期的动态更新系统的技术原理,给出了用于刻画动态软件更新技术的需求,即动态更新不需要修改过多的运行时软件实体、对某一模块的动态更新不需要同时停止整个系统、某一模块的动态更新需要对其他模块或用户透明。事实上,动态软件更新之根本在于软件模块化的本质,而技术上来说源自于动态链接技术,及大量的间接访问技术。实际上,送种将更新应用在相对较小粒度的运行时模块(例如对象、方法)而不是运行中的整个系统有显而易见的好处,凸显动态更新技术相比于传统基于停止再重启的更新模式的优势。从模块化的软件来看,动态软件更新技术面临个通用的技术问题。如何在更新某一模块的同时保持对其他模块的引用透明,如何对一个模块进行运行时状态转换,如何在多个模块需要更新时保障不同模块更新之间的依赖。动态软件更新的基本问题是对动态软件的理解,即运行中的软件形态。不同的运行时软件形态有其自身的困难和挑战,继而同样有着与之相匹配的更新技术。现有工作主要涵盖程序(代码)、组件系统、软件模型、开发框架、软件体系结构、操作系统、分布式系统、嵌入式系统、实时系统,对应的动态更新粒度有运行时的找中活动方法、堆区对象、组件、系统调用、节点等。因此,本节主要按照软件的运行时形态来探讨动态软件更新相关技术,即先通过介绍不同软件形态的特性,再讨论与之匹配的运行时更新和更新支撑技术。考虑到动态更新系统自身也是一种软件,因此围绕其有相关的传统软件工程需要研究的问题,例如,软件测试、安全、形式化和验证。这些技术由于并不与如何实现一个动态软件更新系统相关,因此我们不在込一节深入讨论。
  1.1程序动态更新
  程序是一种最广泛的软件形态。在当前存储程序结构下,运行中程序有相对固定的底层形态,即机器指令所操纵的内存中的数据。但是,不同程序设计语言分别有不同的高层抽象,例如面向过程程序中的过程,面向对象程序中的对象等。早期的程序动态更新技术主要关注如何为程序的运行时环境引入动态的更新的能力,大多集中讨论如何设计一个动态更新系统,提高动态更新的灵活性。
  1.2动态软件更新
  灵活性,也就是支持的更新类型的多少。由于依赖于早期的程序运行时环境、编译器,因此一些早期工作在现代的生产环境中变的不适用。此外,这些早期工作尚未能关注于一些实用性技术需求(例如性能),但實际上这些工作蕴含的有关动态软件更新的设计思想至今仍然用于指导现代动态软件更新系统的设计和实现。从技术实现上来讲,程序动态更新主要利用一些程序分析工具或者编译器对被更新的程序的源代码或者二进制文件进行插植达到控制程序执行和应用动态更新能力。动态更新技术一般不能自动保障更新的正确性口,所—般需要程序员参与准备更新过程中的运行时状态转换,开发相应的动态更新补下。因此,绝大部分既有工作都专注于如何自动的保障类型安全口。基于程序代码层插粧的动态更新系统需要在更新前对原程序的源码或者二进制文件进行修改。具体来说,这些动态更新系统需要在程序一开始执行时插入一些检测更新请求、触发动态更新的代码。此外,对于堆区对象更新,由于没有垃圾回收等技术的支持,送些动态更新要求用户实现对需要被更新的堆区对象的检测,对新版本对象空间的重分配等问题,因此给动态补了开发者带来额外的动态更新准备困难。基于程序代巧层插粧的动态更新系统与基于特定编程模型动态更新系统一个不同之处在于前者不需要开发者在开发阶段考虑动态软件更新,因此可适用于历史遗留程序,而后者需要开发者在设计、开发阶段就要考虑动态更新,过早的为系统引入复杂性。
  2 分析的高效延时程序动态更新
  基于类型分析的高效延时动态更新实施机制:针对既有工作无法同时保障低更新中断时间和低额外开销的不足,我们提出了一种基于类型分析的高效延时动态更新实施机制。该机制通过采用一种延时更新方式,将堆区对象的更新推迟到更新中断后的访问时,在不损失安全性、灵活性、及时性的前提下,有效地保障了低更新中断时间。同时,Java程小结序设计语言的静态类型特性和面向对象特性为基础,该机制通过精确的类型分析技术,大量消除由延时更新引入的程序执行过程中的更新相关操作,有效降低了系统运行时的额外开销,最终达到实现高效的Java程序动态更新的目标。
  3 Java程序动态更新
  Java程序的基本组成单元是类,一个类的类文件中定义了该类所继承的父类、实现的接口、创建的对象所包含的域和方法等信息。Java程序运行在Java虚拟机之中。当Java程序被Java虚拟机加载执行后,送些类文件中的信息会被转换成一系列元数据。这些元数据一般存储在特定的称之为元数据空间内存区域,为了叙述方便,本文用代码区来指代元数据空间。元数据定义了一个类在运行时的类型,用于指导程序执行过程中在堆区动态地创建该类型的对象。我们在动态更新过程中一般将运行中的Java程序的状态抽象地概括为由代码区、找区和堆区组成,在更新时只考虑对运行时状态中的代码区的元数据、找区的方法峽及堆区的对象进行更新。动态软件更新需要对程序的运行时状态进行修改。基于修改Java虚拟机的动态更新系统一般来说能够有效实现对运行时状态的修改,支持较多的更新类型,运行时性能高,无明显额外开销,与当前的软件系统集成较为容易。基于Java语言较好的向下兼容性,送些系统可同样较好支持历史遗留程序化。
  参考文献:
  [1]周志远,张大方,缪力.对Java并发程序进行模型检测[J].计算机工程与设计,2012(02).
  [2]王艳臣,李必信,戴君.基于扩展同步序列的Java多线程程序可达性测试方法[J].东南大学学报(自然科学版),2013(06).
  [3]华卫中,赵春云.Java线程的深入探讨[J].计算机系统应用,2012(07).
  [4]唐建清,邹国霞.操作系统中“阅览室”问题的JAVA实现[J].桂林航天工业高等专科学校学报,2013(04).
  [5]中国互联网信息中也Technicalreport,第38次中圉互联网络发展状况统计报告,2016.
其他文献
【本刊讯】1月8日,安徽省安全技术防范行业协会第三次会员代表大会在合肥召开,安徽省公安厅王静副厅长,省民政厅王世刚处长,协会范厚本副理事长、江燕秘书长等领导出席了会议
华阳港座落在安徽省望江县华阳镇,地处长江北岸,系华阳河入江处。溯江而上99公里至江西省九江市,顺江而下65公里至安庆市,是皖西南地区重要的商品集散地和物资中转港口。一、
利其器,善其事rn走进花园式的佳乐科技园,一切井然有序.rn广场上国旗和司旗随风飘扬,格外醒目.一棵棵芒果树,枝繁叶茂,负责接待的工作人员小郑告诉记者,它能吸收二氧化碳,誉
建设工程的质量,与人民群众生命安全密切相关。因此,工程质监人员必须牢牢把握质量是工程建设的生命这一主题,忠实地承担起工程质量“守护人”的神圣职责。建设工程实行备案
摘要:在大数据时代背景下,随着信息技术的创新发展与应用,人们对虚拟机网络性能提出了更高的要求,加强虚拟机网络性能优化的研究,增强用户体验效果成为虚拟机发展的必然趋势。基于此,以虚拟机网络性能优化为研究对象,从虚拟机网络性能测评指标出发,依托云计算机技术,进行虚拟机硬件与软件层面的优化。测试表明所设计的虚拟机优化方案可有效提升虚拟机网络性能。  关键词:虚拟机;网络性能;性能优化  引言:虚拟化技术
本文对高清视频监控系统进行了全面分析,阐述了高清视频的采集、编码及应用,对高清视频的发展和应用前景进行了展望。 This article has carried on a comprehensive analys
近年来,以柴油机作为动力的装卸机械在我国港口货物装卸中发挥了相当重要的作用。柴油机燃油系是柴油机的重要组成部分。它一般由喷油泵、调速器、输油泵、提前器、高压油管
摘要:社会经济的快速发展,推动了计算机网络技术的不断进步,当前,计算机数据库技术应用已经渗透到了各行各业,对于行业发展水平的提升起到了巨大的促进作用。计算机数据库技术的应用,主要是通过建立数据管理系统,针对所接受的数据信息进行分类管理,从而保障数据信息的安全性及应用可行性。本文通过对计算机数据库技术在信息管理中的应用进行分析,以期更好的满足信息管理需求。  关键词:计算机数据库技术;信息管理;应用
对99mT c-DM SA肾皮质显像对急性肾盂肾炎的早期诊断探讨如下。1对象和方法1.1对象患者61例,其中有明显的上尿路感染临床症状及血白细胞增加者且临床拟诊为急性肾盂肾炎者30
在电力系统中,因三相变压器的并联运行以及继电保护接线都需要知道变压器的连接组别,因此在变压器出厂、交接和绕组大修后都应测定绕组的连接组别;当计算和分析三相电路时,必