其实何止是Chrome, 几乎所有的浏览器厂商都在淘汰/去掉NPAPI的支持 那么 NPAPI 到底出了什么问题?
NPAPI全称叫 Netscape plugin API(网景插件API), 你没有看错,就是那个当年被微软一棒子打死了好多年的 Netscape。
很久以前, Netscape 发明了NPAPI 这个种架构,来帮助浏览器渲染一些HTML没有的东西。比如 PDF, 视频等等。
事实上, NPAPI 插件架构是个非常好的架构, 一共就40几个API, 相对于另外一种浏览器插件架构: ActiveX来说,简直就是业界良心。
这里只有一个问题,它的发明时间是 1995 年,而在那个时候手机还可以砸死人,学校的电脑房要穿鞋套才能进。
那个时代所有类似的API设计者几乎都很自然的忽略掉了安全性问题。那个时候无论是网络环境还是商业环境相比现在都简单很多。
我们来看看NPAPI插件和浏览器的关系是什么, 同时对比下和同样执行网络下载代码的 Javascript 引擎的位置,
看懂了吧, 你以为是NPAPI是插件是吗?其实它和浏览器是平级运行的,它甚至可以打开网页,给你安一个木马,然后随手帮你关掉杀毒软件。什么,你说NPAPI不就40几个API嘛, 少年,你想多了,NPAPI不限制插件自由访问系统所有的API.
而 Javascript 引擎的限制就多得多,事实上,Chromium 系列的浏览器 Javascript 引擎均是运行在沙盒之中,一举一动都是被严密监视着的,敢有异常? 浏览器分分钟杀死你。
除了安全性以外,插件们还质量参差不齐,一旦崩溃浏览器就得跟着一起崩掉。 于是各个浏览器又一把鼻涕一遍泪的把插件们放到另外一个进程中运行,惹不起你们我们还躲不起嘛。其他的耗电量,图形效率,脚本效率一类的我就不多讲了,讲多了都是泪。
不过如果只是安全,那你把插件放到沙箱里面隔离起来不就行了嘛。
是的,谷歌当年也是这样想的,于是他们发明了 PPAPI, 然后在业界里面振臂一呼,大家来看,我的这个新API好啊,插件用起来更安全,有沙箱哦。
这个是业界伙伴们的态度:
Java: 我最近听说Chrome不支持我们了,大家请换浏览器,就这样
火狐: 我们对 PPAPI(pepper) 一点兴趣都木有。(而且坑爹的是, Google 的PPAPI链接居然指的是Mozilla 的这个页面。不知道是不是存心恶心Mozilla).
如果你是个程序猿又有一颗好奇的心,表示无法理解PPAPI为何如此不受待见,你可以去这里看看PPAPI的文档 ,在这里https://code.google.com/p/ppapi/
你一定会发现问题,其实不管你是不是程序猿你都会发现问题。因为,这个PPAPI官方文档链接里面,几乎木有文档。
不过Adobe认怂了。 事实上Adobe很早就开始发布PPAI的版本。
所以如果你这几天再看到插件无法运行的对话框,如果上面写的是Flash, 你只需要去下载一个最新的ppai的flash 插件,或者下载一个新版的Chrome. 因为目前Chrome已经开始内置PPAPI版的Flash。
其他的,就看厂商们如何跟进吧。
========================================================================
总结来讲: NPAPI 会被禁掉, 不过PPAPI会被继续支持,于是:
- Java Plugin 需要重写
- UnityPlugin 需要重写
- SliverLight Plugin 需要重写。
用到以上插件的网站会收到影响。 使用 Flash 插件的网站不会收到影响, 因为 Flash 已经重写了。。
下面是 Google 对 流行NPAPI 的统计数据:
所以,普遍性就是: 如果你还在用任何一款NPAPI插件,然后对应的插件还没有PPAI版本或者HTML 替代版的话。节哀顺变吧。。