国产龙芯平台下Firefox浏览器插件的研究与实现
詹秋芳+李笑澜
摘要:随着互联网的发展,作为用户登录互联网的主要入口,浏览器在用户的日常应用中起着越来越重要的作用。国产龙芯平台不仅仅体现在一款高性能的处理器上,更体现在与之相配套的软硬件体系上。文章针对国产龙芯平台,系统研究了Firefox浏览器插件,对基于国产自主指令系统开展浏览器的移植与功能扩展工作进行探索,实现了国产龙芯平台FFirefox浏览器插件功能和性能。
关键词:国产龙芯平台;浏览器;插件;封装
当前随着社会信息化程度的提高,网上办公、公文流转等信息系统越来越盛行,随之引发的信息系统安全可靠问题也日益严重,“自主可控”的呼声也越来越高。核心处理器硬件平台和操作系统作为信息系统的基础,其自主可控特性显然极为重要。
国产关键软硬件的推广是未来的发展趋势。浏览器作为信息系统交互的关键和核心元素,其在国产自主可控领域的发展及应用非常重要。目前,Firefox浏览器已经基本在国产平台上得到适配,但是由于浏览器插件基于插件厂家维护,譬如Flash插件,基本只提供X86架构实现,所以在国产平台无法直接使用,严重影响了信息的展示和使用。
针对这一现状,本文将研究浏览器插件在国产平台的实现方法,以提高国产自主可控平台浏览器系统性能,针对国产龙芯平台,系统研究Firefox浏览器插件,探索基于国产自主指令系统开展浏览器的移植与功能扩展。
1国产化平台
国产化计算平台包括国产硬件、国产操作系统以及其他国产基础软件的一个集合。国产硬件主要包括龙芯、飞腾和申威,其中又以龙芯的市场化做得最好,而国产操作系统则包括中标麒麟、中科方德。中标麒麟操作系统无论在民口还是军口都占有比较大的市场比重。目前在军事信息系统领域基本采用龙芯硬件平台和中标麒麟操作系统。
1.1龙芯处理器介绍
处理器设计技术是信息技术领域的核心技术,在社会经济和国家安全领域发挥重要作用。经过10年的不断积累,我国自主研发的龙芯处理器设计己达到国际先进水平。2002年,龙芯课题组发布国内第一款32位通用处理器龙芯1号。2003年,发布国内第一款64位通用处理器龙芯2B。继龙芯2C,2E在性能上实现了“三级跳式”的增长之后,2008年龙芯课题组发布产品级芯片龙芯2F,实现与MIPS-Ⅲ指令兼容,采用90nm CMOS工艺,1.0GHz主频时功耗仅3~5瓦。2010年,发布国内首款多核处理器龙芯3A,4核可扩展架构,采用65nm CMOSZ艺,1GHz时功耗小于15瓦。从2006年开始,龙芯迈出产业化步伐。
目前龙芯拥有3个系列的产品,涵盖了广泛的应用领域:龙芯1号处理器及其IP系列主要面向嵌入式应用;龙芯2号超标量处理器及其IP系列主要面向桌面应用;龙芯3号多核处理器系列主要面向高端服务器及高性能机应用。未来,龙芯仍将致力于研发高集成度的个人计算机以及高通量可扩展的服务器用芯片,支撑国家信息产业,不断引领信息技术进步。龙芯处理器是基于MIPS-Ⅲ指令集的,并在其基础上增加部分龙芯特有的指令,因此具有其自身的平台特殊性。Windows不是开源的操作系统,其源代码由微软掌握,无法将其移植到龙芯的硬件平台之上。
1.2中标麒麟操作系统介绍
中标麒麟操作系统(NeoKylin)是中标软件有限公司与国防科大联合打造的国产操作系统品牌,其特点既满足了民口市场需求,又具有较强的安全特色。中标麒麟操作系统相对于windows系统可以做到版本升级、代码备案、产品路线图等方面的完全自主可控,从而满足某些特殊领域对定型、列装的自主可控需求;在安全技术方面,中标麒麟操作系统是首家通过公安部计算机信息系统安全产品质量监督检查中心第四级结构化保护级检测和中国人民解放军信息安全测评中心军用B+级安全认证的是目前国内安全等级最高的操作系统。经过多年的技术发展,中标麒麟操作系统无论在安全性、功能的完整性、稳定性和可靠性上都得到显著提升。经过市场验证,中标麒麟操作系统己基本达到了国外同类产品水平。目前,中标麒麟系统在工信部信息化建设项目、国产软硬件应用示范项目中,甚至国防领域得到广泛应用部署,成为国产的操作系统品牌。
2浏览器插件
浏览器是浏览网页的主要手段,可以解析网页上大部分内容,目前主流浏览器有IE,Firefox,Chrome等。浏览器工作原理是将解析的数据请求提交给后台万维网(Web)服务器,并从服务器端接收发来的超文本信息和多媒体数据,再一一进行解析、显示和播放。网页多为html脚本语言,展示能力有限,为了更加丰富地显示页面内容,譬如图像、视频等,就需要对浏览器进行扩展开发,以便定制浏览器的某些功能响应。通常采用2种技术手段:一种技术手段是Applet,采用Java语言开发,其调用方式与浏览器类型差别不大;另一种是插件开发,浏览器插件一般是一段独立于浏览器的代码模块,可以支持一种或几种数据类型的处理,显示网页己注册类型的数据,能够接收键盘和鼠标事件并作出相应的响应。
不同的浏览器,其插件开发接口以及调用方式都不尽相同。下面主要对IE浏览器和Firefox浏览器插件进行简单说明。
IE浏览器插件表现为ActiveX控件,采用组件对象模型(COM),需支持IDispatch和IConnectionPoint接口。IDispatch接口定义控件的方法和属性,而IConnectionPoint接口定义控件的事件。ActiveX开发支持多种语言,譬如:C++,Visual Basic及VBScript脚本语言。
Firefox浏览器与插件通过NPAPI(NetscapeApplication Interface网景应用程序接口)进行交互。NPAP1由插件需定义的接口、浏览器支持的接口和共享数据结构集3部分构成。其中插件需定义的接口以“NPP”为前缀,浏览器支持的接口以“NPN”为前缀,共享数据结构集主要用于两方数据流的传递,以“NP”为前缀。Firefox浏览器插件多采用C/C++语言进行开发。
3国产龙芯平台浏览器插件解决方案实现
该方案基于Native插件及插件运行时环境、封装插件、插件查看器4个部分构成。其中Native插件是插件功能的实现主体,其文件格式是非龙芯平台的二进制动态库,通常为X86平台文件格式;插件运行时环境是确保Native插件能够正常加载的最小运行环境,如果Native插件为X86平台二进制动态库,那么插件运行时环境也是X86平台的;封装插件是一个简单的浏览器插件,具备龙芯平台的二进制动态库文件格式,能够被龙芯平台上的浏览器正常加载;而插件查看器是龙芯平台二进制可执行文件格式。
3.1系统结构图
国产龙芯平台浏览器插件解决方案总体结构如图1所示,系统主要由2部分构成:网页为交互层,用来显示信息,接收用户点击事件,并将事件响应结果展示出来;对用户请求事件的处理则由插件完成。封装插件层,包含提供插件的一些基本信息,如果用户仅仅是查看插件信息而不需要运行插件功能时,系统自动激活该功能,从而减少运行开支;插件查看器创建插件运行环境,加载插件,并且创建插件和页面交互的通信通道,确保功能的顺利执行。
3.2封装插件
封装插件主要有2个用途,首先它属于浏览器插件,可运行在国产龙芯平台上,能够被浏览器识别且加载。同时它具备的功能非常有限,仅仅只提供对应Native插件基本信息,譬如插件名称、插件描述信息、插件注册类型、版本信息、启用状态和对应Native插件在系统中的安装位置、需要加载的方式等。封装插件与网页交互流程如图2所示。
3.3插件查看器
Native插件基本都是以C/C++发布的动态链接库,与运行平台密切相关,故Native插件基本都不能直接在国产龙芯平台上加载运行,需要借助于插件查看器。首先,插件查看器根据插件运行时环境在其进程空间中为Native插件创建可运行的环境;然后将Native插件加载到该运行环境中,同时还与浏览器进程约定创建进程间通信管道;最后,页面将用户的要求通过通信管道传递给插件查看器,插件查看器激活Native插件的功能,根据要求进行显示或者计算,并将运行结果通过管道返回给用户。插件查看器与网页交互流程如图3所示。
4结语
文中重点介绍了Native插件在国产龙芯平台下的解决方案,论述了Native浏览器插件不能在国产龙芯平台下运行的根本原因以及解决办法,最后给出了通过封装插件开发框架开发的解决方案。经过试验证实该方案不仅支持常用的Adobe Flash插件运行在国产龙芯平台上的Firefox浏览器,还包括其他Native插件,如手写批注插件、文档编辑与查看插件等,对于国产自主指令系统开展浏览器的移植与功能扩展工作具有重要的学术意义和应用价值。