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