關于HTML 5現狀與未來的觀點碰撞
51CTO推薦專題:HTML 5,下一代Web開發標準詳解
如果你一直關注Web,你可能認為Flash播放器和Silverlight已經進入生命倒計時,而HTML 5則正在迅速改變Web上的一切。然而,實際上許多正在評價HTML 5的人并不完全理解當前的領域。你知道HTML 5標準的編者Lan Hickson曾說過“在2022年以前HTML 5不會被在所有瀏覽器上完全實現嗎?”你知道iPhone開發者現在已經可以完全使用HTML 5?你知道HTML 5中的所有功能都來自于Web插件?你知道谷歌在其產品Wave中使用了一個Web插件嗎?
我們需要對HTML 5以及它對Web的意義進行一次開放而坦誠的探討。不幸的是,你不會從狂熱的任何一方獲得真相,而是需要我們檢查所有的事實證據,然后得出我們自己的結論。我已經花費了大量時間來分析這個事實,在這個過程中我得出了幾個觀點。
現狀
在經過許多專注開發者的努力工作后,HTML 5已經基本準備就緒。這個過程從10年前已經開始,到今天為止經歷了多次反復。今天,HTML 5已經在許多平臺/瀏覽器上準備就緒。但是,并非所有瀏覽器實現了這個標準的全部功能,而且某些瀏覽器甚至還未宣布何時將實現完全支持HTML 5。事實上,iPhone操作系統3.0是目前唯一完全支持HTML 5的穩定版操作系統。對開發者來說這意味著,對多數開發者來說,HTML 5依然是很遙遠的事情。
當去年9月看到Jeff Croft的“2022年”說法的時候我非常震驚。它反映出了許多開發者對Web標準整體的失望。我沒有與Jeff討論過這個問題,我一直是他的研究成果的粉絲。在獲悉實現HTML 5完全支持的這個殘酷最后時限時,Jeff表示,“HTML 5是在下周或下個月或未來15年后推出,這并不重要。對我們這些在這個行業從事實際工作的人來說,重要的是人們真正使用的瀏覽器支持哪些規范和技術。”
為客戶提供解決方案的開發者并不在乎理論,他們關心的是現實。按照這個說法,如果一個解決方案的目標客戶只有全部客戶的10%,它就不算一個成功的解決方案;如果它只能被90%客戶使用,同樣也不算一個好的解決方案。客戶希望網站或應用程序能夠適合目標客戶中的每一名成員,而且是現在就能滿足。這就是我的第一個觀點:
觀點1:
至少在2014年之前,開發商將無法在為客戶提供的解決方案中使用HTML 5(除非他們是在一個如上所述的特定平臺上)。至于在解決方案中使用HTML 5的全部功能,則將會更晚。
開發者可以考慮創建同時利用HTML 5和當前的HTML/JS模式的解決方案。不過,這意味著開發商將不得不創建一個單一解決方案:
1、瀏覽器能自動探測并確定用戶具備使用HTML5的能力;
2、一個針對目前或更老版本瀏覽器的全功能HTML 4.1/XHTML 1應用程序:
(1)多個支持IE6、IE7、Firefox 3和Safari 3的CSS文件;
(2)兼容上面列出的所有瀏覽器的JavaScript
3、全面支持HTML 5的應用(其中將與HTML 4.1應用程序幾乎沒有重疊的代碼)
對那些狂熱于應用CSS和JavaScript的開發者來說,這只不過又增加了一層復雜性。事實上, 對于傳統的開發者來說,直到90%以上的網絡使用支持HTML5的瀏覽器的時候,HTML5才會進入他們的選擇。請記住,盡管IE6早在8年前(2001年)就已經推出了,但是大多數網站還在檢查IE6的用戶。
插件的真相
本次討論的核心是我們今天使用的網絡插件。最近許多文章聲稱HTML5將逐個消滅傳統網絡插件。實際上,這與事實相差太遠。在我直接談到這個問題之前,我們需要仔細看看什么是網絡插件。
當列出網絡插件時,大多數人都會意識到,常見的包括Adobe Flash Player、Microsoft Silverlight和JavaFX等。然而實際上它還包括谷歌Gears、谷歌本地客戶端(Google Native Client)、谷歌地球插件(Google Earth plug-in),以及谷歌音頻/視頻聊天插件等網絡插件。此外,除了Google的插件,還有不計其數的的其他廠商的插件。由于這些插件是“封閉源代碼”項目的事實,它們經常遭到詬病。事實的真相是,插件有一個快速開發周期來引導創新。我不是說在開源項目中它不可能發生,但是我需要為真正客戶開發最先進的解決方案,我不能期待真正創新的網絡標準,更多是已經被實施的網絡標準:
觀點2:
網絡標準不會永遠創新,它們只會執行那些已經成功包含的插件。這源于這樣一個事實:標準化進程是由微軟、谷歌和Mozilla等公司所主導的,除非這些公司已經在某個產品開發方面占有一席之地,否則他們不會投資于在這方面建立某項標準。術語標準化意味著你把已經存在的東西拿過來,然后為實施它建立一個統一的過程。
此外,許多開發商不承認插件在HTML 5標準中的作用。這使我產生了另外一個觀點:
觀點3:
HTML 5中的每一個新功能之所以被增加,是因為開發商需要一個已經被以插件形式實現的功能。這包括離線緩存(Google Geas) 、畫布(Flash播放器)、媒體播放(Flash播放器等)、拖放(Flash播放器等)等等……
處于這場爭論最前線的是谷歌Wave,最近谷歌在其IO大會上宣布了這個產品。這個富互聯網應用已被稱為Web標準作用的一個偉大例子。然而,沒有人指出它需要一個插件才能運行這個事實。的確,證明HTML5能夠做什么的實例,需要谷歌Gears展示它的部分功能。事實上,它僅是一小部分功能,但是它揭示了一個重要的觀點。
觀點4:
谷歌可以選擇通過標準化進程,來嘗試在推出Wave之前添加拖放功能,但是他們認為如果沒有這一功能,用戶體驗將會變糟。于是他們選擇使用插件來提供最佳的整體用戶體驗。
事實上,插件可以在一年之內就“升級網絡”。在現實生活中,一個想法可以通過生產、質量評價和發布給用戶,然后在16個月內被推廣到85%以上的的網絡。但是Web標準難以做到這一點:
觀點5:
由于涉及到大企業和實體,任何重大的改變(需要瀏覽器發行商以統一的方式改變瀏覽器的功能),從最初的想法到實際執行(在所有瀏覽器)至少需要十年的時間 。另外加上使用舊版本瀏覽器的用戶升級的時間,該過程還需要多花5年多時間。
如果HTML5被當前所有主要的瀏覽器完全支持,并且如果所有這些用戶使用了這些升級后的瀏覽器,Web插件將會遭受到來自HTML5的沉重打擊(但是即便如此,它也不會完全消滅它們)。在現實生活中,HTML 5甚至無力與Web插件競爭,因為它是目前唯一可行的固定平臺解決方案(像iPhone )。
質量與標準
這一話題讓我感到憤怒的主要一點是,許多開發商在追求Web標準時卻忽視了質量。這是視頻編解碼器爭論的核心所在(圍繞HTML5也有很多這類問題的例子) 。開發商選擇在相對開放的基礎上去評估解決方案,而不是注重其實際的功能。過去的五年告訴了我們什么?我們最終將會進入一個用戶體驗至上的時代,但是現在一些開發商為了開放性而犧牲了質量。這是我個人最強烈的意見:
觀點6:許多開源解決方案處于各自領域的頂尖水平(Apache、MySQL、Linux、Flex Framework等等)。劣質的解決方案(如Ogg編解碼器)不能只是因為他們是“開放”的就應該容忍。如果您想要所有的瀏覽器執行一個視頻編解碼器,那就做一個優于H.264的。在使用“開放”解決方案時,開發商絕不應犧牲用戶體驗的熱情。
當一個潛在客戶評判我的工作(或我公司的工作)時,他們不會關心網絡標準,他們關心的將是工作的質量和功能。此外,當用戶使用我的應用軟件時,他們不會在意“開放性” ,而只在意整體功能和用戶體驗。作為一名開發人員和公司的雇員,我不能推薦劣質的解決方案。我必須基于能保持競爭力的功能來評價所有的解決方案。這意味著,如果HTML5將來能夠提供更好的功能,我會認為它是一個好的解決方案,但是,我不會僅僅因為它是開放的就選擇它。HTML5將與其他解決方案在平等的基礎上參與競爭。
未來
我希望這些意見能夠全面闡明這個問題。問題的關鍵是:特定平臺的開發人員現在就可以享受HTML5。現在他們就應該擁抱它,開始學習HTML5并用HTML5工作。傳統的開發人員將必須等待大約5年時間才能真正選擇HTML5。到那個時候,我們可能已經擁有Flash Player 13、Silverlight 5和JavaFX 3 。誰知道這些版本將包括什么呢?但是,我們可以猜測到,它們包含的功能很可能將包括在未來版本的HTML中。
【編輯推薦】