阅读更多

22顶
17踩

Web前端

转载新闻 乔布斯讨厌Flash的六个原因

2010-04-30 19:08 by 正式记者 ialy_2000 评论(37) 有21920人浏览

苹果和Adobe有很深的渊源。实际上,我们很早就在车库里与Adobe创始人有过一面之缘。苹果是Adobe第一个大客户,我们新的Laserwriter打印机就使用了它们的Postscript语言。苹果还投资Adobe,并多年持有它20%的股份。两家公司精诚合作,开发桌面出版系统,并多次合作良好。经过一段黄金年代后,两家公司渐行渐远。苹果经历了濒临绝境的日子,而Adobe为企业市场吸引,推出了Acrobat产品。如今,两家公司还在合作,服务于共同的客户——Mac用户几乎购买了一半的Creative Suite产品——除此之外,两家公司合作甚少。

我想草草写点关于我对Adobe Flash技术的看法,方便客户和批评者更好地理解为什么我们在iPhone、iPad和iPad上封杀它。Adobe曾经说,我们主要是为了保护程序应用商店产品,出发点也是为了业务缘故,但实际上却是因为技术原因。Adobe声称我们是一个封闭的系统,而Flash是开放的,但实际截然相反。让我来解释一下。

首先是“开放”。

Adobe Flash技术是100%拥有专利的,这些专利为Adobe独享,而Adobe也对其未来发展、价格等拥有绝对控制权。尽管Adobe Flash技术广泛流行,这并不意味着它是开放的,因为它完全被Adobe控制,也只为Adobe而存在。无论从哪个方面来看,Flash技术都是一个封闭的系统。

当然,苹果也拥有许多专利性产品。虽然iPhone系统、iPod和iPad都是有专利的,便我们依然坚信:所有与网络相关的标准应该开放。因此苹果放弃Flash而选择HTML5, CSS和JavaScript等开放标准。苹果的移动设备使用这些标准后都具有高性能、低功耗特点。HTML5这个新的网络标准已经被苹果、Google及其它企业采纳,它让开发者可以开发出更好的图形、印刷及动画,不需要第三方浏览器插件(如Flash)就能转换。HTML5是完全开放的,它由一个标准委员会打理,当然,苹果也是一个成员。

苹果甚至还为网络制定开放标准。例如,苹果从一个开源的项目做起,打造了WebKit,它是一个完全开源的HTML5渲染引擎,它也是Safari浏览器的核心,这个浏览器使用于我们所有的产品。WebKit已经被广泛接受。Google将它用于Android浏览器,Palm也用它,诺基亚也用它,最近RIM也宣布将使用它。除了微软外,几乎所有的智能手机浏览器都用它。为了使WebKit技术更开放,苹果已经将它做为移动浏览器的标准。

第二点,关于“整个网络”。

Adobe不断地说苹果的设备无法连接“整个网络”,因为75%的网络视频使用Flash。它们没有提及的一点是几乎所有的视频都有另一种格式——H.264,iPhone、iPod和iPad支持这种格式。Youtube估计占有40%的网络视频,苹果的移动设备都绑有应用,而iPad更是提供了最佳浏览体验。除了Youtube,如Vimeo,Netflix,Facebook,ABC, CBS, CNN,MSNBC,福克斯新闻,ESPN,NPR,《时代》,《纽约时报》,《华尔街日报》,《体育画报》, 《人物》, 《国家地理》, 很多很多其它的公司都能支持,iPhone、iPod和iPad用户没有损失多少视频。

Adobe的另一个理由是苹果的设备无法玩Flash游戏。这可能是真的。比较幸运的是在苹果的应用商店里有5万个游戏与娱乐应用,当中许多还是免费的。iPhone、iPod和iPad的游戏会越来越多,远非其它平台可媲美。

第三点,关于可靠性,安全性和性能。

赛门铁克最近指出,Flash在2009年创了安全记录之最。我们也有第一手资料,显示Flash是导致Mac死机的原因之一。我们曾与Adobe合作,试图解决此问题,但它们还是坚持多年不变。我们不想为了Flash,降低iPhone、iPods和iPads的可靠性和安全性。

此外,Flash在移动设备上并不能完好运行。按照惯例,我们数年来一直要求Adobe能将Flash良好运行于移动设备上——任何移动设备。但依然无所进展。Adobe曾公开表示,Flash支持所有2009年早期推出的智能手机,然后是2009年下半年推出的手机,然后又是2010年上半年推出的手机,现在,它们又要说2010年下半年了。我想它们最终会推出新品,可以庆幸的是我们不用耐心等待了。谁知道它的表现会如何呢?

第四点,续航时间

在播放视频时,为了使电池续航时间延长,移动设备必须在硬件上进行解码,如果用软件解码会耗费更多的电力。现在的移动设备都包括一个解码器,叫作H.264,它是一个工业标准,用于所有的蓝光DVD播放器,这个标准被苹果、Google,Vimeo,Netflix及其它许多企业接受。

虽然Flash最近也将H.264列入支持行列,但是如今几乎所有的Flash网页都需要老一代的解码器,它无法在移动芯片上执行,所以只好寄希望于软件。区别十分惊人:举个例子,在iPhone上H.264视频可以播放十小时,而用软件解码只能播放不到五小时。

当网页使用H.264对视频再编码时,它完全可以不使用Flash技术。而且它们可以良好运行于苹果Safari、Google Chrome浏览器上,完全不需要插件,在iPhone、iPod和iPad上效果不错。

第五点,与触摸屏有关

Flash是为电脑和鼠标设计的,而不是手指控制的触摸屏。例如,许多的Flash网页上有“翻转”功能,当鼠标移到上面时会弹出一个菜单或者其它元素。苹果的革命性多触点触摸界面不使用鼠标,也没有“翻转”这种概念。许多的Flash网页为了支持触摸设备需要再编写。如果开发者需要重写网页,为什么不使用更先进的技术HTML5、CSS或者JavaScript?

即使iPhones,iPods和iPads能运行Flash,也无法解决这个问题,大多的Flash网站为了支持触摸设备还是要重写代码。

第六点,也是最重要的一点。

撇开Flash封闭而独断、技术缺点明显且不支持触摸设备等不论,还有一个重要的原因使我们不支持它。我们曾讨论过网站使用Flash播放视频与互动内容的下降趋势,然而Adobe还是要求开发者接受Flash,开发应用并在我们的设备上使用。

我们深知伤害体验,让第三方插足平台和开发者之间,最终会制造出低标准应用,它会阻碍平台的扩张和进展。如果开发者越来越依赖第三方开发的函数库和工具,那么唯有在第三方选择新功能时,开发者才能享受到平台优越性。我们不能让第三方支配,不能第三方让开发者开发什么,才能开发什么。

更糟糕的是一旦第三方提供一个交叉平台开发工具,它们可能不会为单一的平台开发增加工具,除非工具能适应于所有平台。如此一来,以后开发者就只能开发最低标准的应用。再次重申,禁锢开发者,使之不能使用我们的创新和增强产品,这是我们无法接受的结果,因为他们没有到竞争对手的平台去。

Flash是一个交叉平台开发工具。让开发为iPhone、iPod和iPad开发出最好的应用,这并非Adobe的目标。让他们为交叉平台开发才是其目标,而且Adobe在增加苹果平台应用方面十分迟钝。例如,尽管Mac OS X已经推出近10年,Adobe直到两周前才完全接受,推出了CS5。Adobe是最后一个完全接受Mac OS X的第三方开发商。

我们的动机十分简单:我们希望为开发者提供最先进、最创新的平台,我们希望他们直接站在苹果平台的肩上,打造全世界最好的应用。我们希望不断增强平台,让开发者创造出更让振奋人心、更强大、更有趣、更有用的应用。要多方共赢,我们卖出更多的设备,因为我们拥有最好的应用,开发者越来越拥有更广泛的用户基础,用户也可以更开心地选择,选择的面也更宽。

总之,Flash适用于PC时代,为PC与鼠标而存在。对于Adobe来说Flash是个成功的业务,我们理解它为何希望能超越PC。但移动设备关乎低功耗,触摸界面及开发网络标准,这些是Flash的短板。

媒体雪崩,出路在于它们向苹果移动设备提供内容,这证明Flash不再是观看视频之必备,也非其它许多网站的必需。苹果应用商店的20万个应用也证明Flash不是成千上万开发者的必需品,没有它同样可以创造更好的、更丰富的应用,包括游戏。

移动时代的新开发标准,如HTML5,将在移动设备上获胜(电脑也将一样)。也许Adobe应该集中精力,为未来打造HTML5工具,而不是成天批评苹果放弃过时的事物。

史蒂夫·乔布斯

2010年4月

 

22
17
评论 共 37 条 请登录后发表评论
37 楼 iMzw 2010-10-11 11:02
HTML5? Flash?

作为一个程序员,选择当下合适的技术才是最重要的。

就算 HTML5 取代了 Flash,难道我们学习一门新的编程技术有那么难么?

以个人喜好来判断技术十分幼稚。
36 楼 timshaw9791 2010-05-15 09:34
hehe, 坐等看JE要过多久才贴adobe反击jobs的《开放市场之我见>
35 楼 huazang_2010 2010-05-06 15:58
zhengyutong 写道
引用
再次重申,禁锢开发者,使之不能使用我们的创新和增强产品,这是我们无法接受的结果,因为他们没有到竞争对手的平台去。


这句话说的正合我意!

做java开发,我感到我是java的主人。
做flash/flex开发,我感到我是Adobe的奴隶。



zhengyutong 写道
引用
再次重申,禁锢开发者,使之不能使用我们的创新和增强产品,这是我们无法接受的结果,因为他们没有到竞争对手的平台去。


这句话说的正合我意!

做java开发,我感到我是java的主人。
做flash/flex开发,我感到我是Adobe的奴隶。



还好;;我现在学习JAVA;;

他们都是各自维护各自的利益;
34 楼 爱死不活 2010-05-05 11:45
苹果的成功不是偶然的,乔帮主的观点我基本同意。

我坚信,Flash最终会成为历史。
33 楼 shinezhou 2010-05-05 09:56
都不是理由。


32 楼 duolaieimeng 2010-05-04 21:19
紧紧看看而已
31 楼 leinlee 2010-05-04 17:56
说起来我还觉得Flash要比苹果更坚挺呢。哪天老乔的心脏再来次不好好干活,苹果说不定又一夜回到解放前了。
30 楼 insistence 2010-05-04 15:51
顶下吧。
29 楼 9527oooooo 2010-05-04 10:27
老乔本次发表言论有失不惑之年的水准 看来人为了利益或者事业可以放弃真理或者公平的 让时间来说吧
28 楼 糊涂虫3000 2010-05-04 10:25
糊涂虫3000 写道
cnlw1985 写道
RIA早晚都得死,HTML5是王道
哥也很讨厌Flash

HTML5与RIA是什么关系?
难道用HTML5不能RIA?
RIA就是FLASH?

顺便提供一下, JE的引用在CHROME下面不能用。
一个引用还得向服务器发个请求。JE看来很强大。
RIA词条:
http://en.wikipedia.org/wiki/Rich_Internet_application
27 楼 糊涂虫3000 2010-05-04 10:20
cnlw1985 写道
RIA早晚都得死,HTML5是王道
哥也很讨厌Flash

HTML5与RIA是什么关系?
难道用HTML5不能RIA?
RIA就是FLASH?
26 楼 wan_2004 2010-05-04 09:39
   利益啊
乔不死不让用flash是因为app store的利益
其他想flash死的都是些不会flash的
25 楼 jxpath 2010-05-04 09:21
风情主人 写道

cnlw1985 写道
RIA早晚都得死,HTML5是王道
哥也很讨厌Flash

哥很不讨厌Flash,但是讨厌RIA和Flex,臃肿、不完善,无法通过更高级的手段进行扩展
24 楼 cnlw1985 2010-05-04 09:06
RIA早晚都得死,HTML5是王道
哥也很讨厌Flash
23 楼 seaks 2010-05-04 04:18
说话很霸气
各有各的优势,为什么非得争那一小块利益,不去发现更大的好处呢?
个人认为HTML5的确比Flash那套有优势
22 楼 tntxia 2010-05-03 22:57
一样都是以美色诱人的公司,同行相见三分眼红
21 楼 ltian 2010-05-03 20:19
文不对题,不知所云!
20 楼 damoqiongqiu 2010-05-02 16:04
吵起来才热闹,否则哪儿有热闹看?
19 楼 bookong 2010-05-02 14:32
神仙打架……
18 楼 七猫 2010-05-02 07:31
其实就是担心adobe借flash抢不少app store吧,毕竟flash能做不少东东,直接跟app store构成利益上的竞争,这可能才是最主要的原因。其他原因都是忽悠吧。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • freeglut vs2015头文件与库文件

    使用vs2015编译的freeglut工程,其中包含了win32与x64版本的debug与release版本库文件。

  • 头文件和库文件

    库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。总结起来就是,库文件通过头文件向外导出接口。用户通过头文件找到库文件中。c语言在编译过程中会经过预处理(需要头文件) -> 编译 -> 汇编 -> 链接(需要库文件);执行时可能还有动态链接过程。头文件中有函数的申明,库文件实现函数的定义。

  • m文件转换为C/C++文件的编译、绘图、参数、打包问题总结

    m文件转换为C/C++文件的编译、绘图、参数、打包问题总结在工程计算相关项目中,常常利用Matlab来完成计算、算法、绘图等功能。使用Matlab来完成这些功能非常简单,Matlab提供的m编程语言功能强大,代码量少。为了在自己的C/C++项目中加入这些功能,需要一系列繁琐的过程,令很多人望之却步。主要的困难在于:l         如何从m文件生成VC可用的C/C++代码;l    

  • matlab 赋值null,NULL

    NULL[编辑]概述NULL的出现是一种约定俗成,事实上它不是C语言中的关键字;把一个指针赋值为NULL,通常的说法是“将指针悬空”。编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。一、词语释义1. ...

  • 头文件与库文件的区别

    头文件以结尾,可以用文本编辑器查看内容。是的。而库文件以(静态库)或(动态库)结尾,是的。

  • 头文件和库文件的使用与区别

    来源:https://blog.csdn.net/qq_33530388/article/details/60138971 作者:hugh Le 一、头文件 在编程过程中,程序代码往往被拆成很多部分,每部分放在一个独立的源文件中,而不是将所有的代码放在一个源文件中。考虑一个简单的小例子:程序中有两个函数main()和abc()。main()函数位于main.cpp,abc()函数位于abc.cpp,main()函数中调用abc()函数。在编译阶段,由于编译是对单个文件进行编译,所以编译main..

  • C语言中的程序环境和预处理

    C语言中的程序环境和预处理

  • 头文件与库文件

    函数的声明和定义,编译过程 声明: 让编译器知道函数的名字,参数,返回类型。可以不存在。一般需要在函数使用之前,一定要先声明,再使用。 定义: 函数的定义就是函数的具体实现。 编译过程: c语言的编译过程是: 预处理(需要头文件)---->编译---->汇编----->链接(需要库文件) 事实上头文件和库文件没有直接联系,头文件的作用就是告诉编译器,函数如何调用和返回,具体调用在链接阶段完成。 #include 两种include #include<xxxx.h> //编

  • Cadence元器件库

    Cadence ORCAD CAPTURE 元件库介绍   Ieee 文件夹    ieee_ 百度百科 美国电气和电子工程师协会 (IEEE) 是一个国际性的电子技术与信息科学工程师的协会,是世界上最大的专业技术组织之一(成员人数),拥有来自 175 个国 ... IEEE       Digital_IEEE_7400               BUS_Driver_

  • python os模块打开文件_Python 文件操作之OS模块

    with open('filepath') as rename:for line in rename:...with 命令下 不用使用close()函数关闭文件,打开的文件在with 代码块下有效。python OS 模块:(import os)os.getcwd() # return the current workin...

  • 链接库和头文件。

    1.头文件 系统标准头文件在: /usr/include 安装库的头文件位置:/usr/local/include/ 如有文件写成这样#include<linux/can.h>对应/usr/include/linux/can.h ,因为他在usr/include找不到头文件,是在usr/include/下目录下,所以必须指出他的完整路径。如果头文件就在usr/include下,就不...

  • .h头文件和.a静态库文件问题记录

    场景: 1. ocilib目录中有type.h和ocilib.c,其中type.h中定义了一个结构体field_struct(其中有一个字段val,开始为char[1024],后来被加长为char[2048]),并且在ocilib.c中被使用,ocilib.c和type.h被编译成为静态库文件ocilib.a 2. svrlib目录中有svrlib.c,其中也使用到了type.h的field_

  • 6.4 库函数和头文件

  • Ubuntu下设置库的头文件路径以及链接路径

    有时候我们自己编译了一个库或者编译了boost或者其他库时候,不想将编译后的Include以及link文件放入系统文件中,那么我们可以通过声明环境变量来指定系统的查找路径 INCLUDE_PATH头文件路径 仅仅需要将XXX用编译库的头文件路径取代然后放入~/.bashrc中 export INCLUDE_PATH=${INCLUDE_PATH}:XXX LIBRARY_PATH链接路径 ...

  • C++头文件和库文件

    头文件是指在C/C++编程中,可以写在程序里面,以#include 的形式包含的文件。对于C语言,一般以.h作为扩展名;对于C++,可以没有扩展名,也可以以.h或者.hpp做扩展名。规范中对头文件的扩展名并没有做约定。 库文件是将一系列的源文件进行编译打包,形成的二进制文件包,其中封装着函数接口,在编程中可以由其它源文件调用。库文件可分为静态库和动态库两种。 二者的区别为: 1 头文件是文本文件,是可供阅读的;库文件是二进制文件,不可直接阅读。 2 头文件在编译中使用;库文件在链接中使用。 3 头文件中是函

  • 菜鸟文档教程

    https://www.runoob.com/php/php-operators.html

  • VS2010添加附加头文件和附加库方法

    下面总结四种方法添加附加头文件和附加库的方法 方法一: 最省事,最低级的方法,直接添加,需要什么添加什么。 在源程序的头部直接添加完整路径: #include "D:\Program Files\MySQL\include\mysql.h" #pragma comment( lib, "D:\Program Files\MySQL\lib\libmysql.lib") 方法二:

  • 头文件与库文件与菜鸟 (转)

    头文件与库文件与菜鸟 (转)[@more@]microsoft® HTML Help Workshop 4.1"> 头文件与库文件与菜鸟 taowen 先说明这完全是我教导一位菜鸟的个人经验。贴在此处供菜鸟...

Global site tag (gtag.js) - Google Analytics