程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 開發者眼中的Android手機平台

開發者眼中的Android手機平台

編輯:J2ME

大家都知道,Google推出了他的手機平台——Android,Google做什麼都會引來無數人的眼球,並總能創造出非凡的奇跡。相信這次他推出這個手機平台,應該會吸引到無數開發人員的眼球,甚至會吸引很多有識之士轉向手機開發。因為相對於現有的其他平台,手機可是一塊尚未充分開拓的新大陸,Android又是新中之新,機會要多很多。似乎是為了加速這個過程,Google還舉辦了“android 開發者大賽”,獎金總額高達1000萬美元。

在這次Beijing Open Party上,我們有幸認識了一位經驗豐富的技術專家和兩位db4o(注:著名對象數據庫,主要應用在嵌入式設備平台)的核心開發人員。我們特別對三位進行了采訪,請他們從開發者角度談一下對 android的認識和感覺。

--------------------------------------------------------------------------------

三位受訪者的履歷:

屠程遠(以下簡稱屠):94年畢業,一直從事軟件編程工作。掌握匯編、C、C++、Delphi、.Net、Java等語言及架構,主要從事操作系統底層和軟件框架的編程工作。rcpandroid項目owner。

張黃矚(以下簡稱張):自由職業者,apache Harmony的committer, db4o 核心開發人員, P-Unit項目作者,熟悉Java語言,應用程序架構設計,測試驅動開發,以及增量重構代碼。

楊普(以下簡稱楊): Apahce Harmony PMC(Project Management Committee) 成員, committer,主要興趣是編程語言,敏捷方法,開源軟件和社區。
--------------------------------------------------------------------------------

記者: 我們知道,android是基於Java的,那麼目前它支不支持其他語言呢?

屠:目前android SDK只支持Java。

張:其實我們不能說Android是基於java的。對於開發者而言,Android支持使用java語言語法編程,注意,不是支持 Java,而是Java語言語法,因為android支持的Java語法類庫僅僅是J2SE 5的子集,並無通過任何java標准認證。Android將代碼編譯為Dalvik虛擬機字節碼來運行。目前android官方僅支持Java編程語法。

楊:是的,Java是Sun的注冊商標,只有通過了相關規范的兼容性測試才能叫做Java,android的Dalvik虛擬機和相關類庫也不承諾遵守任何Java規范,有關這個問題,apache Board的成員,MIT的stefano mazzocchi有一篇非常精彩的Blog:Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME

記者:那麼,對Java語法編程的程序員而言,最大Java 開發群體是J2EE程序員,對於一個想轉向移動平台開發的J2EE程序員來說,轉向android平台是不是一個好選擇?又會有哪些困難?

屠:我所編程接觸過的移動平台支持Java的有J2ME、 BlackBerry、android。J2ME的功能實在太有限,僅支持J2SE很小的一個子集;android所支持J2SE的子集已經很充分了,在 Java編程方面和J2SE相比幾乎沒什麼限制。很多開源的Java類庫僅僅需要很小的修改就能在android上運行。而在J2ME上要想運用那些類庫幾乎不可能,只能重新造輪子。BlackBerry裡的Java環境比J2ME要強,但強的有限,基本還是無法利用現有眾多的J2SE的類庫。所以對想轉到移動平台的J2EE程序員來說,轉向android平台的代價最小,所能做的事情最多。

轉向android平台的困難主要在於這是個全新的平台,手機硬件還沒發布,沒有實際項目積累和實際的運行環境。現在開發基於Andoid的應用難免有些空中樓閣的意味,無法經過實際運行環境的檢驗。也很少有客戶願意為半年一年後還不保證能運轉的應用買單,所以對程序員來說會有較長的投入期。

張:我個人覺得這個轉型會非常容易。盡管android支持的不是標准的 Java TM,但是已經覆蓋了大部分的Java的語法和類庫。困難之處,我覺得可能在於開發人員對移動設備和服務器設備的理解。移動設備的具有一些獨有的特性,比如電源消耗問題,屏幕大小限制,以及CPU的速度等。因此,在各個資源之間的平衡策略往往和傳統的服務端編程不一樣。

楊:還有兩個原因選擇android,

Google承諾android將會是一個以Apache License開源的項目(盡管Google沒有公開的開源時間表),而apache License是一個對商業應用和開源應用都非常寬松的License。
android可以說是一個為移動互聯網設計的手機系統,在上面內置了諸如JSon, location, gdata, browser, map等等很多API,因此對於J2EE程序員來說,android這樣的終端設備不僅提供了熟悉的場景,而且又提供了實現很多idea的可能性。
Android目前還有一個困難就是它的API和實現都還不是非常穩定,文檔也不是很好,因為太新所以缺乏成功案例,當然它的社區非常活躍,幾乎所有問題都可以在那裡得到迅速回答,而Google為此舉辦的android編程大賽有望帶來一些讓人激動的應用案例。

記者:從您個人的經驗出發,android手機與以往的手機平台開發上有怎樣的不同呢?

屠:以往手機平台感覺是各個廠商各自一套封閉體系,J2ME只能作為二等公民存在,一等公民是C、C++。在Android平台,Java是標准語言,一等公民。在android平台上編程感覺受限制最小,甚至有在為PC機編程的感覺。個人感覺C、C++語言最好退縮到其最擅長的底層驅動領域。在應用層,Java還是最好的語言,資源豐富、編程簡單、可移植性強,前提是硬件速度已經快到了一個程度。android平台所對應的硬件是半年一年後的,那時手機的硬件能力會有新的發展。記得十年前PC機的標准配置是128M內存、 300Mhz CPU,跑Windows 98,已經有很有豐富的應用了。即使今天很多手機的硬件已經超過這一水平,更別說半年一年之後了。

張:在Android上開發會容易很多。 android是一個全新的開放的平台,其目標程序員為普通Java開發人員。相比J2ME, SymBian程序員,android的入門門檻應該說非常低。

記者:能不能從開發者的角度把J2ME和android對比評價一下?

屠:J2ME的提出是因為當初手機硬件速度很低,Java虛擬機運行負擔較重,所以大幅裁剪了J2SE,推出了J2ME。大幅精簡的後果就是開發功能大大受限,和PC平台差距巨大。隨著硬件能力的提高,個人認為手機支持 J2SE是必由之路。android平台朝這個方向邁出了大大的一步,大大縮小了手機和PC平台上編程的差距。

記者:android平台上有可以使用的數據庫嗎,可不可以大概介紹一下?

屠:目前我了解到的一個是SQLite,一個就是db4o。SQLite 是android內置的精簡型關系型數據庫,能實現標准關系型數據庫的大部分功能。db4o是對象數據庫,在編程上更為簡單。個人比較看好對象數據庫在手機上的使用。因為在手機上所要處理的數據畢竟是少量的,對性能要求不象數據庫服務器那麼高。這時對象數據庫編程簡單、可靈活適應未來變化的優點就顯現出來了。但因為db4o不是Android內置支持的,目前還做不到和android特有的一些編程部件的無縫結合。

張:android內嵌了SQLite數據庫,這是一個輕量級的關系型數據庫。與J2SE不同,Android上定義了一套新的數據庫操作API,而不是使用JDBC。db4objects宣布了其旗艦產品db4o可以無縫的運行在Android平台。db4o是一款面向對象的原生(native)數據庫。我個人不是很喜歡Android內置的這套數據庫API,因為它並不遵循JDBC規范。在我的理解,android的一大亮點就是擁抱現有的技術,贏得了java開發人員的喜歡,而新的查詢API意味著原有的基於JDBC的數據庫相關的程序不能直接運行於android。從這個角度來講,db4o在所有的API方面保持了高度一致,無需做任何修改,因為db4o是完全基於Java的原生數據庫。

開發人員可能更習慣使用面向關系型數據庫,但是db4o在API設計方面非常適合移動設備的開發,非常簡潔。拿android平台內置的聯系人數據結構來講,存儲,讀取聯系人,如果使用db4o,只需10行只有的代碼,如果使用SQLite的話,則需要上百行代碼。db4o直接面對對象,無需把對象轉化為表結構字段,因為編程更不容易出錯。和服務端不同,手機上的數據庫更要求自適應管理,而無需數據庫管理員,這也是db4o的設計目標之一。

楊:db4o在Android上的部署不需要任何配置或改動,就當作一個普通的library就可以流暢運行了。由於市場上還沒有android手機出售所以無法給出確切的性能比較,但是在模擬器上的比較證明db4o的綜合性能絲毫不遜於SQLite, 在一些情況下甚至有數量級的優勢,比如已知數據的id來進行刪/改/查等,對於手機應用這是非常普遍的使用場景。

android上目前沒有成熟的O/R Mapping框架,對於大多數習慣了Hibernate,JDO,iBatis等各種框架的開發人員來說,面向對象數據庫更符合他們的使用習慣。而且面向對象數據庫直接避免了O/R Mapping的問題,重構代碼完全不用考慮重構數據庫或者配置,更不用修改SQL,因此更加敏捷。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved