01|Flash 当年到底像不像“真跨端”?

今天回头看 Flash,很多人第一反应往往都是:

  • 老插件
  • 网页小游戏
  • 烦人的广告
  • 最后被 HTML5 淘汰

这当然没错。

可如果你只用这个视角看它,就会把 Flash 在跨端史上的真正位置看小。

因为在它最强势的时候,Flash 代表的根本不是“网页上一种富媒体技术”而已。

它更像一种非常大胆、也非常危险的想法:

如果浏览器和平台本身都太碎,那我干脆自己带一套运行时,把这些碎片全吞掉。

这一步为什么重要?

因为它和后来的很多跨端路线都不一样。

后来的 PhoneGapCordovaReact NativeElectron, 很多都还会承认:

  • 浏览器是宿主
  • 操作系统是宿主
  • 平台商店是宿主

Flash 在最强的时候, 它给人的感觉更像是:

我不只是借宿主干活,我甚至想把“应用怎么跑”这套解释权,部分从宿主手里拿出来。

这就是为什么它后来一定会撞墙。

因为它不只是技术路线。

它还是一个中间层夺权方案。


02|开发者当年到底买了 Flash 什么梦?

今天很多人谈跨端, 会先想到:

  • 代码复用
  • 组件复用
  • 业务逻辑复用

Flash 那个时代给开发者的诱惑更原始,也更直接。

它给的是一种非常少见的体验:

你不需要先分别学习每个平台的原生控件、原生语言、原生发布流程,就能把同一种交互内容带到不同机器上。

这件事在 PC 时代是非常有吸引力的。

因为那时浏览器现实本来就乱:

  • 厂商各有实现
  • 富媒体体验很碎
  • 一致交互很难保证

Flash 给出的承诺特别简单粗暴:

  • 你用我的工具做
  • 你跑我的运行时
  • 你尽量别直接碰宿主差异

这套逻辑后来会在很多跨端方案里反复出现。

只是名字不同而已。

所以如果只把 Flash 看成“老插件”,你会错过它最重要的历史意义:

它几乎是第一批大规模让开发者相信:第三方中间运行时也许真能把多端统一掉的技术路线。


03|Apple 真在反 Flash,还是在反它站错了位置?

2010 年 Steve Jobs 那封著名的 Thoughts on Flash, 后来经常被人简单概括成:

Apple 认为 Flash:

  • 不安全
  • 不稳定
  • 很耗电
  • 不适合触摸

这些当然都在信里。

可如果你只看到这些, 还是会把事情理解浅。

因为那封信里真正最狠的一刀, 其实是这句意思:

我们不想让第三方软件层挡在平台和开发者之间。

这句话背后的政治意味非常重。

它相当于在说:

  • 运行时应该由平台定义
  • 新能力应该直接向平台开发者开放
  • 平台升级节奏不该被第三方跨平台层卡住

也就是说, Apple 对 Flash 的反对当然有技术理由。

但它同样也是一次非常明确的主权声明:

移动平台的解释权,不能交给一个站在宿主之上的第三方运行时。

所以 Flash 被打击得这么狠, 并不只是因为它“表现不好”。

还因为它正好站在平台最不愿让渡的那个位置上。


04|Adobe 死咬“选择权”不放

Apple 把 Flash 定义成:

  • 性能问题
  • 电池问题
  • 安全问题
  • 触控时代的旧技术

而 Adobe 阵营的反击,重点却很有意思。

无论是 Shantanu Narayen 的公开表态, 还是 Kevin Lynch 的“继续前进”那套说法, 底下真正抓住的都不是:

“Flash 在每个技术点上都比你强。”

而是:

开发者应该拥有跨平台发布内容和应用的自由。

这很关键。

因为到了这里, 你会突然看清楚双方真正吵的其实不是同一件事。

Apple 在说:

平台质量与安全边界。

Adobe 在说:

开发者不该被平台锁死。

也就是说, Flash vs iPhone 这场争论从一开始就不是纯技术辩论。

它是一场很早的、典型的:

平台控制权 vs 跨平台中间层自由

之争。

而这种结构, 后面你会在:

  • PWA
  • React Native
  • 小程序
  • 商店支付争议

里一遍遍看见。


05|一到移动端,Flash 的账突然全爆了

在 PC 时代, 很多问题是可以被硬件余量和用户耐心掩盖的。

可一旦进入移动端, 事情就变了。

因为移动设备会把抽象层的代价放大得特别明显:

  • 电池更敏感
  • CPU 预算更紧
  • 触摸交互更直接
  • 崩溃更难被容忍

这时候, 一个额外的中间运行时如果拖累体验, 就不再只是“技术债”。

它会立刻变成:

用户体感里的失败。

这也是为什么 Apple 后来的叙事越来越占上风。

不是因为平台永远正确。

而是因为移动端确实让很多“抽象层税”突然变得特别显眼。

后来 2021Epic v. Apple 相关证词里, Scott Forstall 回头提到 Apple 其实试过帮 Adobe 让 Flash 跑在 iOS 上, 但结果是:

abysmal and embarrassing

这句话特别有历史意味。

因为它说明 Apple 并不是完全没碰过这条路, 而是最后认定:

这条中间层路线在移动端的体验代价太高,高到它已经没有资格继续站在平台和开发者之间。


06|Adobe 转身去做 AIR,说明跨端到底死没死?

很多人后来会把 2011 年 Adobe 停止继续为新移动配置开发 Flash 浏览器插件这件事, 理解成:

Flash 死了。

可如果从跨端史角度看, 这件事更准确的理解其实是:

浏览器内的第三方统一运行时路线,先输了。

但“跨端”这个冲动本身并没有输。

它只是立刻换了宿主。

Adobe 后来把重点转向:

  • HTML5
  • AIR
  • 应用商店里的原生打包

这一步非常关键。

因为它几乎提前预演了后面整条跨端史的一个固定动作:

当某种“统一一切”的抽象层太难继续顶住现实时, 它不会真的消失。

它往往会先收缩承诺, 改成一种更务实、也更依赖宿主的姿态继续活。

所以 Flash 这条线真正留下来的, 不是一个淘汰故事而已。

而是一条非常经典的历史模板:

  1. 第三方中间层先承诺统一
  2. 平台用性能、安全、入口解释权反击
  3. 中间层要么退场,要么收缩到更服从宿主的位置

后面很多跨端路线, 都会重复这个节奏。


07|Flash 留给后人的真正规矩是什么?

回头看 Flash 这段历史, 最不该记住的, 不是某个版本号、某次发布失败、某台手机跑不动。

更该记住的是这句:

Apple 杀死的表面是 Flash,底下更深一层,杀死的是“第三方跨平台运行时可以长期站在平台之上”这个想法。

从这以后,跨端世界其实就被写下了一条很难推翻的规矩:

你可以来帮平台省事、帮开发者统一,但你不能真的站到平台头上。

Flash 的失败当然有工程和体验原因。

可真正让它没有后路的, 是它把自己摆到了一个平台迟早要动手的位置。

所以 Flash 最值得记住的, 不是它被淘汰了。

而是它最早把跨端的野心推到“第三方运行时想和平台争解释权”这个危险高度,也因此最早撞上了平台收权的硬边界。


编者注(事实核对):文中关于 Apple 系统性反对 Flash 的论述,主要依据 Steve Jobs 2010 年公开信 Thoughts on Flash。关于 Adobe 阵营对“技术理由其实掩盖平台控制权”的反击,主要依据 Shantanu NarayenKevin Lynch 当时的公开回应及媒体转引。关于 Adobe 在 2011 年停止继续为新移动浏览器配置开发 Flash Player 浏览器插件、转向 HTML5AIR 的判断,主要依据 Adobe 官方声明的多家转引报道。关于 Apple 曾尝试协助 Adobe 让 Flash 跑上 iOS、但结果非常糟糕,则主要依据 2021Epic v. Apple 相关证词公开信息。


关键人物速览

  • Steve Jobs:理解平台为什么会把第三方跨平台层看成威胁,绕不开他。
  • Kevin Lynch:理解 Adobe 如何把跨平台选择权写成自己正当性的关键人物。
  • Shantanu Narayen:理解 Adobe 怎样把 Apple 的技术批评翻译成“平台锁定叙事”,绕不开他。
  • Scott Forstall:理解 Apple 为什么后来越来越有底气说 Flash 不适合移动端,绕不开他的回看证词。

参考与延伸阅读

  1. Thoughts on Flash
    https://web.archive.org/web/20100502021750/http://www.apple.com:80/hotnews/thoughts-on-flash/

  2. Adobe 'shifting focus' from Apple
    https://www.cnet.com/tech/tech-industry/adobe-shifting-focus-from-apple/

  3. Adobe: We're ditching Flash Player for mobile
    https://www.cnet.com/tech/tech-industry/adobe-were-ditching-flash-player-for-mobile/

  4. Adobe confirms it will no longer develop Flash for mobile browsers
    https://appleinsider.com/articles/11/11/09/adobe_confirms_it_will_no_longer_develop_flash_for_mobile_browsers

  5. Apple got Adobe Flash to work on iOS but performance was 'abysmal'
    https://appleinsider.com/articles/21/04/27/apple-got-adobe-flash-to-work-on-ios-but-performance-was-abysmal-says-scott-forstall