Adobe和Apple圍繞Flash發(fā)生的沖突是今年上半年的一個焦點事件,引起了很多人的關(guān)注,其中有不少人因這一事件第一次了解到html5的存在。初次了解html5的人可能會非常驚訝,html5規(guī)范早在6年前就開始制定了,如今盡管html5規(guī)范草案已經(jīng)非常好,但何時能真正成為標(biāo)準(zhǔn)卻仍然不確定。
的確,html5規(guī)范制定委員會工作進展非常緩慢。因為關(guān)于如何改進瀏覽器和改進Web世界,不管是瀏覽器供應(yīng)商還是其他人都有太多的想法,而這些都要匯聚到html5規(guī)范中并達成一致,這需要時間。許多新的標(biāo)簽和JavaScript函數(shù)盡管已經(jīng)在一些瀏覽器上進行了實驗,但互操作性和標(biāo)準(zhǔn)化問題還沒有解決。比如,Apple所做的html5演示雖然令人印象深刻,但它們也只在Safari上運行良好。這就是為什么Flash的支持者嘲笑html5要把Web帶回到2000年瀏覽器大戰(zhàn)時代的原因。
雖然這種嘲笑可能讓html5的支持者很傷心,而且漫長的等待的確很難熬,但如果就此忽略html5卻是不對的。因為在html5的背后不僅有行業(yè)巨頭的推動,更為重要的是,標(biāo)準(zhǔn)化是IT技術(shù)發(fā)展的必然趨勢。就軟件而言,不論是瀏覽器還是相關(guān)的開發(fā)工具,都會不斷吸納周圍的各種技術(shù),最后對其進行標(biāo)準(zhǔn)化,這是技術(shù)發(fā)展的必然規(guī)律。
可以肯定的是,html5將改變互聯(lián)網(wǎng)的方方面面,顯然它不會完全取代Flash,但html5的確會重塑互聯(lián)網(wǎng),使瀏覽器無需借助插件就可以做更多的工作,從位置跟蹤到把數(shù)據(jù)保存到云端。html5的標(biāo)簽將取代那些完成比較簡單任務(wù)的插件,至少在某些時候,它可以把一些高級的功能開發(fā)給更多的用戶。最終它可能使互聯(lián)網(wǎng)更安全、更高效、更靈活。
那么,即將成為新標(biāo)準(zhǔn)的html5到底會把我們帶向哪里?下面收集了開發(fā)者、程序員以及設(shè)計師的一些看法,從中可以了解到html5如何改變互聯(lián)網(wǎng)。
降低插件的重要性
從前,Web世界是非常歡迎瀏覽器插件的,因為它鼓勵創(chuàng)新的想法和大膽實驗,而聲音、動畫及其他一些非常生動的網(wǎng)頁,通過Sun、Adobe、RealAudio、微軟以及其他的一些公司開發(fā)的插件第一次在網(wǎng)絡(luò)呈現(xiàn)時也的確讓人耳目一新。然而,問題很快就出現(xiàn)了,插件的接口是向所有人開放的,每個人都在嘗試給舊的、以文本為基礎(chǔ)的世界增加新的功能,混亂不可避免。其中最有名的插件就是Flash,其他類似的插件更是數(shù)不勝數(shù)。
出于多種原因,Apple禁止Adobe的Flash在自己的平臺上運行,這使得廣大Apple迷們不能在 Apple平臺上看到Flash,而html5的流行將讓這種沖突不再出現(xiàn),它將逐步淘汰那些相對封閉的開發(fā)體系:JavaFX的功能可能真的很強大,但既然JavaScript和Canvas對象就能做同樣的工作,為什么還要學(xué)習(xí)另一種語法?如果video標(biāo)簽?zāi)軐⒁粢曨l同步,誰需要Real的生態(tài)系統(tǒng)?
那么,插件真的會全部消失嗎?也許吧,但這要取決于你想做的事情。如果你的目標(biāo)只是繪制圖像,那么Canvas對象可能就夠用了。但如果你想建立一個專業(yè)的3D世界,正如在復(fù)雜的Flash和Shockwave游戲中所看到的那樣,你可能還得依賴專有的插件技術(shù),因為這些插件技術(shù)可以直接訪問視頻硬件,運行3D游戲。
支持動態(tài)生成圖像
過去,網(wǎng)頁中顯示的圖像來自于直接下載的GIF或JPG圖像,而在html5中,圖像可能并不是直接來自圖像文件,而是由某個Canvas(畫布)對象臨時生成的。網(wǎng)絡(luò)上已經(jīng)出現(xiàn)了大量的非常好的圖形庫,這些圖形庫的存在使得動態(tài)生成圖像更加容易。
如今,JavaScript層可以根據(jù)數(shù)據(jù)進行計算然后繪制出圖形。如果軟件開發(fā)商有足夠的時間和人才的話,完全可以讓網(wǎng)絡(luò)上的一切變得更加生動,而純文本內(nèi)容越來越少。Flash只是一個開端,html5環(huán)境讓W(xué)eb開發(fā)人員更易于開發(fā)出復(fù)雜的圖像。市場已經(jīng)出現(xiàn)了一些類似的工具,它們將進一步提高Web開發(fā)人員駕馭圖像的能力,而且隨著工具的成熟,開發(fā)人員也將開發(fā)出更多更為專業(yè)的復(fù)雜圖形。
這里可能存在的一個問題是,這種圖像的處理可能會給客戶端處理器帶來很大負擔(dān),比如對客戶端的處理器處理能力有一定要求。在過去,一些開發(fā)人員根本不敢用Flash插件,因為渲染和展現(xiàn)Flash內(nèi)容可能會給處理器帶來很大壓力,極大地影響用戶的最終體驗。未來這不應(yīng)該成為問題,開發(fā)者不應(yīng)該因擔(dān)心影響性能就不讓用戶體驗生動的圖像,只是開發(fā)者應(yīng)該做出一個折中的選擇。每一個抱怨Flash影響性能的人都應(yīng)該知道,這與技術(shù)本身沒有關(guān)系,問題來自設(shè)計師們?yōu)榱宋覀兊淖⒁饬Γ麄冞^多地使用了這項技術(shù)。
允許Web程序
利用本地存儲
Web程序員其實早就可以利用瀏覽器端的本地存儲空間存儲很多信息,比如IE允許最多300個Cookie,最多存儲4096個字節(jié)的內(nèi)容。不過,要開發(fā)真正實用的Web程序,可能需要比這更多的存儲空間。比如,以前的Dojo工具包使用Flash插件來分配用戶硬盤上的部分空間,把它留給瀏覽器使用,而現(xiàn)在很簡單了,使用html5就可以達到同樣的目的。
對于這部分存儲,程序員可以按照自己的需要任意使用,比如把云服務(wù)的應(yīng)用和數(shù)據(jù)保存在本地硬盤上。這也使得云應(yīng)用的交付、安裝和部署都非常像傳統(tǒng)的應(yīng)用程序。比如,無論是否有互聯(lián)網(wǎng)連接,云應(yīng)用程序都可以照常運行,因為之前已經(jīng)從服務(wù)器上下載了html5應(yīng)用的 JavaScript代碼,這部分代碼就保存在本地。
當(dāng)然,這種技術(shù)的應(yīng)用并不會影響云應(yīng)用的普及,因為現(xiàn)在的運行模式與過去有很大不同,本地數(shù)據(jù)庫實際上扮演的是智能緩存的作用。另外,游戲開發(fā)人員可以在本地存儲一些情景信息和裝備信息,這樣可避免每次一連機就要下載這些信息,省了下載資料的時間。而不利的方面就是這些數(shù)據(jù)庫深埋在系統(tǒng)文件夾之中,這樣,進行數(shù)據(jù)備份時就變得非常復(fù)雜。用戶如果想把數(shù)據(jù)從一臺機器遷移到另一臺機器,數(shù)據(jù)遷移工作可能就會變得更為復(fù)雜。
或許混合云的出現(xiàn)可能解決這一問題,混和云允許云端和本地都保存有數(shù)據(jù),而本地計算機只是緩存數(shù)據(jù),最終版本保存在云中,這樣從任意一臺計算機上就可以訪問到。
簡化Web開發(fā)中的
數(shù)據(jù)提取
曾從網(wǎng)頁中提取過數(shù)據(jù)的Web開發(fā)人員都知道,現(xiàn)有的HTML結(jié)構(gòu)除了告訴瀏覽器這些信息在哪里之外,幾乎不能再提供任何有意義的信息。而開發(fā)人員需要了解與數(shù)據(jù)本身有關(guān)的信息,這些信息能幫助程序員了解這些數(shù)據(jù)的真正含義。 html5中所謂的微格式(Microformat)引入了一種新的機制,它在HTML中新增了一些專門的標(biāo)簽,可以幫助程序員分析標(biāo)簽之中的數(shù)據(jù)的真實含義。
沒有人能夠預(yù)測微格式到底將帶給網(wǎng)絡(luò)多少改變,但很容易看出,這種新的機制將給程序員帶來很大方便,幫助程序員開發(fā)出更有效率的Web應(yīng)用。比如,如果有一個好的、標(biāo)準(zhǔn)的方式來表示日期和時間,那么程序員在為網(wǎng)站開發(fā)與時間有關(guān)的Web程序時,就無需另外編寫專門的代碼來分析或者猜測別人可能用的什么時間格式。這樣,日歷、時間表、日程安排等需要從多個數(shù)據(jù)源收集時間信息的應(yīng)用也就變成非常簡單的工作了。
支持位置服務(wù)
在Web世界里,過去我們只知道其IP地址,那些數(shù)字對應(yīng)著一個什么樣的真實世界我們根本不知道。比如,某臺電腦究竟在哪里,過去幾乎不可能知道,而現(xiàn)在出現(xiàn)的位置服務(wù)可以解決這個問題。html5標(biāo)準(zhǔn)中允許JavaScript詢問瀏覽器用戶的地理位置,比如緯度和經(jīng)度信息。通常桌面系統(tǒng)不支持這一功能(因為需要有GPS或Wi-Fi),但如果終端是手持智能手機,這個功能就可以發(fā)揮作用。