雖然自己並不是程式開發者,不過在Google發佈了Android手機平台之後,因為相當受到矚目,所以一直都有在看相關的文章,本來一開始以為最先會影響到的,會是目前其他一些同樣也是嵌入式Linux平台,像是OpenMoko、Access的Linux Platform,或是Monta Vista之類的嵌入式Linux平台開發商(為此還前去請教了Jserv大大)。

不過國外的stefano在自己部落格當中提到,針對目前Android提供SDK,發現了一些狀況而提出看法,當中說明了Google Android平台,為了能避開Sun在java上的版權限制及規格控制,而採取的繞行動作,為了考慮到對於手機平台中,軟硬體開發商還是會出現一些無法公開原始碼的使用狀況(例如影音codec之類),所以採用較符合商用限制的Apache版權,藉此來繞過GPL2的回饋性質,而Google採用的解決方案是,實做出Dalvik這個虛擬機,把產生出來的Java bytecode再轉入自己格式的bytecode,而Dalvik本身並未宣稱是Java虛擬機,除了當中使用Java語法之外,所用的java SE class library也並非來自Sun,而是來自於Apache Harmony專案,而Google本身為了確保Android平台,不致同樣與Java在行動市場上面臨到分裂的問題,所以要求使用該平台的成員,必須同意它的一份反分裂協議,確保將來的相容性。

而Google為何要採用這樣的繞行措施,就查詢相關資料當中了解的部份,是由於雖然目前Sun的Java已經採用了GPL2開放,但是開放的部份,是目前已經在實做的Java當中的原始碼,對於Java SE和Java ME的規範,事實上還是綁在強烈存在於Sun陰影下的JCP組織當中,這部份一直以來,大概以IBM為首有最強烈的反對,因為事實上Java的規範,實質掌控還是在Sun的手中。

再來則是J2ME的行動開發的部份,其實因為本身針對不同手機平台調整過,後來就造成了某種分散性,因為針對了手機各種功能不同做了調適,而導致Java語言原先要做到寫一次跑全部的原則遭到挑戰,Sun自己也知道這個問題,所以在今年JavaOne大會,就力推JavaFX,在另外一個Java相關的部落格城市胡同的文章當中提到,JavaFX本身要將桌上型使用的Java SE標準帶入移動平台的企圖,說到這裡,和上面Android所釋出的SDK分析做個對照,就可以知道,Google已經搶了Sun一步在做類似的事情,並且透過推出完整的平台跟聯盟,已經先搶了Sun在吸引開發者到JavaFX上的優勢,更何況還推出了獎金活動,比起相對在JavaFX上,尚未確知有哪些廠商採納來說,哪邊的吸引力比較大已經是不用多說了。(不過當然以JavaFX本身來說, Sun的技術還是有領先之處的,但是就是被搶了先機)

而雖然目前Android當中完整的嵌入式Linux平台尚未公開,不過對於開發資源的磁吸效應似乎也已經產生,最近可以看到Access,他們當初買下了palmsource,希望藉由Palm OS的相容性以及延續性,來作為自己的Linux平台產品特色,但是現在Access也出現了動作,在昨天宣佈將PalmOS的模擬層,在另一個Linux嵌入裝置Nokia Tablet當中推出,只要是Nokia N810,N800,N700的使用者,都可以免費下載下來使用,如此就可以使用到過去Palm OS上的應用軟體資源。

不過目前也不確定其他的行動Linux平台是否要緊張,因為如果Android平台真的如Google所願,能維持成一個開放且互通的平台的話,那麼假如其他嵌入式Linux能在GPL與Apache授權相容的情況下,移植Andoird當中的Dalvik虛擬機來使用,如此也就能受惠於Android平台的開發資源,因為可以接收過去在行動裝置平台上,J2ME的開發者們前來創建出的開發社群,那麼對於嵌入式Linux平台來說,也許就會是一劑增加應用的強心針而非分裂的毒藥了,希望自己這樣的想法不會太過於天真才好。
創作者介紹

droger的資訊心得整理

droger 發表在 痞客邦 PIXNET 留言(5) 人氣()


留言列表 (5)

發表留言
  • jserv
  • Google Android 引入 Dalvik VM 將原本 Sun 的 Java 技術予以「變形」,是相當高竿的手法。對移動通訊裝置來說,Java 有一些「包袱」,比方說 stack-based VM,另外就是 Java Logo 與相容性 (所謂註冊商標)。現在 Google Android 以編譯器技術轉換既有 Java application (bytecode) 為 Dalvik 能接受的 p-code,而 Dalvik 本身為 register-based VM,在效能與記憶體使用方面可比 stack-based VM 更有效率,最重要的是,巧妙跳過 Java 的「束縛」,至於「相容」與否其實沒關係,只要 VM 有適度的保護即可。

    相反地,所有 Linux-based mobile devices 其實對 Google Android 都可是潛在的合作夥伴,整體設計並無衝突,甚至,前者可沿用後者一些創新的設計,並確保有更寬鬆的授權。比方說 Google Android 提供了衍生自 BSD C library 的 C runtime,基於不同需求,多少我們得對 runtime 作調整,那麼廠商專屬的修改,就可不必受限於「強迫回饋」的 GPL 約束。

    至於 linux kernel,採取 GPL 授權是相當好的,畢竟基礎建設必須是完全公開的,否則無法快速累積技術。
  • droger
  • 原來如此,非常感謝Jserv大前來回覆 :)
    如此一來,就要等著之後看Google和其他
    Linux 行動裝置開發商們是如何互動了
  • droger
  • 這部份的不相容,指的是程式碼不要混用,
    如果只使用程式模組(binary or module),基本上還是可以的
    當然前提就是各模組要程式碼保持乾淨,例如在
    別的Linux平台上使用Dalvik,如果針對該平台kernel
    有為了該虛擬機修改的地方,還是一樣要照GPL發佈
    而使用虛擬機的部份,就沿用Apache授權

    Mac OS X也有類似的狀況,核心和各個模組有不同的
    版權申告,並不會影響到它使用GPL的其他模組
  • maoyang
  • 平台的統一對開發者是一大利多, 但是對於像Mona Vista這樣的以embedded linux為核心的商業軟體公司有一定的衝擊, 未來市場上會出現許多小型軟體公司或是SOHO,他們的核心業務就是將Android porting到各種不同的硬體平台. 已讓這些平台享受到未來Android上龐大的軟體資源, 受惠的會是許多嵌入式硬體廠商
找更多相關文章與討論
【 X 關閉 】

【痞客邦】大學生網路社群使用習慣調查

親愛的讀者,痞客邦希望能了解大學生的網路社群使用習慣,
填問卷即可抽獨家好禮喔!
(注意:關閉此視窗將不再出現)