張定京,王 穎,黎 政,白 偉,陳德林
(國(guó)家新聞出版廣電總局廣播科學(xué)研究院,北京 100866)
NGB TVOS Java應(yīng)用框架層API的封裝模型分析
張定京,王 穎,黎 政,白 偉,陳德林
(國(guó)家新聞出版廣電總局廣播科學(xué)研究院,北京 100866)
NGB TVOS是一款面向智能電視終端的核心基礎(chǔ)軟件平臺(tái),內(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)行。對(duì)Java應(yīng)用框架層API的封裝模型進(jìn)行分析,闡述應(yīng)用框架與底層組件之間的調(diào)用關(guān)系,并比較分析各種模型的特點(diǎn)。通過(guò)對(duì)封裝模型的分析,可清晰地理解Android應(yīng)用適配層API的封裝原理,有助于進(jìn)一步理解NGB TVOS兼容Android應(yīng)用的技術(shù)原理。
NGB;TVOS;API;軟件架構(gòu);應(yīng)用框架;封裝模型
2013年12月26日,國(guó)家新聞出版廣電總局發(fā)布了下一代廣播電視網(wǎng)智能電視操作系統(tǒng)(NGB TVOS)1.0版本參考軟件。NGB TVOS是在廣電總局科技司領(lǐng)導(dǎo)下、廣播科學(xué)研究院牽頭組織下,聯(lián)合國(guó)內(nèi)電視領(lǐng)域優(yōu)勢(shì)企業(yè)共同開(kāi)發(fā)推出的一款真正面向電視領(lǐng)域的智能終端核心基礎(chǔ)軟件,內(nèi)嵌支撐數(shù)字電視業(yè)務(wù)的功能組件,應(yīng)用框架層實(shí)現(xiàn)了GY/T 267—2012《下一代廣播電視網(wǎng)(NGB)終端中間件技術(shù)規(guī)范》定義的API,可支持各類(lèi)NGB-J/NGB-H電視應(yīng)用從開(kāi)發(fā)、部署、下載到運(yùn)行的全生命周期管理及資源優(yōu)化調(diào)度管理,并提供硬件、軟件、網(wǎng)絡(luò)、數(shù)據(jù)、應(yīng)用等多層次的安全支撐。尤其在Java應(yīng)用框架層引入Android應(yīng)用適配層,可兼容支持Android應(yīng)用,極大豐富與簡(jiǎn)化電視應(yīng)用的開(kāi)發(fā)部署[1]。
NGB TVOS作為一款軟件平臺(tái),運(yùn)行于嵌入式硬件平臺(tái)之上,承載著電視直播、視頻點(diǎn)播、網(wǎng)頁(yè)瀏覽、游戲、購(gòu)物等各種應(yīng)用,其軟件架構(gòu)如圖1所示[2]。
圖1 NGB TVOS軟件架構(gòu)
NGB TVOS的軟件架構(gòu)采用“分層法”設(shè)計(jì),按照功能層次從上到下分為:應(yīng)用框架層、執(zhí)行環(huán)境層、組件層、硬件抽象層(HAL,Hardware Abstract Layer)和Linux內(nèi)核層[2]。
應(yīng)用框架層對(duì)底層功能組件能力的重用進(jìn)行了簡(jiǎn)化,并采用高級(jí)語(yǔ)言(Java、JS)封裝,上層應(yīng)用程序調(diào)用應(yīng)用框架層顯露的API實(shí)現(xiàn)對(duì)系統(tǒng)功能組件能力的調(diào)用,方便應(yīng)用程序開(kāi)發(fā),增加了程序的清晰度,降低了程序設(shè)計(jì)的難度。NGB TVOS針對(duì)Java和Web兩種高級(jí)編程語(yǔ)言,分別實(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)境。針對(duì)Java應(yīng)用,NGB TVOS實(shí)現(xiàn)了TVM,實(shí)現(xiàn)對(duì)Java字節(jié)碼的解釋執(zhí)行;針對(duì)Web應(yīng)用,NGB TVOS實(shí)現(xiàn)了瀏覽器,實(shí)現(xiàn)對(duì)Web頁(yè)面標(biāo)簽和JS腳本的解釋執(zhí)行。
組件層是NGB TVOS軟件平臺(tái)功能的主要實(shí)現(xiàn)體,以后臺(tái)服務(wù)進(jìn)程或函數(shù)庫(kù)的方式存在,實(shí)現(xiàn)了系統(tǒng)窗口管理、應(yīng)用管理、安裝包管理、圖形庫(kù)、標(biāo)準(zhǔn)C庫(kù)等基本功能。NGB TVOS標(biāo)準(zhǔn)化定義了各個(gè)組件對(duì)上層的調(diào)用接口為“通用組件接口”。Java應(yīng)用框架通過(guò)JNI調(diào)用“通用組件接口”,具有了訪問(wèn)組件的能力;Web應(yīng)用執(zhí)行環(huán)境通過(guò)JSNI調(diào)用“通用組件接口”,實(shí)現(xiàn)了訪問(wèn)組件的能力。
硬件抽象層封裝了硬件驅(qū)動(dòng)資源和Linux內(nèi)核系統(tǒng)資源,使得與底層硬件相關(guān)的能力對(duì)上層調(diào)用透明化、簡(jiǎn)單化。
Linux內(nèi)核層擔(dān)當(dāng)起實(shí)際的操作系統(tǒng)任務(wù),實(shí)現(xiàn)了進(jìn)程管理、存儲(chǔ)管理、I/O管理、網(wǎng)絡(luò)協(xié)議棧、安全保護(hù)和驅(qū)動(dòng)模型等系統(tǒng)核心服務(wù)。
資源管理框架制定了一整套從上至下的資源管理策略,可對(duì)系統(tǒng)稀缺資源實(shí)現(xiàn)全局高效協(xié)同管理。
安全框架制定了一整套從上至下的安全保護(hù)策略,實(shí)現(xiàn)系統(tǒng)安全的全局防控。
NGB TVOS Java應(yīng)用框架的實(shí)質(zhì)是Java API封裝代碼的集合,屬于同一功能單元的若干API集中放置在同一個(gè)Java包內(nèi),Java應(yīng)用框架包含若干個(gè)Java包,所有的Java包最終可打包成一個(gè)或者多個(gè).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ī)范》。
通過(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),不需要或者很少通過(guò)JNI調(diào)用底層C/C++核心庫(kù)。應(yīng)用框架層的代碼很厚。
例如:NGB TVOS Java應(yīng)用框架中絕大多數(shù)的Java ME API符合此封裝模型。
2.2 封裝模型二
NGB TVOS Java應(yīng)用框架層API封裝模型二見(jiàn)圖3。
圖3 NGB TVOS Java API封裝模型二
Java API其內(nèi)部功能邏輯簡(jiǎn)單,基本上是通過(guò)JNI對(duì)等調(diào)用底層的C/C++庫(kù)組件實(shí)現(xiàn)API的功能,主要邏輯在底層。庫(kù)組件以C/C++函數(shù)庫(kù)的形式存在。
例如:NGB TVOS Java應(yīng)用框架中部分簡(jiǎn)單一點(diǎn)的 NGB-J API符合此封裝模型。
2.3 封裝模型三
NGB TVOS Java應(yīng)用框架層API封裝模型三見(jiàn)圖4。
圖4 NGB TVOS Java API封裝模型三
在模型三中,Java API內(nèi)部功能邏輯簡(jiǎn)單,基本上是通過(guò)JNI對(duì)等調(diào)用底層的C/C++服務(wù)組件實(shí)現(xiàn)API的功能。服務(wù)組件的主要功能邏輯由服務(wù)端代碼實(shí)現(xiàn),服務(wù)進(jìn)程一直在后臺(tái)運(yùn)行;客戶(hù)端代碼以函數(shù)庫(kù)的方式存在,實(shí)現(xiàn)接口供外部模塊調(diào)用;客戶(hù)端通過(guò)Binder機(jī)制訪問(wèn)服務(wù)端。Java API通過(guò)JNI調(diào)用服務(wù)組件的客戶(hù)端。
與模型二相比,服務(wù)組件不再是C/C++函數(shù)庫(kù),而是依照Binder機(jī)制開(kāi)發(fā)的、系統(tǒng)啟動(dòng)后一直在后臺(tái)運(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封裝模型四見(jiàn)圖5。
圖5 NGB TVOS Java API封裝模型四
在模型四中,Java應(yīng)用框架層代碼是依據(jù)Binder機(jī)制采用Java語(yǔ)言開(kāi)發(fā)的服務(wù)組件的客戶(hù)端,服務(wù)組件的服務(wù)端由底層C/C++語(yǔ)言實(shí)現(xiàn)。服務(wù)組件以系統(tǒng)服務(wù)的方式運(yùn)行,主體功能邏輯由服務(wù)端代碼實(shí)現(xiàn),客戶(hù)端內(nèi)部通過(guò)Binder機(jī)制訪問(wèn)服務(wù)端。
與模型三相比,服務(wù)組件提供了Java空間和C/C++空間的兩種客戶(hù)端,Java應(yīng)用框架層直接通過(guò)Binder機(jī)制訪問(wèn)服務(wù)組件的服務(wù)端,而不是如模型三中先通過(guò)JNI訪問(wèn)C/C++空間的客戶(hù)端,然后再通過(guò)Binder機(jī)制訪問(wèn)服務(wù)組件的服務(wù)端[5]。與模型三相比,Java應(yīng)用框架層的功能邏輯稍復(fù)雜一點(diǎn)。
例如:NGB TVOS Java應(yīng)用框架中大部分Android API符合此封裝模型。Java語(yǔ)言編寫(xiě)的客戶(hù)端代碼劃入軟件架構(gòu)圖中的“Android應(yīng)用適配層”,C/C++語(yǔ)言開(kāi)發(fā)的服務(wù)端代碼沉入到組件層。
2.5 封裝模型五
NGB TVOS Java應(yīng)用框架層API封裝模型五見(jiàn)圖6。
圖6 NGB TVOS Java API裝模型五
在模型五中,服務(wù)組件的客戶(hù)端和服務(wù)端全部采用Java語(yǔ)言實(shí)現(xiàn),Java應(yīng)用框架包含客戶(hù)端代碼和服務(wù)端代碼,服務(wù)組件在Java空間以系統(tǒng)服務(wù)的方式運(yùn)行,主體功能邏輯由服務(wù)端代碼實(shí)現(xiàn),客戶(hù)端代碼實(shí)現(xiàn)接口供外部模塊調(diào)用,客戶(hù)端內(nèi)部通過(guò)Binder機(jī)制訪問(wèn)服務(wù)端。
與模型四相比,服務(wù)組件的代碼全部由Java語(yǔ)言實(shí)現(xiàn)。
例如:NGB TVOS Java應(yīng)用框架中較少一部分Android API符合此封裝模型。Java語(yǔ)言編寫(xiě)的客戶(hù)端代碼和服務(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)行效率低,但跨平臺(tái)移植性好;模型二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ù)庫(kù)的方式存在,模型三底層C/C++組件是以后臺(tái)服務(wù)的方式存在,模型的選擇取決于組件的定義。若不考慮底層組件的差異,模型二和模型三在應(yīng)用框架層的封裝代碼基本類(lèi)似。
NGB TVOS Java應(yīng)用框架層API封裝模型四和模型三相比,底層C/C++服務(wù)組件類(lèi)型一致,都是以后臺(tái)服務(wù)的方式存在,但Java層封裝方法不一樣,模型三的Java層代碼是對(duì)底層組件客戶(hù)端的簡(jiǎn)單調(diào)用,而模型四的Java層代碼是按Binder機(jī)制實(shí)現(xiàn)了同底層一樣的客戶(hù)端,代碼實(shí)現(xiàn)復(fù)雜度比較高。
NGB TVOS Java應(yīng)用框架層API封裝模型五和模型四相比,Java層都一致封裝成服務(wù)組件的客戶(hù)端,服務(wù)組件的服務(wù)端在模型四中采用C/C++代碼實(shí)現(xiàn),在模型五中采用Java代
碼實(shí)現(xiàn)。模型四的運(yùn)行效率相對(duì)高一點(diǎn),模型五的跨平臺(tái)移植性好點(diǎn)。
模型五的存在,主要是為了快速跟進(jìn)Android的版本升級(jí),一旦平臺(tái)穩(wěn)定,將全部改寫(xiě)成模型四。在模型四中,服務(wù)組件的服務(wù)端沉降到組件層,可以方便地被組件層其他組件調(diào)用,增強(qiáng)了組件的復(fù)用性。
本文詳細(xì)分析了NGB TVOS Java應(yīng)用框架層API的5種封裝模型,以及這5種模型的對(duì)比分析,有助于讀者清晰理解NGB TVOS Java應(yīng)用框架的實(shí)質(zhì),以及NGB TVOS是如何實(shí)現(xiàn)對(duì)Android應(yīng)用的兼容。縱觀NGB TVOS應(yīng)用框架層的5種封裝模型,不存在誰(shuí)優(yōu)誰(shuí)劣的問(wèn)題,而是考慮若干因素之后綜合選擇的結(jié)果,確保在決策時(shí)能得到最優(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ù)字電視中間件的對(duì)比分析[J].廣播與電視技術(shù),2012,39(1):87-91.
[4] 李靜.Android中Binder機(jī)制研究與應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2012,25(4):66-67.
[5] 王汝言.Android下Binder進(jìn)程間通信機(jī)制的分析與研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(9):100-106.
黎 政(1985— ),工程師,主研計(jì)算機(jī)技術(shù);
白 偉(1985— ),工程師,主研通信工程技術(shù);
陳德林(1975— ),教授級(jí)高工,主研廣播電視技術(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).
國(guó)家“863”計(jì)劃項(xiàng)目(2014ZX01039101-001)
TN949.6
B
10.16280/j.videoe.2015.13.026
張定京(1978— ),女,高級(jí)工程師,主研廣播電視技術(shù);
王 穎(1982— ),女,工程師,主研通信工程技術(shù);
2015-03-24