|
簡介
現在,針對移動設備像智能手機和平板電腦的應用開發很流行。Apple公司的AppStore(針對iPhone、iPod和iPad)擁有超過350,000種應用,而Android的marketplace也快速追趕上來,現在已經擁有超過200,000種應用。然而,Android和ios并非是僅有的兩種移動平臺。BlackBerry也是有力的競爭者,此外還有Nokia。最近Microsoft發布了Windows Phone 7,HP也發布了新的WebOS設備。這樣,對于用戶來說有了多種選擇,但對我們這些開發者來說卻是個噩夢。我們應該針對哪種平臺來開發應用程序呢?
在移動平臺之間共享代碼極度困難。每種平臺都選擇了自己的開發框架,還有自己的語言和API。對于ios開發,你需要使用Objective-C和CocoaTouch API;對于Android開發,你要使用Java和Android API;對于Windows Phone 7,你需要使用.NET和Silverlight API。
然而,我們還是擁有一種解決方案:Web開發,特別是:Webkit。我們會看到,所有主要的移動平臺供應商(除了Microsoft之外)都在Webkit之上構建了他們的移動瀏覽器,而Webkit是當前最新的、速度最快的開源瀏覽器引擎。Webkit支持多種移動應用所需要的HTML5 特性,包括偵測觸摸手勢(輕擊、強擊和縮放)、定位API(確定用戶的位置),并且支持本地數據庫(瀏覽器中的SQLite數據庫,用于在本地緩存數據)。
當前,在Android、ios、WebOS以及BlackBerry OS的六款瀏覽器中,都對這些特性提供了本地支持。對于不包含基于Webkit的瀏覽器的設備,我們還可以使用PhoneGap。PhoneGap讓我們可以使用web技術(包括HTML5)開發本地應用程序,并把應用程序包裝成為本地應用程序,那樣就可以分發給用戶了(例如,通過平臺的應用程序市場)。如果平臺還沒有內建的WebKit瀏覽器,那么PhoneGap就會為其提供。PhoneGap應用程序可以在六種不同的移動平臺上運行。
JavaScript框架廠商注意到了這是個機會,于是就構建了多種能夠在移動Web上運行的框架。jQuery Mobile和Sencha Touch都是比較典型的例子。這些框架很容易給人留下深刻的印象,因為對于當前的開發者來說,使用它們來為移動網絡開發應用程序是一種不錯的方式。然而,它們還都是基于JavaScript、HTML和CSS的,它們的目的都不是要開發應用程序,而是要開發包含超鏈接文檔的網絡應用。各種框架試圖對這些語言進行調整,從而適合他們的新角色,但是這會引起你的思考,專門為開發移動應用程序 而設計的語言應該是什么樣子的呢?
如果我們想要設計這樣的一種語言,需要解決什么樣的問題呢?
- 首先要解決的就是工具的支持。從事企業級開發的開發者(比方說Java和.NET的開發者)習慣使用像Eclipse之類的IDE特性,像在鍵入的時候就能夠突出顯示錯誤、代碼自動完成、引用解析、代碼大綱以及重構等等。JavaScript和HTML在本質上就是動態的,這讓它們很強大,但是也讓工具廠商很難為其創建出Eclipse和InteliJ那種級別的IDE。對于當前所有語言來說,良好的IDE支持都是前提條件。
- 第二個要解決的問題是簡潔。例如,用戶界面框架經常會包含大量類似的代碼,它們的作用就是把數據從數據庫中復制到用戶界面,或者把界面上的數據復制回數據庫。我們的新語言應該減少開發者所需要編寫的樣板化代碼。
- 第三個問題是JavaScript的異步編程模型。在瀏覽器中,JavaScript是單線程的,開發者需要使用回調機制來執行數據庫查詢之類耗費資源的操作,比方說,我們不會編寫像下面這樣的同步代碼:
var results = tx.executeQuery("SELECT * FROM User");
for(var i = 0; i < results.length; i++) {
...
}it知識庫:mobl:針對移動Web開發的DSL,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。