CN101174217A - Java程序可动态更新化实现方法 - Google Patents
Java程序可动态更新化实现方法 Download PDFInfo
- Publication number
- CN101174217A CN101174217A CNA2007101707679A CN200710170767A CN101174217A CN 101174217 A CN101174217 A CN 101174217A CN A2007101707679 A CNA2007101707679 A CN A2007101707679A CN 200710170767 A CN200710170767 A CN 200710170767A CN 101174217 A CN101174217 A CN 101174217A
- Authority
- CN
- China
- Prior art keywords
- class
- program
- java
- update
- definition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种计算机技术领域的Java程序可动态更新化实现方法,首先,对被动态更新程序中需要动态更新的类定义进行改造,增加更新支持方法,参数为类装载器,该方法用于实现对类对象的子对象逐个判断;对动态更新程序中更新类定义进行修改,增加更新方法,用于实现对该新类对象下的变量进行初始化,该方法的输入参数为类装载器和旧对象;再次,利用Java反射机制对被更新程序的部分方法调用、数据域存储以及对象建立进行修改,从而实现程序的运行恢复;最后,对主类增加更新支持方法并在主方法循环中增加更新检测点。本发明以避免需要采用停机、更新、重新启动的软件更新,避免由于停机中断服务造成的损失。
Description
技术领域
本发明涉及的是一种计算机技术领域的方法,具体是一种Java程序可动态更新化实现方法。
背景技术
随着计算机在社会中的运用越来越广泛,人类各种社会活动对其依赖也就越来越紧密,许多软件系统需要为客户提供不间断服务,软件在线演化技术因此成为当今软件维护领域的一个重要课题,能否提供不间断服务也就成为人们衡量软件系统的一项重要指标。对一些公司来说,系统中断是不允许的,或者会引起管理代价的显著提高。金融数据处理系统则会因为服务中断遭受巨大的经济损失,一些需要提供高可靠服务的系统会因此使名誉和经济受损,如远程通信系统、在线服务系统,网格计算和面向服务的计算等;再如飞船轨道控制软件、生命支持系统则更不能随意中断服务。因此,需要系统具有在保证不中断服务的前提下更新系统功能的能力。软件的动态更新技术就是借助系统的支持或者合理的软件设计来实现这一目的。
近年来,Java语言得到越来越广泛的重视,不但被应用到桌面系统,而且在服务器和嵌入式系统中也得到广泛的应用。该语言具有跨平台的优点,能够实现一次编译,随处运行制。因此有必要提出一种技术能够不改变Java运行环境和Java语言,而又能够做到在运行中的程序动态更新,保证其24/7/365不间断运行,以指导Java程序的可动态更新改造。
经对现有技术的文献检索发现,Malabarba S等在《Proceedings of theEuropean Conference on Object-Oriented Programming》2000年第337到361页上发表的“Runtime support for type-safe dynamic Java classes”,该文中提出为了保证进行动态类型替换后程序还是安全的,如果仅仅使用java自带的类型装载容易产生两种问题:1)原来的程序中包含了对新类中不存在的方法、数据的使用;2)由于新类的继承关系可能产生改变,这必然会对使用该类父类的一些程序、类型等产生影响,并且这类错误比较不容易发现。为解决这两个问题总的来说有两种方法,一是修改java语言,二是修改java虚拟机。文中通过扩展Java类装载机制的动态更新方法,其不足之处在于文中仅仅指出可以通过扩展类装载机制实现,但是并没有对更新中如何实现新旧类对象转换,如何对程序进行改造等问题提出可行的解决方法。
发明内容
本发明针对上述技术的不足,提供了一种Java程序可动态更新化实现方法,使其能够用于指导编写可动态更新的Java程序,并且能够提供程序运行期间的更新、升级操作。本发明可以避免需要采用停机、更新、重新启动的软件更新,避免由于停机中断服务造成的损失,从而达到降低运行、维护成本的目的。
本发明是通过以下技术方案实现的,本发明包括以下步骤:
首先,对被动态更新程序中需要动态更新的类定义进行改造,增加更新支持方法,参数为类装载器。该方法用于实现对类对象的子对象逐个判断:对于每个子对象,如果需要更新,则首先临时存储旧对象,然后创建新对象给变量赋值,最后以旧对象和类装载器为参数调用其新对象的更新方法;否则调用原对象的更新支持方法,参数为类装载器;
所述的对被动态更新程序中需要动态更新的类定义进行改造,是指:被动态更新程序是指正在运行的软件对应的程序代码,被动态更新程序中需要动态更新的类定义是指旧程序中一些需要在运行中进行修改的类的定义,为了使这些类能够被动态更新,需要对其进行修改,增加更新支持方法。
所述的新对象的更新方法,是指:相对于旧程序中的类定义,用于替换旧类定义的类定义称为新类定义,对象是类的实例,其更新方法是为了实现新旧对象之间的状态转换而定义的。
所述的原对象的更新支持方法,是指:相对于新程序中定义而言,原程序中的类定义实例是原对象,为了能够让原对象支持动态更新操作,所以需要向其定义中增加更新支持方法以实现状态转换和子对象替换等功能。
其次,对动态更新程序中更新类定义进行修改,增加更新方法,主要用于实现对该新类对象下的变量进行初始化,该方法的输入参数为类装载器和旧对象。对每一个子对象做如下操作:如果子对象需要更新,那么给子对象赋值为新类定义的对象,并以旧对象的对应子对象和类装载器为参数调用新对象的更新方法,否则直接把原来对象赋值给新变量;
所述的对动态更新程序中更新类定义进行修改,是指:动态更新过程中需要利用新程序替换旧程序,新程序中进行替换工作的类需要进行修改,主要是增加更新支持方法以支持更新操作。
再次,需要利用Java反射机制对被更新程序的部分方法调用、数据域存储以及对象建立进行修改,以便于程序能够选择具体的自定义类装载器实现对象建立功能,从而实现程序的有效、正确的运行恢复。
所述动态更新,是指程序在运行过程中实现新旧版本的转换,由低版本程序过渡到高版本程序,且在整个操作过程中不允许停止运行。
所述被动态更新程序,是指正在运行的旧版本程序,该程序在运行的过程中可能会由于一些错误、效率提高等要求而产生程序修改、升级的要求。
所述更新支持方法,是指在被动态更新程序中,为了能够支持程序的动态更新,往需要动态更新的类中增加一个方法定义,该方法用于分析现有对象的类定义情况,根据是否被更新作出保持原对象,或者利用新类定义重新定义的决定。如果在类定义中不存在该方法,那么无法实现程序的动态更新操作。
所述更新程序,是指用于替换旧程序的新程序,该程序对旧程序中一些问题,包括错误的改进、效率的提高、功能的扩展等进行改进,从而达到不断完善的程序的目的。
所述Java反射机制,是指允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性的机制。反射机制是Java被视为动态语言的一个关键性质。这个机制允许程序在运行时通过反射机制的应用程序接口取得任何一个已知名称的类的内部信息,包括其修饰,超类,实现借口定义,数据域和方法的所有信息,并可于运行时改变数据域内容或唤起指定的方法。
所述类装载器,是指用来把类装载进Java虚拟机的Java类对象。Java虚拟机规范定义了两种类型的类装载器:启动类装载器和用户自定义装载器。Java虚拟机的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块,而不影响系统其他功能模块的正常运行。
最后,对主类增加更新支持方法并在主方法循环中增加更新检测点。
所述主方法,是指Java语言中具有特殊的作用的方法,是一个Java应用程序执行的起点,又是Java应用程序中唯一与用户交换信息的窗口,同时又是Java应用程序所有工作完成的聚集地。该方法定义为公有静态的。
所述主类,是指在Java语言的应用程序中都有一个主方法,主方法也同其它的方法一样必须在一个类中定义,并因此使定义了主方法的类被称为主类。Java语言中的主方法与主类无固定关系。如果一个程序中有多个类,可以把主方法放在任意一个类内,而不影响运行的结果。这里默认主方法就是在主类中。
所述更新检测点,是指一些有利于更新的时机,该点处运行中的程序具有较少方法调用,较少堆栈变量等等。
本发明的提出是完全基于程序级定义的,没有涉及Java运行环境方面的修改,因此不需要运行系统的支持,所以可以利用到所有的Java程序中,保证了Java一次编译,随处运行的性质,即:Java的源程序在编译时,并不直接编译成特定的机器语言程序,而是编译成与系统无关的“字节码”,由Java虚拟机来执行,JVM使得Java程序可以“一次编译,随处运行”。
本发明通过利用自定义类装载机制,确保了系统可以根据类装载器的不同可以装载同一类的多个版本,并使它们共存,以确保新旧线程之间不会相互干扰。同时通过对更新方法的实际定义,可以根据实际情况来确定对已存在线程或对象的处理,保证了现有程序运用的连续性。本发明可以实现程序动态更新的透明性。可以通过自定义类装载机制实现Java类的远程下载,自动查询等功能,避免了需要用户参与复杂的动态更新过程。这对于一些复杂系统而言尤为重要。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例采用的Java语言程序作为基本背景,整个应用基于一个客户/服务器模式软件。对客户端保持对服务器端的调用不中断,同时可以有多个客户端不断建立新的连接。服务器端软件不断查询某一端口,当接受到访问请求时则建立线程为其服务。为能实现服务在更新过程中服务的连续性,确定需动态更新的类主要有服务线程类CompThread(自定义类名)和线程类中一个对象的类定义Compare(自定义类名)。本次更新目标为类CompThread,则服务器软件需要按照本发明的实现方法进行修改,具体的修改步骤如下:
1.增加更新支持方法到被动态更新类CompThread。
更新支持方法需要在被动态更新程序中加以定义。该方法的输入参数为类装载器,在该方法中,需要对所有该对象中包含的对象{Obj_1,Obj_2,…}逐个执行如下操作:判断对象Obj_i是否需要动态更新,如果该对象类文件最近被修改过,需要进行动态更新,那么将会利用新的类定义和类装载器创建一个新的对象Obj_i′,临时存储旧对象,并用把原变量指向新对象,然后以旧对象为参数调用新对象Obj_i′的更新方法;如果该类不需要进行动态更新,那么直接调用该类对象的更新支持方法,参数为类装载器。在运行中的程序,需要创建一个类名和类装载器的对应关系,之后每一次动态更新都需要对这个映射关系进行维护,以便能够利用最新的类装载器装载特定的类。
所述类文件最近被修改过,是指根据类文件最近修改时间和所记录修改时间相对比,如果该时间更新,那么说明该类最近被修改过。
2.CompThread的新定义中增加更新方法。
在CompThread的新定义中需要增加更新方法。该方法的输入参数为类装载器及旧CompThread类对象。在该方法中,对可能更新的子对象类Compare进行如下操作:首先判断子对象是否需要动态更新,如果该对象类文件最近被修改过,需要进行动态更新,那么将会利用新的类定义和类装载器创建一个新的子对象替换旧子对象;然后以旧子对象为参数调用新子对象的更新方法;如果该类不需要进行动态更新,那么直接调用该类子对象的更新支持方法,参数为类装载器。如果更新程序需要支持被动态更新操作,那么也必须增加更新支持方法,作为以后动态更新操作的基础。其定义方法同1所述。
所述子对象是针对包含它的对象而言,如果对象A中包含对象A1、A2,那么对包含在A中的对象都可以称为是其子对象。
3.主类程序实现中增加更新支持方法。
在主类中,只能实现对其包含的对象变量进行动态更新,而无法实现主对象的替换操作。主类中的更新支持方法和一般类中的该方法定义不同。主类更新支持方法无输入参数,其实现如下:检查主类定义是否需要更新操作,如果需要,则创建一个新的类装载器,该类装载器将将被用作本次动态更新操作的新类装载器;然后,更新支持方法对主类中的所有子对象逐个进行如下操作,本例中只有CompThread类。首先判断子对象的类定义是否已经作了修改,如果是,则利用临时变量存储该子对象,调用利用新类装载器装载该类定义,并且根据新定义创建一个该子对象并赋值给对应变量,然后调用该子对象的更新方法,参数为旧的子对象和新创建的类装载器;如果子对象类定义未作修改,那么只需要调用该子对象的更新支持方法,并以新创建的类装载器作为参数。
所述主方法,是指Java语言中具有特殊的作用的方法,是一个Java应用程序执行的起点,又是Java应用程序中唯一与用户交换信息的窗口,同时又是Java应用程序所有工作完成的聚集地。该方法定义为公有静态的。
所述主类,是指在Java语言的应用程序中都有一个主方法,主方法也同其它的方法一样必须在一个类中定义,并因此使定义了主方法的类被称为主类。Java语言中的主方法与主类无固定关系。如果一个程序中有多个类,可以把主方法放在任意一个类内,而不影响运行的结果。这里默认主方法就是在主类中。
4.修改被更新程序的方法调用、数据域存储以及对象建立方式。
根据Java的装载机制,缺省情况下用的是父类的装载器,为了能在一个程序中装载同一类的不同版本定义,就需要利用不同的类装载器。为此,对于新类对象的定义用newInstance方法实现。由于同样的原因,对于程序中新对象的方法调用需要用接口的方法或者用Java的invoke方法来调用。本例中,主要修改在主类中对线程对象的创建和调用、CompThread类中Compare类对象的创建和调用方法。
所述newInstance方法,是指Java的一种对象创建方式。它和new创建对象的区别在于它们创建对象的方式不一样,newInstance是使用类加载机制。这种方式的对象创建主要是考虑到软件的可伸缩、可扩展和可重用等软件设计思想。
所述invoke方法,是指使用反射来调用类的方法,是Java反射机制的重要组成,该方法是类java.lang.reflect.Method中的方法。java.lang.reflect.Method是Java中一类名。
5.更新时机的选择。
对于动态更新操作时机的选择,主要考虑对更新操作得影响上。通过选择合理得更新时机,降低更新操作出错的可能性。一般情况下更新时机都是选在静止点处进行动态,在该时刻,被调用的函数较少,堆栈中有比较少或者没有数据,从程序的总体上看是处于静止状态。对动态更新的需求的检查是在主函数中,所以更新事务也是从主类中的主函数开始。本例中通过在接收到客户访问请求后进行动态更新检查和操作,以尽量减少动态更新受到的干扰。
所述主函数的事件处理循环,是指主函数总是不断接受外部请求,然后根据具体请求作出相应的处理,这个问询、接受、处理的循环过程就是主函数的事件处理循环。
本实施例的实施效果表现为:启动服务器程序后,可以通过客户端在远程对其进行访问,提出服务请求,同时多个客户端可以同时访问。在运行过程中,利用新的主类和CompThread类文件替换旧文件,然后再客户端请求访问时,服务器软件自动加载新的类定义,并生成新线程对象接收客户端请求。从客户端上看则表现为服务持续运行,但是得到的结果是由新类对象计算得到的。也实际上实现了服务器软件的动态更新。
Claims (10)
1.一种Java程序可动态更新化实现方法,其特征在于,包括如下步骤:
①对被动态更新程序中需要动态更新的类定义进行改造,增加更新支持方法,参数为类装载器,该方法用于实现对类对象的子对象逐个判断:
对于每个子对象,如果需要更新,则首先临时存储旧对象,然后创建新对象给变量赋值,最后以旧对象和类装载器为参数调用其新对象的更新方法,否则调用原对象的更新支持方法,参数为类装载器;
②对动态更新程序中更新类定义进行修改,增加更新方法,用于实现对该新类对象下的变量进行初始化,该方法的输入参数为类装载器和旧对象,对每一个子对象做如下操作:
如果子对象需要更新,那么给子对象赋值为新类定义的对象,并以旧对象的对应子对象和类装载器为参数调用新对象的更新方法,否则直接把原来对象赋值给新变量;
③利用Java反射机制对被更新程序的部分方法调用、数据域存储以及对象建立进行修改,以便于程序能够选择具体的自定义类装载器实现对象建立功能,从而实现程序的运行恢复;
④对主类增加更新支持方法并在主方法循环中增加更新检测点。
2.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述的对被动态更新程序中需要动态更新的类定义进行改造,是指:被动态更新程序是指正在运行的软件对应的程序代码,被动态更新程序中需要动态更新的类定义是指旧程序中一些需要在运行中进行修改的类的定义,为了使这些类能够被动态更新,需要对其进行修改,增加更新支持方法。
3.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述的新对象的更新方法,是指:相对于旧程序中的类定义,用于替换旧类定义的类定义称为新类定义,对象是类的实例,其更新方法是实现新旧对象之间的状态转换而定义。
4.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述的原对象的更新支持方法,是指:相对于新程序中定义而言,原程序中的类定义实例是原对象,为了能够让原对象支持动态更新操作,需要向其定义中增加更新支持方法以实现状态转换和子对象替换功能。
5.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述的对动态更新程序中更新类定义进行修改,是指:动态更新过程中需要利用新程序替换旧程序,新程序中进行替换工作的类需要进行修改,主要是增加更新支持方法以支持更新操作。
6.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述更新支持方法,是指在被动态更新程序中,为了能够支持程序的动态更新,往需要动态更新的类中增加一个方法定义,该方法用于分析现有对象的类定义情况,根据是否被更新作出保持原对象,或者利用新类定义重新定义的决定。如果在类定义中不存在该方法,那么无法实现程序的动态更新操作。
7.根据权利要求1或2或6所述的Java程序可动态更新化实现方法,其特征是,所述动态更新,是指程序在运行过程中实现新旧版本的转换,由低版本程序过渡到高版本程序,且在整个操作过程中不允许停止运行;
所述被动态更新程序,是指正在运行的旧版本程序,该程序在运行的过程中可能会由于一些错误、效率提高要求而产生程序修改、升级的要求;
所述更新程序,是指用于替换旧程序的新程序,该程序对旧程序中一些问题,包括错误的改进、效率的提高、功能的扩展进行改进,从而不断的完善程序。
8.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述Java反射机制,是指允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性的机制,反射机制是Java被视为动态语言的一个关键性质,这个机制允许程序在运行时通过反射机制的应用程序接口取得任何一个已知名称的类的内部信息,包括其修饰、超类、实现借口定义、数据域和方法的所有信息,并能于运行时改变数据域内容或唤起指定的方法。
9.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述类装载器,是指用来把类装载进Java虚拟机的Java类对象,Java虚拟机规范定义了两种类型的类装载器:启动类装载器和用户自定义装载器,Java虚拟机的类动态装载技术在运行时刻动态地加载或者替换系统的某些功能模块,而不影响系统其他功能模块的正常运行。
10.根据权利要求1所述的Java程序可动态更新化实现方法,其特征是,所述主方法,是指Java语言中具有特殊的作用的方法,是一个Java应用程序执行的起点,又是Java应用程序中唯一与用户交换信息的窗口,同时又是Java应用程序所有工作完成的聚集地,该方法定义为公有静态的;
所述主类,是指在Java语言的应用程序中都有一个主方法,主方法也同其它的方法一样必须在一个类中定义,并因此使定义了主方法的类被称为主类。Java语言中的主方法与主类无固定关系,如果一个程序中有多个类,把主方法放在任意一个类内,而不影响运行的结果,这里默认主方法就是在主类中;
所述更新检测点,是指一些有利于更新的时机,该点处运行中的程序具有较少方法调用、较少堆栈变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101707679A CN100489778C (zh) | 2007-11-22 | 2007-11-22 | Java程序可动态更新化实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101707679A CN100489778C (zh) | 2007-11-22 | 2007-11-22 | Java程序可动态更新化实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101174217A true CN101174217A (zh) | 2008-05-07 |
CN100489778C CN100489778C (zh) | 2009-05-20 |
Family
ID=39422744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101707679A Expired - Fee Related CN100489778C (zh) | 2007-11-22 | 2007-11-22 | Java程序可动态更新化实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100489778C (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963914A (zh) * | 2010-11-12 | 2011-02-02 | 南京大学 | 一种基于字节码文件重构的Java类在线更新方法 |
CN102141919A (zh) * | 2010-01-28 | 2011-08-03 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN101393528B (zh) * | 2008-10-30 | 2011-11-16 | 上海交通大学 | 软件动态更新中确定实例对象转换次序的方法及系统 |
CN102486736A (zh) * | 2010-12-06 | 2012-06-06 | 深圳市金蝶中间件有限公司 | 程序自动更新方法及更新程序生成装置 |
CN102495757A (zh) * | 2011-11-15 | 2012-06-13 | 深圳市融创天下科技股份有限公司 | 一种适用于java远程调用对象传输的优化方法、装置 |
CN102508667A (zh) * | 2011-11-11 | 2012-06-20 | 迈普通信技术股份有限公司 | 一种使用第三方的JavaScript库的方法和装置 |
CN102880490A (zh) * | 2012-09-19 | 2013-01-16 | 南京大学 | 一种基于Java虚拟机的延时动态对象更新方法 |
CN103377097A (zh) * | 2012-04-24 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种处理客户端软件发生闪退问题的方法及装置 |
CN104199642A (zh) * | 2014-08-05 | 2014-12-10 | 青岛海信移动通信技术股份有限公司 | 一种在目标平台运行原平台代码的实现方法及装置 |
CN104778061A (zh) * | 2015-04-16 | 2015-07-15 | 四川九洲空管科技有限责任公司 | 一种分布式系统动态参数发布方法 |
CN104881461A (zh) * | 2015-05-22 | 2015-09-02 | 国云科技股份有限公司 | 一种快速数据保存方法 |
CN107025105A (zh) * | 2016-09-23 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 代码生成方法及装置 |
CN107508846A (zh) * | 2016-06-14 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 应用客户端的更新方法和系统及终端设备 |
CN108228208A (zh) * | 2016-12-22 | 2018-06-29 | 北京神州泰岳软件股份有限公司 | 一种java应用程序的动态更新方法和装置 |
CN108376064A (zh) * | 2016-11-24 | 2018-08-07 | 阿里巴巴集团控股有限公司 | 规则引擎系统及规则引擎的相关方法 |
CN108874418A (zh) * | 2018-05-23 | 2018-11-23 | 北京五八信息技术有限公司 | Ui组件的更新方法、装置、终端及计算机可读存储介质 |
JP2019032839A (ja) * | 2017-08-08 | 2019-02-28 | フィッシャー−ローズマウント システムズ,インコーポレイテッド | モジュールクラスの制御されたロールアウト |
CN109976794A (zh) * | 2019-03-31 | 2019-07-05 | 联想(北京)有限公司 | 更新方法、更新系统以及电子设备 |
CN110427198A (zh) * | 2018-04-27 | 2019-11-08 | 中兴通讯股份有限公司 | 应用程序的热修复方法、装置及终端、存储介质 |
CN110532037A (zh) * | 2019-08-16 | 2019-12-03 | 杭州云徙科技有限公司 | 一种Java运行方法、系统及终端 |
CN113656057A (zh) * | 2021-08-26 | 2021-11-16 | 深圳市天天来玩科技有限公司 | 一种java文件更新方法、网络设备和存储介质 |
CN115421859A (zh) * | 2022-09-13 | 2022-12-02 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
-
2007
- 2007-11-22 CN CNB2007101707679A patent/CN100489778C/zh not_active Expired - Fee Related
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101393528B (zh) * | 2008-10-30 | 2011-11-16 | 上海交通大学 | 软件动态更新中确定实例对象转换次序的方法及系统 |
CN102141919A (zh) * | 2010-01-28 | 2011-08-03 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN102141919B (zh) * | 2010-01-28 | 2013-03-13 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN101963914B (zh) * | 2010-11-12 | 2013-02-27 | 南京大学 | 一种基于字节码文件重构的Java类在线更新方法 |
CN101963914A (zh) * | 2010-11-12 | 2011-02-02 | 南京大学 | 一种基于字节码文件重构的Java类在线更新方法 |
CN102486736A (zh) * | 2010-12-06 | 2012-06-06 | 深圳市金蝶中间件有限公司 | 程序自动更新方法及更新程序生成装置 |
CN102486736B (zh) * | 2010-12-06 | 2015-02-11 | 深圳市金蝶中间件有限公司 | 程序自动更新方法及更新程序生成装置 |
CN102508667B (zh) * | 2011-11-11 | 2014-06-18 | 迈普通信技术股份有限公司 | 一种使用第三方的JavaScript库的方法和装置 |
CN102508667A (zh) * | 2011-11-11 | 2012-06-20 | 迈普通信技术股份有限公司 | 一种使用第三方的JavaScript库的方法和装置 |
CN102495757A (zh) * | 2011-11-15 | 2012-06-13 | 深圳市融创天下科技股份有限公司 | 一种适用于java远程调用对象传输的优化方法、装置 |
CN103377097A (zh) * | 2012-04-24 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种处理客户端软件发生闪退问题的方法及装置 |
CN103377097B (zh) * | 2012-04-24 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种处理客户端软件发生闪退问题的方法及装置 |
CN102880490A (zh) * | 2012-09-19 | 2013-01-16 | 南京大学 | 一种基于Java虚拟机的延时动态对象更新方法 |
CN102880490B (zh) * | 2012-09-19 | 2016-03-02 | 南京大学 | 一种基于Java虚拟机的延时动态对象更新方法 |
CN104199642B (zh) * | 2014-08-05 | 2018-05-01 | 青岛海信移动通信技术股份有限公司 | 一种在目标平台运行原平台代码的实现方法及装置 |
CN104199642A (zh) * | 2014-08-05 | 2014-12-10 | 青岛海信移动通信技术股份有限公司 | 一种在目标平台运行原平台代码的实现方法及装置 |
CN104778061A (zh) * | 2015-04-16 | 2015-07-15 | 四川九洲空管科技有限责任公司 | 一种分布式系统动态参数发布方法 |
CN104778061B (zh) * | 2015-04-16 | 2017-11-10 | 四川九洲空管科技有限责任公司 | 一种分布式系统动态参数发布方法 |
CN104881461A (zh) * | 2015-05-22 | 2015-09-02 | 国云科技股份有限公司 | 一种快速数据保存方法 |
CN107508846A (zh) * | 2016-06-14 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 应用客户端的更新方法和系统及终端设备 |
CN107025105A (zh) * | 2016-09-23 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 代码生成方法及装置 |
CN107025105B (zh) * | 2016-09-23 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 代码生成方法及装置 |
CN108376064A (zh) * | 2016-11-24 | 2018-08-07 | 阿里巴巴集团控股有限公司 | 规则引擎系统及规则引擎的相关方法 |
CN108228208A (zh) * | 2016-12-22 | 2018-06-29 | 北京神州泰岳软件股份有限公司 | 一种java应用程序的动态更新方法和装置 |
JP2019032839A (ja) * | 2017-08-08 | 2019-02-28 | フィッシャー−ローズマウント システムズ,インコーポレイテッド | モジュールクラスの制御されたロールアウト |
CN110427198A (zh) * | 2018-04-27 | 2019-11-08 | 中兴通讯股份有限公司 | 应用程序的热修复方法、装置及终端、存储介质 |
CN108874418B (zh) * | 2018-05-23 | 2022-04-05 | 北京五八信息技术有限公司 | Ui组件的更新方法、装置、终端及计算机可读存储介质 |
CN108874418A (zh) * | 2018-05-23 | 2018-11-23 | 北京五八信息技术有限公司 | Ui组件的更新方法、装置、终端及计算机可读存储介质 |
CN109976794A (zh) * | 2019-03-31 | 2019-07-05 | 联想(北京)有限公司 | 更新方法、更新系统以及电子设备 |
CN109976794B (zh) * | 2019-03-31 | 2021-02-19 | 联想(北京)有限公司 | 更新方法、更新系统以及电子设备 |
CN110532037A (zh) * | 2019-08-16 | 2019-12-03 | 杭州云徙科技有限公司 | 一种Java运行方法、系统及终端 |
CN113656057A (zh) * | 2021-08-26 | 2021-11-16 | 深圳市天天来玩科技有限公司 | 一种java文件更新方法、网络设备和存储介质 |
CN115421859A (zh) * | 2022-09-13 | 2022-12-02 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
CN115421859B (zh) * | 2022-09-13 | 2024-02-13 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100489778C (zh) | 2009-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100489778C (zh) | Java程序可动态更新化实现方法 | |
Seifzadeh et al. | A survey of dynamic software updating | |
CN1989488B (zh) | 运行时系统的鲁棒共享 | |
CN101393528B (zh) | 软件动态更新中确定实例对象转换次序的方法及系统 | |
CN102279765A (zh) | 预编译托存托管代码 | |
Pukall et al. | JavAdaptor—Flexible runtime updates of Java applications | |
JP2013514569A (ja) | 静的に型付けされたクラスベースのオブジェクト指向ソフトウェアのノンブロッキング動的更新の方法、コンピュータ・プログラム製品、およびシステム | |
CN1989489A (zh) | 在运行时系统中共享对象 | |
CN1989486A (zh) | 在运行时系统中共享对象 | |
CN105022630A (zh) | 一种组件管理系统及组件管理方法 | |
CN102073525A (zh) | 基于Java平台的Web业务系统的动态升级方法及装置 | |
CN110362301B (zh) | 一种终端应用行为反射的处理方法 | |
Greenwood et al. | Using dynamic aspect-oriented programming to implement an autonomic system | |
CN107239313A (zh) | Spring应用服务的升级方法和存储介质 | |
CN108363612A (zh) | 基于类装载器实现的j2ee模块热部署及调用信息统计方法 | |
US20120222023A1 (en) | Automatic runtime dependency lookup | |
Previtali et al. | Dynamic updating of software systems based on aspects | |
CN110347448B (zh) | 一种构造终端应用行为的运行时模型的方法 | |
Kim et al. | Dynamic software updates for parallel high‐performance applications | |
Stadler et al. | Lazy continuations for Java virtual machines | |
CN100428151C (zh) | 大规模并发联机交易中基于版本的c/c++组件热插拔方法 | |
Miedes et al. | Dynamic software update | |
Bialek et al. | Partitioning of Java applications to support dynamic updates | |
US7703108B2 (en) | Native code isolation in a multi-tasking Java virtual machine | |
CN105393216B (zh) | 运行时内存调节 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090520 Termination date: 20111122 |