詹秋芳+李笑瀾
摘要:隨著互聯(lián)網(wǎng)的發(fā)展,作為用戶登錄互聯(lián)網(wǎng)的主要入口,瀏覽器在用戶的日常應用中起著越來越重要的作用。國產(chǎn)龍芯平臺不僅僅體現(xiàn)在一款高性能的處理器上,更體現(xiàn)在與之相配套的軟硬件體系上。文章針對國產(chǎn)龍芯平臺,系統(tǒng)研究了Firefox瀏覽器插件,對基于國產(chǎn)自主指令系統(tǒng)開展瀏覽器的移植與功能擴展工作進行探索,實現(xiàn)了國產(chǎn)龍芯平臺FFirefox瀏覽器插件功能和性能。
關鍵詞:國產(chǎn)龍芯平臺;瀏覽器;插件;封裝
當前隨著社會信息化程度的提高,網(wǎng)上辦公、公文流轉等信息系統(tǒng)越來越盛行,隨之引發(fā)的信息系統(tǒng)安全可靠問題也日益嚴重,“自主可控”的呼聲也越來越高。核心處理器硬件平臺和操作系統(tǒng)作為信息系統(tǒng)的基礎,其自主可控特性顯然極為重要。
國產(chǎn)關鍵軟硬件的推廣是未來的發(fā)展趨勢。瀏覽器作為信息系統(tǒng)交互的關鍵和核心元素,其在國產(chǎn)自主可控領域的發(fā)展及應用非常重要。目前,F(xiàn)irefox瀏覽器已經(jīng)基本在國產(chǎn)平臺上得到適配,但是由于瀏覽器插件基于插件廠家維護,譬如Flash插件,基本只提供X86架構實現(xiàn),所以在國產(chǎn)平臺無法直接使用,嚴重影響了信息的展示和使用。
針對這一現(xiàn)狀,本文將研究瀏覽器插件在國產(chǎn)平臺的實現(xiàn)方法,以提高國產(chǎn)自主可控平臺瀏覽器系統(tǒng)性能,針對國產(chǎn)龍芯平臺,系統(tǒng)研究Firefox瀏覽器插件,探索基于國產(chǎn)自主指令系統(tǒng)開展瀏覽器的移植與功能擴展。
1國產(chǎn)化平臺
國產(chǎn)化計算平臺包括國產(chǎn)硬件、國產(chǎn)操作系統(tǒng)以及其他國產(chǎn)基礎軟件的一個集合。國產(chǎn)硬件主要包括龍芯、飛騰和申威,其中又以龍芯的市場化做得最好,而國產(chǎn)操作系統(tǒng)則包括中標麒麟、中科方德。中標麒麟操作系統(tǒng)無論在民口還是軍口都占有比較大的市場比重。目前在軍事信息系統(tǒng)領域基本采用龍芯硬件平臺和中標麒麟操作系統(tǒng)。
1.1龍芯處理器介紹
處理器設計技術是信息技術領域的核心技術,在社會經(jīng)濟和國家安全領域發(fā)揮重要作用。經(jīng)過10年的不斷積累,我國自主研發(fā)的龍芯處理器設計己達到國際先進水平。2002年,龍芯課題組發(fā)布國內(nèi)第一款32位通用處理器龍芯1號。2003年,發(fā)布國內(nèi)第一款64位通用處理器龍芯2B。繼龍芯2C,2E在性能上實現(xiàn)了“三級跳式”的增長之后,2008年龍芯課題組發(fā)布產(chǎn)品級芯片龍芯2F,實現(xiàn)與MIPS-Ⅲ指令兼容,采用90nm CMOS工藝,1.0GHz主頻時功耗僅3~5瓦。2010年,發(fā)布國內(nèi)首款多核處理器龍芯3A,4核可擴展架構,采用65nm CMOSZ藝,1GHz時功耗小于15瓦。從2006年開始,龍芯邁出產(chǎn)業(yè)化步伐。
目前龍芯擁有3個系列的產(chǎn)品,涵蓋了廣泛的應用領域:龍芯1號處理器及其IP系列主要面向嵌入式應用;龍芯2號超標量處理器及其IP系列主要面向桌面應用;龍芯3號多核處理器系列主要面向高端服務器及高性能機應用。未來,龍芯仍將致力于研發(fā)高集成度的個人計算機以及高通量可擴展的服務器用芯片,支撐國家信息產(chǎn)業(yè),不斷引領信息技術進步。龍芯處理器是基于MIPS-Ⅲ指令集的,并在其基礎上增加部分龍芯特有的指令,因此具有其自身的平臺特殊性。Windows不是開源的操作系統(tǒng),其源代碼由微軟掌握,無法將其移植到龍芯的硬件平臺之上。
1.2中標麒麟操作系統(tǒng)介紹
中標麒麟操作系統(tǒng)(NeoKylin)是中標軟件有限公司與國防科大聯(lián)合打造的國產(chǎn)操作系統(tǒng)品牌,其特點既滿足了民口市場需求,又具有較強的安全特色。中標麒麟操作系統(tǒng)相對于windows系統(tǒng)可以做到版本升級、代碼備案、產(chǎn)品路線圖等方面的完全自主可控,從而滿足某些特殊領域?qū)Χㄐ?、列裝的自主可控需求;在安全技術方面,中標麒麟操作系統(tǒng)是首家通過公安部計算機信息系統(tǒng)安全產(chǎn)品質(zhì)量監(jiān)督檢查中心第四級結構化保護級檢測和中國人民解放軍信息安全測評中心軍用B+級安全認證的是目前國內(nèi)安全等級最高的操作系統(tǒng)。經(jīng)過多年的技術發(fā)展,中標麒麟操作系統(tǒng)無論在安全性、功能的完整性、穩(wěn)定性和可靠性上都得到顯著提升。經(jīng)過市場驗證,中標麒麟操作系統(tǒng)己基本達到了國外同類產(chǎn)品水平。目前,中標麒麟系統(tǒng)在工信部信息化建設項目、國產(chǎn)軟硬件應用示范項目中,甚至國防領域得到廣泛應用部署,成為國產(chǎn)的操作系統(tǒng)品牌。
2瀏覽器插件
瀏覽器是瀏覽網(wǎng)頁的主要手段,可以解析網(wǎng)頁上大部分內(nèi)容,目前主流瀏覽器有IE,F(xiàn)irefox,Chrome等。瀏覽器工作原理是將解析的數(shù)據(jù)請求提交給后臺萬維網(wǎng)(Web)服務器,并從服務器端接收發(fā)來的超文本信息和多媒體數(shù)據(jù),再一一進行解析、顯示和播放。網(wǎng)頁多為html腳本語言,展示能力有限,為了更加豐富地顯示頁面內(nèi)容,譬如圖像、視頻等,就需要對瀏覽器進行擴展開發(fā),以便定制瀏覽器的某些功能響應。通常采用2種技術手段:一種技術手段是Applet,采用Java語言開發(fā),其調(diào)用方式與瀏覽器類型差別不大;另一種是插件開發(fā),瀏覽器插件一般是一段獨立于瀏覽器的代碼模塊,可以支持一種或幾種數(shù)據(jù)類型的處理,顯示網(wǎng)頁己注冊類型的數(shù)據(jù),能夠接收鍵盤和鼠標事件并作出相應的響應。
不同的瀏覽器,其插件開發(fā)接口以及調(diào)用方式都不盡相同。下面主要對IE瀏覽器和Firefox瀏覽器插件進行簡單說明。
IE瀏覽器插件表現(xiàn)為ActiveX控件,采用組件對象模型(COM),需支持IDispatch和IConnectionPoint接口。IDispatch接口定義控件的方法和屬性,而IConnectionPoint接口定義控件的事件。ActiveX開發(fā)支持多種語言,譬如:C++,Visual Basic及VBScript腳本語言。
Firefox瀏覽器與插件通過NPAPI(NetscapeApplication Interface網(wǎng)景應用程序接口)進行交互。NPAP1由插件需定義的接口、瀏覽器支持的接口和共享數(shù)據(jù)結構集3部分構成。其中插件需定義的接口以“NPP”為前綴,瀏覽器支持的接口以“NPN”為前綴,共享數(shù)據(jù)結構集主要用于兩方數(shù)據(jù)流的傳遞,以“NP”為前綴。Firefox瀏覽器插件多采用C/C++語言進行開發(fā)。
3國產(chǎn)龍芯平臺瀏覽器插件解決方案實現(xiàn)
該方案基于Native插件及插件運行時環(huán)境、封裝插件、插件查看器4個部分構成。其中Native插件是插件功能的實現(xiàn)主體,其文件格式是非龍芯平臺的二進制動態(tài)庫,通常為X86平臺文件格式;插件運行時環(huán)境是確保Native插件能夠正常加載的最小運行環(huán)境,如果Native插件為X86平臺二進制動態(tài)庫,那么插件運行時環(huán)境也是X86平臺的;封裝插件是一個簡單的瀏覽器插件,具備龍芯平臺的二進制動態(tài)庫文件格式,能夠被龍芯平臺上的瀏覽器正常加載;而插件查看器是龍芯平臺二進制可執(zhí)行文件格式。
3.1系統(tǒng)結構圖
國產(chǎn)龍芯平臺瀏覽器插件解決方案總體結構如圖1所示,系統(tǒng)主要由2部分構成:網(wǎng)頁為交互層,用來顯示信息,接收用戶點擊事件,并將事件響應結果展示出來;對用戶請求事件的處理則由插件完成。封裝插件層,包含提供插件的一些基本信息,如果用戶僅僅是查看插件信息而不需要運行插件功能時,系統(tǒng)自動激活該功能,從而減少運行開支;插件查看器創(chuàng)建插件運行環(huán)境,加載插件,并且創(chuàng)建插件和頁面交互的通信通道,確保功能的順利執(zhí)行。
3.2封裝插件
封裝插件主要有2個用途,首先它屬于瀏覽器插件,可運行在國產(chǎn)龍芯平臺上,能夠被瀏覽器識別且加載。同時它具備的功能非常有限,僅僅只提供對應Native插件基本信息,譬如插件名稱、插件描述信息、插件注冊類型、版本信息、啟用狀態(tài)和對應Native插件在系統(tǒng)中的安裝位置、需要加載的方式等。封裝插件與網(wǎng)頁交互流程如圖2所示。
3.3插件查看器
Native插件基本都是以C/C++發(fā)布的動態(tài)鏈接庫,與運行平臺密切相關,故Native插件基本都不能直接在國產(chǎn)龍芯平臺上加載運行,需要借助于插件查看器。首先,插件查看器根據(jù)插件運行時環(huán)境在其進程空間中為Native插件創(chuàng)建可運行的環(huán)境;然后將Native插件加載到該運行環(huán)境中,同時還與瀏覽器進程約定創(chuàng)建進程間通信管道;最后,頁面將用戶的要求通過通信管道傳遞給插件查看器,插件查看器激活Native插件的功能,根據(jù)要求進行顯示或者計算,并將運行結果通過管道返回給用戶。插件查看器與網(wǎng)頁交互流程如圖3所示。
4結語
文中重點介紹了Native插件在國產(chǎn)龍芯平臺下的解決方案,論述了Native瀏覽器插件不能在國產(chǎn)龍芯平臺下運行的根本原因以及解決辦法,最后給出了通過封裝插件開發(fā)框架開發(fā)的解決方案。經(jīng)過試驗證實該方案不僅支持常用的Adobe Flash插件運行在國產(chǎn)龍芯平臺上的Firefox瀏覽器,還包括其他Native插件,如手寫批注插件、文檔編輯與查看插件等,對于國產(chǎn)自主指令系統(tǒng)開展瀏覽器的移植與功能擴展工作具有重要的學術意義和應用價值。