![畢業(yè)設計外文資料翻譯-JVM - Java虛擬機在ActionScript3.0中實現(xiàn)_第1頁](http://file4.renrendoc.com/view/bc56798fea9f7afe38e2fb1e157cc1eb/bc56798fea9f7afe38e2fb1e157cc1eb1.gif)
![畢業(yè)設計外文資料翻譯-JVM - Java虛擬機在ActionScript3.0中實現(xiàn)_第2頁](http://file4.renrendoc.com/view/bc56798fea9f7afe38e2fb1e157cc1eb/bc56798fea9f7afe38e2fb1e157cc1eb2.gif)
![畢業(yè)設計外文資料翻譯-JVM - Java虛擬機在ActionScript3.0中實現(xiàn)_第3頁](http://file4.renrendoc.com/view/bc56798fea9f7afe38e2fb1e157cc1eb/bc56798fea9f7afe38e2fb1e157cc1eb3.gif)
![畢業(yè)設計外文資料翻譯-JVM - Java虛擬機在ActionScript3.0中實現(xiàn)_第4頁](http://file4.renrendoc.com/view/bc56798fea9f7afe38e2fb1e157cc1eb/bc56798fea9f7afe38e2fb1e157cc1eb4.gif)
![畢業(yè)設計外文資料翻譯-JVM - Java虛擬機在ActionScript3.0中實現(xiàn)_第5頁](http://file4.renrendoc.com/view/bc56798fea9f7afe38e2fb1e157cc1eb/bc56798fea9f7afe38e2fb1e157cc1eb5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、畢業(yè)設計外文資料翻譯學 院: 專業(yè)班級: 學生姓名: 學 號: 指導教師: 附 件:外文資料翻譯譯文; 2.外文原文 指導老師評語: 工作態(tài)度認真,英文資料選擇合理,與畢業(yè)論文相關度高。能在規(guī)定的時間內(nèi)完成翻譯任務,工作量飽滿;語言較為通順,專業(yè)術語表述較為準確。 簽名:張德成 2015年10 月14 日1.外文資料翻譯譯文JVM - Java虛擬機在ActionScript3.0中實現(xiàn)摘要: 本文介紹AJVM的概念和實現(xiàn)細節(jié) - 在ActionScript 3.0中實現(xiàn)國家的最先進的Java虛擬機(JVM)。動作腳本是支持編譯為Java字節(jié)碼客觀的編程語言。在所提出的解決方案出現(xiàn)了利用一個新
2、的想法 - 已選擇使用其他虛擬機的執(zhí)行環(huán)境(行動為腳本虛擬機)來構(gòu)建Java的由AJVM支持JVM規(guī)范第2節(jié)規(guī)定的功能虛擬Machine.The集的方式使所述機器在許多實際應用中都在商業(yè)方面,以及在科學中使用。作為AJVM的結(jié)構(gòu)是模塊化的,它的特點在未來的擴展不會造成任何困難。 AJVM ActionScript 3.0中它是由ActionScript虛擬機(AVM)執(zhí)行實施使得有可能在ActionScript 3.0編寫的應用程序中使用Java代碼。它產(chǎn)生了許多新的機會,考慮到AVM是flash播放器的一部分 - 常用的插件為廣大現(xiàn)代Web瀏覽器,包括移動版本的形式提供的多媒體播放器。關鍵詞
3、:JVM,動作,字節(jié)碼簡介規(guī)范的傳統(tǒng)商業(yè)實現(xiàn)的目的是增加一個虛擬機JVM(VM)的性能。因此虛擬機在低級語言通常緊密地與操作系統(tǒng)(OS)和硬件結(jié)合實現(xiàn)(只是在這種編譯成字節(jié)碼硬件平臺的本地代碼編譯器時)集成AJVM的.The目標是執(zhí)行Java應用程序各種主要搭載了Web瀏覽器的計算機,通過它可以使用Java庫中的Flash應用程序,并為最終用戶方便的平臺來觀察和理解其背后的JVM概念,以增加代碼的重用。最重要的是該解決方案擴展Flash平臺的新功能:多線程,阻塞操作,泛型類以及執(zhí)行字節(jié)碼的一個新概念。環(huán)境介紹主要有兩種類型的虛擬機:仿真器和解釋器9,該模擬器是一個允許執(zhí)行(在一個孤立的環(huán)境中)
4、的整個操作系統(tǒng)和其他軟件,旨在為特定平臺由于硬件虛擬化。解釋器能夠執(zhí)行的二進制的,預編譯代碼,這是一個內(nèi)置的編譯器的一個輸出定義它自己的結(jié)構(gòu)作為virtualdevice7的軟件。在本文的進一步部分術語虛擬機將被用來表示解釋。Flash平臺和ActionScript 3.0Adobe Flash技術(以前稱為Macromedia Flash的)是一個多媒體平臺,使網(wǎng)頁中的新功能:動畫,視頻流,互動常用來實現(xiàn)游戲,廣告,以及更復雜,更復雜的應用。Flash應用程序發(fā)布為SWF文件(沖擊波Flash對象)。通常有每個應用程序,即使它可能包含許多庫和多媒體資源的單個文件。在Flash 5 Flash
5、 4中引入了行動的概念擴大,并首次,在編程語言10,11,閃光燈7與ActionScript編程的第二個版本一起發(fā)布的背景下使用的動作腳本術語語言:這樣的功能類型控制(編譯期間)和基于類的繼承進行了介紹。 Flash播放器9發(fā)布使用ActionScript 3.0 - 語言是顯著重新設計,以支持降級的兼容性,也有玩家兩個虛擬機:AVM1(支持行動為腳本1.0和2.0)和AVM2(支持動作腳本3.0 )14,新功能的數(shù)量已被引入的球員,包括性能優(yōu)化(硬件加速支持DirectX和OpenGL),型控制(代碼編譯和執(zhí)行過程中),基于類和prototypebased繼承,使用包分離,命名空間和正則表達
6、式,新的字節(jié)碼格式,E4X格式和其他支持。綜上所述:ActionScript 3.0中是基于對象的,具有很強的類型,控制指令式編程語言,編譯成字節(jié)碼AVM2虛擬機上執(zhí)行,單線程(由Flash播放器觸發(fā)的事件驅(qū)動),所以不支持封鎖方式,具有自動內(nèi)存管理(垃圾收集器),不支持泛型類,不支持匿名類。在本文的另一部分來動作的任何引用將指向ActionScript 3.0中。相關工作還有我們的工作所作出的貢獻兩大方面:Java虛擬機在非standardenvironment實施Flash播放器里面的Java平臺的仿真。在作者的意見,有沒有比AJVM其他的解決方案,同時處理:動作腳本和JVM。這使JVM能
7、夠模擬Flash播放器內(nèi)的Java平臺的一個獨特的系統(tǒng)。有非標準的JVM包括以下提到的那些的主體的出版物編號:Jamiga - 該項目的目標是在Amiga的計算機16執(zhí)行Java應用程序。JC - JVM的屬性是一種新的方法來執(zhí)行的字節(jié)碼。所有的Java類轉(zhuǎn)換上即時對源代碼用C語言,然后編譯從而使類似于傳統(tǒng)只是在時間編譯器即時編譯器性能的本機代碼)17。Squawk - 為嵌入式系統(tǒng)和小型移動設備實現(xiàn)JVM對Java ME微型版)。所有元素,除了低級別的模塊支持I / O操作和操作系統(tǒng)的特定代碼,在Java中實施了包括垃圾收集器)15。GNU Classpath的 - Java標準庫在GNU許
8、可證分發(fā)提供了極大的基地打造自己的JVM20JOP - Java的優(yōu)化的處理器是硬件實現(xiàn)JVM與預測的執(zhí)行時間為嵌入式實時系統(tǒng)。由于所使用的處理器的尺寸小,它可以在低成本FPGA現(xiàn)場可編程門陣列)來實現(xiàn)。對于低容量系統(tǒng),一個FPGA的靈活性可以更為重要雖然比傳統(tǒng)處理器稍貴。該處理器被設計在VHDL編程語言超高速硬件描述語言)。處理器直接執(zhí)行字節(jié)碼,沒有必要在編譯時也不來分析/解釋類文件。利用FPGA允許JOP動態(tài)申報堆棧大小這是基于-stack-VM JVM一致的,而不是基于寄存器)21。Sable VM - 是一個高度便攜和高效的Java虛擬機,采用先進設備,最先進的解釋技術。它的目標是要相
9、當小,速度快,兼容各種規(guī)格JVM規(guī)范,JNI,調(diào)用接口等)18,關于在Flash中實現(xiàn)的其他平臺的模擬器盡管ActionScript 3.0中是比較新的語言已經(jīng)出現(xiàn)了迄今為止實施了一些仿真器:FC64 - 閃光的Commodore64模擬器 - FC64是一種低層次的,64代的全功能仿真器允許用戶執(zhí)行設計的Commodore64,以及在BASIC編程語言22編寫代碼的應用程序。FlashX頻譜48K - 辛克萊ZX光譜模擬器) - FlashX頻譜48K類似于FC64的解決方案。不同的是,它模擬辛克萊ZX光譜平臺。AminNes - 閃光NES模擬器 - 閃光NES模擬器是任天堂娛樂系統(tǒng)仿真器
10、 - 8位游戲配備了2KB RAM和2KB顯存控制臺。該仿真器支持MOS6502,保證渲染的視頻質(zhì)量最高。Flip8 - CHIP-8閃光燈模擬器 - Flip8是CHIP-8的模擬器。 CHIP-8是一種虛擬機中所用解釋稱為CHIP-8的編程語言70設計的。它曾經(jīng)被上的圖形計算器安裝。 FIip8能夠執(zhí)行的字節(jié)碼,包括35個不同的操作19的仿真器。在ActionScript3.0的JVM3.實現(xiàn)動作Java虛擬機AJVM)在動作腳本13來實現(xiàn)。它實現(xiàn)了在JVM2.0版的說明書中描述的特征的子集。該部分包括下面的架構(gòu)和實現(xiàn)問題這篇文章的作者必須解決目前更多的信息。 3.1.虛擬機VS標準庫 任
11、何Java虛擬機的實現(xiàn)的關鍵部分是一個標準庫 - 由JVM規(guī)范描述的核心Java類的實現(xiàn)4,即使是最簡單的Hello Word中的Java應用程序的執(zhí)行需要數(shù)百個核心的Java類是存在和加載到VM。在論文中描述的解決方案包含在一個標準庫而言以下要素:AJVM庫 - 包含AJVM的可執(zhí)行文件,準備的ActionScript3.0庫中的任何Flash或Flex項目中使用。 Flex是一套允許開發(fā)人員編寫RIA應用組件。它是被比較的技術,例如XUL,JavaFX的或Silverlight12。ART標準庫 - Java標準庫的等效包含在任何JVM分布如JRE系統(tǒng)庫的JavaSE中)。一個標準庫是特定
12、于虛擬機實現(xiàn)的,預計本機實現(xiàn)在VM選擇的方法。對于AJVM的目的,我們實施了基于GNU Classpath的標準庫堪稱藝術ActionScript在運行時)。正如作者集中在JVM的選擇功能,藝術是沒有標準庫的完整實現(xiàn),雖然有可能延長在未來的實施。 3.2.AJVM高水平概述AJVM可作為一個對象由程序員的代碼他/她的Flash應用程序中創(chuàng)建以同樣的方式作為Jython解釋為Python編程語言)。因此,程序員的代碼有超過AJVM一個完全控制。此外,可以創(chuàng)建單個Flash主機應用程序內(nèi)AJVM幾個孤立的實例。由于通常在Flash平臺的Flash主機應用程序的代碼和AJVM的代碼的功能都分布在一個
13、SWF文件,而這是程序員的代碼的ART和Java類的一部分的Java類將是JAR檔案或單*.class文件)位于同一Web服務器上。圖1 AJVM1.高級概述 3.3在JVM中執(zhí)行字節(jié)碼 其中AJVM的創(chuàng)新是一個完全客觀的方法,以虛擬機的正在執(zhí)行的字節(jié)碼的主要功能。字節(jié)碼執(zhí)行模塊在一個典型的JVM的架構(gòu)的標準位置的總覽可以在圖2中可以找到。 在Java字節(jié)碼的方法的許多屬性之一。在JVM規(guī)范字節(jié)碼指令被標識為數(shù)字(000至Oxca,二進制指令的傳統(tǒng)JVM的作品的一個執(zhí)行模塊保持在方法區(qū)存儲器和在比較已編譯字節(jié)碼不變的方式來表示,唯一的例外是取代常數(shù)池元素與本地代碼符號引用(當然JIT編譯的。還
14、有利用概念XIP(執(zhí)行到位的JVM),因此不復制字節(jié)碼的方法區(qū),但提到*.class文件時的指令是移動實現(xiàn)正在執(zhí)行6,有上述的模型的下列含義:圖2 在一個標準的JVM的架構(gòu)字節(jié)碼的執(zhí)行模塊的位置圖3 句法分析樹的簡化版本,在JVM的Java類 在Java的字節(jié)碼人需要解釋說明,了解指令后有多少字節(jié)的指令的參數(shù),這是必要的獲得下一個指令的開始 - 必要性每次執(zhí)行指令時解釋該指令的代碼。 必要性derefer指向常量池中的每一個執(zhí)行指令時 - 該指令的參數(shù)可以參考類,方法或字段編址為常量池中的條目(例如:新的,而分配對象或數(shù)組anewarray指令,invokevirtual指令,該指令要求的方法
15、等)。上面的方法可能會導致一個顯著超載。例如:獲取對象的非靜態(tài)字段的一個值需要要執(zhí)行以下步驟:檢索(從字節(jié)碼,并在一個常量池使用從條目信息)的數(shù)據(jù)結(jié)構(gòu)的一個地址與場的說明中,檢索(從字段描述)的數(shù)據(jù)結(jié)構(gòu)的一個地址與該字段的類的說明中,檢索使用有關它的類和它的全名信息領域的偏移,從表示該字段的對象的字段的值的數(shù)據(jù)結(jié)構(gòu)中檢索(使用字段和字段的數(shù)據(jù)類型的偏移量)。上述步驟沒有付諸行動對于JIT編譯(JIT)8。標準的方式來執(zhí)行字節(jié)碼和訪問促使我們?nèi)ふ移渲胁扇×艘韵虏襟E的另一種方法常量池中數(shù)據(jù)的低性能: Java類的客觀再現(xiàn)的建設 - 句法分析樹的構(gòu)建,這是在類文件中的元素的對象表示(見圖3)。表示
16、是不是類及它們之間關系的典型曲線圖表示。有以下已知的局限性:間接引用 - 除了一類及其方法之間的直接關系(或方法和它的參數(shù)之間)的一些對象之間的傳統(tǒng)語法解析樹商店的關系純粹是自己的標識符。例如:檢索類com.test.B也要冒字符串“com.test.A”,并尋找類的圖形用這樣一個名字的任何屬性。這種方法需要檢查與這樣的名稱的對象是否存在,這是耗時的。在字節(jié)碼的二進制表示 - 一個語法分析樹的一部分 - 方法“字節(jié)碼 - 在所有未解析。內(nèi)的方法的指令有對類的引用,其它方法和字段(這也是句法分析樹的元素),這只要在執(zhí)行字節(jié)碼保持在一個二進制表示。上述語法分析樹可用于建立圖3中表示的類,方法,字段
17、和甚至外部類型之間的所有關系示出更有效的代表可以類裝入過程的第一步驟之后立即解決(解析類表示)從而使字節(jié)碼的執(zhí)行更為有效。構(gòu)建面向?qū)ο蟮淖止?jié)碼的表示 - 正如上一節(jié)我們決定也使用面向?qū)ο蟮谋硎拘问阶止?jié)碼圖上呈現(xiàn)。在一個傳統(tǒng)的接近作為指令的單維序列執(zhí)行的一個接一個的機器代碼被表示。在實踐中,指令指針經(jīng)常改變由于分支的更復雜的方式指示,有條件或無條件跳轉(zhuǎn)等等,所述控制應轉(zhuǎn)移到(后分支指令)的字節(jié)碼的地方被計算作為相對于當前指令指針的偏移量。這意味著,在執(zhí)行分支指令需要計算新地址,并讀出從該地址的字節(jié)代碼指令。我們所采取的方法是使用一個新的想法:解析類之后,對于每個非抽象方法的建立了一個指令執(zhí)行圖(
18、見圖5)。圖4圖5.采樣指令執(zhí)行的背景下,圖中顯示華氏度它使用對象操作碼被映射到的各個指令類。每當指令需要被執(zhí)行對象的方法與指令的參數(shù)執(zhí)行。每個對象具有關于代表由該指令所需的類,字段和方法的對象的知識(存儲為參考)。同樣,也有一個連續(xù)的指令的引用(或為分支指令連續(xù)指令)存儲在對象。該方法存儲從它的方法而字節(jié)碼存儲參照其方法,以便它知道在哪里,得到控制回返回時的參考的第一條指令。使用的是ActionScript 3.0語言的客觀性質(zhì)可以創(chuàng)建的類Java指令完整的層次 - 執(zhí)行指令其對象表示代表團。這種層次結(jié)構(gòu)的一部分在圖6中呈現(xiàn)的每個指令的實現(xiàn)方法的execute()在指令界面(設計模式命令)聲
19、明。該方法的參數(shù)是對象FrameExecutionContext,它表示一個堆棧幀。對象的圖可以在圖中找到7. FrameExecutionContext對象提供對計算棧和局部變量的當前值從而使指令以執(zhí)行(本身)中的當前上下文。特異于指令執(zhí)行的方式之后(例如:從棧中彈出兩個值,添加它們推到堆棧為IADD指令)JVM有設置將要執(zhí)行的下一條指令。其結(jié)果,條件指令可以控制它們的線程的執(zhí)行。一個指令可以利用上課的時候分析和圖形化建通過附加引用。例如:類Jgetfieldinstruction,這是代表getfield命令存儲參照JVMField類的一個對象,允許它加載一個字段的當前值。這是一種分散的方
20、式:每超過200字節(jié)碼的說明具有實施(在executeQ方法),從而AJVM的概念模式(見圖8)從JVM的傳統(tǒng)實現(xiàn)顯著不同。在AJVM字節(jié)碼執(zhí)行模塊虛擬化。該模塊被表示為對象加載的字節(jié)碼的指令創(chuàng)建。這意味著AJVM既不包含也不使用字節(jié)碼的二進制表示。有這種方法的優(yōu)點如下:字節(jié)碼的一次性解釋 - 字節(jié)碼的二進制表示由AJVM讀一次,被加載的類時,指令圖形建成。實施新的反思 - 所有類,方法,字段和屬性都客觀陳述反映因而不需要引用本地代碼的執(zhí)行。清晰和靈活的架構(gòu) - 指令圖形的檢查以及類之間的依賴關系使得能夠在未來與有趣的功能擴展AJVM如動態(tài)代碼轉(zhuǎn)換或執(zhí)行代碼,可用于分析和優(yōu)化碼性能的可視化。圖
21、6 部分華氏度圖顯示目標層次華氏度的Java說明圖7 最重要的類的圖的一部分JVM執(zhí)行模塊圖8 在JVM字節(jié)碼執(zhí)行模塊圖9 異常處理程序表的客觀再現(xiàn)的方法JVM實現(xiàn)補充說明實施異常處理程序一個編譯的類的屬性是一個異常處理程序表。表被用來存儲有關類的異常的信息被處理,該第一指令由所述處理器保護,最后一個指令的偏移量被保護和異常處理程序的第一指令的偏移量。在AJVM沒有指令偏移可言,因為它們是由指令圖形代替。因此異常處理程序必須以客觀的方式進行定義。每種方法都有較異常處理程序?qū)ο蟮募希斜砜赡転闊o的try-catch塊的方法是空的。被保護代表一個異常處理程序商店的所有指令引用的對象(因為不可能代
22、表設置為第一指令和偏移。的想法是示于圖9。4.2. 垃圾收集我們解決了自動內(nèi)存管理(AAM的問題5的ActionScript3.0的使用功能,其配備的閃光燈AMM VM(AVM2配備了垃圾收集器從而解決GC相關的問題的最簡單方法是:從我們自己的堆在JVM辭職 - 我們的JVM不使用堆的。每個封裝和原生ActionScript對象內(nèi)的每個Java對象 - 這是可能的,因為代表每個Java對象為在ActionScript3.0分配在動作腳本的AVM2堆和AVM2管理定義的類JVMObject的一個實例。 EachJava對象被封裝在ActionScript3.0對象。每個動作腳本的JVMObjec
23、t存儲表示該類中的Java對象和數(shù)據(jù)結(jié)構(gòu)來存儲Java對象的狀態(tài)從對象的類所有字段的值)為對象的引用。 利用AVM2垃圾收集器 - 如內(nèi)部AJVM Java對象由它們是由AVM2的垃圾收集器管理動作的對象表示。唯一的限制是不存儲這些對象的任何額外的外部引用,即使它可能是虛擬機監(jiān)控等的目的的多線程傳統(tǒng)實現(xiàn)的JVM通過Java線程映射到本地線程在操作系統(tǒng)級別)1提供多線程,2,AJVM沒有獲得低級別操作系統(tǒng)的線程,因為它是由Flash Player它在運行限制和剛剛執(zhí)行的事件處理程序的線程中的ActionScript3.0的代碼。因此,有必要執(zhí)行在應用程序的級別我們自己設計的多線程模型。我們必須使
24、用一個線程的objectiverepresentation作為虛擬機的一部分。 AJVM的實例持有JVMThread類的實例的集合。新的對象被添加到集合每一個字節(jié)代碼指令執(zhí)行java.lang.Thread.startQ方法時,并且當從java.lang.Thread.run()方法返回被除去。只要集合為空的AJVM停止。 AJVM工作在周期和每個周期大約是執(zhí)行的每個活動線程的字節(jié)碼的指示的量。 AJVM的周期如在一段時間內(nèi)測量的,而不是一個號碼的指示)的長度是AJVM配置項。每個周期的可用時間在所有線程之間的分裂據(jù)此它們的優(yōu)先事項。以滿足上述要求的最簡單的方法是執(zhí)行RoundRobin算法具
25、有優(yōu)先級的處理。每個AJVM周期包括/需要以下步驟:計算周期結(jié)束的時間可能結(jié)束時間當前時間+配置周期時間)。如果達到結(jié)束時間,給控制返回到事件處理過程從而完成了循環(huán))。對于集合中的每個線程:執(zhí)行方法步驟的次數(shù)基礎上的線程的優(yōu)先級的計算。如果線頭執(zhí)行堆棧是空的),從集合中刪除該線程?;氐讲襟E2。顯然,上述的算法并不適用于“阻擋”或“等待顯示器”monitorenter指令)線程。4.4本機接口 AJVM的原生界面允許用戶提供其實現(xiàn)的Java類為ActionScript3.0的功能。這是虛擬機初始化由于結(jié)合使用ActionScript3.0對象的本地方法它的類,名稱和簽名)表示函數(shù)回調(diào)設計模式)的
26、關閉方法過程中完成。圖10演示了虛擬機的情況下,樣本實現(xiàn)和本地方法開方登記)。圖10 樣本代碼用于注冊本地方法在JVM 該函數(shù)的參數(shù)被用來傳遞從JVM到用戶的方法的原生界面如下內(nèi)容: 在執(zhí)行堆棧幀的當前執(zhí)行幀的背景 - 提及FrameExecutionContext類的,使該訪問當前Java線程堆棧和堆棧幀的局部區(qū)域的以及屬性的情況。它允許本地方法以使用禁止Java代碼信息實例來實現(xiàn)與使用的類和方法)的客觀代表性的反映。 傳遞給Java方法參數(shù)的值,ARGS包含0或多個參數(shù)由Java代碼傳遞給本地方法。原始類型被映射到而目的是通過其封裝JVMObject)表示對應類型的ActionScript
27、3.0 - 在本機代碼可以很容易地得到類似于在反射中使用的一種方法其類和訪問領域也公開)。 回調(diào),從本地方法返回 - 盡管關鍵字回報是存在于ActionScript3.0,采用它從函數(shù)返回時會顯著減少本地方法的能力。每個機實現(xiàn)就必須得到它的Flash Player使用單線程后不久把控制權回到AJVM。在所描述的方式實現(xiàn)回報功能允許開發(fā)人員來實現(xiàn)阻塞的方法(例如輸入/輸出操作)。直到執(zhí)行回調(diào)線程調(diào)用本地方法被阻斷。實際上,它意味著,即使無效的方法(沒有返回任何東西)應該包含在年底onReturn(空)調(diào)用。測試案例我們的工作實現(xiàn)部分的輸出包括一個ActionScript3.0庫實現(xiàn)Java虛擬機
28、的最重要的特點。與JVM規(guī)范版本2和性能兼容性:虛擬機的質(zhì)量可以使用許多指標,包括兩個最重要的測量。正如在本文開頭提到的,完全符合JVM規(guī)范不是我們的目標。相反,我們專注于允許開發(fā)人員創(chuàng)建的大部分典型的Java應用程序的標準Java庫的那些部分。圖11 執(zhí)行時間華氏度測試1 - 執(zhí)行固定浮點運算既不高性能是AJVM的目標。然而,這是值得AJVM的實施與最流行的JVM比較 - 甲骨文熱點。下面的測試平臺使用:(VM:Java的熱點(TM)64位服務器VM(建21.0-BL7,混合模式,庫:用Java(TM SE運行時環(huán)境(建立1.7.0-bl47J AJVM(插件) - VM:AJVM,參考版本
29、庫:ART,參考版本,F(xiàn)lash播放器:33,插件的ActiveX,Internet Explorer 8中所有的測試已在英特爾(R)酷睿(TM)執(zhí)行睿i7-2630QM2.0GHz的, 8 GB RAM,系統(tǒng)Windows764位。5.1測試用例1 - 定點算法 這次試驗是通過一個整數(shù)數(shù)組迭代和陣列中的每個元素上執(zhí)行幾種計算。結(jié)果示于圖11.測試結(jié)果留下關于商業(yè)HotSpot虛擬機和實驗,研究AJVM之間的差異毫無疑問。由于熱點使用即時編譯代碼被編譯為本地的代表性和物理處理器,而不是在虛擬機上執(zhí)行。其結(jié)果是,計算顯著更快完成。5.2測試案例2 - 浮點數(shù)排序 該測試是調(diào)用標準庫的java.u
30、til.Arrays.sort()方法來排序雙數(shù)字陣列。結(jié)果可以在圖12中找到。再次HotSpot虛擬機節(jié)拍AJVM和再次的主要因素是在AJVM實現(xiàn)JIT。另一個重要因素是,在熱點算術源代碼是用C寫的,這使得開發(fā)優(yōu)化技術成為可能。值得一提的線性陣列的大小為兩者的函數(shù)的執(zhí)行時間增加:AJVM和熱點的虛擬機。圖12.執(zhí)行時間華氏度測試2 - 排序數(shù)組定點數(shù)5.3測試案例3 - java.lang中的鏈接列表的排序比較的對象 這次試驗是從標準庫調(diào)用java.util.Collections.sortQ方法進行排序鏈表(java.util.LinkedList中)含有實現(xiàn)comp盯eTo方法的對象。該
31、測試驗證指針操作和虛擬方法(基本類型數(shù)組排序不同)。結(jié)果可以在圖13中找到。 人們可以在這里看到一個有趣的現(xiàn)象:盡管這兩個測試;試驗2和試驗3是關于集合排序,執(zhí)行時間在試驗3的增加比試驗2顯著更大的原因是,在試驗3的對象進行排序,而不是其導致多個對象的操作數(shù)(比較方法電話)。和指針操作在AJVM比熱點效率較低。圖13 排序鏈表 -測試3的執(zhí)行時間可比對象5.4測試案例4 - 網(wǎng)絡連接和反序列化對象 該試驗的目的是要建立與使用的遠程服務器的網(wǎng)絡連接。插座,以便獲得一些數(shù)據(jù)和反序列化。結(jié)果可以在圖14中找到。 再次HotSpot虛擬機節(jié)拍AJVM和再次的主要因素是在AJVM實現(xiàn)JIT。另一個重要因
32、素是,在熱點算術源代碼是用C寫的,這使得開發(fā)優(yōu)化技術成為可能。值得一提的是,EX-有趣的是,AJVM和熱點之間的執(zhí)行時間之間的差不可見,并且不超過35。其原因是,在測試的外部,系統(tǒng)資源(網(wǎng)絡連接)強烈使用。換句話說:它不是那么重要如何,因為大多數(shù)操作在操作系統(tǒng)的電平做了虛擬機的元件實現(xiàn)。在otherwords,輸入/輸出操作的其他動作的比例比在先前測試更高。圖14.執(zhí)行時間華氏度測試4 - 傳輸數(shù)據(jù)通過網(wǎng)絡連接和反序列化它5.5測試案例5 - 大規(guī)模多線程 測試包括發(fā)射并發(fā)線程的數(shù)目,執(zhí)行它們并等待最后一個結(jié)束的。結(jié)果示于圖15中示出。在圖15中的熱點灰色條表示丟失的結(jié)果 - 這是不可能啟動這
33、么多線程。有助于較小執(zhí)行時間AJVM比較熱點的主要因素是在兩種溶液中使用的不同線程模型。熱點,像許多其他的虛擬機映射Java線程到本機操作系統(tǒng)線程。作為結(jié)果創(chuàng)建線程是耗時的操作。時,有一個巨大的線程量OS的行為可能是不穩(wěn)定的。 AJVM模擬多線程編程 - 創(chuàng)建和啟動一個新的線程是創(chuàng)造多一個Java對象一樣昂貴。圖15.測試5執(zhí)行時間 - 執(zhí)行顯著量華氏度并發(fā)線程5.6測試用例摘要 來自執(zhí)行測試用例,得出的結(jié)論如下:測試1,2和3沒有留下任何懷疑的問候商業(yè)HotSpot虛擬機和實驗,研究AJVM之間的差異。由于熱點使用即時編譯代碼被編譯為本地的代表性和物理處理器,而不是在虛擬機上執(zhí)行。其結(jié)果是,
34、計算顯著更快完成。測試圖4示出由于輸入/輸出操作的與執(zhí)行時間比較顯著影響更平衡的結(jié)果。輸入/輸出操作是CPU要求不高從而AJVM更有效。結(jié)果證明清楚,在一些應用中AJVM可以成功使用。測試5提供支持領域存在哪些AJVM比傳統(tǒng)虛擬機更加堅固可靠的證據(jù)。 AJVM的好處是線程創(chuàng)建的實現(xiàn)方式。盡管如此,它必須是強調(diào)指出,一個線程的有效創(chuàng)建并不意味著所有線程操作上AJVM更有效。至于有人提到測試5只側(cè)重于創(chuàng)建線程,而不是衡量所有線程相關的操作(創(chuàng)建之前,睡覺,起床,線程調(diào)度等。5.7。一個JVM利用樣本 本節(jié)演示AJVM的示例應用程序。它描述AJVM如何被用于執(zhí)行樣本的互聯(lián)網(wǎng)應用 - 多用戶,文本聊天
35、室。在圖16所示的體系結(jié)構(gòu)包含下列元素:圖16.聊天室應用程序的架構(gòu)執(zhí)行在JVM上HTTP服務器 - 任何Web服務器通過HTTP協(xié)議提供靜態(tài)文件。聊天室服務器 - 在Java中實時實現(xiàn)服務器,多用戶聊天室(Java對象序列化時,聊天室的客戶端 - 使用Flex組件寫入在Flash客戶端應用程序。 AJVM應用來實現(xiàn)網(wǎng)絡功能(對象(德系列化和轉(zhuǎn)以及實現(xiàn)業(yè)務邏輯(登錄,授權和驗證數(shù)據(jù)。值得一提的是,上述示例使用了客戶端和服務器應用程序之間共享的Java代碼:同一類由JVM熱點(服務器端和AJVM(客戶端一旦SWF文件(Flash應用程序和Java類加載的加載,HTTP協(xié)議不再使用,并已建立一個單
36、一的網(wǎng)絡通信(TCP。6。結(jié)論本文的作者在ActionScript 3.0成功實施Java虛擬機。其結(jié)果,有可能使用到虛擬機的基礎設施(flash播放器的現(xiàn)有元素的元素建立自己的解決方案。它允許的作者把重點放在虛擬機(選定的模塊,如執(zhí)行字節(jié)碼執(zhí)行引擎一個新的概念,并利用現(xiàn)有的這超出感興趣(范圍GC,線程模型等。支持Java字節(jié)碼(動作腳本3.0和Flash Player環(huán)境的選擇產(chǎn)卵考慮到Flash Player已在大多數(shù)現(xiàn)代Web瀏覽器中常用的其實很多機會。如前一節(jié)中所示,AJVM可以成功地在執(zhí)行各種應用,包括因特網(wǎng)的人使用。有使用AJVM包括許多優(yōu)點:類高可重用性因特網(wǎng)應用程序的客戶端和服
37、務器元件通常使用相同的數(shù)據(jù)結(jié)構(gòu),類似。驗證規(guī)則(用于輸入數(shù)據(jù)以及業(yè)務邏輯的一些共同的要素在傳統(tǒng)的解決方案很多都實現(xiàn)兩倍這些常用功能(通常使用不同的實現(xiàn)平臺):每邊這是一個開發(fā)者的責任,以保證一致性。應用的兩個部分。使用AJVM的使開發(fā)在客戶端和服務器的側(cè)使用相同的Java代碼,這是一個巨大的節(jié)省時間和減少了許多錯誤的方式。提供了輕量級實現(xiàn)Java虛擬機與應用程序一起即使使用Java小程序符合前面提到的標準(類高可重用性),值得一提的是,F(xiàn)lash Player的是輕得多,比Java插件的Web瀏覽器更受歡迎。 AJVM使得有可能通過誰不打算Java運行時環(huán)境沒有額外的插件安裝到Web瀏覽器用戶
38、執(zhí)行Java代碼。最終用戶不必甚至知道他們的計算機上運行的JVM。 AJVM是極其輕便 - 編譯AJVM的大小小于lOOkb。消除傳統(tǒng)的客戶端限制客戶端應用程序通常在單線程環(huán)境中運行,因而只使用一個單獨的線程(設計用于支持用戶接口)。最好的例子就是JavaScript中,HTML5和Flash。 AJVM允許使用(在客戶端)額外的計算模型:多線程,仿制藥等。當然,參考實現(xiàn)AJVM的性能需要ActionScript 3.0代碼來負責完成如下任務:UI渲染,多媒體流媒體,和CPU密集型計算。執(zhí)行測試案例清楚地表明,目前的實現(xiàn)是缺少優(yōu)化技術,它加快字節(jié)碼的執(zhí)行,特別是即時編譯。因此,JVM的效率是較
39、低的相對于傳統(tǒng)的商業(yè)虛擬機(由熱點在測試用例表示執(zhí)行)。效率的差異范圍從利用集約外部資源(少操作上VM-水平與在操作系統(tǒng)級別一系列操作),以12800為其他測試案例的35。唯一的例外是揭示AJVM的主導地位(在測試案例5所描述)的一些具體情況。在AJVM未來的工作包括與JVM的參考規(guī)范(例如類加載過程中提供字節(jié)碼驗證)合規(guī)性的擴展。一個應該還記得,為了認真思考AJVM的實際應用中,應該做出符合Java 7的或至少是Java 6的標準。要做另一個顯著的工作是Java標準庫的進一步發(fā)展與JVM(提供完全符合Oracle實施或完全符合到GNU Classpath)交付。研究的另一部分將涉及提高了性能
40、。有很多選項,包括即時編譯。此外,新的字節(jié)代碼的執(zhí)行模型打開運行期間與上即時代碼轉(zhuǎn)換,代碼注入新的可能性,和更有效的和精確的代碼分析。它提到了幾次,AJVM設計為模塊化的方式使得在外部的VM(Flash播放器)依賴關系的水平可以降低到一定程度。例如,它可以實現(xiàn)自己的垃圾收集模塊和更換由Flash容器中提供的。然而,由于模塊的依賴關系,替換模塊可導致被迫更換其他人。上面提到的GC模塊是一個很好的例子。在當前實現(xiàn)對象的創(chuàng)建和管理是由Flash在所有的控制。以取代的GC兩個域?qū)⒈仨氝f送。參考文獻: 1林霍爾姆T.,耶林,F(xiàn).,Java虛擬機規(guī)范,第二版,Addison-Wesley出版社,1999年
41、。2高斯林J.,喜悅B.,Java語言規(guī)范,Addison-Wesley出版社,1996。3陳P.,李河,Java類庫:一個附有說明的參考,Addison-Wesley出版社,1997年。4諾頓P.,莫里森M.,java的手冊,奧斯本/麥格勞 - 希爾,1996年。5凡納斯B.,里面的Java 2虛擬機,麥格勞 - HIL,20006唐寧T“邁耶J.,Java虛擬機,OReilly Media公司,1997。7克雷格一,虛擬機,施普林格,2005年。8斯塔克 - R的.java和Java虛擬機:定義,驗證,確認,施普林格,2001年。9巴里奧五,費爾南德斯A.,研究的技術仿真編程,大學Poli
42、tecnica加泰羅尼亞,2001年。10布朗斯坦,R.,ActionScript 3.0中的圣經(jīng)“,Wiley出版社,2010。11的ActionScript Virtual Machine 2(AVM2)概述,Adobe系統(tǒng)公司,2007年。12加斯納D.時,F(xiàn)lash Builder 4和Flex 4圣經(jīng),Wiley出版社,2010。13埃爾斯特P.,面向?qū)ο蟮腁ctionScript 3.0,friendsofED,2007年。14的Adobe Flash Player技術分解。 HTTP:/ WWW。土坯。 COM /產(chǎn)品/播放器 _census /版本的Adobe Flash /技
43、術 _breakdown.html于2015年10月1日訪問。15西蒙D.,西富恩特斯C.,該應答機虛擬機:Java的在裸機上,ACM,200516 JAmiga VM的主頁,2014年/ 15日訪問2015年7月。17 JC虛擬機的主頁,2013年/ 15日訪問2015年7月。18皮克特C.,Verbrugge C.,在Java虛擬機返回值預測,VPW2 2004年。19 Flip8 - CHIP-8閃光燈仿真器主頁,2014年/projects/flip8/accessed在2015年9月21日。20 GNU Classpath的主頁,2014年/于2015年9月21日訪問。21 Scho
44、eber,M.,“JOP:嵌入式實時系統(tǒng)的Java優(yōu)化的處理器”,VDM出版社穆勒博士,2008年。22 FC64 - 閃光的Commodore 64模擬器的主頁,2014年的http:/ codeazur。 com.br/stu FF / fc64 _final /于2015年4月2日訪問。2.外文原文AJVM - Java Virtual Machine Implemented in ActionScript 3.0Abstract:This paper describes the concept and implementation details of AJVM - state-of-
45、the art Java Virtual Machine(JVM) implemented in ActionScript 3.0. Action Script is an objective programming language that supports compilation to Java bytecode. In the presented solution there has been a novel idea utilized - to use the other Virtual Machines execution environment (Action- Script V
46、irtual Machine) to build Java Virtual Machine.The subset of features specified in JVM Specification v.2 supported by AJVM has been chosen in a way which enables the machine to be used in many practical applications both in the commercial context as well as in science. As the architecture of AJVM is
47、modular, the extension of its features in the future will not cause any difficulties. The implementation of AJVM in ActionScript 3.0 which is executed by ActionScript Virtual Machine (AVM) makes it possible to use Java code in applications written in ActionScript 3.0. It spawns many new opportunitie
48、s considering that AVM is a part of FlashPlayer - commonly used multimedia player available in the form of plugins for the majority of modern web browsers, including mobile versions.Keywords: JVM, Action Script, bytecode1. IntroductionTraditional, commercial implementations of JVM Specification aim
49、to increase the performance of a Virtual Machine (VM). As a result VMs are usually implemented in low level programming languages,tightly integrated with Operating System (OS) and hardware (Just In Time compilers that compile bytecode into native code of the hardware platform).The goal of AJVM is to
50、 execute Java applications in a variety of computers equipped mainly with a web browser, to increase code reusability by making it possible to use Java libraries in Flash applications and to provide convenient platform for end-users to observe and understand concepts behind JVM. On top of that the s
51、olution extends Flash platform with new features: multi-threading, blocking operations, generic classes as well as a new concept of executing bytecode.1.1. Basic TermsThere are two major types of virtual machines: emulators and interpreters 9, The emulator is a solution allowing to execute (in an is
52、olated environment) the whole OS and other software designed for a specific platform due to hardware virtualization(VMWare Workstation or Oracle xVM VirtualBox). The interpreter is software capable of executing binary,precompiled code which is an output of a built-in compiler defining its own archit
53、ecture as of a virtualdevice 7. In the further part of this paper the term virtual machine will be used to denote the interpreter.1.2. Flash Platform and ActionScript 3.0Adobe Flash technology (previously known as Macromedia Flash) is a multimedia platform enabling new features in web pages: animati
54、ons, video streaming, interactivity commonly used to implement games, advertisements as well as more sophisticated and complex applications.Flash applications are published as SWF files(Shockwave Flash Object). Usually there is a single file per application even though it may contain many libraries
55、and multimedia resources. In Flash 5 the concept of actions introduced in Flash 4 was extended and, for the first time, Action Script term was used in the context of a programming language 10, 11, Flash 7 was released together with the second version of ActionScript programming language: such featur
56、es as type-control (during compilation) and inheritance based on classes were introduced. Flash Players 9 was released with ActionScript 3.0 the language was redesigned significantly and, to support downgrade compatibility, there are two virtual machines in the player: AVM1 (to support Action- Scrip
57、t 1.0 and 2.0) and AVM2 (to support Action-Script 3.0) 14, The number of new features have been introduced to the player including performance optimization (hardware acceleration for DirectX and OpenGL), type-control (during code compilation and execution), separation of class-based and prototypebas
58、ed inheritance, using packages, namespaces and regular expressions, new bytecode format, support for E4X format and others. To sum up: ActionScript 3.0 is object-based, imperative programing language with strong type-control, compiled to bytecode being executed on AVM2 virtual machine, single-thread
59、ed (driven by events triggered by Flash Player) so not supporting blocking methods, with automatic memory management (Garbage Collector), not supporting generic classes, not supporting anonymous classes.In the further part of the paper any references toAction Script will refer to Action Script 3.0.2
60、. Related WorkThere are two major aspects of the contributionof our work:Implementation of Java Virtual Machine in a nonstandardenvironmentEmulation of Java platform inside Flash Player.In the opinion of the authors, there are no solutions other than AJVM that handle both: Action Script and JVM. Thi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東公務員考試行測試題
- 2025年太陽能光伏組件安裝服務合同
- 2025年商業(yè)地產(chǎn)租賃協(xié)議深度剖析
- 2025年醫(yī)院食堂食用油采購協(xié)議
- 2025年紫外光固化油墨項目規(guī)劃申請報告
- 2025年互聯(lián)網(wǎng)用戶權益協(xié)議
- 2025年貨運司機勞動合同
- 2025年腫瘤類生物制品項目提案報告模范
- 2025年保障性住房貸款合同
- 2025年標準個人古董押借款合同樣本
- 學校安全隱患排查治理工作臺賬
- GB/T 8151.13-2012鋅精礦化學分析方法第13部分:鍺量的測定氫化物發(fā)生-原子熒光光譜法和苯芴酮分光光度法
- 2023年遼寧鐵道職業(yè)技術學院高職單招(英語)試題庫含答案解析
- GB/T 39274-2020公共安全視頻監(jiān)控數(shù)字視音頻編解碼技術測試規(guī)范
- GB/T 23800-2009有機熱載體熱穩(wěn)定性測定法
- 犯罪學全套教學課件
- T-SFSF 000012-2021 食品生產(chǎn)企業(yè)有害生物風險管理指南
- 2023年上海市閔行區(qū)精神衛(wèi)生中心醫(yī)護人員招聘筆試題庫及答案解析
- 水庫工程施工組織設計
- 售電公司與電力用戶委托交易代理合同
- 基礎護理學試題及答案(各章節(jié))-基礎護理學第四版試題及答案
評論
0/150
提交評論