邵 珺
(北京數(shù)碼視訊科技股份有限公司,北京 100085)
中間件系統(tǒng)是近兩年國(guó)內(nèi)廣電行業(yè)內(nèi)最熱門(mén)的技術(shù)及話(huà)題之一。2009年ICTC展會(huì)上,無(wú)論是數(shù)字電視前端硬件廠商還是機(jī)頂盒廠商,中間件系統(tǒng)隨處可見(jiàn)。中間件系統(tǒng)的迅速發(fā)展一方面表明國(guó)內(nèi)廣電企業(yè)在該領(lǐng)域技術(shù)的長(zhǎng)足進(jìn)步,另一方面顯示出中間件系統(tǒng)在未來(lái)數(shù)字電視發(fā)展中的重要地位。
中間件從廣義角度講一般是指嵌入在電視接收終端,位于接收設(shè)備驅(qū)動(dòng)層軟件之上,隔絕交互應(yīng)用與系統(tǒng)資源的軟件層。它能夠令應(yīng)用程序獨(dú)立于接收機(jī)硬件和軟件平臺(tái),使不同硬件組成和設(shè)計(jì)架構(gòu)的機(jī)頂盒均能運(yùn)行相同的應(yīng)用;同時(shí),不同軟件公司可基于相同的編程接口開(kāi)發(fā)應(yīng)用程序,且在不同的機(jī)頂盒上運(yùn)行。
盡管中間件只是安裝在數(shù)字電視接收設(shè)備上,但其接收和處理數(shù)據(jù)與前端密切相關(guān),前端系統(tǒng)與接收終端在數(shù)據(jù)格式、播發(fā)協(xié)議上必須協(xié)同一致。然而目前市場(chǎng)上絕大多數(shù)的中間件系統(tǒng)是不含有前端系統(tǒng)的,即便有也僅僅是個(gè)簡(jiǎn)單的前端播發(fā)設(shè)備,通常稱(chēng)這種中間件為機(jī)頂盒中間件,而擁有完整前端系統(tǒng)以及終端系統(tǒng)、且能實(shí)現(xiàn)業(yè)務(wù)可管理、業(yè)務(wù)開(kāi)發(fā)有規(guī)范的面向運(yùn)營(yíng)的中間件則稱(chēng)為數(shù)字電視中間件。只有數(shù)字電視中間件才是真正適應(yīng)運(yùn)營(yíng)商需要,符合數(shù)字電視發(fā)展趨勢(shì)的中間件系統(tǒng)。
數(shù)字電視中間件的出現(xiàn)從根本上來(lái)說(shuō)是為了促進(jìn)增值業(yè)務(wù)的運(yùn)營(yíng),而這也是電視數(shù)字化的出發(fā)點(diǎn)和最終目的。早在20世紀(jì)末,許多國(guó)外廠家就已經(jīng)開(kāi)始采用中間件對(duì)各自的增值業(yè)務(wù)提供支撐平臺(tái)。截至目前,數(shù)字電視中間件的技術(shù)實(shí)現(xiàn)方式主要分為兩大類(lèi),分別是以HTML+JavaScript技術(shù)為核心的瀏覽器中間件以及以Java技術(shù)為核心的Java中間件。2種實(shí)現(xiàn)方式在各自的領(lǐng)域內(nèi)都擁有一定優(yōu)勢(shì),而關(guān)于2種實(shí)現(xiàn)方式孰優(yōu)孰劣的爭(zhēng)論也一直沒(méi)有平息過(guò)。下文將從多個(gè)方面就數(shù)字電視中間件的這2種實(shí)現(xiàn)方式進(jìn)行具體分析。
1)編譯語(yǔ)言
盡管Java中間件采用的是Java語(yǔ)言,瀏覽器中間件采用的是HTML+JavaScript語(yǔ)言,但由于應(yīng)用程序均采用解釋性的語(yǔ)言編寫(xiě),而兩者又都支持解釋性語(yǔ)言的解析和執(zhí)行,因此兩類(lèi)中間件均能滿(mǎn)足要求。
2)標(biāo)準(zhǔn)性
Java虛擬機(jī)本身有較強(qiáng)且完善的技術(shù)規(guī)范,對(duì)于多線(xiàn)程、圖形機(jī)制等支持較好。在中間件方面也有現(xiàn)成的標(biāo)準(zhǔn)可參考,MHP,OCAP及我國(guó)的中間件標(biāo)準(zhǔn)草案,已經(jīng)有成熟的開(kāi)發(fā)接口可供使用,可以使應(yīng)用真正做到跨平臺(tái)。瀏覽器中間件則一直沒(méi)有成型的標(biāo)準(zhǔn)。盡管HTML和JavaScript均是由W3C組織公布和維護(hù)的標(biāo)準(zhǔn),但沒(méi)有一款瀏覽器能夠完全支持W3C公布的標(biāo)準(zhǔn)[1]。
鋼筋被人偷的偷拿的拿,油漆、涂料、水泥,但凡能搬得動(dòng)的,都被人拿了,他們用不了,就拿去賣(mài)了。工地上只有幾個(gè)人歪在工棚里打牌,民工們不再尊敬爸爸,吹捧他,奉承他,他們只是從撲克上移開(kāi)一下眼角,掃一掃他,問(wèn):“易哥,什么時(shí)候發(fā)工錢(qián)唦?”
3)系統(tǒng)架構(gòu)
Java中間件采用Java虛擬機(jī)的系統(tǒng)架構(gòu),可將應(yīng)用程序和機(jī)頂盒底層操作系統(tǒng)、硬件細(xì)節(jié)分隔開(kāi)。瀏覽器中間件本身是基于互聯(lián)網(wǎng)協(xié)議的,技術(shù)比較成熟。但是數(shù)字電視環(huán)境與互聯(lián)網(wǎng)相比具出入較大,因此將瀏覽器嵌入數(shù)字電視的過(guò)程中,在技術(shù)規(guī)范上進(jìn)行了約束和補(bǔ)充。
4)應(yīng)用程序開(kāi)發(fā)
瀏覽器本身基于互聯(lián)網(wǎng)協(xié)議,技術(shù)成熟、成本低廉。簡(jiǎn)單的應(yīng)用程序開(kāi)發(fā)技術(shù)門(mén)檻低。然而HTML+JavaScript中間件只能支持簡(jiǎn)單邏輯和基于網(wǎng)頁(yè)類(lèi)型的基本交互型的應(yīng)用。由于應(yīng)用代碼不能跟組、調(diào)試,因此當(dāng)業(yè)務(wù)邏輯較為復(fù)雜時(shí),所有錯(cuò)誤均須通過(guò)讀代碼來(lái)解決。而對(duì)于Java來(lái)說(shuō),應(yīng)用代碼可以單步跟蹤、調(diào)試,代碼中的錯(cuò)誤也可以得到快速解決。
5)圖形界面開(kāi)發(fā)
HTML非常適合“表現(xiàn)層”的技術(shù),能夠呈現(xiàn)各種信息。同時(shí)JavaScript很好地彌補(bǔ)了HTML在邏輯處理方面的弱勢(shì),支持條件判斷、循環(huán)、跳轉(zhuǎn)等。HTML+JavaScript適合編寫(xiě)應(yīng)用邏輯簡(jiǎn)單、界面元素豐富的應(yīng)用。
但瀏覽器界面可定制性差,很少有人會(huì)使用HTML和JavaScript來(lái)開(kāi)發(fā)游戲,也正是由于這個(gè)原因,才需要在瀏覽器中嵌入Java虛擬機(jī)或Flash插件來(lái)實(shí)現(xiàn)客戶(hù)更豐富的用戶(hù)體驗(yàn)。
與Java不同,HTML和JavaScript并沒(méi)有一套成型的字節(jié)碼標(biāo)準(zhǔn),瀏覽器需要直接讀取源碼并解釋執(zhí)行,因此增值應(yīng)用本身的源代碼無(wú)法收到任何產(chǎn)權(quán)上的保護(hù)。而對(duì)于Java來(lái)說(shuō),由于下發(fā)的是字節(jié)碼,因此其對(duì)應(yīng)于產(chǎn)權(quán)保護(hù)方面要優(yōu)于瀏覽器。
7)穩(wěn)定性
由于瀏覽器中間件是直接解析源代碼的,因此缺乏代碼編譯環(huán)節(jié),無(wú)法對(duì)代碼的語(yǔ)法錯(cuò)誤進(jìn)行檢查,因此應(yīng)用程序中充斥著大量語(yǔ)法錯(cuò)誤。
而對(duì)于Java中間件來(lái)說(shuō),在源碼到字節(jié)碼的過(guò)程中,編譯器會(huì)排除所有的語(yǔ)法錯(cuò)誤,運(yùn)行時(shí)產(chǎn)生的問(wèn)題基本源于應(yīng)用程序邏輯本身。
8)性能
目前能看到的應(yīng)用中,基于瀏覽器的相對(duì)邏輯都比較簡(jiǎn)單,因此其速度較快。實(shí)際上,由于基于HTML的應(yīng)用主要靠JavaScript編寫(xiě),而執(zhí)行JavaScript代碼時(shí),是逐字解釋、執(zhí)行。而Java應(yīng)用是解釋的字節(jié)碼,已經(jīng)經(jīng)過(guò)一次編譯的過(guò)程,因此,JavaScript的效率要低于Java。
從上述分析中不難發(fā)現(xiàn),瀏覽器中間件與Java中間件各有所長(zhǎng),且到目前為止關(guān)于中間件系統(tǒng)的國(guó)家標(biāo)準(zhǔn)仍未出臺(tái)。因此,運(yùn)營(yíng)商勢(shì)必面臨如何選擇的難題。針對(duì)這種情況,北京數(shù)碼視訊科技股份有限公司率先推出了雙核心的數(shù)字電視中間件系統(tǒng),同時(shí)支持HTML+JavaScript技術(shù)以及Java技術(shù)。
圖1所示為數(shù)字電視終端系統(tǒng)內(nèi)部結(jié)構(gòu),虛線(xiàn)內(nèi)部為完整的數(shù)字電視中間件終端系統(tǒng),其中既包括了瀏覽器引擎,也包含了Java虛擬機(jī)引擎。Java虛擬機(jī)可通過(guò)系統(tǒng)優(yōu)化降低硬件要求,提升運(yùn)行速度。而瀏覽器則提供Java接口,可被Java應(yīng)用程序使用。兩者既各司其職,又可相互調(diào)用。從圖1中也可以清楚地看到中間件系統(tǒng)在整個(gè)終端系統(tǒng)中的重要位置。其下層是機(jī)頂盒的操作系統(tǒng)、驅(qū)動(dòng)程序、機(jī)頂盒硬件平臺(tái);其上層是各類(lèi)應(yīng)用程序及增值業(yè)務(wù)。
圖1 數(shù)字電視終端系統(tǒng)內(nèi)部結(jié)構(gòu)圖
此外數(shù)字電視中間件系統(tǒng)中的中間件API可以支持PBP檔次的Java標(biāo)準(zhǔn)API、支持國(guó)標(biāo)API、支持MIDP2.0標(biāo)準(zhǔn)開(kāi)發(fā)包、兼容MHP;同時(shí)擴(kuò)展API支持USB、攝像頭、無(wú)線(xiàn)鼠標(biāo)、硬盤(pán)和網(wǎng)絡(luò)安全接入[2]。
圖中中間件系統(tǒng)部分的其他功能模塊也各具特色:
1)GUI:提供圖形開(kāi)發(fā)支持;具有完善的控件系統(tǒng),支持多窗口、多任務(wù)圖形界面程序開(kāi)發(fā);擁有獨(dú)立的事件管理機(jī)制及圖形繪制接口,可在不同的平臺(tái)上移植[3]。
2)文件系統(tǒng):提供中間件文件訪(fǎng)問(wèn)支持;能夠支持內(nèi)存、Flash中的文件訪(fǎng)問(wèn);針對(duì)機(jī)頂盒Flash的平均磨損算法,延長(zhǎng)Flash使用壽命。
3)應(yīng)用管理器:負(fù)責(zé)各應(yīng)用間的切換,支持HTML應(yīng)用、Java應(yīng)用、內(nèi)嵌應(yīng)用間的切換;支持下載應(yīng)用的簽名、認(rèn)證,確保應(yīng)用程序的合法性;支持Java應(yīng)用、HTML應(yīng)用間的相互調(diào)用。
雙核心數(shù)字電視中間件相較傳統(tǒng)瀏覽器中間件和Java中間件的優(yōu)勢(shì)可以通過(guò)表1體現(xiàn)。
雙核心數(shù)字電視中間件將瀏覽器中間件和Java中間件有機(jī)結(jié)合在一起,汲取兩者優(yōu)勢(shì),是目前中間件市場(chǎng)上兩大主流技術(shù)良好的融合,并可相互調(diào)用。
對(duì)于雙核心數(shù)字電視中間件來(lái)說(shuō),其技術(shù)實(shí)現(xiàn)存在2個(gè)難點(diǎn):一是Java虛擬機(jī)與瀏覽器間如何相互調(diào)用;二是在調(diào)用過(guò)程中如何最低程度地降低系統(tǒng)的資源消耗。而這2個(gè)問(wèn)題在PC機(jī)發(fā)展過(guò)程中就已經(jīng)存在并最終被解決。眾所周知,作為Java程序的創(chuàng)始者,Sun公司原本也是做操作系統(tǒng)的,但是在與微軟競(jìng)爭(zhēng)中沒(méi)能占據(jù)市場(chǎng)主導(dǎo)地位,因而開(kāi)始做Java虛擬機(jī)。而當(dāng)Java虛擬機(jī)在市場(chǎng)上獲得巨大成功時(shí),微軟也針對(duì)Java虛擬機(jī)改寫(xiě)了dll規(guī)范。這也是現(xiàn)在能夠在PC機(jī)上實(shí)現(xiàn)瀏覽器、Java虛擬機(jī)相互調(diào)用的原因。對(duì)于雙核心數(shù)字電視中間件來(lái)說(shuō),只要能將已在PC機(jī)上成功應(yīng)用的技術(shù)移植過(guò)來(lái)就可以解決前面提到的技術(shù)難點(diǎn)。至于對(duì)系統(tǒng)的資源消耗則要通過(guò)長(zhǎng)時(shí)間的調(diào)試逐步進(jìn)行改進(jìn)。
表1 雙核心數(shù)字電視中間件與傳統(tǒng)瀏覽器中間件、Java中間件對(duì)比
雙核心數(shù)字電視中間件系統(tǒng)對(duì)于目前風(fēng)風(fēng)火火的中間件市場(chǎng)來(lái)說(shuō)無(wú)疑是一抹新亮點(diǎn)。目前市場(chǎng)上兩大主流技術(shù)的完美結(jié)合,不僅解決了運(yùn)營(yíng)商對(duì)兩種技術(shù)的選擇困惑,也將數(shù)字電視中間件技術(shù)推向一個(gè)新的高度。盡管從表面看來(lái)數(shù)字電視中間件只在數(shù)字電視系統(tǒng)終端起著非常重要的作用,但事實(shí)上應(yīng)當(dāng)從全局的角度去審視其在整個(gè)數(shù)字電視前端平臺(tái)中的作用。數(shù)字電視中間件系統(tǒng)應(yīng)該是面向運(yùn)營(yíng)的中間件,通過(guò)它可以進(jìn)行業(yè)務(wù)推介、管理和規(guī)范前端業(yè)務(wù)開(kāi)發(fā),并對(duì)整個(gè)數(shù)字電視前端平臺(tái)進(jìn)行保護(hù)。
[1]李華飚.Java中間件技術(shù)及其應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)水利水電出版社,2007.
[2]楊放春.異構(gòu)網(wǎng)絡(luò)中間件和開(kāi)放式API技術(shù)[M].北京:北京郵電大學(xué)出版社,2007.
[3]廖洪濤.數(shù)字電視交互系統(tǒng)——中間件[M].北京:中國(guó)廣播電視出版社,2005.