




已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀
(計算機軟件與理論專業(yè)論文)java程序部分求值描述語言及其應用框架.pdf.pdf 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘愛 摘要 部分求值是啼婿呈序優(yōu)化技術(shù),又稱為程序例化技術(shù),是通過程序變換把一個具 有般計算功能的程序系統(tǒng)變成為個專用的程序系統(tǒng),來達到提高程序執(zhí)行效率的 目的。尤其是在需要重復多次執(zhí)行專用系統(tǒng)的青況下,部分求值的優(yōu)化效果會非常明 顯。 部分求值技術(shù)是解決程序通用性和專用性之間矛盾的種有效手段。根據(jù)程序的 輸入,自動判斷輸入的性質(zhì),提取出程序其中經(jīng)常重復執(zhí)行、并具有相同結(jié)果的部分, 于巴通用程序轉(zhuǎn)換成其各一定程度上的專用程序,從而緩解該矛盾。 對于經(jīng)過部分求值處理之后的j a 忸程序,盡管在執(zhí)行效率上得到了改善,并且計 算結(jié)果與原始j a 慣程序的計算結(jié)果完全一致,但程序之間的接口卻發(fā)生了顯著的改 變。 在部分求值處理過程中,需要向部分求值器傳遞原始程序的參數(shù)動靜狀態(tài)信息, 以便部分求值器判斷原始程序中每個變量和表達式的狀態(tài),并決定處理這些變量和表 達式的方式。 為了方便部分求值這種軟件自動化技術(shù)的應用,本文提出了種面向j a v a 語言的 部分求值描述語言,以及應用模型,并實現(xiàn)了相應的應用框架自動生成系統(tǒng)。鑒于j a v a 程序的多樣性,j p e s l 描述語言必須能夠描述部分求值器處理各種j a v a 應用時所需的 信息,以便部分求值器進行部分求值處理。為此,除了提供描述通用信息的語法規(guī)則 之外,j p e s l 描述語言還提供了描述r 加應用和a p p l e t 應用的語法規(guī)則。 關(guān)鍵詞:部分求值,描述語言,程序自動生成,j p e s l 北京工業(yè)大學工學碩士學位論文 a b s t r a c t p 枷a le v a l 咖o ni sa 虹n do ft 。c h l 0 1 0 9 yo fp m g r a m0 p 血n i z a t i o n ,a l s 0c a l l e dp r o g r a m s p e c i a d o n t l 】i si sas y s 協(xié)nw 1 1 i c h 昀n s 旬r i t la 寥f l e r a lp r o g m m 幻a 刪a lp i - 0 眥c o l r 印v e t h e e 伍c i e n c y o f m e p r | d g m m 酗i a l l y i i l 血es i n l 面o n m 砒n d s 旺e c u t e 吐1 e s p e c i a l p m g 瞄1 1 1r e p e a 螄m e e 丘k i sw mb e v e 呵r l o 協(xié)k f 恤a le 涮嘶o ni sav a 塒m e 吐1 0 dt 0s 0 l v em e 刪c tb c h e 咎n 拋i i z a 士i o na n d s p e c i a 螄o r l w i nj u d 薩t 1 1 ep i d p e r c yo fp r o g 聊mi 印u td a t a 鯽幻n 1 卸j c a l l m a n d 鍘m i c f 也e f ,o 而伽w k c h w i l l b c 瓤c c m e d r q 刪y i i l p i o 曇i a m ,和d 擘e t 黜r e s 此s o w mg e c ap i o 皇陽m w i m a c 叭a i ne ) ( t 耐o f 馳捌o n t 0a l l e v i 疵m e 1 1 丑i c l 7 i kj a v ap m g 衄:1 1 v e 耐船p a m a le v a l u 撕o n 柏璐向毗l a l i o n o v mr e c e i v eb e c 時e 壓c i e l l c y a n ds 硼e e x e c 皿o n 托s u n b u 蛐e j i i 嘧自c e b e 訛憾l p r 曜印m w m c b _ a r l 8 c r e m a r k a b 恥 i n 小ec 咄o f p 枷a le v a h 洳位呱自m l a l i o n ,p 枷a le v a h l 鋤0 rw i l lm q 味她抽f o f l t 洳 o f p 礬仰就鍶o f 蕊醢訶p i 啪t o j u d g e 也es 【a 鈀o f 嘲yv 缸a b k s 讞戧p r 鶴s i o n s 證 o r i 季砌p 刪驢1 1 1 鋤d d e 嘲麗n e t 】e m o d e t o d e a l 州m t h 髑e v a r i 曲l e s 鋤d a ( p r 囂如m 1 1 1l 量l i st b e 蠡s ,ho i d 盯幻f 配i 】主t a t et h e 印p u c 撕o no f p a a 1e v a h 捌婦l 、e 蘆o p o s ef o n a i da p 枷a le v a l u 撕o n 甲。c i 丘c a 如1l a l 】g g e 衙j a v a a n d i 乜印p h c 缸0 n 勛m 跗刪:k ,m o r 0 0 v w e h a d i m p l e n l t e dac 0 玳哪0 1 1 d i n g 印p h c 撕o n i 1 1 t e r f a c ea t 】婦m 血薩明碰o ns y 吐c m f o rm e 廿1 r e ea p p k 撕o nf 0 玎1 1 si 1 1j a v a0 0 c a lp m g m ,l n _ r 鋤l ei n v 0 c 撕0 np r o g m a n d a p p 蛾 p r o g 唧均,p a m a l e v a l 刪o ns p 。c i 撕0 nl 柚孵刪d e ss e 睢c o n l a i l l e dj i l 向m 撕o n 南r 吐l e a p p h c 鰣o nm 魄白c e 刪細m 撕c 群n 蒯o ns y s 咖w 色a l s 0d i s c u 鼴l l c 印p 撕吼m o d e l s u s e d b y 印p h c 撕0 n i n t e r f 犯e i i l 廿1 i s p 印既 i ( e y w o r d sp a 撕a lc 、,a 1 咖a 瑪即e c i ! 丘c 撕o nl a l l 睜【a 爐,p m 翹哺m a u 協(xié)m 撕c g 蝴鐘蕊o r k 擇琶s l 第一章緒論 郝分求值概述 第一章緒論 部分求疆是一哥 疆澎綻純技術(shù),又稼麓程痔鏹化,是遴遙程| 事受抉把個其有一 般計算功能的程序系統(tǒng)變成為專用程序系統(tǒng),來達到提高程序執(zhí)行效率的目的。尤其 是在需簧重復多次魏行專鞠系統(tǒng)靜情囂下,幫鄉(xiāng) 隸餐盼淺純效采# 常銹顯。 通用程序往往為了保證在各種可能的輸入條件下部能正常運行,$ 琶供了許移通用 弋瑪。毽慰予那塑經(jīng)零反笈發(fā)生鑫冬輸入條籜,通蒡;疆黼沒有褪供其裔鎊對注豹代碼, 而使用通用代碼統(tǒng)一對待。在這種情況下,程序眭能必定不理想。如果不考慮粳序的 逶援性,專f 1 為經(jīng)常發(fā)生豹稔入條 譬鎬寫專瘸程窿,那么不僅會黼e 工作受趲,麗置 還會使程穿的應用范圍變得非常狹窄。 部分求篷按) l 之是解決糕聲逶躅經(jīng)鞠專鬻健之闋矛藩豹耪蠢效手羧。宅綴攢疆凈 的輸入,自動判斷輸入的性質(zhì),提取出程序其中經(jīng)常熏復執(zhí)行、并具有相同結(jié)聚的部 分,把遴瘸程序轉(zhuǎn)換 一定黻上凝各專震靛熬程澎,鈦瑟緩解該矛瓣。 在本學位論文中,主要介紹部分求值技術(shù)在j a 忸程寧優(yōu)化方面的成用和實踐。在 這里,聱分求篷耪搖_ | 莘鍘純其有程潮豹含義。 在部分求值過程中,將首先判斷輸 參數(shù)的性質(zhì),判斷出哪些參數(shù)為靜態(tài)參數(shù), 緩些為動態(tài)參數(shù),并攫據(jù)這些癌惠標記程露,然蓐搽攘標記蕊惑產(chǎn)生壤應靜滲辯程亭 和例化程序。在部分求值醴程中,能夠確定其具體值的表達式或者變量,稱為靜態(tài)變 爨;反之,就是動態(tài)交量。然后,澇整程痔怒剩下款羧入?yún)?shù)籜為叁己輸入,接行 滯留程序后,即。目r 產(chǎn)生最終結(jié)果。 1 2 部分求值基本原理 部分求值技術(shù)本身是一種程j 袱化技術(shù),能夠改蔣程序代隅的執(zhí) j :效率;同時, j a 垤本身囊子蓑顳跨乎臺姆建,因救j a v a 在貍序執(zhí)行效率上存襲先天疑陵。這耱現(xiàn)實 北京工業(yè)大學工學碩士學位論文 狀況促成了部分求值技術(shù)在j a v a 領(lǐng)域的應用。 本項目的主要目的是為了實現(xiàn)一個j a v a 軟件工具,提供了程序動態(tài)部分求值功能。 紐童動態(tài)部分求值之后的;a 忱程序,能夠根據(jù)當前的運行環(huán)境實時優(yōu)化自身結(jié)構(gòu),從 而實現(xiàn)程序邏輯上的優(yōu)化,同時提高運行效率。 下面給出了一個簡單的范例來解釋一些基本的部分求值原理。 在該范例中,原始程序如圖1 1 所示,有一個函數(shù)勛z ) 來計算x 的n 次方。在某 些特定的青況下,我們需要多次計算x 的5 次方,這樣,我們能夠確定兩個輸 參數(shù) 中的個,即參數(shù)n 。根據(jù)這個已經(jīng)確定的參數(shù)n ,把原始代碼修改為圖1 2 所示的程 亭代碼。 圖1 1 原始程序代碼 f i g u r e1 - lq i 醇氌l p h 礤n c o d e 圖1 - 2 當n 等于5 時,進行的例化處理 f i 昏聰1 2i f ne c f 腳s5 爿,e c i a i j 縐6 0 n 缸娟加蛐五餅1 當輸 參數(shù)n 等于5 的情況下,將原始代碼進行部分求值處理,得到個滯留程 序,即圖1 - 2 所示代碼。與原始代碼相比,與n 相關(guān)的計算已經(jīng)提前完成,消除了無 ,廷哆 支,所以圖1 之所示代碼結(jié)構(gòu)非常簡潔,因此具備較高的運行效率,而且運行結(jié) 果同原始代碼完全相同。 顯然,經(jīng)過部分求值處理的代碼在結(jié)構(gòu)上得到了更具針對性的優(yōu)化。當n = 5 的輸 入條件下,我們可以不必使用通用的原始代碼,而是直接使用經(jīng)過專門優(yōu)化的代碼來 進行剩余的計算。 鵝一章緒論 注意:在這個例子中,因為程序的控制流程更多的是由參數(shù)n 決定,因此如果能 夠事先確定參數(shù)n 的輸入,即n 為靜態(tài)參數(shù),那么經(jīng)過部分求值處理后的優(yōu)化效剽辱 會十分明顯。相反,參數(shù)x 對程序流程的影響并不大,因此在x 為靜態(tài)參數(shù)的隋況下, 部分求值的優(yōu)化效果就不是十分理想。 1 3 部分求值的分類 1 3 1 在線例化和離線例化 根據(jù)程申例化的流程,可以把部分求值技術(shù)分為兩類:在線例化和離線例化。 在線例化方法是在處理程序的同時,也完成了程序的轉(zhuǎn)換,這種部分求值方法將 會根據(jù)原始程箭日靜態(tài)數(shù)據(jù)生成滯留程序。但是在線例化要求輸入靜態(tài)數(shù)據(jù),即輸入 具體的參數(shù)值。在線例化的基本流程請參閱圖1 3 。 圖1 - 3 在線例化流程 f i 毋e l - 3 0 咄m 印e d 出蜘帆n o w 離線例化方法包含兩個階段:預處理階段和例化階段。在預處理階段,將原始程 序和輸入數(shù)據(jù)作為預處理器的輸入,預處理器將會輸出對應的標注程序。標注程序中 給出了程序中變量和各種表達式綁定時間的靜態(tài)和動態(tài)劃分信息。在例化階段,將靜 態(tài)數(shù)據(jù)作為部分求值器的輸入,根據(jù)預處理階段生成的標注程序,生成滯留程序。離 線侈4 化方法的基本流程請參閱圖1 _ 4 。 北京工業(yè)大學工學碩士學位論史 f 漏聹jf 輸入數(shù)據(jù) l 蘭f 1 l 預處理器l i l 標注程序靜態(tài)輸 數(shù)據(jù) l l 、,。,。 i 部一1 1 | 滯留程序i 、- ,j 圖l _ 4 離線例化流程 f i g 哼1 4 0 m 婦s p 舒吐z 嘶b a w 從圖1 3 可以看出,在線例化只需一步,而目程序中每個表達式部可以根據(jù)靜態(tài) 數(shù)據(jù)確定自己的輸出,即計算出實際數(shù)據(jù)還是產(chǎn)生滯留程序代碼。這種方法的優(yōu)點是 對變量和表達式的處理比較精確,能夠充分利用靜態(tài)數(shù)據(jù)。但由于靜態(tài)數(shù)據(jù)是在進行 部分求值處理的時候輸入的,是預先確定的,而不是運行時刻實時輸入的數(shù)據(jù),因此 數(shù)據(jù)比鉸局限,因此在線例化的效率并不理想。 在離線例化中,預處理階段通常包含一個約束時間分析( 也稱綁定時間分析或 瑚噙) 過程。在約束時間分析過程中,將會根據(jù)程宇輸入?yún)?shù)的動靜狀態(tài)來決定程序 內(nèi)部代碼中其余變量和表達式的動靜狀態(tài)。在例化階段,將會根據(jù)代碼中變量和表達 式的動靜狀態(tài),進行不同的處理,即計算出靜態(tài)數(shù)據(jù)的具體結(jié)果,或保留動態(tài)部分的 計算,并生成滯留程序。由于這種方法在預處理階段不必考慮靜態(tài)數(shù)據(jù),因此效率相 坤陵高。而且,由于該崩去首先生蒯戚拚呈序,然后再生j $ 錯留程序,因此通用性較 高。 第一章緒論 1 _ 3 2 編譯部分求值和運行部分求值 由于部分求值是根據(jù)輸入數(shù)據(jù)中的不變量來別化程申,而不變又是相對的,也就 是說,有些變量的值在編譯時刻就已經(jīng)知道,而有些變量的值只有在運行時亥惻一能知 道。根據(jù)確定不變量的時間,把部分求值應用分為編譯部分求值和運行部分求值。 編譯部分求值又叫靜態(tài)部分求值,是一種比較傳統(tǒng)的部分求值方法。該方法在編 譯時刻使用能夠確定的變量值來例化程序,該過程位于程j 韻重行之前。這種部分求值 技術(shù)已弳應用于很多領(lǐng)域,例如編譯器生成、科學計算、計算機圖形和數(shù)據(jù)庫系統(tǒng)等。 現(xiàn)在關(guān)于編譯時刻部分求值的研究已經(jīng)產(chǎn)生了很多的原理和技術(shù),并目適用于各種編 程語言?,F(xiàn)在的研究主題包括:高層次語言的終結(jié)分析,強制性語言結(jié)構(gòu)的部分求值 和快速綁定時間分析。 運行部分求值是在程序j 蠶行時刻,根據(jù)動態(tài)不變量進行程序例化,這種例化叫做 運行時刻例化,也叫動態(tài)例化。它是在程序執(zhí)行時取得變量的值,對不變量影響的一 段程序進行例化產(chǎn)生滯留程序段。對于c 語言,這個工作已經(jīng)完成了,它基于編譯時 刻例化技術(shù)的基礎。運行時亥捌化并不象通常那樣被分為兩個階段,因為它是根據(jù)在 運行日j 刻的各個階段確定的不變量值來逐漸例化程序的。動態(tài)部分求值的優(yōu)化方法可 以大:埒黽高程序的執(zhí)行效率。目前,動態(tài)部分求值已經(jīng)廣泛應用于操作系統(tǒng)和圖像處 理等諸多 g 轷1 田l 田】。 1 4 國內(nèi)外的研究現(xiàn)狀 部分求值技術(shù)目前在國際上主要有兩個系統(tǒng),都是c 語言的部分求值系統(tǒng),而我 們的項目則是對部分求值技術(shù)進行創(chuàng)新和改進,應用在了目前非常流行的、具有效率 挖掘潛力的j a v a 語言上。 1 4 1c m 奴 c - m 奴是哥本哈根大學t o p p s 研究組開發(fā)的個c 語言部分求值系統(tǒng),能夠完 成c 程序的靜態(tài)部分求值。系統(tǒng)采用基于控制流圖的綁定時間分析技術(shù),通過生成應 北京工業(yè)大學t 學碩士學位論文 垌程序的生成擴展器,來完成c 程序的部分求值。生成擴展器的運行將接收輸入數(shù)據(jù), 訇螺努態(tài)計算,進行循環(huán)展開、常數(shù)代八和函數(shù)例化等程序優(yōu)化,生成c 程序的滯 留程序。c m i 】( 在科學計算,圖形學,操作系統(tǒng)等領(lǐng)域已經(jīng)有了有效的應用。但是, c m i ) ( 不能直接生成滯留程序的目標代碼, 序例化,不可避免的存在代碼膨脹的問題, 1 4 2 娜 不支持運行時刻部分求值的功能。作為程 會響程序的執(zhí)行效率。 ,r 咖p 0 是法國u s a 大學c 0 m p 0 研究組開發(fā)的個c 語言部分求值系統(tǒng),支 持c 程序的編譯時刻部分求值和運行時刻部分求值。系統(tǒng)采用基于模板的動態(tài)代碼生 成技術(shù);在編譯階段,根據(jù)綁定時間分析等程申分析技術(shù)的結(jié)果,生成目標代碼模板, 以模扳參數(shù)的形式支持靜態(tài)計算結(jié)果的保存:并且產(chǎn)生生成擴展器。在程序例化階段, 7 成擴展器 賣取靜態(tài)輸 ,完成靜態(tài)計算,將計算結(jié)果填入目標代碼模扳;并且,通 過模板的復制和拼接,完成滯留程序的生成。t e m p 0 也有一定程度的應用,t 目1 1 p 0 對 s 吼的r p c 協(xié)議進行改造優(yōu)化,總體性能提高了1 5 倍,而優(yōu)化舌的進程調(diào)度程序的 效率,提高至原來的3 7 5 倍。在t e 徹p o 中,滯留程序目標代碼的直接生成使得應用 程序能夠在運行時刻得到高性能的目標程序,但也可能防礙了某些傳統(tǒng)的代碼優(yōu)化技 術(shù)的使用。另一方面,滯留程序的代碼長蚵能遠遠超過源程序代碼的長度。 在本項目中,基于控制流圖的離線數(shù)據(jù)伊i 化技術(shù)采用了根據(jù)控制流圖進行程序分 析和程序變換的技術(shù)。在一定程度上,可以利用c 郴x 前端的程序分析,以及生成擴 腱器的構(gòu)造方法。不同之處在于g m i x 系統(tǒng)構(gòu)造的生成擴展器將用于構(gòu)造滯留程序, 而我們的離線數(shù)據(jù)例化系統(tǒng)將產(chǎn)生控制流圖的生成器。生成的控制流圖數(shù)據(jù)能夠用于 編譯時刻例化,也可以直接用于運行時亥唰化。同時,系統(tǒng)也完全避免了程序的代碼 膨脹。和1 b m 的動態(tài)代碼生成技術(shù)相比,基于控制流圖的數(shù)據(jù)例化通過生成搭剮流 圖數(shù)據(jù)的方法代替了代碼模板的復錕印拼接,控制流圖生成器的復存牲明顯地低于程 序生成擴展器,從而簡化了編譯生成器的實現(xiàn)難度:同時,完全避免了滯留程序的代 碼膨脹。同c m i ) ( 和晰為代表的程序例化技術(shù)相比,基于控制流圖的數(shù)據(jù)例化具 自- 無代碼膨脹,實現(xiàn)簡單的優(yōu)點;然而,這些優(yōu)勢的取得是以犧牲常數(shù)代入等程f 爭優(yōu) 化機會為代價的。它能夠完成控制轉(zhuǎn)移的優(yōu)化,但控制流圖的使用仍有一定的解釋負 第一章緒論 擔;它采用了在運行時刻傳遞基本塊參數(shù)的方法,其執(zhí)行效率將明顯地低于程序例化 實現(xiàn)的常數(shù)代入。因此,從原理上講,這種技術(shù)更適合于處理規(guī)模較大的應用程序, 更易于在運行時亥螂分求值中發(fā)揮其優(yōu)勢。 北京工業(yè)大學 學碩上學位論文 2 1 簡介 第二章系統(tǒng)概述 本系統(tǒng)是個應用于j a :v a 語言的部分求值系統(tǒng),致力于使用部分求值技術(shù)對j a v a 程序進行變化,以達蛩 p 0 化系統(tǒng)陛能的目的。通過讀入j a v a 原始程序,并結(jié)合靜態(tài)數(shù) 據(jù),經(jīng)過部分求值器的處理,生成滯留程序、中間結(jié)果和程序控制信息,而這里的滯 留程序就是經(jīng)過優(yōu)化后的程序。 由于采用了離線部分求值方法和數(shù)據(jù)例化方法,因此系統(tǒng)把對靜態(tài)數(shù)據(jù)的描述和 靜態(tài)數(shù)據(jù)的實際值分成了兩個部分,分別在不同的處理階段使用。 本課題試圖使用控制流圖形式保存前段計算結(jié)果和程序控制信息,并把這些售息 收荏緩存中;而后段計算將根據(jù)緩存中保存的控書慌圖信息引用前段計算的結(jié)果。 與傳統(tǒng)的數(shù)據(jù)例化方法不同,這種方法能夠完成程序控制轉(zhuǎn)移的優(yōu)化。該方洲吏 用基于控制流圖的數(shù)據(jù)例化技術(shù),并利用離線程| 芋例化和綁定時間分析技術(shù),來構(gòu)造 控制流圖生崩器;并且直接生成滯留程痔。 基于控制流圖的程序例化避免在例化階段直接修改程序代碼,剛氐了部分求值系 統(tǒng)的復雜陛。這些優(yōu)點有利于實現(xiàn)尚陛能的運行時刻咧化系統(tǒng)。 2 2 1 部分求值 也被稱作程序例化,主要著眼于對程序本身的例化。部分求值根據(jù)原始程序輸入 中一部分靜忽鼬冒產(chǎn)蛔帶留程i 芋,而滯留程亭中包含了靜翻擴瑚關(guān)的前段計算結(jié)果。 但部分求值技術(shù)存在一定的局限性,即很大程度匕,優(yōu)化效果依賴于例化生成的滯留 程亭,隨著靜態(tài)數(shù)據(jù)的增加,滯留程序的長度急劇加大,將會導致代碼膨脹。 第二章系統(tǒng)概述 例如,對程序中的循環(huán)進行部分求值,滯留程序?qū)归_循環(huán)。當循環(huán)次數(shù)過大 的時候,必然會導致滯留程序的代碼急劇膨脹。代碼膨脹不僅會帶來程咩規(guī)模問題, 在栩芋運行時刻,由于代碼規(guī)模過大而導致頻繁的缺頁中斷,反而會急劇阿氐執(zhí)行效 率,影響和抵消部分求值的優(yōu)化作用,甚至會產(chǎn)生相反的結(jié)果。 2 2 - 2 數(shù)據(jù)例化 是支持分段計算的另種程序優(yōu)化技術(shù),在8 0 年代后期由b a i z d 婦和b u l y o b k o v 提出來。數(shù)據(jù)例化試圖通過適當?shù)姆治?,選擇計算的部分中間結(jié)果。提供個數(shù)據(jù)裝 載程序( 1 0 a d e r ) 和數(shù)據(jù)讀取程序( r e a d 盯) ;前者用于前段計算,將計算結(jié)果放在緩沖 區(qū)中;而后者用于后段計算,直接從緩沖區(qū)獲取前段計算結(jié)果,從而達到優(yōu)化眭能的 目的。 與程序例化相比,數(shù)據(jù)例化將中間計算結(jié)果保存在數(shù)據(jù)結(jié)構(gòu)中,而不是中間程序 中。程序的執(zhí)行被分為兩段:1 ) l o a d e r :執(zhí)行前段計算,并將計算結(jié)果保存在緩存( c a c h e ) 中;2 ) r e a d 盯:讀取緩存中的中間計算結(jié)果,繼續(xù)后段計算,完成其余的計算i 嘶呈。 與程序例化最根本的區(qū)別,在于數(shù)據(jù)例化將例化結(jié)果和例化程序區(qū)分開,將中間 計算結(jié)果蔚注中間數(shù)據(jù)中,而不是保有在滯留程序代碼中。所以;攻據(jù)例化對滯留程序 的依賴大大削弱。隨著例化規(guī)模的擴大,隨之擴大的只有保存在緩存中的中間計算結(jié) 果,滯留程序的規(guī)模并不隨之發(fā)生變化。換句話說,數(shù)據(jù)例化是通過數(shù)據(jù)量的增加來 緩解程荊弋碼膨脹的問題。 2 2 _ 3 數(shù)據(jù)例化和程序例化的結(jié)合 數(shù)據(jù)例化的優(yōu)勢在于: i 便于處理以計算為中心的程序; i 避免了運行時刻的代碼更新,安全性更高; i i i 可在編譯時刻構(gòu)造數(shù)據(jù)裝載程序( 1 0 l a d 盯) 和數(shù)據(jù)讀取程序( r e a d e r ) ,避免動 態(tài)例化帶來的動態(tài)代碼生成問題; 數(shù)據(jù)例化的主要弱點在于: i 無法優(yōu)化程序的控制流,不適用于以控制轉(zhuǎn)移為主的程序; 北京工業(yè)大學t 學碩士學位論文 i 將中間計算結(jié)果寫入緩沖,而無法直接嵌 到目標代碼中: 當原始程序的計算量并不大,甚至小于對緩存的訪問時間,也就是說數(shù)據(jù)例化的 優(yōu)化作用已經(jīng)被增加的額外處理抵消掉了,數(shù)據(jù)例化處理并沒有改善程申| 生能,反而 蝌氐了程序性能。 而且,數(shù)據(jù)例化的前段計算過程中,無法對控制轉(zhuǎn)移進行提前計算,換句話說, 就是無法對程序的控制流進行優(yōu)化,對于那些以控制轉(zhuǎn)移為主的程序來說,數(shù)據(jù)例化 并不能起到優(yōu)化的作用。 如e 所述,程序例化和數(shù)據(jù)例化都具有自己區(qū)別于對方的優(yōu)勢和缺點,適用于不 同的黼領(lǐng)域。選擇程序例化還是數(shù)據(jù)例化,關(guān)鍵在于例化問題的規(guī)模和前段計算 代價之間的平衡。 在同“程序當中,可能某些程序段應該使用數(shù)據(jù)例化,而另一! 螺序段應該使用 程亭例化。比如個簡單的例子,在個雙重循環(huán)中,內(nèi)層循環(huán)的執(zhí)行次數(shù)不多,適 合進行程f 寧例化:相反,外層循環(huán)的最大循環(huán)次數(shù)很大,這樣就不適合使用程序例化, 面應該使用數(shù)據(jù)例化方法。只有在合適的情況下使用合適的例化方法,才能得到最大 限度的優(yōu)化效果,因此程序例化和數(shù)據(jù)例化不應該孤立起來,應該相互結(jié)合,揚長避 短,把兩種例化方法的優(yōu)勢充分發(fā)揮出來,同時盡可能避免每種方法可能帶來的缺點 和問題。只有這樣,才能使例化方法的優(yōu)化效果更顯著。 2 2 4 控制流圖: 控制流圖是強制性語言的種中間表示形式,對程序數(shù)據(jù)流的分析和程f 芋優(yōu)化有 著非常重要的作用。 控制流圖是擁有一個根節(jié)點的有向圖,節(jié)點可以為下述幾種類型: i 語句節(jié)點( 賦值、輸入輸出語句等) :控制流圖中的該類型節(jié)點具有個前趨 節(jié)點和一個后繼節(jié)點; i 謂詞節(jié)點:控制流圖中的該類型節(jié)點具有一個前趨節(jié)點和兩個后繼節(jié)點。兩 個后繼節(jié)點當中,個是真后繼節(jié)點,個是假后繼節(jié)點。 i i i 特殊節(jié)點:即入口節(jié)點和出口節(jié)點。入口節(jié)點是控制流圖的根節(jié)點,并以出 口節(jié)點為假后繼節(jié)點,以程序的第個語句所在節(jié)點為真后繼節(jié)點;出口節(jié) 點沒有后繼節(jié)點。從入口節(jié)點可以至i j j 態(tài)其它任何節(jié)點,從任何節(jié)點都可以到 達出口節(jié)點。 第一章系統(tǒng)概述 至于控制流圖的邊,要么具有t m 柞a l s e 標記,要么沒有任何標記。以謂詞節(jié)點 為出發(fā)節(jié)點的邊具有t n e ,f a l s e 標記,而以其它類型節(jié)點為出發(fā)節(jié)點的邊沒有任何標 記。 控帶蜿圖中的每個節(jié)點標志了一個狀態(tài)。 在本課題的例化系統(tǒng)中,控制流圖中存放著前段計算結(jié)果和程序控制信息,相當 于數(shù)據(jù)例化中的緩存。不僅如此,數(shù)據(jù)例化的緩存中只包含了數(shù)據(jù)信息,而控制流圖 中還包含了部分程序控制信息培。 2 3 系統(tǒng)總體結(jié)構(gòu) 參閱本課題的系統(tǒng)總結(jié)構(gòu)圖,即圖2 1 。 北京工業(yè)大學工學碩士學位論立 輸入抒區(qū)描述 i n p mp ar c j t i o n 標注控制流圖 自動生成 j a v a & 十( w a ) ib 1 r a 分析 c 盞裟舔,卜1 氟 ( 陸曲gt 聊ea n a i y s 塔) 廣7 拓拄程序h n n ) 標注語法拷結(jié)掏 f n o d e & t r 鉀) h l 標注控制流圈 及其自動生成 標注控制流圖蛐c 龜 ( 1 1 i l o 吼e dc f g l 7 1 v 妻磬霎巖磬廣f 一 舶她成陬i :贏 擻甚h 例化程序1j 廝 例化程序i j 運行環(huán)境j l 。_ j 鍘化運行環(huán)境 蜊化控制激田 s p e c c f g ( s p b 舡e dc f g l 標注程序解析 ( p a r s e “s c a n n 盯1 i i 標注程序解析 i v 滯留程序及 其自動生成 動杏輸 值 & “ki n d u i f 噬到 i 、巡i 滯留運行環(huán)境段結(jié)果 程序最終結(jié)果o u t、 圖2 1 系統(tǒng)總結(jié)構(gòu)圖 f 酒姑2 - ls y s 魄i l m 婦南m w o r k d 】a r t 簍黧紫麓翌鬻跫黔輸入的描述,根據(jù)靜態(tài)輸入的描述,謝讞 塞黧縫,生成j a 標注程序,標注程序決定了對麗馘;赫花蒜苗? 程度和深度。 ?!薄?一1 2 第二章系統(tǒng)概述 i 標注程序解析:解析標注程序,建立類一域一語句一表達式的樹結(jié)構(gòu)( t r e e 結(jié)構(gòu)) ,并讓t r e e 結(jié)構(gòu)包含b i a 結(jié)果信息,成為標注語法樹結(jié)構(gòu)。 池標注控制流圖的生成:根據(jù)標注語法樹結(jié)構(gòu),將源程序按控制結(jié)構(gòu)分成基本 塊,并變換成由基本塊組成的控制流圖,生成標注控制流圖。這部分的工 作包括一個控制流圖的數(shù)據(jù)結(jié)構(gòu)及一組相關(guān)的結(jié)點數(shù)據(jù)結(jié)構(gòu),還有組功能 及相應的算法。 i v 滯留程序生成:滯留程序由標注控制流圖生成,對標注控制流圖進行優(yōu)化生 成滯留程序。控制流圖中包含一系列的基本塊,基本塊也有b l a 狀態(tài),每個 基本塊中有一系列的語句,這些語句的b t a 狀態(tài)決定基本塊的b i a 狀態(tài),由基 本塊和塊內(nèi)語句的狀態(tài),決定生成的滯留程序。滯留程序瀆取動態(tài)的輸入和 前段計算的中間結(jié)果完成最終計算。這部分的內(nèi)容包括滯留程序的設計、結(jié) 構(gòu)、生成方法等;本系統(tǒng)的滯留程序與傳統(tǒng)部分求值中滯留程序的生成有根 本的區(qū)別,傳統(tǒng)的滯留程序直接包含前段計算的結(jié)果。 v 例化程序生成:例化程序也是由標注控制流圖生成,例化程序接收靜態(tài)輸入 的值,進行前段計算,得到前段計算的中間結(jié)果和優(yōu)化控制流程信息,生成 例化控制流圖,支持滯留程序的最終運行:它的運行需要程序的靜態(tài)輸入值, 生成則需要保存在控制流圖中的靜態(tài)輸入描述信息。例化程序和滯留程序都 是由標注控制流圖生成的,它們的生成不存在先后關(guān)系和數(shù)據(jù)及控制的依賴 關(guān)系,是并列的,標注控制流圖是生成例化程序和滯留程序唯來源。這一 部分內(nèi)容包括例化程序的設計、例化程序運行生成的例化控制流圖、例化程 序生成方法等內(nèi)容。 v i 例化程序運行環(huán)境:為侈i 眥程芋的運行提供支撐,是一個與具體被例化程序 無關(guān)的程序庫,維護程序中各函數(shù)的控制流圖及其基本塊操作,以類庫的形 式為例化程序的執(zhí)行提供支持。例化程序運行環(huán)境的另部分,就是例化程 序如何接收靜態(tài)輸 值生成作為中間結(jié)果的例化控制流圖。 v i i 滯留程序的運行環(huán)境:為滯留程序的運行提供支持環(huán)境,支持數(shù)據(jù)緩沖區(qū)的 讀取,例化控制流圖的解釋執(zhí)行,是個與具體被例化程序無關(guān)的程寧律, 以類庫的的形式為滯留程序的執(zhí)行提供支持。例化程序、例化程序運行環(huán)境 等程序為產(chǎn)生、構(gòu)造合理優(yōu)化的中間結(jié)果和控制信息提供良好的支持。 v i i i 例化控審蜿圖:也就是中間結(jié)果和控制信息,是本系統(tǒng)中很重要的部分, 例化程序的運行結(jié)果,保存在例化控制流圖數(shù)據(jù)結(jié)構(gòu)中,也包含了優(yōu)化后的 控制流圖。滯留程序?qū)⒏鶕?jù)f 電仃 ,接收動態(tài)輸入的值,完成計算。 北京工業(yè)大學工學碩士學位淪文 第三章四e s l 語言的設計 3 1 j p e s l 語言的設計背景 本課題利用基于控制流圖的程序例化技術(shù)實現(xiàn)了針對j a v a 語言的部分求值器,對 輸入的j a v a 程序j 蝴0 化處理,同時根據(jù)部分靜態(tài)數(shù)據(jù),生成保存了前段計算結(jié)果和 程序控制信息的滯留程序;在程序的實際運行時刻,將會利用保存在滯留程序中的前 段計算結(jié)果和經(jīng)過優(yōu)化的程序控制信息,進行剩余部分的計算。這樣,那些靜態(tài)計算 作已經(jīng)被提取出來,提前計算出結(jié)果,并保存在滯留程序中;在程序的運行時刻, 直j 安使丹j 提前計算好的結(jié)果來 進行剩余的計算,因此在運行時刻,實際上只進行了全部計算工作的部分?;?r 上述的基本思想,來達到優(yōu)化程序執(zhí)行陛能的目的。 基于以下幾個方面的目的,需要提供種部分求值需求描述語言( p a m a l e v a l u 觚o n s p e c i 丘c 撕o nl a n g u a g e ) ,向部分求值器描述原始程序所需的接口信鼠、處理方式、參 數(shù)動靜狀態(tài)信息和特殊處理方式所需的一些額外信息。利用這些售息,部分求值器就 能夠知道在程序m 位置、使用什么方式進行例化處理唧1 2 8 1 嘲帥】。 3 1 1 描述接口信息 對于經(jīng)過部分求值處理之后的j a v a 程序,盡管在執(zhí)行效率上得到了改善,并且計 算結(jié)果與原始j a v a 程序的計算結(jié)果完全一致,但程序之間的接口卻發(fā)生了顯著的改 變。 首先,一段完整的計算過程在經(jīng)過部分求值處理之后,被拆分成了滯留程j 亨坪口例 化程序兩部分。當程序運行時刻,滯留程序需要讀取程序中保存的前段計算結(jié)果和經(jīng) 過優(yōu)化的程序控制信息。而這們賣取的過程會極大地影響到程序執(zhí)行的整體性能和執(zhí) 行的正確陛,因此,這兩部分之間的交互便變得非常重要。 而且,由于j a v a 面向?qū)ο蟮奶貄 生,一段程序往往會在多個位置被重用多次,不僅 第三章j p e s l 語占的設汁 僅應用在同程序的不同位置,還會應用在多個程序中。因此,對于經(jīng)過部分求值處 理的j a v a 程序來說,易用性和封裝l 生同樣重要。為了擴大部分求值器的| 立用范圍,必 須使經(jīng)過部分求值處理的程序具有與原始程序相同或相近的面向?qū)ο筇仨?,例如封裝、 多態(tài)等。 基于上述兩個原因,本課題需要為程亭內(nèi)部和外部交互提供完備的程序框架,由 程序框架來完成對滯留程序讀取操作和對外操作的封裝。這樣,例化程序和滯留程序 之間的交互就會具備高度的封裝性,同時使部分求值處理后的程序變得更容易使用、 重用性更高。 在提供程序應用框架的同時,部分求值器需要輸入一些描述信息來滿足自動生成 程序匣用框架的需要。為此,部分求值需求描述語言有責任負責提供這些信息。 3 1 _ 2 描述處理方式信息 j a v a 程序可分為本地程序、砌m 限e n l o t em 曲0 di n v o k 撕o n ,遠程方法激淘程序和 a p p l e t 程序。 i 本地j a 忸程序:本地j a v a 程序使用統(tǒng)一的方式處理全部j a v a 對象,即每個 類定義的成員變量和成員函數(shù)都屎存在本地的對象實例中。調(diào)用本地j a 忸對 象的成員變量或成員方法,都會矗接引用保存在本地對象實例中的成員變量 或成員方法。而且,對象之間的交互都是本地操作,對象本身也保存在本地。 i i 咖程序:同本地j a v a 程序相反,在大多數(shù)情況下,r m i 客戶端調(diào)用的遠 程對象并不位于i u 客戶端所在的計算機,而是駐留在一個或多個服務器 上。砌客戶端和砌m 服務器端之間通過命名服務獲得相互之間的位置, i 咖服務器首先要向命名服務注冊自己將要駐留的對m 遠程對象,然后r 客戶端將會根據(jù)正確的名稱向命名服務發(fā)送查找請求,并由命名服務返回遠 程對象。當砌v i i 客戶端通過命名服務獲得了遠程對象副本的時候,就可以把 該遠程對象的方法當作本地方法一樣調(diào)用。對象的方法實際上是在服務器上 運行,然后把計算的結(jié)果返回給客戶端。 na p p h 程序:j a v aa p p l d 是種可以嵌入到網(wǎng)頁中的小應用程序。當用戶訪 問包含a p p 慨小應用程序的網(wǎng)頁時,a p p 融將被下載到用戶的計拿鯽上執(zhí)行。 a p p l e t 依賴于崗i 覽器,必須在瀏覽器內(nèi)運行,無法朝蝤蠶行。由瀏覽器控制 a p p l e t 的生存周期。同上面兩種類型的j a v a 程序相比,a p p l e t 的程序結(jié)構(gòu)很 特殊。首先,卻p k 程序沒有m a i l l 函數(shù),瀏覽器負責啟動和銷毀a p p l e t ;另 外,為了使瀏覽器能夠控制a p p l e c 的生存周期,卻p k 向瀏覽器提供了一些 北京工業(yè)大學工學顧士學位論文 控制自己運行方式的方法。因此,針對這種特殊結(jié)構(gòu)的j a v a 程序,部分求值 器采用了不同的處理方式,并需要生成了a p p l d 專用的程序應用框架。 針對這三類j a v a 程序,部分求值器將會采取不同的處理方式。這時,也必須同時 生成寸應的程序應用框架。為此,部分求值描述語言必須提供當前輸入的j a v a 程序所 需的處理方式,以及使用該處理方式生成程序應用框架所需的額外信息。 3 1 3 參數(shù)動靜狀態(tài)信息 部分求值過程中,部分求值器把原始程序分成兩個部分,即例化程序和滯留程序。 在拆分過程中,部分求值器將會根據(jù)原始程序代碼以及輸入的部分靜態(tài)數(shù)據(jù)來判斷 原始程序的結(jié)構(gòu),并判斷每個變量和表達式的動靜狀態(tài),以便決定采用什么方式處理 這些變量和表達式。 但是,在大多數(shù)情況下,僅僅依靠原始程序代碼,根本無法判斷每個變量和表達 式的動靜狀態(tài)。雖然原始程序代碼提供了程序的流程信,鉚結(jié)構(gòu)信息,但卻無法體現(xiàn) 輸入?yún)?shù)的信息,例如,在什么情況下,什么輸入?yún)?shù)將會固定不變,以及該參數(shù)的 值:什么參數(shù)的輸 將會對程序抽_ 亍的性能影響最大等等。因此為了說明輸入?yún)?shù)的 動靜狀態(tài)和內(nèi)部不變量,有必要將參數(shù)的動靜狀態(tài)信息作為部分求值器的輸入。 另外,有的時候,部分求值器的使用者會希望能夠自己指定某些參數(shù)為某種狀態(tài)。 因i 比! 蟛頁通過種力i 漸需 亳噠的信息程五箍給部分習t 值器。 如上所述,在部分求值處理過程中,需要向部分求僵器崩整原始程序的參數(shù)動靜 狀態(tài)信息,以便部分求值器判斷原始程序中每個變量和表達式的狀態(tài),并決定處理這 些變量和表達式的方式。 3 2j p e s l 語言的設計 s 吼公司為j a v a 程序設計語言提供了功能強大的開發(fā)包。使用j a v a 程序設計語言 及其相關(guān)開發(fā)包,不僅僅可以開發(fā)本地和網(wǎng)絡應用程序,還可以編寫a p p 融,實現(xiàn)動 態(tài)頁面效果:而且,j a 語言提供了實現(xiàn)分布式計算的開發(fā)包- 遠程方法激活( 鼢m , r e n l o t e t v i d h o di n v o c a 蛀o n ) 。 鑒于j a v a 程序的多樣性,俐巳s l 描述語言必須能夠描述部分求值器處理各種j a v a 第三章j p e s l 語言的設計 應用時所需的信息,隊便部分求值器進行部分求值處理。為此,除了提供尚苤通用信 息的譯猻規(guī)則之外,j p e s l 描述語言還據(jù)供了描述i m 應用和a p p l d 應用的評猻規(guī) 則。 為實現(xiàn)上述功能,j p e s l 描述語言提供了如下基本元素: 表3 1 :j p e s l 基本元素表 1 。幽l e3 1 t p f s i t a 西c e i 臼t 郾虹l i s f i m e t h o d :為函數(shù)方法說明關(guān)鍵字。使用該關(guān)鍵字,描述語言能夠向部分求 值器指定原始程序中需要處理的某個方法,并提供處理過程中所需的參數(shù)動 靜狀態(tài)等信息。而且,在m 既h o d 關(guān)鍵字構(gòu)成的語句塊中,還可以提供不 變量表,來說明該方法中存在的不變量。 i s 觚:靜態(tài)參數(shù)關(guān)鍵字。使用該關(guān)鍵字,描述語言能夠向部分求值器指定 原始程序中某個函數(shù):方法中某個參數(shù)為靜態(tài)。 試d y n a m i c :動態(tài)參數(shù)關(guān)鍵字。使用該關(guān)鍵字,描述語言能夠向部分求值器 指定原始程序中某個函數(shù)方法中某個參數(shù)為動態(tài)。 i v d e n :標識符。在該描述語言中, 、 、 、 、 、c 嫂潼名 、 和鋤p l e i 參 數(shù)名 都是標識符。 v 砌丑訂a r eo 胍c t 烈狼f a c e :遠程對象接口關(guān)鍵字。由于部分求值刪備 會處理砌m 應用程序,而r m i 應用程序包含黜皿服務器端和r m i 客戶端, 以及砌皿遠程列緣。當砌v i i 客戶端向砌m 服務器發(fā)送請求的時候,如果服 務器接受到了該請求,會將r 卜_ 遠程對象返回給客戶端,但并不是把遠程對 北京工業(yè)大學工學碩士學位論文 象直接返回,而是向客戶端提供鼢m 遠程接口,通過砌遠程接口調(diào)用底 層的代理來引用遠程對象。j p e s l 描述語言中的 r e m o ,i eo b j e c t 孫r 1 1 e r f a c e 關(guān)鍵字指定了這們立程中使用到的r 遠 程x 寸象接口的名稱。 v i 洲a r eo b j e c t 鞏伊i 腳盯:遠程對象關(guān)鍵字。在砌v i i 服務器上運行 雍葑垂弄呈對象,諺0 運螽呈x j 芻臭實現(xiàn)了r e h c ) 1 eo b j 】二c tb 哪r f a c e 關(guān)鍵字指 定的遠程對緣接口。j p e s l 描述語言中的砌m 【0 ,r e0 b j e c t 腳p i 融廈d 盯 關(guān)鍵字指定了遠程對象的名稱。 v i i s e i e rs o i 瓜c e s :i t 服務器名稱關(guān)鍵字。部分求值器處理遠程對象之 后,將會為優(yōu)化后的遠程對緣生成一個新的類名,而黜m 服務器本身也魍含 了對遠程對象的引用,如果希望f t 服務器能夠繼續(xù)使用,那么必須要把 i u v i i 服務器中砌m 遠程對象的名稱替換成七 亡化f 舌的遠程對象類名。因此, j p e s l 描述語言提供了s e i 己v e rs o u r c e s 關(guān)鍵字,來指定i t m i 服務器類 的名稱。 v i i i c i 皿臥汀s o i 瓜c e s :i t h 皿客戶端名稱關(guān)鍵字。部分求值處理遠程對象之后, 將會生成個新的遠程對象接口,為了使用經(jīng)過優(yōu)化的遠程對象,1 0 m 客戶 端必須修改內(nèi)部引用的遠程對象接口名稱。為此,j p e s l 描述語言提供了 c im n t 洲i r c e s 關(guān)鍵字,來指定砌m 客戶端的名稱。 i ) ( a p p l 正tc k 峪s :a p p l 成名稱關(guān)鍵字。由于部分求值黔榭a p p hl 弱蓮 行部分求值處理,因此j p e s l 描述語言需要為a p p l 哉的處理提供些輔助信 息。 x a p p 強tm m is : r r 咖文件名稱關(guān)鍵字。使用a p p l e t aa s s 關(guān)鍵字 指定的卻p 搬的h i m l 文件名稱。經(jīng)過部分求值處理之后,將會生成另外 個經(jīng)過優(yōu)化的邸p l 吐類,那么引用該a 卵h 的 r m 億文件就需要修改引 用時使用的a p p 搬類名稱。 妯a p p l e tp a ra m e 耵球s :a p p 賦的h m 幾參數(shù)名稱。在使用該a p p 蛾的 刪,文件中,通常使用 書謚為a p p k 指定了多個參數(shù)名稱和參 數(shù)直,這樣a p p 敞撕時刻自嘲動態(tài)讒玻土型 參數(shù)值。在部分求澎也理過 程中,將會將這些參數(shù)值直接固化在代碼中,以便提供a p p 婦執(zhí)行時的性能。 a p p l e tp a r a m 既t s 關(guān)鍵字指定了m m l 中提供的a p p i e t 參數(shù)名稱。 j p e s l 描述語言的完整語法規(guī)則如下: 第三章j p e s l 語言的設計 | ( a p p l e t 對象類說明 專r 跚o r 巳_ o b j e c t j n t e r f a c e= : r 刪r e o b j e c t j l p l 刪 : s e r v e rs o u r c e s _ , : c l i e n ts o u 陋e sk , : ( a p p l e t 對象類說明 專a p p l 叫c l a s s_ : a p p l 田s = f , a p p l e tp a r a 唧e r s = , ) :) 專 專忸t h o d ) 專臟t h o d ( ) 專 ( ) , 專 = s t a t i c ( 參數(shù)浣明 專 d y n a f l i c 專 ( : 專 : 專: i d e n 專 北京工業(yè)大學丁學碩士學位論文 3 3 詳細程序設計 3 3 ij p e s l 描述語言數(shù)據(jù)對象設計 上面陳述了j p e s l 描述語言的文法設計,為了使部分求值器能眵使用該描述語言 描述的規(guī)俐言息,必須實現(xiàn)j p e s l 描述語言的解析工具,并向部分求值器提供保存有 規(guī)格信息的數(shù)據(jù)對象。 由于j p e s l 描述語言中需要為三種類型的j a v a 應用提供規(guī)格信息說明,即本地應 用、r m 【遠程應用和a p p 搬應用。因此,解析j p e s l 描述語言之后,需要為這三種 不同的應用保存信息。 由此得到的數(shù)據(jù)對象設計如下: 圖3 1j p e s l 舅啪弘蟓設計圈 f i 昏聆3 1j p e s l d a 詛喇e c b d 囟爭d 瑤r t i s c r i p t d a t a :保存了全部規(guī)格信息。內(nèi)部使用了三個v 。c 鼢對象,分別保存了 脅n o t e h _ l f b 、a p p l e t h l f b 和f u l l c h 而類型的元素。 第三章j p e s l 語言的設計 j r e m o c e h 怕:保存了全部r 加應用相關(guān)的規(guī)格信息。其中包括遠程對象接口 名稱、遠程對象名稱、r 服務器名稱列表和r 客戶端名稱列表。 i i i a p p l e 【h l 如:保存了全部a p p l c t 應用相關(guān)的規(guī)格信息。其中包括a p p l c t 的名 稱和該a p p l c t 的參數(shù)信息,a p p l e t 的參數(shù)信息保存在p 越l h l l b 類型的成員中。 i v p a m h 面:保存了a p p l e t 的參數(shù)信息。這些信息不僅僅指明了該a p p l e t 所使 用的參數(shù)信息,還提供了使用該a p p l e c 的m m ,文件的名稱。 v f u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州幼兒師范高等專科學?!秾I(yè)軟件應用(水文與水資源工程)》2023-2024學年第二學期期末試卷
- 遼寧經(jīng)濟職業(yè)技術(shù)學院《操作系統(tǒng)原理》2023-2024學年第二學期期末試卷
- 阿克蘇工業(yè)職業(yè)技術(shù)學院《媒介集團研究》2023-2024學年第二學期期末試卷
- 重慶移通學院《材料力學》2023-2024學年第二學期期末試卷
- 曲阜遠東職業(yè)技術(shù)學院《化學教育測量與評價》2023-2024學年第二學期期末試卷
- 西昌民族幼兒師范高等??茖W?!稄V播電視新聞》2023-2024學年第二學期期末試卷
- 山西傳媒學院《農(nóng)村發(fā)展概論》2023-2024學年第二學期期末試卷
- 西昌學院《紀錄片鑒賞》2023-2024學年第二學期期末試卷
- 清華大學《碳一化工》2023-2024學年第二學期期末試卷
- 山東理工大學《節(jié)奏與打擊樂基礎訓練》2023-2024學年第二學期期末試卷
- 四川省中小流域暴雨洪水計算表格(尾礦庫洪水計算)
- 教育部中等職業(yè)學校教學大綱
- 《古蘭》中文譯文版
- 中藥斗譜排列方法 斗譜的編排原則
- 《海底兩萬里》1-47章練習題(含答案)
- GB/T 23703.2-2010知識管理第2部分:術(shù)語
- GB/T 19981.1-2014紡織品織物和服裝的專業(yè)維護、干洗和濕洗第1部分:清洗和整燙后性能的評價
- GB/T 15901-2021化學試劑二水合氯化銅(氯化銅)
- 電網(wǎng)變電站一鍵順控改造技術(shù)規(guī)范
- 卡通小學生畢業(yè)季小報Word模板
- 【地理】2011年高考真題-文綜地理福建卷解析版
評論
0/150
提交評論