国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Java語言程序例化中的擴(kuò)展對象別名分析

2013-07-22 09:03:02許云飛
計(jì)算機(jī)光盤軟件與應(yīng)用 2013年4期

摘 要:隨著計(jì)算機(jī)技術(shù)的不斷進(jìn)步和發(fā)展,Java語言程序憑借著自身的優(yōu)勢得到了廣泛的應(yīng)用,并取得了顯著的成效。同時(shí)為了推動Java語言程序在計(jì)算機(jī)技術(shù)的作用,需要提高其精度,這就需要借助一定的對象別名分析技術(shù)。本文筆者對對象別名分析技術(shù)進(jìn)行了分析和探討,主要是為提高求值的深度,同時(shí)為實(shí)現(xiàn)Java語言程序中部分求值器的綁定時(shí)間分析的實(shí)現(xiàn),進(jìn)而為Java語言程序的應(yīng)用提供指導(dǎo)和借鑒。

關(guān)鍵詞:Java語言程序;擴(kuò)展對象別名分析;綁定時(shí)間分析;部分求值

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2013) 04-0000-02

計(jì)算機(jī)技術(shù)的發(fā)展推動了硬件速度的提高,同時(shí)也對軟件的設(shè)計(jì)提出了更高的要求,Java語言程序是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言的軟件程序,具有良好的性能,同時(shí)為了充分的發(fā)揮其作用,需要借助部分求值技術(shù),提高計(jì)算的準(zhǔn)確定和精度。為了滿足程序發(fā)展的需要,利用對象類例化模式成為一種有效的途徑,大大地提高了對綁定時(shí)間分析的準(zhǔn)確性,對多數(shù)的單線程Java語言程序進(jìn)行了有效的分析,實(shí)現(xiàn)了高精度的部分求值。

1 Java語言程序的綁定時(shí)間分析

在Java語言程序的應(yīng)用中,需要進(jìn)行部分求值,但是在求值的過程中會受到一定的限制因素的影響,這主要是在預(yù)處理階段無法對程序執(zhí)行中的每一個(gè)對象實(shí)例的綁定時(shí)間進(jìn)行跟蹤,這就需要借助近似描述的方法。在原先的綁定時(shí)間分析中,將同類對象的成員變量進(jìn)行標(biāo)注,忽視了不同對象的成員變量問題,同時(shí)還忽視了父類實(shí)例和子類實(shí)例的區(qū)別,這就對綁定時(shí)間的分析精度造成了一定的影響,這一方法被稱為對象類的單變異例化方式。

在Java語言程序中,由不同的程序點(diǎn)動態(tài)生成的對象實(shí)例所面臨的應(yīng)用場景也不盡相同,這就導(dǎo)致了分析精度的不同。對于程序的運(yùn)行而言,高精度的程序分析會對不同的對象實(shí)例的綁定時(shí)間進(jìn)行區(qū)分,并根據(jù)對象實(shí)例的不同采取不同方式的計(jì)算,同時(shí)剩余的計(jì)算功能也存在較大的差異。此外,滯留程序應(yīng)該應(yīng)用于各個(gè)版本中并對神域計(jì)算進(jìn)行不同的描述,這樣的方法被稱為對象類的多變異例化方式。

就Java語言程序而言,可以實(shí)現(xiàn)對多態(tài)性的支持,能夠?qū)Χ鄠€(gè)類和程序構(gòu)造的對象實(shí)例進(jìn)行激活和調(diào)動,并實(shí)現(xiàn)不同的綁定,為了對綁定參數(shù)、變量和對象成員的把握,需要進(jìn)行別名分析,進(jìn)而確定好對象實(shí)例的綁定參數(shù)和變量。其中應(yīng)用最為廣泛的是借助函數(shù)例化的處理方法,采用多變異方式,借助不同綁定的設(shè)置,提高了函數(shù)的多變異性質(zhì),進(jìn)而使綁定時(shí)間分析的精度提高。

2 對象例化模型

為了充分認(rèn)識和了解Java源程序,需要借助一定的模型,在對其計(jì)算進(jìn)行分析的基礎(chǔ)上,通過建立對象例化模型可以對其計(jì)算過程和特點(diǎn)有全面的把握。在程序運(yùn)行中,每個(gè)類的計(jì)算必須經(jīng)過部分求值,這樣就會在滯留程序中生成多個(gè)專用類,進(jìn)而對源程序中的對象實(shí)例進(jìn)行剩余計(jì)算。在經(jīng)過部分求值以后,會在滯留程序中產(chǎn)生不同類別的專用成員函數(shù),進(jìn)行函數(shù)調(diào)用的剩余計(jì)算。

在Java語言程序中,對象例化模型是由多個(gè)模塊共同構(gòu)成的,一般分為兩類:類例化模型和方法例化模型,前者是在相應(yīng)的程序點(diǎn)并借助構(gòu)造函數(shù)參數(shù)的綁定時(shí)間實(shí)現(xiàn)對指定類的程序例化,這樣可以生成一個(gè)滯留計(jì)算。后者表示通過標(biāo)識一個(gè)專用的方法,表示了方法的多變異例化方式下的一種情形。構(gòu)造方法的例化被認(rèn)為是特殊的方法,無需包含成員變量的描述,且只有唯一的例化模式。

在對象例化模型中,通過利用專用類名進(jìn)行變量綁定時(shí)間的分析設(shè)計(jì),進(jìn)而對對象實(shí)例內(nèi)部的各個(gè)成員變量的綁定時(shí)間進(jìn)行有效的區(qū)分,同時(shí)還可以實(shí)現(xiàn)用專用類名的集合進(jìn)行變量綁定時(shí)間的規(guī)定。

可見,該模型是對Java語言程序的綁定時(shí)間分析的基礎(chǔ),對程序的運(yùn)行起到了積極的促進(jìn)作用,進(jìn)而滿足了部分求值的需要,可以清晰的反應(yīng)出程序各個(gè)階段的部分求值完成的情況,實(shí)現(xiàn)對部分求值結(jié)果的分析和處理。

3 對象別名分析

在對Java程序進(jìn)行部分計(jì)算時(shí),需要進(jìn)行靜態(tài)輸入和動態(tài)輸入,進(jìn)而依據(jù)對象例化模型對程序的執(zhí)行過程進(jìn)行分析,并根據(jù)計(jì)算出的數(shù)據(jù)關(guān)系得到綁定時(shí)間,與此同時(shí),通過對引用型的變量的使用情況的跟蹤,可以實(shí)現(xiàn)對不同程序點(diǎn)的對象實(shí)例進(jìn)行別名分析,可以確定將引用型變量與程序點(diǎn)的對象實(shí)例進(jìn)行綁定。當(dāng)分析到新的運(yùn)算時(shí),創(chuàng)建類例化模式以及構(gòu)造函數(shù)的方法例化模式,分析到消息傳遞時(shí),需要創(chuàng)建屬于接收信息專用類的例化模式。

為了滿足在引用型變量在靜態(tài)分析程序中的需求,需要在別名分析方法的內(nèi)部采用模擬程序進(jìn)行執(zhí)行,并借助語法樹進(jìn)行自上而下的分析,同時(shí)按照函數(shù)調(diào)動的關(guān)系結(jié)合深度優(yōu)先的方法,進(jìn)行激活處理,并對實(shí)例構(gòu)造和成員函數(shù)的調(diào)用進(jìn)行分析,進(jìn)而形成對象例化模型。在實(shí)際的分析計(jì)算中,會出現(xiàn)對已經(jīng)經(jīng)過分析的函數(shù)參數(shù)進(jìn)行再次綁定的現(xiàn)象,這主要是因?yàn)槭艿竭f歸函數(shù)調(diào)用以及循環(huán)語句的影響,進(jìn)而對程序分析和計(jì)算的完備性造成了一定程度的影響,因此需要在前次生成的對象例化模型的基礎(chǔ)上,進(jìn)行多遍對象別名分析,直至對象例化模型不再變化為止,進(jìn)而最大限度的提高分析的完備性和準(zhǔn)確性。

在對象別名分析的過程中,需要借助綁定時(shí)間環(huán)境來對各種變量不同的綁定時(shí)間進(jìn)行合理的記錄,并為每一個(gè)變量的綁定時(shí)間設(shè)置相應(yīng)的分析標(biāo)注,一般而言,變量的BTA標(biāo)志表示了其狀態(tài),而對于引用變量是用專用類名集合進(jìn)行表示的,進(jìn)而計(jì)算出其最小上界。在別名分析中,語句分析是核心和關(guān)鍵,因此需要加強(qiáng)對各種語句的分析,進(jìn)而得出更新后的BTA環(huán)境。同時(shí)需要對語句進(jìn)行調(diào)用,這就需要先對引用變量指向的所有專用類,求出對象成員和方法參數(shù)的狀態(tài),構(gòu)成方法例化模式,并檢查該模式的存在形式,形成專用的方法名,進(jìn)而完成綁定,在對定義體進(jìn)行合理的分析,并在分析結(jié)束后進(jìn)行保存。同時(shí)加強(qiáng)對循環(huán)語句的分析,即進(jìn)行反復(fù)的分析,直到分析前后的BTA環(huán)境相同為止。這種重復(fù)分析對象別名分析的計(jì)算量有較大影響。假設(shè)循環(huán)體中有k個(gè)引用型變量被賦值,而每個(gè)變量可能綁定到m種專用類對象實(shí)例。在實(shí)用程序的分析中,分析過程收斂很快,通常僅重復(fù)分析2次或3次。因此,如果程序語法樹的結(jié)點(diǎn)個(gè)數(shù)為n,對象別名分析的計(jì)算復(fù)雜度為0(n)。

可見,在對擴(kuò)展對象的別名分析中,實(shí)現(xiàn)了綁定時(shí)間分析與別名分析的有效結(jié)合,這樣可以有效的解決對象類和方法的多變異例化問題,通過對程序中綁定時(shí)間的分析,實(shí)現(xiàn)了對對象類和方法的有效處理,在例化模型的基礎(chǔ)上,形成了多種版本的程序代碼,用于程序的部分計(jì)算。在實(shí)際的程序運(yùn)行中,該方法取得了很好的成效,不僅具有較好的重用性,而且滿足了各種編譯時(shí)刻和運(yùn)行時(shí)刻的部分求值的需要,即使帶來了一定的程序膨脹,也可以將其控制在一定的范圍內(nèi),具有可接受性。

4 結(jié)束語

Java語言程序例化中的擴(kuò)展對象別名分析的主要特點(diǎn)在于不僅能夠區(qū)別同一對象中不同成員變量的綁定時(shí)間,也能夠區(qū)分不同程序點(diǎn)創(chuàng)建的對象實(shí)例,進(jìn)而能夠區(qū)分成員函數(shù)中同一引用型參數(shù)所綁定的對象實(shí)例,從而有效地提高了Java程序綁定時(shí)間分析的精度。在Java語言的部分求值系統(tǒng)中,擴(kuò)展對象別名分析的實(shí)現(xiàn)有效地?cái)U(kuò)大了部分求值的作用范圍。

參考文獻(xiàn):

[1]冀振燕,程虎.Java編譯程序技術(shù)與Java性能[J].軟件學(xué)報(bào),2010,11(02).

[2]董強(qiáng).基于Java語言的安全性分析[J].艦船科學(xué)技術(shù),2008,30(02).

[3]顧慶,陳道蓄,謝立,孫鐘秀.面向Java的分布式程序測試系統(tǒng)[J].軟件學(xué)報(bào),2012(04).

[4]葉靖波,陸鑫達(dá).基于純Java語言的異構(gòu)并行處理支持平臺[J].計(jì)算機(jī)學(xué)報(bào),2010(07).

[作者簡介]許云飛(1990-),男,吉林四平,長春工業(yè)大學(xué)軟件學(xué)院學(xué)生,本科,程序設(shè)計(jì)Java方向。

乌什县| 陆丰市| 桓仁| 深泽县| 白水县| 微山县| 和田县| 宣恩县| 偏关县| 治县。| 舟曲县| 玉田县| 灌云县| 梁平县| 都安| 广宗县| 故城县| 南汇区| 南澳县| 玉山县| 浏阳市| 高邮市| 赞皇县| 日土县| 金乡县| 安化县| 沭阳县| 墨脱县| 章丘市| 卓尼县| 利辛县| 山丹县| 崇阳县| 抚宁县| 睢宁县| 武定县| 牡丹江市| 吐鲁番市| 板桥市| 邯郸市| 介休市|