在幸福中痛苦的掙扎

          專注于效率 專注于價值
           
          書法.JAVA BLOG

          JNI技術(shù)在嵌入式軟件開發(fā)中的應(yīng)用學習筆記之一

          嵌入式系統(tǒng)是以應(yīng)用為中心、以計算機技術(shù) 為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。嵌入式軟件 的基本體系結(jié)構(gòu)包括嵌入式實時操作系統(tǒng)RTOS(RealTime operating Systerrl)、嵌入式設(shè)備驅(qū)動程序 、嵌入式應(yīng)用程序編程接口(中間件)和嵌入式應(yīng)用程序。


          ??? 現(xiàn)階段,計算機應(yīng)用的普及、互聯(lián)網(wǎng)技術(shù)的實用以及納米微電子技術(shù)的突破,正有力推動著21世紀的工業(yè)生產(chǎn)、商業(yè)活動、科學實驗和家庭生活等領(lǐng)域自動化和信息化進程。全過程自動化產(chǎn)品制造、大范圍電子商務(wù)活動、高度協(xié)同科學實驗以及現(xiàn)代化家居生活,為嵌入式產(chǎn)品造就了嶄新而巨大的商機。除了溝通信息高速公路的交換機、路由器和調(diào)制解調(diào)器,構(gòu)建計算機集成制造系統(tǒng)(CIMS)所需的數(shù)據(jù)傳輸系統(tǒng)DCS(Data Communication System)和機器人以及規(guī)模較大的家用汽車電子系統(tǒng),最有產(chǎn)量效益和時代特征的嵌入式產(chǎn)品應(yīng)數(shù)因特網(wǎng)上的信息家電(information appliances),如網(wǎng)絡(luò)可視電話、網(wǎng)絡(luò)游戲機、電子商務(wù)、商務(wù)通(PDA)、移動電話以及多媒體產(chǎn)品(如電視機頂盒、DVD播放機、電子閱讀機)。


          ??? 眾所周知,“一次編程,到處使用”的 Java 軟件概念原本就是針對網(wǎng)上嵌入式小設(shè)備提出的,幾經(jīng)周折,目前SUN公司已推出了J2ME(Java 2 P1atform Micro Edition)針對信息家電的Java版本,其技術(shù)日趨成熟,開始投入使用。SUN公司Java虛擬機(JVM)技術(shù)的有序開放,使得Java軟件真正實現(xiàn)跨平臺運行,即Java應(yīng)用小程序能夠在帶有JVM的任何硬軟件系統(tǒng)上執(zhí)行。加上Java語言本身所具有的安全性、可靠性和可移植性等特點,對實現(xiàn)瘦身上網(wǎng)的信息家電等網(wǎng)絡(luò)設(shè)備十分有利,同時對嵌入式設(shè)備特別是上網(wǎng)設(shè)備軟件編程技術(shù)產(chǎn)生了很大的影響。

          ?? 1 Java的性能問題及幾種解決方案
          ??? Java程序也有其本身的缺陷,那就是其效率問題。由于Java是一種介于解釋型和編譯型之間的語言,其對內(nèi)存的管理是通過JVM虛擬機來實現(xiàn)的,同樣的程序,如果用編譯型語言C來實現(xiàn),其運行速度一般要比Java快得多。因此,提高Java的性能就顯得十分重要。


          ??? 迄今為止,人們?yōu)樘岣逬ava的運行速度而做出的許多努力,主要集中在程序設(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é)碼進行解釋。這樣做的優(yōu)點是,大大提高了Java程序的性能,縮短了加載程序的時間;同時,由于編譯的結(jié)果并不在程序運行期間保存,因此也節(jié)約了存儲空間。缺點是,由于JIT編譯器對所有的代碼都想優(yōu)化,因此同樣也占用了很多時間。


          ??? 動態(tài)優(yōu)化技術(shù)即提前編譯為機器碼的技術(shù)(dynamicopttmization,ahead of time technology)是提高Java性能的另一個嘗試。動態(tài)優(yōu)化技術(shù)充分利用了Java源碼編譯、字節(jié)碼編譯、動態(tài)編譯和靜態(tài)編譯的技術(shù)。其輸入是Java的源碼或字節(jié)碼。而輸出是經(jīng)過高度優(yōu)化的可執(zhí)行代碼和動態(tài)庫(WindoW中是.dil文件,UNIX中是共享庫.a.so文件)。其優(yōu)點是能大大提高程序的性能,缺點是破壞了Java的可移植性,也對Java的安全帶來了一定的隱患。

          ???? 2 JNI技術(shù)
          ??? 實際上,有一種通常被忽視的技術(shù)可以在很大程度上解決這個難題,那就是JNI(Java Native Interface,Java本地化方法)。圖l是JNI技術(shù)實現(xiàn)的一般步驟。




          點擊查看原圖
          ????????????????????

          ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

          posted on 2006-11-13 03:46 書法 閱讀(1169) 評論(0)  編輯  收藏 所屬分類: 其它相關(guān)

          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(4)

          隨筆分類(6)

          隨筆檔案(6)

          文章檔案(1)

          收藏夾(4)

          友情鏈接

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜


          copyright@2006 書法(soft)版權(quán)所有.
          E_mail:posoft@126.com     點     點我找我
          主站蜘蛛池模板: 察隅县| 婺源县| 保定市| 个旧市| 大理市| 丰县| 视频| 云阳县| 静海县| 天长市| 阳西县| 旬邑县| 珲春市| 开江县| 江川县| 锡林郭勒盟| 靖远县| 恭城| 永济市| 仙居县| 梨树县| 卢湾区| 柳河县| 青龙| 吴忠市| 蕉岭县| 永定县| 锦州市| 梁河县| 武宁县| 临夏市| 菏泽市| 铁岭市| 康马县| 孝感市| 安顺市| 五台县| 新野县| 长阳| 卓资县| 安化县|