2010年3月10日 星期三

MeeGo軟體架構簡介與展望

本篇文章僅為個人心得文章,軟體架構部分,內容參考MeeGo Architecture與Under the Hood with MeeGo。
MeeGo
MeeGo是由兩大巨擎Intel與Nokia所共同推出的一套以Linux為核心的作業系統,合併Intel的Moblin與Nokia的Maemo的開發計畫為一,讓兩者的資源能夠達到更高的利用。
Moblin是Intel為了推廣Netbook所推出的作業系統,但是似乎沒有很顯著的成效有實際且大量的產品在市面上流通;Maemo則是Nokia為了擺脫Symbian的框架,讓軟體開發能夠更迎合網路時代的高效能需求而打造,Nokia N900則是Maemo最新推出產品,評價不惡。
在Android吃下絕大多數Mobile Linux Developer的目光之下,Moblin與Maemo似乎都不太受到注目,未來的發展方向也沒有太多人在乎,也缺少第三方廠商支持,於是乎在MWC 2010上,Nokia與Intel便決定將這兩個計畫合而為一,MeeGo就此誕生。
可以說MeeGo是不得不的存在,也能說MeeGo開創了有別於Android的一個Linux Embedded Sysmte的新局面。除了同樣是採用Linux Kernel之外,MeeGo有太多地方與Android不同,本文將介紹MeeGo在軟體架構的特點。

MeeGo-Arch-FullSize
MeeGo的軟體架構主要分為三層,分別是OS Base, Middleware與UX。

OS BASE

在OS Based中,MeeGo與Android採用相同的作法,利用Hardware Adaption Software將驅動程式抽象化,藉以擺脫Linux原生驅動程式必須Open Source的問題,讓硬體開發商能夠在維護商業機密且不違反Linux License (GPL)的前提下,進行MeeGo Driver的開發。Linux與驅動程式的問題可以參考 針對Linux kernel開發商業應用的Driver 這篇文章中的回應。
MeeGo的Kernel即是Linux Kernel的分支,這部份自然是會針對下層的Hardware Adaption Software做最佳化,驅動程式開發者只需發佈二進位制(Binary)的Driver,並發佈所需MeeGo Kernel Patch,即可完成Driver的發佈。這部份的流程可參考Hardware Enabling Process。

MIDDLEWARE

在軟體開發架構上,MeeGo與Android或Windows Phone不同的是MeeGo開發的是Native Application,也就是能夠直接呼叫Linux Library, Linux Kerne Calls的應用程式。
與Android透過Dalvik Virtual Machine或Windows Phone透過.Net Compact Framework不同的地方在於,Native App. 會直接被編譯成為Hardware Associated Assembly Code後,再轉為Machine code執行,效能較高;而透過VM執行的App.則需先轉為中介語言後,再執行期中由VM轉換中介語言為Assembly Code或Machine Code執行,當然這其中有很多不同的作法,例如Android會做預先編譯的動作提高效能等。
整體來說,透過VM執行的App.效能還是比較低一些,但很大的好處在於軟體可攜性很高,只需要complile once,就能夠在各個不同的硬體平台上使用。MeeGo卻必須根據不同的硬體平台做compile,但MeeGo保證了一件事,就是程式開發者只需要維護一個Code Base,不需要針對不同的硬體平台做程式的修改,只需要在程式發佈時針對不同硬體平台做編譯即可,這部份則歸功於MeeGo採用Qt作為UI Library。
Qt是Linux上一個很常見的跨平台的UI Library,除了能夠跨多個平台如Windows, Linux, MacOS, Symbian S60等,最大的特色就是他是Native UI,使用Qt開發的GUI與使用該平台原生的UI Library相同,不會像使用Java UI或GTK一樣,能夠非常明顯的看出這是一個由不同平台轉移過來的程式。延展性(Scalability)很好可以由使用Qt為UI Lib的KDE看出這點,著名軟體開發者Jserv也有一篇文章 KDE 的 MS-Windows 平台移植 介紹KDE Windows,文中Jserv說使用Qt的KDE on Windows效能相當好,與在Linux平台上上感覺無異。

UX

MeeGo使用Qt作為UI Library,並且搭配各種內建的Services與API與特製版本的Linux Library,讓各種Linux Native App.能夠很輕易的port到MeeGo上,我們可以從Firefox for Maemo是Firefox在各個行動平台上最早推出的這點看出。同樣的Adobe也將在MeeGo上推出完整版的Flash應用,由此,傳統的Linux App.應該也會相繼的被port到MeeGo上才是。原先Symbian S60 v5上使用Qt進行開發的軟體,也能夠在小幅度改款的模式下轉移到MeeGo下使用。
在UX層中,我們可以發現MeeGo將會有Handheld與Netbook兩個UX,其中也包含著對應的UI,  Apps與UI Framework,當然UX客製化也是可行的,廠商可針對自己的需求進行修改,從建立完整的UX或者是透過UI Framework修改UI均可。
會有兩個不同應用的UX是可想而知的,畢竟MeeGo是由Moblin這個原先要設計給Netbook的OS與Maemo這個原先要設計給Handheld device的OS合併而來,未來的開發目標也從未捨棄這兩個平台,甚至希望能夠包含車用電子、STB等用途,也希望未來能有各種廠商採用MeeGo作為OS開發產品。
在軟體開發上,不僅僅能使用傳統的C, Java開發程式,MeeGo也提供開發者利用HTML+JavaScript+CSS開發應用程式,MeeGo所使用的瀏覽器引擎是WebKit,與iPhone, Android, BlackBerry相同,並且將WebKit與Qt做整合推出QtWebKit,讓MeeGo的軟體開發更具可攜性,也讓軟體開發商在其他平台所撰寫的HTML+JavaScript+CSS能輕易的port到MeeGo之上。

MeeGo與Android的比較

Android是目前Mobile Linux Device的霸主,幾乎吸引了所有人的目光,各種不同的應用均在Android上開發著,相較於MeeGo,注目度似乎低很多.... 但這不代表MeeGo不好,只是Android吸引了太多目光。
MeeGo與Android相比,最大的特色就是夠開放,目前也與Linux Kernel Development Team保持著良好的關係,Intel本身在Linux的開發上也貢獻不少,在 2009 Linux kernel Source Contributions 的比較中,甚至是貢獻度第二名的公司,僅次於Red Hat而勝過IBM, Novell, Sun等著名的公司,當然這與Intel本身有自己的硬體平台,希望讓Linux能夠在Intel Architecture平台上更快更穩定而貢獻了不少的硬體相關原始碼有關,不可否認的,Intel對Linux Kernel有很顯著的貢獻。
而Google呢?    最近Android被Linux Kernel踢出Branch Tree的消息不斷的被提到 (Is Android Forking from Linux?),也有許多Open Source的開發者提到Android其實沒有想像中的開放 (Android 還是開放源碼計劃嗎?),Android Kernel在2.0之後甚至連Google之外的的patch都很少被接受,讓人覺得Google違背了許多Open Source Dever.的期望。  但Google有做「錯」什麼嘛?   其實也沒有…   他的所作所為並沒有違反Andoird所採用的Apache License (Google Android 採用 Apache License: 為什麼不是 GPL?),沒有把Android所修改的Linux Kernel Patch merge回Linux Kernel也沒有法律的責任,但對Open Source的dever.來說,這已經違反了他們心中所希望能夠讓整個軟體世界更好的心願,不少抨擊由此而來。
Android除了ARM有Google官方做維護之外,其他硬體架構平台均由Community進行開發,與MeeGo至少能夠完整支援ARM與x86相比,自由度也差了許多。MeeGo官方也接受各家廠商的Driver Patch並放入官方Image之中,Android大多需要開發者自行進行修改與編譯。以各種不同平台的自由度來說,MeeGo是勝過Android不少的。

MeeGo未來可能的發展方向

對Linux embedded硬體產品的開發廠商來說,MeeGo也許是可行的選擇,一是能夠使用x86作為硬體平台,量大且便宜,也可選擇ARM平台,順應各種不同的效能需求推出不同等級的產品。二來是MeeGo的硬體需求也比Android來的低,Native App不需要額外的VM做中介,耗損效能。再來是開發人員不需要另外訓練他們寫Android平台的專屬程式,只要熟悉Qt就能就進行程式開發,甚至是客製化UI的開發,也因為MeeGo是使用Native App.,Linux上既有的App.能夠很快的被port到MeeGo之上,廠商進行產品開發的時程就會比較快。
若以Handheld device來說,目前Android受到比較多廠商的支持,App.的數量也蓬勃的增長中,MeeGo似乎很難在短時間內趕上,但至少可以推論的是Nokia未來的高階產品一定會使用MeeGo作為作業系統,中階產品也可能會以類似Nokia 5800XM推廣Symbian S60 v5的方式以$300 USD~$2000左右的價位進行強打,屆時整合Nokia既有的Ovi Store與Symbian S650 v5的App.,也能夠在行動市場取得一席之地。
而Netbook or Tablet也將會是另外一塊MeeGo目標的市場,以既有的Atom Netbook硬體直接安裝MeeGo與Windows作業系統或者是Smartbook的方式推出純MeeGo產品也是可行的方案,如同iPhone + iPad一般相輔相成。
很明顯的,除了Nokia之外不會有太多廠商推出MeeGo SmartPhone,畢竟Nokia本身的品牌魅力很高,市佔率也很高,第三方廠商很難有機會插入Nokia的市場中,如同Symbian S60 v5幾乎是Nokia獨佔而SonyEricsson只有少數產品亮相一樣。但採用MeeGo的MID, Tablet, Netbook倒是有可能出線。
Android不是不好,只是人們太過推崇它與莫名的Google崇拜讓我覺得不舒服,所以想寫些其他面相的文章來平衡一下視聽,以目前的狀況看來Android會很受歡迎,會成為除了iPhone之外第二大的Smartphone平台,但他真的適合在所有地方使用嘛? 好像也不一定。
MeeGo也是一個設計精良的作業系統,也很有可能成為人們心中真正受歡迎的Open Source Mobile Platform,期待MeeGo能有更好的發展,希望Nokia能推出更多採用MeeGo的產品,更重要的是,要記得在台灣上市阿!!!
(寫完MeeGo之後,似乎也該寫一篇Windows Mobile 7來踹踹Android XD)

2010年2月2日 星期二

hifree - Hinet寬頻用戶(ADSL and 光世代)均可免費使用的線上音樂廣播影音串流服務

一直很想要租用KKBOX AIR來當音樂隨身聽, 不需要下載也不需要思考自己要聽什麼音樂, 只要開著KKBOX AIR,就能聽到自己想要聽的新歌

現在中華電信推出了hifree,只要你是中華電信寬頻的用戶,就能免費體驗KKBOX AIR 還有免費的線上廣播、MV、跟電影..  今天就看了劉德華主演的三國之見龍卸甲 播放音樂時,hifree也會自動下載CD封面,還蠻不錯的說… 下載的封面在temp資料夾中,如果有需要可以去撈來用XD

使用起來也很簡單,只要你現在使用的線路是中華電信 不需要登入,就能直接體驗hifree了 不過有個限制,一條Hinet的線路只能同時有一個人使用hifree…
如果剛好不是使用中華電信的線路也沒關係 只要在程式開始時,使用你ADSL或光世代的帳號密碼登入即可
另外..  hifree的程式不支援最上層顯示,讓我在看電影的時候有點困擾 不過沒關係,這邊提供一個很簡單又好用的小工具讓你在使用hifree看電影的同時,也能上網看網頁
TurboTop就是這樣的一個小程式,直接點此下載
在安裝完成之後,在右下角常駐程式列就會多一個小圖示
在這個圖示上按下左鍵就會跳出類似的畫面,按下hifree,就能讓hifree在最上層顯示了!

2010年1月7日 星期四

Google Nexus One發表感想

Google Nexus終於正式發表了,規格一點都不讓人感到意外...
已經傳了這麼多天謠言還有已經拿到手的Google工程師們都讓我們知道Nexus One到底有怎樣的能耐
clip_image002
Google Nexus One本身並沒有什麼特別的意義,只不過另外一隻搭載Android的手機罷了。 惹人注意的是 Google開始自己跳下來引領整個Android Phone的開發了! 不僅僅是OS的演進,連硬體規格都由Google做規劃與建議。

HTC與Motorola兩家公司的大頭都在Nexus One的發表會中現身,這兩家公司也是目前唯二有推出Android 2.x手機的公司,
跟Google的合作關係不是其他公司比得上的
也可從Moto Droid與Nexus One的銷售範圍與許可看出,Google相當程度的主導著這兩隻手機的開發
Droid要賣到哪個國家還要先經過Google同意,這跟Nexus One的經銷方式如出一轍
不過最新出現的Google官方網路商店倒是讓很多人感到興趣
Goolge終於打破各家本地電信業者的限制,開始直接從網路做直銷,直接面對面的把手機送到使用者手上
雖然售後服務還是由原製造商處理,但這點也看的出Google本身在網路無國界這點上的思維。
而我對Google Nexus最不滿的就是這個「Sorry, the Nexus One phone is not available in your country.」了...
clip_image003
雖然我能夠明瞭Google是因為官方並沒有對中文或其他語言有太好的輸入工具,
系統完整性不足,而決定先讓較能接受英文機種的國家先上市...
但是也請Google快點把這好東西在台灣上市,讓HTC與中華電信能夠對目前Android手機的定價做出符合其價值的價位