Java程序動態(tài)更新技術(shù)研究
發(fā)布時間:2018-05-26 15:50
本文選題:動態(tài)軟件更新 + Java虛擬機(jī); 參考:《南京大學(xué)》2017年博士論文
【摘要】:軟件已無處不在,人們也日益依賴于軟件系統(tǒng)提供的不間斷服務(wù)。然而,軟件系統(tǒng)常需更新以修復(fù)缺陷、改進(jìn)性能和增加功能。傳統(tǒng)的軟件更新需要停止正在運行的軟件系統(tǒng),部署新版本并重啟運行。這種因軟件更新而導(dǎo)致的服務(wù)中斷可能會帶來諸多不便,甚至生命財產(chǎn)損失。動態(tài)軟件更新技術(shù)旨在不終止正在運行的系統(tǒng)而將其在線地升級到新版本。當(dāng)前既有的動態(tài)軟件更新技術(shù)存在諸多局限,特別是:(1)為高度優(yōu)化的軟件運行環(huán)境引入動態(tài)更新支持會帶來難以接受的運行時額外開銷,(2)對高度復(fù)雜的運行時狀態(tài)的轉(zhuǎn)換可能帶來較長時間的服務(wù)中斷,(3)人工開發(fā)用于轉(zhuǎn)換程序運行時狀態(tài)的動態(tài)更新補丁難度大,質(zhì)量難以保證,(4)軟件系統(tǒng)開發(fā)時通常不會考慮動態(tài)更新,因而缺少抵抗由于不恰當(dāng)?shù)膭討B(tài)軟件更新而導(dǎo)致的運行時錯誤的能力。針對這些問題和挑戰(zhàn),本文從高效的動態(tài)軟件更新實現(xiàn)機(jī)制、自動化的運行時對象狀態(tài)轉(zhuǎn)換方法以及動態(tài)更新錯誤自動恢復(fù)技術(shù)三個方面系統(tǒng)研究了Java程序動態(tài)更新支撐技術(shù),并在工業(yè)級的Java虛擬機(jī)上實現(xiàn)了上述技術(shù),得到一個高效、易用、可靠的Java程序動態(tài)軟件更新系統(tǒng)Javelus。具體而言,本文的主要工作如下:1.提出了一種高效的延時Java程序動態(tài)更新實施機(jī)制。該機(jī)制以按需更新的方式實現(xiàn)對象狀態(tài)的版本轉(zhuǎn)換,從而大大降低了更新過程的程序中斷時間,同時通過細(xì)粒度的類型分析實現(xiàn)了多種優(yōu)化,保證了動態(tài)軟件更新前、后運行時的低額外開銷。2.提出了一種基于程序和執(zhí)行合成的自動對象狀態(tài)轉(zhuǎn)換方法。該方法避免直接操縱對象內(nèi)部封裝的具體數(shù)據(jù)結(jié)構(gòu),而是根據(jù)對象當(dāng)前的狀態(tài)合成一個能生成該狀態(tài)的方法執(zhí)行歷史,然后將該方法執(zhí)行歷史中的舊版本方法替換為對應(yīng)的新版本方法,再通過重新執(zhí)行該方法歷史,生成所需的新版本對象狀態(tài)。3.提出了一種基于錯誤處理器合成的自動錯誤恢復(fù)技術(shù)。該技術(shù)利用程序內(nèi)部自身抵抗錯誤的能力來將程序從由不恰當(dāng)?shù)膭討B(tài)更新導(dǎo)致的運行時錯誤中恢復(fù)。在運行時錯誤發(fā)生時,該技術(shù)通過虛擬機(jī)截獲錯誤,自動地生成多個備選錯誤處理器,同時利用按需創(chuàng)造的測試沙盒來選擇最有可能成功的錯誤處理器來進(jìn)行錯誤恢復(fù)。4.基于工業(yè)界廣泛使用的HotSpot Java虛擬機(jī)實現(xiàn)了上述機(jī)制、方法和技術(shù),得到一個Java程序動態(tài)更新系統(tǒng)Javelus 。該系統(tǒng)實現(xiàn)較完整,支持各種類型的程序修改,可以無縫集成到當(dāng)前主流的開發(fā)和運行環(huán)境中。實驗評估結(jié)果表明,較之既有系統(tǒng),Javelus顯著提高了動態(tài)軟件更新的高效性、易用性和可靠性。
[Abstract]:Software has become ubiquitous, and people are increasingly dependent on uninterrupted services provided by software systems. However, software systems often need to be updated to repair defects, improve performance and add functionality. Traditional software updates need to stop running software systems, deploy new versions and launch the service. It can bring a lot of inconvenience, even loss of life and property. Dynamic software update technology is designed to not terminate the running system and upgrade it online to a new version. There are many limitations of existing dynamic software update technology, especially: (1) it is difficult to introduce dynamic update support for highly optimized software transportation environment. The extra overhead of running time, (2) the transformation of highly complex runtime state may bring a long time service interruption. (3) the dynamic update patch for the state of the transformation program is difficult to ensure, and the quality is difficult to guarantee. (4) the development of the software system usually does not consider the dynamic update, so the lack of resistance is not appropriate. In view of these problems and challenges, this paper systematically studies the dynamic update support technology of Java program from three aspects of the efficient dynamic software update implementation mechanism, automatic runtime object state conversion method and dynamic update error automatic recovery technology, and at the industrial level. The Java virtual machine implements the above technology, and obtains an efficient, easy to use, reliable Java program dynamic software update system Javelus.. The main work of this paper is as follows: 1. a high efficient dynamic update implementation mechanism of time delay Java program is proposed. It greatly reduces the interruption time of the program in the update process, and implements a variety of optimizations through the fine-grained type analysis. Before the dynamic software is updated, the low overhead of the post operation.2. puts forward an automatic object state conversion method based on program and execution synthesis. This method avoids the direct manipulation of the internal encapsulation of the object. The specific data structure is based on the current state of the object to synthesize a method that can generate the state, and then replace the old version of the method in the history of the method to the corresponding new version method. Then, by reexecuting the history of the method, a new version of the new version of the object state.3. is generated and a kind of error processing is proposed. An automatic error recovery technique that uses the ability of the program to resist errors within the program to restore the program from a runtime error caused by an inappropriate dynamic update. When the runtime error occurs, the technology intercepts errors through the virtual machine, automatically generates multiple alternative error processors, and uses the demand to create the error. Test sandbox to select the most likely success error processor for error recovery.4. based on the HotSpot Java virtual machine widely used in industry, methods and techniques to get a Java program dynamic update system Javelus. The system is more complete, supports various types of program modification, and can be integrated seamlessly. To the current mainstream development and operation environment, the experimental evaluation results show that, compared with the existing system, Javelus significantly improves the efficiency, usability and reliability of dynamic software update.
【學(xué)位授予單位】:南京大學(xué)
【學(xué)位級別】:博士
【學(xué)位授予年份】:2017
【分類號】:TP312.2
,
本文編號:1937827
本文鏈接:http://sikaile.net/shoufeilunwen/xxkjbs/1937827.html
最近更新
教材專著