邵 珺
(北京数码视讯科技股份有限公司,北京 100085)
中间件系统是近两年国内广电行业内最热门的技术及话题之一。2009年ICTC展会上,无论是数字电视前端硬件厂商还是机顶盒厂商,中间件系统随处可见。中间件系统的迅速发展一方面表明国内广电企业在该领域技术的长足进步,另一方面显示出中间件系统在未来数字电视发展中的重要地位。
中间件从广义角度讲一般是指嵌入在电视接收终端,位于接收设备驱动层软件之上,隔绝交互应用与系统资源的软件层。它能够令应用程序独立于接收机硬件和软件平台,使不同硬件组成和设计架构的机顶盒均能运行相同的应用;同时,不同软件公司可基于相同的编程接口开发应用程序,且在不同的机顶盒上运行。
尽管中间件只是安装在数字电视接收设备上,但其接收和处理数据与前端密切相关,前端系统与接收终端在数据格式、播发协议上必须协同一致。然而目前市场上绝大多数的中间件系统是不含有前端系统的,即便有也仅仅是个简单的前端播发设备,通常称这种中间件为机顶盒中间件,而拥有完整前端系统以及终端系统、且能实现业务可管理、业务开发有规范的面向运营的中间件则称为数字电视中间件。只有数字电视中间件才是真正适应运营商需要,符合数字电视发展趋势的中间件系统。
数字电视中间件的出现从根本上来说是为了促进增值业务的运营,而这也是电视数字化的出发点和最终目的。早在20世纪末,许多国外厂家就已经开始采用中间件对各自的增值业务提供支撑平台。截至目前,数字电视中间件的技术实现方式主要分为两大类,分别是以HTML+JavaScript技术为核心的浏览器中间件以及以Java技术为核心的Java中间件。2种实现方式在各自的领域内都拥有一定优势,而关于2种实现方式孰优孰劣的争论也一直没有平息过。下文将从多个方面就数字电视中间件的这2种实现方式进行具体分析。
1)编译语言
尽管Java中间件采用的是Java语言,浏览器中间件采用的是HTML+JavaScript语言,但由于应用程序均采用解释性的语言编写,而两者又都支持解释性语言的解析和执行,因此两类中间件均能满足要求。
2)标准性
Java虚拟机本身有较强且完善的技术规范,对于多线程、图形机制等支持较好。在中间件方面也有现成的标准可参考,MHP,OCAP及我国的中间件标准草案,已经有成熟的开发接口可供使用,可以使应用真正做到跨平台。浏览器中间件则一直没有成型的标准。尽管HTML和JavaScript均是由W3C组织公布和维护的标准,但没有一款浏览器能够完全支持W3C公布的标准[1]。
钢筋被人偷的偷拿的拿,油漆、涂料、水泥,但凡能搬得动的,都被人拿了,他们用不了,就拿去卖了。工地上只有几个人歪在工棚里打牌,民工们不再尊敬爸爸,吹捧他,奉承他,他们只是从扑克上移开一下眼角,扫一扫他,问:“易哥,什么时候发工钱唦?”
3)系统架构
Java中间件采用Java虚拟机的系统架构,可将应用程序和机顶盒底层操作系统、硬件细节分隔开。浏览器中间件本身是基于互联网协议的,技术比较成熟。但是数字电视环境与互联网相比具出入较大,因此将浏览器嵌入数字电视的过程中,在技术规范上进行了约束和补充。
4)应用程序开发
浏览器本身基于互联网协议,技术成熟、成本低廉。简单的应用程序开发技术门槛低。然而HTML+JavaScript中间件只能支持简单逻辑和基于网页类型的基本交互型的应用。由于应用代码不能跟组、调试,因此当业务逻辑较为复杂时,所有错误均须通过读代码来解决。而对于Java来说,应用代码可以单步跟踪、调试,代码中的错误也可以得到快速解决。
5)图形界面开发
HTML非常适合“表现层”的技术,能够呈现各种信息。同时JavaScript很好地弥补了HTML在逻辑处理方面的弱势,支持条件判断、循环、跳转等。HTML+JavaScript适合编写应用逻辑简单、界面元素丰富的应用。
但浏览器界面可定制性差,很少有人会使用HTML和JavaScript来开发游戏,也正是由于这个原因,才需要在浏览器中嵌入Java虚拟机或Flash插件来实现客户更丰富的用户体验。
与Java不同,HTML和JavaScript并没有一套成型的字节码标准,浏览器需要直接读取源码并解释执行,因此增值应用本身的源代码无法收到任何产权上的保护。而对于Java来说,由于下发的是字节码,因此其对应于产权保护方面要优于浏览器。
7)稳定性
由于浏览器中间件是直接解析源代码的,因此缺乏代码编译环节,无法对代码的语法错误进行检查,因此应用程序中充斥着大量语法错误。
而对于Java中间件来说,在源码到字节码的过程中,编译器会排除所有的语法错误,运行时产生的问题基本源于应用程序逻辑本身。
8)性能
目前能看到的应用中,基于浏览器的相对逻辑都比较简单,因此其速度较快。实际上,由于基于HTML的应用主要靠JavaScript编写,而执行JavaScript代码时,是逐字解释、执行。而Java应用是解释的字节码,已经经过一次编译的过程,因此,JavaScript的效率要低于Java。
从上述分析中不难发现,浏览器中间件与Java中间件各有所长,且到目前为止关于中间件系统的国家标准仍未出台。因此,运营商势必面临如何选择的难题。针对这种情况,北京数码视讯科技股份有限公司率先推出了双核心的数字电视中间件系统,同时支持HTML+JavaScript技术以及Java技术。
图1所示为数字电视终端系统内部结构,虚线内部为完整的数字电视中间件终端系统,其中既包括了浏览器引擎,也包含了Java虚拟机引擎。Java虚拟机可通过系统优化降低硬件要求,提升运行速度。而浏览器则提供Java接口,可被Java应用程序使用。两者既各司其职,又可相互调用。从图1中也可以清楚地看到中间件系统在整个终端系统中的重要位置。其下层是机顶盒的操作系统、驱动程序、机顶盒硬件平台;其上层是各类应用程序及增值业务。
图1 数字电视终端系统内部结构图
此外数字电视中间件系统中的中间件API可以支持PBP档次的Java标准API、支持国标API、支持MIDP2.0标准开发包、兼容MHP;同时扩展API支持USB、摄像头、无线鼠标、硬盘和网络安全接入[2]。
图中中间件系统部分的其他功能模块也各具特色:
1)GUI:提供图形开发支持;具有完善的控件系统,支持多窗口、多任务图形界面程序开发;拥有独立的事件管理机制及图形绘制接口,可在不同的平台上移植[3]。
2)文件系统:提供中间件文件访问支持;能够支持内存、Flash中的文件访问;针对机顶盒Flash的平均磨损算法,延长Flash使用寿命。
3)应用管理器:负责各应用间的切换,支持HTML应用、Java应用、内嵌应用间的切换;支持下载应用的签名、认证,确保应用程序的合法性;支持Java应用、HTML应用间的相互调用。
双核心数字电视中间件相较传统浏览器中间件和Java中间件的优势可以通过表1体现。
双核心数字电视中间件将浏览器中间件和Java中间件有机结合在一起,汲取两者优势,是目前中间件市场上两大主流技术良好的融合,并可相互调用。
对于双核心数字电视中间件来说,其技术实现存在2个难点:一是Java虚拟机与浏览器间如何相互调用;二是在调用过程中如何最低程度地降低系统的资源消耗。而这2个问题在PC机发展过程中就已经存在并最终被解决。众所周知,作为Java程序的创始者,Sun公司原本也是做操作系统的,但是在与微软竞争中没能占据市场主导地位,因而开始做Java虚拟机。而当Java虚拟机在市场上获得巨大成功时,微软也针对Java虚拟机改写了dll规范。这也是现在能够在PC机上实现浏览器、Java虚拟机相互调用的原因。对于双核心数字电视中间件来说,只要能将已在PC机上成功应用的技术移植过来就可以解决前面提到的技术难点。至于对系统的资源消耗则要通过长时间的调试逐步进行改进。
表1 双核心数字电视中间件与传统浏览器中间件、Java中间件对比
双核心数字电视中间件系统对于目前风风火火的中间件市场来说无疑是一抹新亮点。目前市场上两大主流技术的完美结合,不仅解决了运营商对两种技术的选择困惑,也将数字电视中间件技术推向一个新的高度。尽管从表面看来数字电视中间件只在数字电视系统终端起着非常重要的作用,但事实上应当从全局的角度去审视其在整个数字电视前端平台中的作用。数字电视中间件系统应该是面向运营的中间件,通过它可以进行业务推介、管理和规范前端业务开发,并对整个数字电视前端平台进行保护。
[1]李华飚.Java中间件技术及其应用开发[M].北京:中国水利水电出版社,2007.
[2]杨放春.异构网络中间件和开放式API技术[M].北京:北京邮电大学出版社,2007.
[3]廖洪涛.数字电视交互系统——中间件[M].北京:中国广播电视出版社,2005.