張定京,王 穎,黎 政,白 偉,陳德林
(國家新聞出版廣電總局廣播科學(xué)研究院,北京 100866)
NGB TVOS Java應(yīng)用框架層API的封裝模型分析
張定京,王 穎,黎 政,白 偉,陳德林
(國家新聞出版廣電總局廣播科學(xué)研究院,北京 100866)
NGB TVOS是一款面向智能電視終端的核心基礎(chǔ)軟件平臺,內(nèi)嵌支撐數(shù)字電視業(yè)務(wù)的功能組件,其應(yīng)用框架層實(shí)現(xiàn)了NGB終端中間件標(biāo)準(zhǔn)定義的API,支持NGB-J和NGB-H應(yīng)用運(yùn)行。特別地在Java應(yīng)用框架層中引入了Android應(yīng)用適配層,可兼容支持Android應(yīng)用的運(yùn)行。對Java應(yīng)用框架層API的封裝模型進(jìn)行分析,闡述應(yīng)用框架與底層組件之間的調(diào)用關(guān)系,并比較分析各種模型的特點(diǎn)。通過對封裝模型的分析,可清晰地理解Android應(yīng)用適配層API的封裝原理,有助于進(jìn)一步理解NGB TVOS兼容Android應(yīng)用的技術(shù)原理。
NGB;TVOS;API;軟件架構(gòu);應(yīng)用框架;封裝模型
2013年12月26日,國家新聞出版廣電總局發(fā)布了下一代廣播電視網(wǎng)智能電視操作系統(tǒng)(NGB TVOS)1.0版本參考軟件。NGB TVOS是在廣電總局科技司領(lǐng)導(dǎo)下、廣播科學(xué)研究院牽頭組織下,聯(lián)合國內(nèi)電視領(lǐng)域優(yōu)勢企業(yè)共同開發(fā)推出的一款真正面向電視領(lǐng)域的智能終端核心基礎(chǔ)軟件,內(nèi)嵌支撐數(shù)字電視業(yè)務(wù)的功能組件,應(yīng)用框架層實(shí)現(xiàn)了GY/T 267—2012《下一代廣播電視網(wǎng)(NGB)終端中間件技術(shù)規(guī)范》定義的API,可支持各類NGB-J/NGB-H電視應(yīng)用從開發(fā)、部署、下載到運(yùn)行的全生命周期管理及資源優(yōu)化調(diào)度管理,并提供硬件、軟件、網(wǎng)絡(luò)、數(shù)據(jù)、應(yīng)用等多層次的安全支撐。尤其在Java應(yīng)用框架層引入Android應(yīng)用適配層,可兼容支持Android應(yīng)用,極大豐富與簡化電視應(yīng)用的開發(fā)部署[1]。
NGB TVOS作為一款軟件平臺,運(yùn)行于嵌入式硬件平臺之上,承載著電視直播、視頻點(diǎn)播、網(wǎng)頁瀏覽、游戲、購物等各種應(yīng)用,其軟件架構(gòu)如圖1所示[2]。

圖1 NGB TVOS軟件架構(gòu)
NGB TVOS的軟件架構(gòu)采用“分層法”設(shè)計,按照功能層次從上到下分為:應(yīng)用框架層、執(zhí)行環(huán)境層、組件層、硬件抽象層(HAL,Hardware Abstract Layer)和Linux內(nèi)核層[2]。
應(yīng)用框架層對底層功能組件能力的重用進(jìn)行了簡化,并采用高級語言(Java、JS)封裝,上層應(yīng)用程序調(diào)用應(yīng)用框架層顯露的API實(shí)現(xiàn)對系統(tǒng)功能組件能力的調(diào)用,方便應(yīng)用程序開發(fā),增加了程序的清晰度,降低了程序設(shè)計的難度。NGB TVOS針對Java和Web兩種高級編程語言,分別實(shí)現(xiàn)了Java應(yīng)用框架和Web應(yīng)用框架;Java應(yīng)用框架層中引入了Android應(yīng)用適配層,可兼容支持Android應(yīng)用[3]。
執(zhí)行環(huán)境層是指Java和Web應(yīng)用代碼的執(zhí)行解釋環(huán)境。針對Java應(yīng)用,NGB TVOS實(shí)現(xiàn)了TVM,實(shí)現(xiàn)對Java字節(jié)碼的解釋執(zhí)行;針對Web應(yīng)用,NGB TVOS實(shí)現(xiàn)了瀏覽器,實(shí)現(xiàn)對Web頁面標(biāo)簽和JS腳本的解釋執(zhí)行。
組件層是NGB TVOS軟件平臺功能的主要實(shí)現(xiàn)體,以后臺服務(wù)進(jìn)程或函數(shù)庫的方式存在,實(shí)現(xiàn)了系統(tǒng)窗口管理、應(yīng)用管理、安裝包管理、圖形庫、標(biāo)準(zhǔn)C庫等基本功能。NGB TVOS標(biāo)準(zhǔn)化定義了各個組件對上層的調(diào)用接口為“通用組件接口”。Java應(yīng)用框架通過JNI調(diào)用“通用組件接口”,具有了訪問組件的能力;Web應(yīng)用執(zhí)行環(huán)境通過JSNI調(diào)用“通用組件接口”,實(shí)現(xiàn)了訪問組件的能力。
硬件抽象層封裝了硬件驅(qū)動資源和Linux內(nèi)核系統(tǒng)資源,使得與底層硬件相關(guān)的能力對上層調(diào)用透明化、簡單化。
Linux內(nèi)核層擔(dān)當(dāng)起實(shí)際的操作系統(tǒng)任務(wù),實(shí)現(xiàn)了進(jìn)程管理、存儲管理、I/O管理、網(wǎng)絡(luò)協(xié)議棧、安全保護(hù)和驅(qū)動模型等系統(tǒng)核心服務(wù)。
資源管理框架制定了一整套從上至下的資源管理策略,可對系統(tǒng)稀缺資源實(shí)現(xiàn)全局高效協(xié)同管理。
安全框架制定了一整套從上至下的安全保護(hù)策略,實(shí)現(xiàn)系統(tǒng)安全的全局防控。
NGB TVOS Java應(yīng)用框架的實(shí)質(zhì)是Java API封裝代碼的集合,屬于同一功能單元的若干API集中放置在同一個Java包內(nèi),Java應(yīng)用框架包含若干個Java包,所有的Java包最終可打包成一個或者多個.jar文件。
NGB TVOS Java應(yīng)用框架層的API主要包含3部分:Java ME API、NGB-J API和Android API,NGB-J API遵循GY/T 267—2012《下一代廣播電視網(wǎng)(NGB)終端中間件技術(shù)規(guī)范》。
通過閱讀NGB TVOS 1.0版本的原型參考代碼,分析得出NGB TVOS的Java應(yīng)用框架層API主要采用了5種封裝模型。
2.1 封裝模型一
NGB TVOS Java應(yīng)用框架層API封裝模型一如圖2所示。

圖2 NGB TVOS Java API封裝模型一
Java API其內(nèi)部功能邏輯基本上采用Java代碼實(shí)現(xiàn),不需要或者很少通過JNI調(diào)用底層C/C++核心庫。應(yīng)用框架層的代碼很厚。
例如:NGB TVOS Java應(yīng)用框架中絕大多數(shù)的Java ME API符合此封裝模型。
2.2 封裝模型二
NGB TVOS Java應(yīng)用框架層API封裝模型二見圖3。

圖3 NGB TVOS Java API封裝模型二
Java API其內(nèi)部功能邏輯簡單,基本上是通過JNI對等調(diào)用底層的C/C++庫組件實(shí)現(xiàn)API的功能,主要邏輯在底層。庫組件以C/C++函數(shù)庫的形式存在。
例如:NGB TVOS Java應(yīng)用框架中部分簡單一點(diǎn)的 NGB-J API符合此封裝模型。
2.3 封裝模型三
NGB TVOS Java應(yīng)用框架層API封裝模型三見圖4。

圖4 NGB TVOS Java API封裝模型三
在模型三中,Java API內(nèi)部功能邏輯簡單,基本上是通過JNI對等調(diào)用底層的C/C++服務(wù)組件實(shí)現(xiàn)API的功能。服務(wù)組件的主要功能邏輯由服務(wù)端代碼實(shí)現(xiàn),服務(wù)進(jìn)程一直在后臺運(yùn)行;客戶端代碼以函數(shù)庫的方式存在,實(shí)現(xiàn)接口供外部模塊調(diào)用;客戶端通過Binder機(jī)制訪問服務(wù)端。Java API通過JNI調(diào)用服務(wù)組件的客戶端。
與模型二相比,服務(wù)組件不再是C/C++函數(shù)庫,而是依照Binder機(jī)制開發(fā)的、系統(tǒng)啟動后一直在后臺運(yùn)行的系統(tǒng)服務(wù)[4]。
例如:NGB TVOS Java應(yīng)用框架中與數(shù)字電視功能相關(guān)的NGB-J API符合此封裝模型。
2.4 封裝模型四
NGB TVOS Java應(yīng)用框架層API封裝模型四見圖5。

圖5 NGB TVOS Java API封裝模型四
在模型四中,Java應(yīng)用框架層代碼是依據(jù)Binder機(jī)制采用Java語言開發(fā)的服務(wù)組件的客戶端,服務(wù)組件的服務(wù)端由底層C/C++語言實(shí)現(xiàn)。服務(wù)組件以系統(tǒng)服務(wù)的方式運(yùn)行,主體功能邏輯由服務(wù)端代碼實(shí)現(xiàn),客戶端內(nèi)部通過Binder機(jī)制訪問服務(wù)端。
與模型三相比,服務(wù)組件提供了Java空間和C/C++空間的兩種客戶端,Java應(yīng)用框架層直接通過Binder機(jī)制訪問服務(wù)組件的服務(wù)端,而不是如模型三中先通過JNI訪問C/C++空間的客戶端,然后再通過Binder機(jī)制訪問服務(wù)組件的服務(wù)端[5]。與模型三相比,Java應(yīng)用框架層的功能邏輯稍復(fù)雜一點(diǎn)。
例如:NGB TVOS Java應(yīng)用框架中大部分Android API符合此封裝模型。Java語言編寫的客戶端代碼劃入軟件架構(gòu)圖中的“Android應(yīng)用適配層”,C/C++語言開發(fā)的服務(wù)端代碼沉入到組件層。
2.5 封裝模型五
NGB TVOS Java應(yīng)用框架層API封裝模型五見圖6。

圖6 NGB TVOS Java API裝模型五
在模型五中,服務(wù)組件的客戶端和服務(wù)端全部采用Java語言實(shí)現(xiàn),Java應(yīng)用框架包含客戶端代碼和服務(wù)端代碼,服務(wù)組件在Java空間以系統(tǒng)服務(wù)的方式運(yùn)行,主體功能邏輯由服務(wù)端代碼實(shí)現(xiàn),客戶端代碼實(shí)現(xiàn)接口供外部模塊調(diào)用,客戶端內(nèi)部通過Binder機(jī)制訪問服務(wù)端。
與模型四相比,服務(wù)組件的代碼全部由Java語言實(shí)現(xiàn)。
例如:NGB TVOS Java應(yīng)用框架中較少一部分Android API符合此封裝模型。Java語言編寫的客戶端代碼和服務(wù)端代碼均劃入軟件架構(gòu)圖中的“Android應(yīng)用適配層”。
在NGB TVOS的發(fā)展規(guī)劃中,模型五將逐漸被廢棄,由模型四取代。
NGB TVOS Java應(yīng)用框架層API封裝模型二和模型一相比,模型一API功能邏輯基本上由Java代碼實(shí)現(xiàn),應(yīng)用框架層的代碼很厚,運(yùn)行效率低,但跨平臺移植性好;模型二API功能邏輯主要由C/C++代碼實(shí)現(xiàn),應(yīng)用框架層的代碼很薄,運(yùn)行效率高,但移植性差。
NGB TVOS Java應(yīng)用框架層API封裝模型三和模型二相比,應(yīng)用框架層的代碼都很薄,API功能邏輯主要都由C/C++代碼實(shí)現(xiàn),區(qū)別就在于模型二底層C/C++組件是以函數(shù)庫的方式存在,模型三底層C/C++組件是以后臺服務(wù)的方式存在,模型的選擇取決于組件的定義。若不考慮底層組件的差異,模型二和模型三在應(yīng)用框架層的封裝代碼基本類似。
NGB TVOS Java應(yīng)用框架層API封裝模型四和模型三相比,底層C/C++服務(wù)組件類型一致,都是以后臺服務(wù)的方式存在,但Java層封裝方法不一樣,模型三的Java層代碼是對底層組件客戶端的簡單調(diào)用,而模型四的Java層代碼是按Binder機(jī)制實(shí)現(xiàn)了同底層一樣的客戶端,代碼實(shí)現(xiàn)復(fù)雜度比較高。
NGB TVOS Java應(yīng)用框架層API封裝模型五和模型四相比,Java層都一致封裝成服務(wù)組件的客戶端,服務(wù)組件的服務(wù)端在模型四中采用C/C++代碼實(shí)現(xiàn),在模型五中采用Java代
碼實(shí)現(xiàn)。模型四的運(yùn)行效率相對高一點(diǎn),模型五的跨平臺移植性好點(diǎn)。
模型五的存在,主要是為了快速跟進(jìn)Android的版本升級,一旦平臺穩(wěn)定,將全部改寫成模型四。在模型四中,服務(wù)組件的服務(wù)端沉降到組件層,可以方便地被組件層其他組件調(diào)用,增強(qiáng)了組件的復(fù)用性。
本文詳細(xì)分析了NGB TVOS Java應(yīng)用框架層API的5種封裝模型,以及這5種模型的對比分析,有助于讀者清晰理解NGB TVOS Java應(yīng)用框架的實(shí)質(zhì),以及NGB TVOS是如何實(shí)現(xiàn)對Android應(yīng)用的兼容。縱觀NGB TVOS應(yīng)用框架層的5種封裝模型,不存在誰優(yōu)誰劣的問題,而是考慮若干因素之后綜合選擇的結(jié)果,確保在決策時能得到最優(yōu)的選擇。
[1] 李學(xué)明.廣電智能電視操作系統(tǒng)發(fā)展淺析[J].電視技術(shù),2013,37(20):1-3.
[2] 陳德林.NGB TVOS的軟件架構(gòu)及其主要技術(shù)特點(diǎn)[J].廣播電視信息,2013(10):21-25.
[3] 陳德林.Android操作系統(tǒng)與數(shù)字電視中間件的對比分析[J].廣播與電視技術(shù),2012,39(1):87-91.
[4] 李靜.Android中Binder機(jī)制研究與應(yīng)用[J].工業(yè)控制計算機(jī),2012,25(4):66-67.
[5] 王汝言.Android下Binder進(jìn)程間通信機(jī)制的分析與研究[J].計算機(jī)技術(shù)與發(fā)展,2012,22(9):100-106.
黎 政(1985— ),工程師,主研計算機(jī)技術(shù);
白 偉(1985— ),工程師,主研通信工程技術(shù);
陳德林(1975— ),教授級高工,主研廣播電視技術(shù)。
責(zé)任編輯:許 盈
Analysis of Package Model for NGB TVOS Java Application Framework Layer API
ZHANG Dingjing,WANG Ying,LI Zheng,BAI Wei,CHEN Delin
(AcademyofBroadcastingScienceStateAdministrationofPress,Publicaton,Radio,F(xiàn)ilmandTelevision,Beijing100866,China)
NGB TVOS is a core basic software platform for intelligent television terminal, the functional components which support digital television service are embedded in the platform, the API defined by specification of NGB receiver middleware is implemented in platform’s application framework layer, so NGB-J and NGB-H applications are supported. Especially, Android application adaptation layer is imported into the Java application framework layer, so Android applications can be supported to run in TVOS. The relations between the application framework and the underlying components are elaborated by analyzing the package model of Java application framework layer API, characteristics of various package models are compared and analyzed as well. The package principles of the Android application adaptation layer API would be clearly understood by analysis of package model, and it would be helpful on understanding the technical principles of NGB TVOS compatible with Android applications.
NGB; TVOS; API; software architecture; application framework; package model
【本文獻(xiàn)信息】張定京,王穎,黎政,等.NGB TVOS Java應(yīng)用框架層API的封裝模型分析[J].電視技術(shù),2015,39(13).
國家“863”計劃項目(2014ZX01039101-001)
TN949.6
B
10.16280/j.videoe.2015.13.026
張定京(1978— ),女,高級工程師,主研廣播電視技術(shù);
王 穎(1982— ),女,工程師,主研通信工程技術(shù);
2015-03-24