【編者按】知乎上有不少人問(wèn):“如何評(píng)價(jià)谷歌瀏覽器禁止運(yùn)行Flash?" 針對(duì)這個(gè)問(wèn)題,本文作者羅志宇,混跡Opera瀏覽器十年的CTO,他從瀏覽器插件發(fā)展的歷史告訴你,這只是一個(gè)美麗的錯(cuò)誤。 以下這種框,想必很多人都看到過(guò)了: 事情的起因還需要追溯到2013年,Google 突然發(fā)了一個(gè)通告,說(shuō)是Chrome瀏覽器會(huì)逐步的去掉對(duì)NPAPI插件的支持。這個(gè)事情很快就過(guò)去了,因?yàn)镹PAPI這種江湖黑話太不親民了,這個(gè)東西到底有啥卵用,廣大人民群眾也并不清楚。關(guān)于谷歌公告,可以點(diǎn)擊這里查看。
時(shí)間已經(jīng)到了2015年,這次可不是說(shuō)說(shuō)而已了, Google 正式推出時(shí)間表:
其他瀏覽器廠商,比如Opera,火狐,也紛紛表態(tài)會(huì)逐漸淘汰NPAPI。
但是,NPAPI到底是什么? NPAPI全稱叫 Netscape plugin API, 聽(tīng)到這個(gè)名字是不是有時(shí)光倒流的感覺(jué), 沒(méi)錯(cuò),就是那個(gè)當(dāng)年被微軟一棒子打死了好多年的 Netscape 瀏覽器發(fā)明的一種擴(kuò)展瀏覽器的方式。 是不是覺(jué)得好拗口? 沒(méi)辦法,我們要從瀏覽器插件本身開(kāi)始說(shuō)起。 HTML 作為在瀏覽器里面承載展現(xiàn)內(nèi)容的規(guī)范, 設(shè)計(jì)起來(lái)其實(shí)非常困難。 太簡(jiǎn)單沒(méi)法用,太復(fù)雜了瀏覽器廠商實(shí)現(xiàn)起來(lái)又有困難。 一開(kāi)始的時(shí)候HTML只是設(shè)計(jì)用于承載圖片,文字一類的主流內(nèi)容。不過(guò)瀏覽器廠商很快就不滿意了,因?yàn)槌藞D片文字以外,很多小眾內(nèi)容,瀏覽器用戶實(shí)際上是有需求的。 比如,PDF文檔,以及視頻,音頻。 為了解決這些問(wèn)題而去要求 W3C 把相應(yīng)的內(nèi)容加入到 HTML 標(biāo)準(zhǔn)里面是很不現(xiàn)實(shí)的,標(biāo)準(zhǔn)的制定非常繁復(fù),周期也非常長(zhǎng),小眾內(nèi)容到底有沒(méi)有必要加入 HTML 規(guī)范,這種哲學(xué)問(wèn)題一旦討論起來(lái)誰(shuí)都不知道啥時(shí)候能結(jié)尾, 于是瀏覽器廠商們發(fā)明了插件這樣一個(gè)機(jī)制, 這樣如果有一些內(nèi)容不被 HTML 直接支持,用戶又確實(shí)有需要,那么這部分內(nèi)容就可以用插件來(lái)處理。
不過(guò)按照W3C的哲學(xué),插件畢竟只是對(duì) HTML 的一個(gè)補(bǔ)充。而一旦某些插件提供的內(nèi)容由于市場(chǎng)原因反而變?yōu)橹髁?,那?W3C 就會(huì)馬上將其納入到 HTML 規(guī)范中去,讓瀏覽器原生就支持。 <video> 標(biāo)簽就是一個(gè)典型的例子。 2007 年的時(shí)候,鑒于 YouTube 已經(jīng)火得一塌糊涂,網(wǎng)路視頻既然已經(jīng)變成主流內(nèi)容,W3C 馬上就開(kāi)始討論是否引入 video 標(biāo)簽,以便把視頻支持提高到瀏覽器原生這個(gè)水平。 這個(gè)提案是Opera提出來(lái)的, 我還記得Hakon Wellium Lee 在Opera 員工大會(huì)上面興致勃勃地討論這個(gè)標(biāo)簽的場(chǎng)景。 這個(gè)提案現(xiàn)在還在這里,大家有興趣可以看看這里 看到這里,插件在瀏覽器這個(gè)領(lǐng)域的作用已經(jīng)不言而喻了。
而W3C會(huì)時(shí)刻監(jiān)視這個(gè)等式,動(dòng)態(tài)調(diào)整HTML支持的內(nèi)容以維持這個(gè)等式的動(dòng)態(tài)平衡。 現(xiàn)在你知道為什么HTML5會(huì)加入video、 audio標(biāo)簽了吧。其實(shí)嚴(yán)格意義上講也包括 svg,canvas一類的標(biāo)簽。 而NPAPI 就是瀏覽器插件架構(gòu)的一種。事實(shí)上, NPAPI 插件架構(gòu)是個(gè)非常好的架構(gòu), 一共就40幾個(gè)API, 相對(duì)于另外一種瀏覽器插件架構(gòu): ActiveX來(lái)說(shuō),簡(jiǎn)直就是業(yè)界良心。 這里只有一個(gè)問(wèn)題,它的發(fā)明時(shí)間是1995,而在那個(gè)時(shí)候手機(jī)還可以砸死人,學(xué)校的電腦房要穿鞋套才能進(jìn)。 那個(gè)時(shí)代所有類似的API(應(yīng)用程序編程接口)設(shè)計(jì)者幾乎都非常自然的忽略掉了安全性問(wèn)題。 你不信?我們來(lái)看看NPAPI插件和瀏覽器的關(guān)系是什么, 同時(shí)對(duì)比下和同樣執(zhí)行網(wǎng)絡(luò)下載代碼的Javascript引擎的位置。 看懂了吧, 你以為NPAPI是插件是嗎?其實(shí)它和瀏覽器是平級(jí)運(yùn)行的,它甚至可以打開(kāi)網(wǎng)頁(yè),給你安一個(gè)木馬,然后隨手幫你關(guān)掉殺毒軟件。
而 Javascript 引擎的限制就多得多,事實(shí)上,Chromium系列的瀏覽器 Javascript 引擎均是運(yùn)行在沙盒之中,一舉一動(dòng)都是被嚴(yán)密監(jiān)視著的,敢有異常? 瀏覽器分分鐘殺死你。 除了安全性以外,插件們還質(zhì)量參差不齊,一旦崩潰瀏覽器就得跟著一起崩掉, 于是各個(gè)瀏覽器又一把鼻涕一遍淚地把插件們放到另外一個(gè)進(jìn)程中運(yùn)行,既然惹不起難道還躲不起嘛。其他的耗電量,圖形效率,腳本效率一類的也差不多,這里就不講了,講多了都是淚。
是的,谷歌當(dāng)年也是這樣想的,于是他們發(fā)明了 PPAPI, 然后在業(yè)界里面振臂一呼,大家來(lái)看,我的這個(gè)新API好啊,插件用起來(lái)更安全,還有沙箱。 這個(gè)是業(yè)界伙伴們的態(tài)度:
(而且坑爹的是, Google 的PPAPI鏈接居然指的是Mozilla 的這個(gè)頁(yè)面。不知道是不是存心惡心Mozilla)。 如果你是個(gè)程序猿又有一顆好奇的心,表示無(wú)法理解PPAPI為何如此不受待見(jiàn),你可以去這里看看PPAPI的文檔 ,在這里。(點(diǎn)擊閱讀原文) 你一定會(huì)發(fā)現(xiàn)問(wèn)題,其實(shí)不管你是不是程序猿你都會(huì)發(fā)現(xiàn)問(wèn)題。因?yàn)椋@個(gè)PPAPI官方文檔鏈接里面,幾乎木有文檔。 不過(guò)Adobe認(rèn)慫了。 事實(shí)上Adobe很早就開(kāi)始發(fā)布PPAI的版本。 所以如果你這幾天再看到文章開(kāi)始提到的對(duì)話框,如果上面寫的是Flash,你只需要去下載一個(gè)最新的ppai的flash 插件,或者下載一個(gè)新版的Chrome。
以上這些我用個(gè)簡(jiǎn)單的故事方便理解:
所以,少年,不要害怕,F(xiàn)lash還在的。 如果你看到的是這個(gè)框: 其實(shí)背后的原因還會(huì)更復(fù)雜一些。 這個(gè)是因?yàn)榍捌诔吹梅蟹袚P(yáng)揚(yáng)的 Hacking team被黑的事件中,Hacking team hacked 的一些非常嚴(yán)重的Flash漏洞被泄漏出來(lái)了,于是Chrome把低版本的Flash全部禁止了。 解決的方法也一樣,下載一個(gè)最新的ppai的flash 插件,或者下載一個(gè)新版的 Chrome 就好。 以下是編者總結(jié): 各大瀏覽器,比如chrome 禁止了NPAPI插件,但是依然有內(nèi)置PPAPI版的Flash,本質(zhì)原因是Google覺(jué)得以前的插件架構(gòu)不合理。加上最近HT爆出的Flash嚴(yán)重漏洞,才會(huì)把低版本的Flash禁止了。而這與Flash本身沒(méi)有關(guān)系。 大家都知道,F(xiàn)lash插件有兩個(gè)功能,一個(gè)是視頻,一個(gè)是游戲。最近HTML5的確很火,HTML現(xiàn)在代替視頻是沒(méi)有問(wèn)題,但是游戲不行。畢竟是新興市場(chǎng),還達(dá)不到完全取代Flash的地步。所以,瀏覽器不是禁止Flash插件,只是出于安全考慮,對(duì)低版本的架構(gòu)進(jìn)行升級(jí)。 至于游戲,無(wú)論什么工具,只要適合項(xiàng)目需求的都是好工具,更何況 APP Store 從來(lái)沒(méi)有用開(kāi)發(fā)工具作為游戲分類的條件。因?yàn)橥婕沂遣魂P(guān)心用什么工具和語(yǔ)言開(kāi)發(fā),最關(guān)心的恰恰是游戲體驗(yàn)。這也讓Flash有一定的生存空間。 知乎上有不少人問(wèn):“如何評(píng)價(jià)谷歌瀏覽器禁止運(yùn)行Flash?" 可以說(shuō),這只是一個(gè)美麗的錯(cuò)誤。 - 熱門文章閱讀 -
|
|
來(lái)自: 昵稱71360118 > 《待分類》