成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Mobile Widget到底是個什么玩意?

移動開發
Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

Widget與移動設備

Widget是什么?

Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

從 Widget的實現方式上來說主要有兩種,一種是基于DHTML, JAVASCRIPT和CSS技術的Widget。另一種是基于Adobe Flash技術的Widget。目前大多數Widget實現還是基于前者,尤其是目前日漸流行的移動設備上的Widget技術均指Web Widget。

Widget的特點

  • 小尺寸:Widget的尺寸通常都不大,并且運行速度比較快,占用的系統資源也較少。
  • 形式多樣:Widget的展現方式可以多種多樣,可以是一個懸浮在窗口里的小圖標,可以是占用全屏的全屏應用,也可以是插入某個應用子窗口中的小程序。
  • 功能多樣:Widget應用可以提供的功能可以多種多樣(依賴Widget引擎提供的功能),如提供新聞資訊閱讀,視頻觀看,系統狀態監視,天氣預報,股票信息,時鐘,聯系人管理,短信接收發送等。
  • 美觀:Widget應用設計的一般都比較漂亮,并且具有很好的用戶體驗和操作方式。
  • 個性化強:由于Widget的小尺寸和多樣的形式和功能,因此用戶可以隨意的安裝、擺放和設置Widget,達到個性化的Widget展示和使用效果。
  • 開發方便:由于大多數Widget都是基于Web技術或者Flash技術,并且這兩種技術都已經發展成熟,提供大量的集成開發環境以及可以復用的代碼。因此,開發人員可以很快速的開發出功能強大、界面美觀的Widget應用。

Widget應用

  • 桌面電腦上的Widget
    • Yahoo Widget
    • Mac OS dashbord
    • Windows Vista側邊欄
    • Windows 7桌面小工具
  • 移動終端上的Widget
  • 個性化首頁中的Widget
    • Netvibes
    • iGoogle
  • 博客中的Widget

移動平臺上的Widget規范(Web Widget)

目前,移動平臺上支持的Widget運行環境主要遵循三套規范:W3C Widget規范、BONDI Widget規范和JIL Widget規范。

  • W3C Widget規范

該規范是由W3C組織制定,包含6個子規范,主要定義了Widget的運行時狀態,打包和配置,數字簽名,自動升級,以及核心API和事件處理。

  • BONDI Widget規范

該規范由OMTP組織制定,對W3C Widget規范進行了擴充。嚴格定義了Widget的安全驗證體系,豐富了API接口。目前W3C組織考慮將BONDI規范納入到標準中。

  • JIL Widget規范

該規范是由中國移動、沃達豐、軟銀以及Verizon共同提出和定義的Widget規范。該規范目前主要是被中國移動的BEA平臺所支持。

Widget引擎

Widget引擎的作用

Widget引擎為安裝、運行、管理、升級,驗證Widget應用提供了一整套完整的框架體系。

  • 安裝

Widget的發布方式可以多種多樣,可以是基于Web頁面的發布方式也可以是基于安裝包的發布方式,因此Widget引擎需要對各種發布方式兼容,將用戶的Widget應用安裝和部署到當前的Widget運行環境中。

  • 運行

Widget應用有其自身的生命周期(初始化,運行,暫停,恢復,終止),因此Widget引擎有責任管理每個Widget應用的生命周期,在Widget不同的階段執行Widget內部定義的事件處理代碼。

  • 管理

Widget引擎負責像用戶提供已安裝Widget應用的管理功能,用戶可以通過Widget引擎查看當前運行的Widget運行狀態,占用的系統資源,終止應用,運行應用以及刪除應用。

  • 升級

Widget引擎會根據Widget的配置文件定期的檢測Widget的版本,并且動態的更新Widget應用。

  • 驗證

出于安全性的考慮,Widget應用都需要進行簽名,并且需要顯示的聲明其需要使用的特殊功能接口。并且在運行時刻,Widget引擎需要對Widget調用受限接口的合法性進行驗證。

Widget引擎與瀏覽器的關系

由于Web Widget應用采用DHTML、JAVASCRIPT和CSS技術實現,因此運行Widget需要瀏覽器引擎作為支持。但是通常的瀏覽器引擎不足以支撐 Widget的應用。比如:Widget規范中嚴格的定義了Widget的打包方式,尤其固有的配置和部署方式,通常的瀏覽器引擎是無法識別并且按照規范要求正確安裝和部署的。某些Widget規范中定義了Widget應用對設備能力的訪問,這也是通常瀏覽器引擎所不支持的。因此,如果瀏覽器需要支持某個特定Widget規范需要對瀏覽器引擎進行擴展,對Widget規范中定義的打包發布、升級安裝、安全驗證以及設備相關的API進行擴展和支持。

這里還有一類Widget不需要訪問設備功能,并且并不遵循某套特定的Widget規范,而只是以Web頁面中的一個小控件或者小程序形式出現,該 Widget應用是不需要對瀏覽器做擴展。但由于沒有一套標準統一的規范標準作為支持,因此只能由該站點開發者自己去設計并且開發,不具有廣泛性。

Widget引擎框架設計

這里的Widget引擎框架主要是以Android平臺上的Widget引擎的設計為基礎,所支持的標準不限(可包括W3C,BONDI,JIL規范)。

Widget引擎框架

NewImage
  • Widgets

如上圖所示,Widget表示該Widget引擎所支持的各種Widget應用,該應用采用DHTML, JAVASCRIPT, CSS技術編寫和實現。該Widget引擎所支持的Widget種類完全依賴于APIs Implement部分。

  • Widget Module Loader

模塊載入器的主要作用有兩個:第一,負責各個已實現的Widget規范API模塊的初始化。第二,負責在瀏覽器DOM樹中注冊載入的API模塊對象,以使得Widget應用中可以使用相應的接口、對象和屬性。

  • Application Management

應用程序管理模塊負責Widget應用的生命周期管理、應用程序的下載安裝,以及應用程序的刪除。應用程序管理模塊與Widget DOM對象有緊密聯系。比如:Widget應用在初始化階段為resume事件注冊了回調函數,在該函數中會對暫停時的應用數據進行恢復操作。應用程序管理模塊在接收到Widget的恢復事件時,有責任調用該應用注冊的resume回調函數,并且執行其定義的恢復操作。

  • Security Management

安全管理模塊負責Widget應用的安全驗證。比如在Widget應用安裝時,安全管理模塊需要對Widget應用簽名的合法性進行驗證,并且對 Widget聲明的設備接口使用權限進行驗證。當Widget運行時,Widget應用訪問某個設備接口(比如Camera),安全管理模塊需要對該應用是否有權訪問該設備接口進行驗證。

  • APIs Implement

API實現包含了各個Widget引擎需要支持的Widget規范的底層實現。該部分的實現可以是純JAVA實現、可以是JAVASCRIPT和JAVA混合實現、可以是JAVA和C/C++混合實現、亦可以是純C/C++實現。

Widget引擎實現方式

基于WebKit引擎的擴展實現

該實現方式直接修改和擴展WebKit引擎,在引擎內部創建widget的DOM對象,并且提供抽象的調用方法。除此之外,需要在WebKit引擎中實現對各個規范模塊的調用機制。

  • 基于JAVA語言的模塊調用

該實現方式需要對WebKit引擎實現JAVASCRIPT語言和JAVA語言之間的平滑調用機制。即Widget應用訪問widget對象的某個API接口時,WebKit引擎需要將該SCRIPING對象動態的轉換成相應的JAVA對象,并且調用其相應的方法。并且,將該JAVA方法執行后的結果動態的轉換成JAVASCRIPT對象,并且返回給Widget應用。

采用該機制實現的API模塊均用可采用JAVA語言來實現。因此,該實現方式具有實現速度快的特點,但是也正因為與JAVA語言的緊密關系移植性不好。

  • 基于C/C++語言的模塊調用

所有的API模塊的擴展均采用C/C++語言來實現,這類似gears的實現方式。引擎內幕會將Widget應用使用的JAVASCRIPT方法動態轉換成定義的C/C++對象,并且執行相應的方法。而后將返回結果轉換成JAVASCRIPT方法返回給Widget對象。

采用該機制實現的API模塊均采用C/C++語言來實現,因此開發周期相對較長,但是具有良好的移植性。

采用WebKit引擎擴展實現方式,可以讓瀏覽器引擎原生的對Widget應用進行支持,但是在每次WebKit升級時,需要對修改的代碼進行合并和再發布。

基于WebKit插件的擴展實現

該實現方式基于NPAPI插件擴展技術的基礎之上。將Widget的DOM對象實現包含在NPAPI插件中,當瀏覽器檢測到該對象的訪問時,動態的載入該NPAPI插件,并且將所有對Widget DOM對象的訪問操作均轉發給NPAPI插件來完成。

NPAI插件的實現方式如WebKit引擎擴展實現一樣,也有JAVA和C/C++兩種實現方式,這里不再重復。

采用該實現方式的擴展無需對WebKit引擎修改,但是需要按照NPAPI規范,實現完整的SCRIPTING插件。

基于C/S架構的擴展實現

該實現方式采用借用了C/S設計模式的思想。在Widget引擎初始化階段會啟動一個內部的服務,該服務會監聽系統中某個端口。Widget引擎運行時,如果訪問Widget對象的某個方法時,封裝的Widget JS對象會向服務端口發送方法請求。服務端接受請求后,首先會對請求進行合法性驗證和分析,然后調用相應的接口來完成實際的操作。并且將結果以異步的方式返回給封裝的Widget JS對象,而由該對象通知Widget應用操作結果。

C/S架構的擴展實現也可以采用JAVA和C/C++實現方式,這里不再重復。

采用該方式實現的擴展有良好的靈活性,不同的Widget規范定義的Widget應用只需要包含相應的Widget封裝JS包即可正確運行。但是由于采用C/S模式的調用方式,因此在執行效率上略低于直接調用的方式。

Browser&Widget

這部分對Browser的設計提出一個概念層面上的設計。如下圖所示:

NewImage
  • Table Manager

負責管理瀏覽器中各個Table頁面,每個Table頁面是一個獨立的Web頁面或者Widget應用。

  • Bookmark Manager

負責管理書簽,該書簽包括用戶收藏的網站URL以及喜愛的RSS頻道和文章信息。

  • RSS Manager

負責RSS頻道的訂閱、RSS新聞列表、RSS頻道退訂

  • Plugin Manager

負責管理已經安裝的瀏覽器插件

  • Notification Manager

負責事件通知管理,比如RSS新聞數據的更新通知,瀏覽器插件的升級通知,Widget升級通知等。

  • History Manager

負責記錄當前Table的運行數據,包括訪問的URL歷史,當前窗口大小位置信息,可用于當瀏覽器crash后的狀態恢復操作。

  • Download Manager

負責瀏覽器的下載管理,包括android軟件的下載、安裝,Widget軟件的下載、安裝

  • Gesture Manager

負責手勢操作的自定義操作管理。

  • Thread Manager

為了加快瀏覽器的載入效率,每個Table在一個單獨的線程中運行,因此對線程的運行狀態需要一個統一管理機制。

  • Skin Manager

負責Browser外觀的管理,用戶可以通過該模塊動態的給系統更換皮膚和顯示方式。

  • Widget Manager

負責Widget引用的下載、安裝、刪除、以及運行時環境的支持。

責任編輯:佚名 來源: 姜江的博客
相關推薦

2010-07-02 10:10:09

Eclipse

2010-07-05 15:56:01

EclipseRCPECF

2021-03-22 07:45:05

Sentinel微服務開源的項目

2010-06-28 15:58:45

EclipseJavaIDE

2010-06-29 13:39:26

Eclipse什么玩意兒

2011-11-21 10:25:29

iCloud

2021-12-13 19:57:05

JNDIJava開發

2021-07-29 06:56:36

分布式系統腦裂

2020-10-29 07:03:56

Docker容器存儲

2021-01-29 12:24:22

電腦電子計算機

2020-10-25 20:05:29

Pythonyield開發

2022-02-16 20:04:08

容器KubernetesShim

2021-03-06 09:18:51

JS閉包函數

2024-07-03 12:04:42

C++this?

2025-03-28 01:33:00

2024-02-07 12:35:00

React并發模式concurrent

2013-01-10 10:54:57

無線網絡WLANWi-Fi

2021-01-08 09:48:18

Pythonname變量

2022-05-04 08:38:32

Netty網絡框架

2021-05-11 07:30:58

JNIJavaAPI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产一区二区三区不卡 | 日韩一级不卡 | av看看| japan21xxxxhd美女 日本欧美国产在线 | 妖精视频一区二区三区 | 四虎影视1304t | 国产一区二区欧美 | 91精品国产高清一区二区三区 | 欧美高清视频一区 | 一区二区三区中文字幕 | 日韩午夜精品 | 亚洲一区二区av | 精品国产一级片 | 色天堂影院| 日韩在线视频一区 | 天天干夜夜操 | 国产视频福利在线观看 | 超碰成人在线观看 | 日韩一区二区三区视频 | 精品国产乱码久久久久久牛牛 | 亚洲日日 | 宅男噜噜噜66一区二区 | 青娱乐一区二区 | 无毛av| 欧美一区二区三区精品免费 | 不卡一区| 日韩国产在线 | 在线观看中文字幕亚洲 | 日日干夜夜操天天操 | 自拍视频一区二区三区 | 久久亚洲欧美日韩精品专区 | 久久精品一区二区三区四区 | 欧美在线一二三 | 91国产视频在线 | 成人免费看电影 | 国产精品美女www | 日本精品一区二区 | 综合色久 | 国产精品欧美精品 | 国产一级电影在线 | 国产福利91精品一区二区三区 |