在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
            2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
            MPA考試 | 中科院
            四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
            新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
            計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
            華為認證 | Java認證
            公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
            報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
            人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
            駕駛員 | 網(wǎng)絡(luò)編輯
            衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
            會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(wù)師
            注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
            一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
            質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
            設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
            城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
            繽紛校園 | 實用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
            您現(xiàn)在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > JAVA > 復(fù)習(xí)資料 > 正文

            等考二級JAVA:如何用JNI技術(shù)提高Java性能詳解

              阻礙Java獲得廣泛應(yīng)用的一個主要因素是Java程序的運行效率。Java是介于解釋型和編譯型之間的一種語言,同樣的程序,如果用編譯型語言C來實現(xiàn),其運行速度一般要比Java快一倍以上。Java具有平臺無關(guān)性,這使人們在開發(fā)企業(yè)級應(yīng)用的時候總是把它作為主要候選方案之一,但是性能方面的因素又大大削弱了它的競爭力。為此,提高Java的性能就顯得十分重要。

              問題的提出

              Sun公司及Java的支持者們?yōu)樘岣逬ava的運行速度已經(jīng)做出了許多努力,其中大多數(shù)集中在程序設(shè)計的方法和模式選擇方面。由于算法和設(shè)計模式的優(yōu)化是通用的,對Java有效的優(yōu)化算法和設(shè)計模式,對其他編譯語言也基本同樣適用,因此不能從根本上改變Java程序與編譯型語言在執(zhí)行效率方面的差異。

              JIT(Just In Time,及時編譯)技術(shù)是個比較好的思想。它的基本原理是:首先通過Java編譯器把Java源代碼編譯成平臺無關(guān)的二進制字節(jié)碼。然后在Java程序真正執(zhí)行之前,系統(tǒng)通過JIT編譯器把Java的字節(jié)碼編譯為本地化機器碼。最后,系統(tǒng)執(zhí)行本地化機器碼,節(jié)省了對字節(jié)碼進行解釋的時間。這樣做的優(yōu)點是大大提高了Java程序的性能,縮短了加載程序的時間;同時,由于編譯的結(jié)果并不在程序運行間保存,因此也節(jié)約了存儲空間。缺點是由于JIT編譯器對所有的代碼都想優(yōu)化,因此同樣也占用了很多時間。

              動態(tài)優(yōu)化技術(shù)是提高Java性能的另一個嘗試。該技術(shù)試圖通過把Java源程序直接編譯成機器碼,以充分利用Java動態(tài)編譯和靜態(tài)編譯技術(shù)來提高Java的性能。該方法把輸入的Java源碼或字節(jié)碼轉(zhuǎn)換為經(jīng)過高度優(yōu)化的可執(zhí)行代碼和動態(tài)庫 (Windows中的. dll文件或Unix中的. so文件)。該技術(shù)能大大提高程序的性能,但卻破壞了Java的可移植性。

              JNI技術(shù)

              實際上,有一種通常為我們忽視的技術(shù)可以在很大程度上解決這個難題,那就是JNI(Java Native Interface, Java本地化方法)。主張采用純Java的人們通常反對本地化代碼的使用,他們認為在Java程序執(zhí)行的過程中調(diào)用C/C++程序會影響程序的可移植性和安全性。還有一些人認為JNI只是對過去混合編程技術(shù)的簡單擴展,其實際目的是為了充分利用大量原有的C程序庫。

              其實,我們不必拘泥于嚴格的平臺獨立性限制,因為采用JNI技術(shù)只是針對一些嚴重影響Java性能的代碼段,該部分可能只占源程序的極少部分,所以幾乎可以不考慮該部分代碼在主流平臺之間移植的工作量。同時,也不必過分擔(dān)心類型匹配問題,我們完全可以控制代碼不出現(xiàn)這種錯誤。此外,也不必擔(dān)心安全控制問題,因為Java安全模型已擴展為允許非系統(tǒng)類加載和調(diào)用本地方法。根據(jù)Java規(guī)范,從JDK 1. 2開始,F(xiàn)indClass將設(shè)法找到與當前的本地方法關(guān)聯(lián)的類加載器。如果平臺相關(guān)代碼屬于一個系統(tǒng)類,則無需涉及任何類加載器; 否則,將調(diào)用適當?shù)念惣虞d器來加載和鏈接已命名的類。換句話說,如果在Java程序中直接調(diào)用C/C++語言產(chǎn)生的機器碼,該部分代碼的安全性就由Java虛擬機控制。

              JNI實現(xiàn)步驟

              編寫JNI代碼的大致流程如下圖所示:

            JNI實現(xiàn)流程圖

              JNI實現(xiàn)流程圖

            1 2 3 下一頁
              相關(guān)推薦:等考二級JAVA:Java+Flex整合應(yīng)用簡單示例
                   等考二級JAVA:struts+spring實現(xiàn)的登陸實例源碼
                   考試吧:2010年上半年計算機等級考試備考專題
            文章搜索
            計算機等級考試欄目導(dǎo)航
            版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。