HTML 5在應用程序開發方面沒有捷徑
原創【51CTO外電頭條】對于專業開發人員來說,最令人抓狂的說法莫過于有人以“HTML程序員”自居。網頁編碼之于真正的編程工作,正如撰寫菜單之于真正的烹飪過程。但平臺供應商近來的說法無疑令人大跌眼鏡——HTML已經成為從智能手機、平板應用到桌面系統應用等各大開發領域的首選開發工具。
51CTO推薦專題:HTML 5 下一代Web開發標準詳解
Palm品牌當初啟動其自有平臺WebOS時,曾聲稱開發人員只需掌握基本的網頁編程標準,即可輕松為其開發應用程序。微軟在Windows Phone 7上也放出過類似的言論。谷歌的Chrome瀏覽器具備一套“網絡商店”,允許大家將自己的桌面網頁應用程序放入其中進行出售。但最終真正令我瞠目結舌的情況是,根據最近演示版本的表現,Windows 8系統上的應用程序將主要利用HTML5進行開發。這種狀況在令Windows開發人員們驚恐不已之余,更令人不禁揣測微軟可能正計劃完全放棄對Silverlight甚至.Net本身的支持。
我勒個去!難道我們真會被HTML 5鋪天蓋地的宣傳攻勢所蒙蔽,繼而相信微軟已經準備放棄Windows API并轉而支持網頁標準?這毫無道理。我承認HTML5的確是一款不錯的工具,而且能夠為網頁創造出良好的應用,但如今將其推至如此的高度就太過荒謬了。盡管它廣受歡迎,但我們仍然有足夠的理由解釋為什么沒人將其作為通用開發工具的首選方案。以下是需要深入思考的一些注意事項。
1. 打算用HTML單獨創建程序?祝你好運吧
任何建議用HTML來創建應用程序的家伙實際上都打定了主意想拖我們的后腿。他們潛在的臺詞當然是讓我們用HTML及JavaScript來編寫程序,但這還不是我們需要用到的全部工具。事實上,要開發真正的網頁應用程序,我們至少要用到HTML、JavaScript以及CSS——三種各自完全獨立的語言,而且是同時用到。W3C曾努力為HTML5添加了更多API,以使其能夠與網頁標準及諸如多線程及本地存儲之類的功能共同協作。這種做法其實是先假設我們的應用程序不再連入任何類型的服務器端組件——也許是為了減輕繁重的運算及存儲負荷——而接下來我們要面對的就是所有必要的額外語言、API以及標準。
當有人談起創建某種應用程序“如同創建網頁應用程序一樣簡單”時,他們所表達的真正意義是什么?網頁開發當下已經演變出一套復雜、多層次且涉及多種語言的規則。一般來說開發網頁應用已經不像我們印象中那么小菜一碟了。但這種難于掌握的模式真的就是我們打算強加給下一代開發人員的傳承產物嗎?
2. HTML的設計初衷并非為了創建應用程序
HTML5總是伴隨著許多議論,最主要的論調是認為它本身就是HTML的強化版,只不過針對網頁應用程序支持做出了一些改進。但擁有更好的應用程序支持并不代表著HTML標準也在向此方向轉型。原本從XHTML 1.1手中接過旗幟的應該是XHTML 2,其著重強調的是語義標識與XML集成。歸根結底,XHTML 2是一種以文檔為核心標識的語言。
XHTML 2最終折戟沉沙,然而,一個名為網頁超文本應用程序技術工作組(簡稱WHATWG)的獨立機構卻從該項目中分裂出來,不僅擺脫了W3C的HTML構想,更開始從另一個角度為新標準的誕生努力工作。而正是由于該機構的出現,網頁應用程序才迎來了嶄新的紀元——其研究的成果正是我們今天所熟知的HTML 5的基礎。
但是HTML 5真的就是最好的發展方向嗎?以HTML 5所大肆宣揚的<canvas>標簽為例,其從本質上意味著“插入一系列編程生成的、無法由標識描述的圖形內容”。這對于標識語言來說是種很奇怪的使用方式。如果我們沿著這種思路繼續走下去,恐怕等于是將網頁標準硬塞進一個它永遠不會真正適應的軀殼當中。這對于網頁領域來說可能是必要的,但我們真的希望將這套體系擴展至方方面面,并最終把自己也扯進極為被動的局面中?
3. HTML在構建用戶界面方面弱爆了
蘋果公司對其原始Mac電腦做出的最重大的革新措施之一就是為開發者們公布了一套細致的人機接口指南。因此,與DOS程序不同,Mac電腦上的應用程序在外觀和實際表現方面具備良好的一致性。這些應用全都采用同樣的菜單、同樣的對話框以及同樣的報錯方式。當大家探討Mac OS的巨大成功時,該系統在印象上的連貫性與一致性被公認是其中一個突出的原因。這種特性甚至能克服一部分新系統給用戶帶來的陌生感與困惑。
而在網頁應用程序方面,我們又回到了DOS時代。界面設計者們能夠自由地創建他們想要的任何按鈕,可以讓菜單從任何位置滑下或彈出,也完全有能力按自己的喜好將整個窗口設置成任何樣式。如果沒有一套標準化的部件,利用網頁技術開發應用程序會使成品變得充滿沖突感,有時甚至會讓人感覺像是外星人的作品。此外,即使有些人愿意徹底拋開自己的想法,將用戶界面構建得與iPhone上的應用程序一模一樣,這套界面框架仍然無法直接適用于其它類型的Android手機。誰會花費大把時間去創建那種一個平臺一個樣的“本地化”網頁應用?沒人會這么做,絕對沒有(更別說這里面還有不同機型之間屏幕尺寸的差異)。
4.創建專有平臺的HTML應用程序毫無意義
好吧,退一步說,也許大家并不在意具體為哪款設備或哪個平臺開發軟件。比如說,現在我們正為iOS或Windows 8開發一款應用程序。但我們究竟為什么要在單平臺應用程序開發中使用HTML呢?事實上HTML的全部賣點及其相關技術所指向的都是開放式、跨平臺標準。
更重要的是,iOS與Windows都具備自己的軟件開發工具,而且這些工具在許多HTML有所不足的方面還同時做出了強化。首先它們為大家提供了一套標準化部件,允許我們建立統一的用戶界面。其次,它們還提供訪問API的權限,使我們能夠根據本地處理速度對運算強度進行調整。此外,它們允許大家將自己的應用程序與那些其它平臺不具備的核心OS特色整合起來(由此也能夠大概推測消費者為什么會選擇此類平臺)。而如今,我們要把這種種優勢全數拋棄,為什么?因為網頁應用程序的編碼“更容易些”?即使真的更容易些,大家也不可能把擅長HTML當成賣點寫進簡歷——那樣你在就業之路上肯定會搞得灰頭土臉。
5.絕不應該限制開發人員選擇網頁編程技術
要在網頁開發論壇上挑起激烈的口水戰,選擇“詢問哪款編程語言‘最好’”這一話題再合適不過了。開發人員們都有自己所偏愛的工具,而且備選的編碼方案也有很多。
然而,網頁領域可選面就窄得多了。制作網頁應用程序意味著使用HTML、CSS以及JavaScript進行編程。這些都是必考內容,因此也得到了大家廣泛的掌握。不過普及率高并不意味著人氣高。
但因為幾乎每個人都對HTML、CSS以及JavaScript有所了解,因此這些語言在開發人員群體中就有了極高的安裝占有度。這才是各大廠商們迅速宣稱在其新平臺上開發產品“就像利用HTML 5進行編碼那樣容易”的真正原因。如此一來,他們就可以堅稱已經有數百萬的開發人員已經了解了如何與其平臺協同工作——盡管這種結論實在缺乏客觀依據,因為每款OS及平臺都具有自己的特性。
如此看來,廠商們無疑將會繼續鼓吹大家能夠用上多少已經掌握的網頁技術,他們還將繼續把基于HTML及JavaScript的軟件開發工具引入其既有的操作系統——因為這對市場營銷大有裨益。這種做法頗為我所不齒。此類工具幾乎從未像它們所自我標榜的那么強大,也從未在真正的專業開發人員群體中流行開來(相對于前面所提到的‘HTML程序員’而言)。最終,它們只會被排除在浩如煙海的強大、有品或更適合特定工作內容的優秀開發工具之外,成為不入流的垃圾。這場鬧劇已經夠討厭,是時候收場了。
原文標題:Let's face it: HTML5 is no app dev panacea
【編輯推薦】