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

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

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

內(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語言能很好地滿足機(jī)頂盒一些服務(wù)應(yīng)用的要求,因此提出了包含Java虛擬機(jī)的數(shù)字電視機(jī)頂盒中間件的系統(tǒng)架構(gòu),該虛擬機(jī)用來執(zhí)行Java應(yīng)用程序,并且中間件將應(yīng)用程序和底層操作系統(tǒng)、硬件細(xì)節(jié)隔離開,使上層的數(shù)字電視的服務(wù)應(yīng)用不必考慮過多的底層細(xì)節(jié)。本文主要介紹了J2ME中主要用于數(shù)字電視領(lǐng)域的CDC的移植,其中又著重介紹了本地方法(nativemethod)的實(shí)現(xiàn)過程。



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


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


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

  Java虛擬機(jī)處于機(jī)器和編譯程序之間,在任何平臺(tái)上都提供給編譯程序一個(gè)共同的接口。Java源程序經(jīng)過編譯器編譯后變成字節(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í)行引擎來執(zhí)行,具體過程如圖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)過編譯后的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í)不使用任何物理寄存器,而使用堆棧的幀來表示方法的狀態(tài)、字節(jié)碼的操作對象、方法的參數(shù)空間及局部變量的空間,它的“程序計(jì)數(shù)器”為一個(gè)偽寄存器,是當(dāng)前所執(zhí)行指令的字節(jié)碼數(shù)組的一個(gè)指針。

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

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

  J2ME中的CDC移植的解決方案

  我們選用的要移植的Java虛擬機(jī)是Sun公司提供的J2ME對于數(shù)字電視領(lǐng)域CDC配置,該虛擬機(jī)是針對Linux的軟件實(shí)現(xiàn)(用C語言編寫的虛擬機(jī),該虛擬機(jī)也稱為CVirtualMachine,簡稱CVM)。Java虛擬機(jī)規(guī)范并沒有強(qiáng)求Java虛擬機(jī)必須支持任何特定的本地方法接口,但是Sun公司提供了本地方法接口(JavaNativeInterface),是為移植所用。Java程序通過調(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語言中關(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)過程。

  本地方法

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

  在虛擬機(jī)解釋字節(jié)碼過程中,執(zhí)行引擎會(huì)不時(shí)遇到請求本地方法調(diào)用的指令,虛擬機(jī)負(fù)責(zé)試著發(fā)起這個(gè)本地方法的調(diào)用。本地方法是Java虛擬機(jī)指令集的一種可編程擴(kuò)展,運(yùn)行這個(gè)本地方法就是Java虛擬機(jī)對這條指令的執(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ú)立的匯編語言程序invokeNative_i386。S實(shí)現(xiàn)函數(shù)CVMjniInvokeNative(),我們采用在C里面嵌入?yún)R編的形式來實(shí)現(xiàn)該函數(shù)。

  該函數(shù)的形參有7個(gè),完成的主要功能是將由實(shí)參傳遞來的部分?jǐn)?shù)據(jù)通過直接或者運(yùn)算后得到本地方法的參數(shù),然后壓入本地棧,通過匯編來實(shí)現(xiàn)本地的C函數(shù)調(diào)用。實(shí)參傳遞過來的7個(gè)數(shù)據(jù)包含JNI環(huán)境指針(env)、本地方法的函數(shù)指針(nativecode)、Java棧指針(args)、本地方法的描述符(tersesig),Java棧的參數(shù)總數(shù)(argssize)表示靜態(tài)或非靜態(tài)方法的類對象標(biāo)志(classobject)及用于存儲(chǔ)返回值的一個(gè)指針變量(returnvalue),其中env要作為第一個(gè)本地方法的參數(shù)傳遞,并且nativecode也要傳遞到本地方法來實(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)過程中,我們用在C函數(shù)中設(shè)立局部變量來代替Linux的通用寄存器,通過手動(dòng)調(diào)整工作棧指針來實(shí)現(xiàn)本地方法的調(diào)用,具體實(shí)現(xiàn)過程如圖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í)參傳遞過來的參數(shù)通過計(jì)算得到本地方法參數(shù)的個(gè)數(shù),然后將本地方法所需的參數(shù)依次壓棧,最后再手動(dòng)調(diào)節(jié)工作區(qū)指針實(shí)現(xiàn)本地方法的成功調(diào)用。這里我們先將本地方法函數(shù)指針和1個(gè)標(biāo)志位flag(0x10101010)入棧,原因有兩個(gè):

頁碼: 1 2  下一頁

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

文章來源:中國有線電視


資訊搜索

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

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

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

圖片新聞

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

今日焦點(diǎn)

新品快訊

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