⊙  中國(guó)視聽(tīng)網(wǎng) > 行業(yè)新聞 > 機(jī)頂盒 > 案例頻道 | 應(yīng)用案例 > Java虛擬機(jī)用于數(shù)字電視機(jī)頂盒

Java虛擬機(jī)用于數(shù)字電視機(jī)頂盒

中國(guó)視聽(tīng)網(wǎng)資訊 更新時(shí)間:2010-1-22 15:38:58  編輯:溫情  [ ]     手機(jī)訪問(wèn)

內(nèi)容導(dǎo)航:

Java用于數(shù)字電視機(jī)頂盒研究與實(shí)現(xiàn)(1)


  引言

  隨著有線廣播電視網(wǎng)向數(shù)字化、網(wǎng)絡(luò)化、產(chǎn)業(yè)化方向發(fā)展,利用有線電視網(wǎng)絡(luò)作為傳輸平臺(tái)的數(shù)字電視機(jī)頂盒除了能夠讓用戶在現(xiàn)有模擬電視機(jī)上觀看數(shù)字電視節(jié)目之外,廣播和交互式多媒體應(yīng)用功能的要求也應(yīng)運(yùn)而生,互動(dòng)電視成為數(shù)字電視發(fā)展的方向。眾多程序員熟悉的為網(wǎng)絡(luò)廣泛運(yùn)用的Java語(yǔ)言能很好地滿足機(jī)頂盒一些服務(wù)應(yīng)用的要求,因此提出了包含Java虛擬機(jī)的數(shù)字電視機(jī)頂盒中間件的系統(tǒng)架構(gòu),該虛擬機(jī)用來(lái)執(zhí)行Java應(yīng)用程序,并且中間件將應(yīng)用程序和底層操作系統(tǒng)、硬件細(xì)節(jié)隔離開(kāi),使上層的數(shù)字電視的服務(wù)應(yīng)用不必考慮過(guò)多的底層細(xì)節(jié)。本文主要介紹了J2ME中主要用于數(shù)字電視領(lǐng)域的CDC的移植,其中又著重介紹了本地方法(nativemethod)的實(shí)現(xiàn)過(guò)程。



  結(jié)構(gòu)及工作原理


圖1 Java虛擬機(jī)的工作過(guò)程


  Java虛擬機(jī)工作原理

  Java虛擬機(jī)處于機(jī)器和編譯程序之間,在任何平臺(tái)上都提供給編譯程序一個(gè)共同的接口。Java源程序經(jīng)過(guò)編譯器編譯后變成字節(jié)碼,字節(jié)碼由虛擬機(jī)解釋執(zhí)行,虛擬機(jī)將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機(jī)器上的機(jī)器碼,然后在特定的機(jī)器上運(yùn)行。

  Java虛擬機(jī)的主要任務(wù)是裝載class文件并且執(zhí)行其中的字節(jié)碼。Java虛擬機(jī)包含一個(gè)類裝載器,它可以從程序和API中裝載class文件。字節(jié)碼由執(zhí)行引擎來(lái)執(zhí)行,具體過(guò)程如圖1所示。

  Java虛擬機(jī)結(jié)構(gòu)

  類裝載器的體系結(jié)構(gòu)是Java虛擬機(jī)在安全性和網(wǎng)絡(luò)移動(dòng)性上發(fā)揮重要作用的一個(gè)方面,圖中所示的類裝載器可以包含多個(gè)類裝載器的子系統(tǒng),Java應(yīng)用程序能夠在運(yùn)行時(shí)決定需要安裝的類,并且將被不同的類裝載器裝載的類存放在不同的命名空間。

  執(zhí)行引擎處于Java虛擬機(jī)的核心位置,它的行為由指令集所決定,其主要作用就是解釋字節(jié)碼(即運(yùn)行經(jīng)過(guò)編譯后的Java程序的class文件),不同的執(zhí)行引擎實(shí)現(xiàn)可能非常不同。由軟件實(shí)現(xiàn)的虛擬機(jī)的執(zhí)行引擎分為一次性解釋字節(jié)碼、即時(shí)編譯器和自適應(yīng)優(yōu)化器,由硬件芯片構(gòu)成的虛擬機(jī)用本地方法執(zhí)行Java字節(jié)碼,它的執(zhí)行引擎是內(nèi)嵌在芯片里。

  Java虛擬機(jī)相當(dāng)于一個(gè)堆棧計(jì)算機(jī),它在指令間傳送信息時(shí)不使用任何物理寄存器,而使用堆棧的幀來(lái)表示方法的狀態(tài)、字節(jié)碼的操作對(duì)象、方法的參數(shù)空間及局部變量的空間,它的“程序計(jì)數(shù)器”為一個(gè)偽寄存器,是當(dāng)前所執(zhí)行指令的字節(jié)碼數(shù)組的一個(gè)指針。

  Java實(shí)現(xiàn)方法

  Java有兩種實(shí)現(xiàn)方法:Java方法和本地方法。Java方法是由Java語(yǔ)言編寫(xiě),編譯成字節(jié)碼,存儲(chǔ)在class文件中。本地方法是由其他語(yǔ)言(比如C,C++,或者匯編語(yǔ)言)編寫(xiě)的,編譯成和處理器相關(guān)的機(jī)器代碼,保存在動(dòng)態(tài)連接庫(kù)中,格式是各個(gè)平臺(tái)專有的,它是聯(lián)系Java程序和底層主機(jī)操作系統(tǒng)的連接方法。Java方法與平臺(tái)無(wú)關(guān),但是本地方法卻不是,運(yùn)行中的Java程序調(diào)用本地方法時(shí),虛擬機(jī)裝載包含這個(gè)本地方法的動(dòng)態(tài)庫(kù),并調(diào)用這個(gè)方法。通過(guò)本地方法,Java程序可以直接訪問(wèn)底層操作系統(tǒng)的資源,使程序和特定的平臺(tái)相關(guān),一個(gè)本地方法接口——Java本地接口(JNI)使得本地方法可以在特定的主機(jī)系統(tǒng)的任何一個(gè)Java平臺(tái)上運(yùn)行。

  J2ME中的CDC移植的解決方案

  我們選用的要移植的Java虛擬機(jī)是Sun公司提供的J2ME對(duì)于數(shù)字電視領(lǐng)域CDC配置,該虛擬機(jī)是針對(duì)Linux的軟件實(shí)現(xiàn)(用C語(yǔ)言編寫(xiě)的虛擬機(jī),該虛擬機(jī)也稱為CVirtualMachine,簡(jiǎn)稱CVM)。Java虛擬機(jī)規(guī)范并沒(méi)有強(qiáng)求Java虛擬機(jī)必須支持任何特定的本地方法接口,但是Sun公司提供了本地方法接口(JavaNativeInterface),是為移植所用。Java程序通過(guò)調(diào)用本地方法和主機(jī)交互。

  Java虛擬機(jī)

圖2 Java虛擬機(jī)的位置


  虛擬機(jī)處于嵌入式操作系統(tǒng)OS20上,因此Sun公司提供的Java虛擬機(jī)中與底層操作系統(tǒng)相關(guān)的操作都應(yīng)該替換為OS20的內(nèi)核函數(shù)。因此將Sun公司提供的CDC移植到OS20需要完成一些工作,比如:C語(yǔ)言中關(guān)于基本數(shù)據(jù)類型的數(shù)據(jù)位的修改,關(guān)于線程的創(chuàng)建機(jī)制(OS20為任務(wù)),關(guān)于線程之間的同步、互斥,關(guān)于動(dòng)態(tài)連接的實(shí)現(xiàn),關(guān)于本地方法的實(shí)現(xiàn)等,本節(jié)主要介紹關(guān)于本地方法的實(shí)現(xiàn)過(guò)程。

  本地方法

  解釋器處理字節(jié)碼時(shí),與給定字節(jié)碼有關(guān)的動(dòng)作的語(yǔ)義、執(zhí)行字節(jié)碼的相關(guān)動(dòng)作大多是從堆棧中獲得其操作數(shù),并將其結(jié)果送回堆棧中。典型的情況下字節(jié)碼是帶有參數(shù)的,這些參數(shù)在字節(jié)碼流中緊跟在字節(jié)碼自身之后。

  在虛擬機(jī)解釋字節(jié)碼過(guò)程中,執(zhí)行引擎會(huì)不時(shí)遇到請(qǐng)求本地方法調(diào)用的指令,虛擬機(jī)負(fù)責(zé)試著發(fā)起這個(gè)本地方法的調(diào)用。本地方法是Java虛擬機(jī)指令集的一種可編程擴(kuò)展,運(yùn)行這個(gè)本地方法就是Java虛擬機(jī)對(duì)這條指令的執(zhí)行。

  本地方法函數(shù)調(diào)用

  為了增加虛擬機(jī)的性能,加快其速度,解釋器在處理一些字節(jié)碼時(shí)調(diào)用的本地方法函數(shù)用匯編實(shí)現(xiàn)了將Java棧轉(zhuǎn)換為C棧,然后在C堆棧上實(shí)現(xiàn)函數(shù)的調(diào)用。Linux下是用獨(dú)立的匯編語(yǔ)言程序invokeNative_i386。S實(shí)現(xiàn)函數(shù)CVMjniInvokeNative(),我們采用在C里面嵌入?yún)R編的形式來(lái)實(shí)現(xiàn)該函數(shù)。

  該函數(shù)的形參有7個(gè),完成的主要功能是將由實(shí)參傳遞來(lái)的部分?jǐn)?shù)據(jù)通過(guò)直接或者運(yùn)算后得到本地方法的參數(shù),然后壓入本地棧,通過(guò)匯編來(lái)實(shí)現(xiàn)本地的C函數(shù)調(diào)用。實(shí)參傳遞過(guò)來(lái)的7個(gè)數(shù)據(jù)包含JNI環(huán)境指針(env)、本地方法的函數(shù)指針(nativecode)、Java棧指針(args)、本地方法的描述符(tersesig),Java棧的參數(shù)總數(shù)(argssize)表示靜態(tài)或非靜態(tài)方法的類對(duì)象標(biāo)志(classobject)及用于存儲(chǔ)返回值的一個(gè)指針變量(returnvalue),其中env要作為第一個(gè)本地方法的參數(shù)傳遞,并且nativecode也要傳遞到本地方法來(lái)實(shí)現(xiàn)本地方法的正確調(diào)用。

  J2ME中的CDC移植

  由于Linux有多個(gè)通用寄存器,在實(shí)現(xiàn)該函數(shù)的代碼中充分運(yùn)用了如esp、ebp、esi等寄存器,但是OS20提供的可操作的寄存器只有3個(gè)通用寄存器Areg、Breg、Creg和1個(gè)工作指針寄存器Wptr(相當(dāng)于堆棧指針),在實(shí)現(xiàn)過(guò)程中,我們用在C函數(shù)中設(shè)立局部變量來(lái)代替Linux的通用寄存器,通過(guò)手動(dòng)調(diào)整工作棧指針來(lái)實(shí)現(xiàn)本地方法的調(diào)用,具體實(shí)現(xiàn)過(guò)程如圖3所示。

  當(dāng)進(jìn)入?yún)R編函數(shù)時(shí),工作區(qū)指針為Wptr,實(shí)參、狀態(tài)寄存器和指令指針寄存器的值全部自動(dòng)入棧,然后是我們定義的代替Linux寄存器的局部變量自動(dòng)入棧,此時(shí)的Wptr自動(dòng)移到Wptr′,利用OS20的匯編指令,手動(dòng)將實(shí)參傳遞過(guò)來(lái)的參數(shù)通過(guò)計(jì)算得到本地方法參數(shù)的個(gè)數(shù),然后將本地方法所需的參數(shù)依次壓棧,最后再手動(dòng)調(diào)節(jié)工作區(qū)指針實(shí)現(xiàn)本地方法的成功調(diào)用。這里我們先將本地方法函數(shù)指針和1個(gè)標(biāo)志位flag(0x10101010)入棧,原因有兩個(gè):

頁(yè)碼: 1 2  下一頁(yè)

更多相關(guān):  AV集成

文章來(lái)源:中國(guó)有線電視


資訊搜索

聲明:本站文章未經(jīng)授權(quán)不得轉(zhuǎn)載,轉(zhuǎn)載本站的文章請(qǐng)注明“來(lái)源:中國(guó)視聽(tīng)網(wǎng)”。

網(wǎng)友評(píng)論

機(jī)頂盒相關(guān)新聞

圖片新聞

產(chǎn)品導(dǎo)航

今日焦點(diǎn)

新品快訊

  1. 1中國(guó)已成為全球數(shù)字電視機(jī)頂盒制造中心
  2. 2貝塔斯瑞中標(biāo)上海世博會(huì)兩大場(chǎng)館
  3. 3深圳艾比森:創(chuàng)世界名牌企業(yè)
  4. 4深科技KAIFA高清網(wǎng)絡(luò)播放機(jī)高調(diào)亮相CES
  5. 5Intel推出WiDi無(wú)線高清顯示技術(shù)
  6. 6高清播放機(jī)市場(chǎng)前景分析
  7. 72009大屏幕投影顯示行業(yè)評(píng)選專題報(bào)道
  8. 8網(wǎng)庭成為日本OS SCREEN 中國(guó)總代理
  9. 9珠江燈光總裁梁志遠(yuǎn)-站得高才能看得遠(yuǎn)
  10. 10廣州彩熠:祝福祖國(guó) 共享全運(yùn)
  1. 1恩智浦副總:全球半導(dǎo)體業(yè)下半年有望復(fù)蘇
  2. 2歌舞樂(lè)《藏謎》燈光總監(jiān)劉陶訪談
  3. 3珠江燈光:中國(guó)照明品牌國(guó)際化的先行者
  4. 4珠江燈光梁志遠(yuǎn):隱形冠軍的全球雄心
  5. 5珠江燈光總裁梁志遠(yuǎn)-站得高才能看得遠(yuǎn)
  6. 6H3C張鵬國(guó):以聯(lián)網(wǎng)為原點(diǎn)監(jiān)控步入新時(shí)代
  7. 7專訪錄像達(dá)人----李冠毅
  8. 8中興通訊多媒體總監(jiān)陳峰:IPTV三年大發(fā)展
  9. 9推動(dòng)國(guó)內(nèi)高清應(yīng)用升級(jí) 專訪I-BOX何總
  10. 10索博副總經(jīng)理 楊華專訪
  1. 1征服高清全格式-高清銳視N3評(píng)測(cè)
  2. 2飛柯原車汽車娛樂(lè)系統(tǒng)升級(jí)評(píng)測(cè)
  3. 3家用720P雙3D投影機(jī)--Acer H5360評(píng)測(cè)
  4. 4投影時(shí)代大屏評(píng)選盛典:LED顯示屏精品產(chǎn)品匯
  5. 5數(shù)字電子看板的產(chǎn)業(yè)標(biāo)準(zhǔn)化問(wèn)題探討會(huì)議
  6. 6全國(guó)首測(cè)!NEC投影機(jī)新品 NP305+ 實(shí)拍效果賞
  7. 7e時(shí)代首選 康佳LC55TS88EN液晶電視評(píng)測(cè)
  8. 8捷卡瑪HD-720P微型高清數(shù)字投影機(jī)評(píng)測(cè)
  9. 9宏碁、酷樂(lè)視、奧圖碼、愛(ài)普泰克主力掌上投
  10. 10漢王創(chuàng)藝高手+無(wú)線0604對(duì)比WACOM  BAMBOO F
  1. 1長(zhǎng)沙市賀龍?bào)w育運(yùn)動(dòng)學(xué)校投影機(jī)采購(gòu)
  2. 2武漢市第二十七中學(xué)投影機(jī)/幕布/展臺(tái)/中控/
  3. 3紅谷灘新區(qū)財(cái)政局投影機(jī)/投影幕/展示臺(tái)/中控
  4. 4汕頭大學(xué)醫(yī)學(xué)院附屬腫瘤醫(yī)院投影機(jī)等采購(gòu)
  5. 5貴州省全民健身晨晚練點(diǎn)音響器材采購(gòu)
  6. 6河南省高級(jí)人民法院會(huì)議音響及顯示設(shè)備項(xiàng)目
  7. 7重慶市巴南區(qū)體育場(chǎng)音響擴(kuò)聲系統(tǒng)1套
  8. 8武漢軟件工程職業(yè)學(xué)院學(xué)術(shù)會(huì)議中心視頻音響
  9. 9益陽(yáng)市大樓會(huì)議室燈光音響等設(shè)備采購(gòu)
  10. 10日照演播室音響設(shè)備改造項(xiàng)目詢價(jià)
  1. 1視高為普利森集團(tuán)搭建信息化會(huì)議通道
  2. 2CREATOR快捷中控矩陣系統(tǒng)應(yīng)用于廣東移動(dòng)
  3. 3美國(guó)TiVo機(jī)頂盒捆綁網(wǎng)上購(gòu)物服務(wù)
  4. 4Java虛擬機(jī)用于數(shù)字電視機(jī)頂盒
  5. 5NXP與ITVN通過(guò)IP機(jī)頂盒推動(dòng)IPTV在北美的應(yīng)用
  6. 6雷蒙觸控式會(huì)議系統(tǒng)應(yīng)用于中國(guó)科學(xué)院
  7. 7上海緣宸助力鄭東新區(qū)數(shù)字展廳弧幕項(xiàng)目
  8. 8加拿大KBL顧問(wèn)集團(tuán)選用寶利通視頻會(huì)議
  9. 9寶利通助力中國(guó)郵政儲(chǔ)蓄銀行浙江省分行
  10. 10馬田亮相央視為《籃球公園》發(fā)布會(huì)添彩
設(shè)為首頁(yè) | 商務(wù)信息 | 視聽(tīng)資訊 | 本站動(dòng)態(tài) | 關(guān)于中國(guó)視聽(tīng)網(wǎng) | 網(wǎng)站地圖 | 網(wǎng)站RSS | 視聽(tīng)3G | 友情鏈接
本站網(wǎng)絡(luò)實(shí)名:中國(guó)視聽(tīng)網(wǎng) | 視聽(tīng)網(wǎng) | 視聽(tīng)產(chǎn)品報(bào)價(jià) 國(guó)際域名:http://kingdomlifegroup.com
版權(quán)所有 1999 中國(guó)視聽(tīng)網(wǎng) 郵箱:web@av-china.com 電話:+86-755-33225360(十二線) 傳真:+86-755-33010311
深圳網(wǎng)絡(luò)警
察報(bào)警平臺(tái)
公共信息安
全網(wǎng)絡(luò)監(jiān)察
經(jīng)營(yíng)性網(wǎng)站
備案信息
不良信息
舉報(bào)中心
中國(guó)文明網(wǎng)
傳播文明