阅读更多

22顶
17踩

Web前端

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

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

苹果和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 条 请登录后发表评论
17 楼 liyaxi 2010-05-02 04:22
一项技术的出现是应运而生,
同时 , 他的消失也是应运而失。
选择自己喜欢的 ,才能发挥特长!
16 楼 liyaxi 2010-05-02 04:19
天要下雨娘要嫁人, 由他去吧!
15 楼 zhengyutong 2010-05-02 00:58
引用
再次重申,禁锢开发者,使之不能使用我们的创新和增强产品,这是我们无法接受的结果,因为他们没有到竞争对手的平台去。


这句话说的正合我意!

做java开发,我感到我是java的主人。
做flash/flex开发,我感到我是Adobe的奴隶。
14 楼 moses3017 2010-05-01 17:46
所有东西被淘汰,都只是时间问题
13 楼 bence 2010-05-01 16:51
不做评论
12 楼 chone 2010-05-01 11:27
html5支持者路过,flash被淘汰只是个时间问题
11 楼 leonmaybe 2010-05-01 11:23
还不是为了那几个铜钱~~~
10 楼 geminiyellow 2010-05-01 11:06
我喜歡看吵架
9 楼 cjx186 2010-05-01 10:23
枪文!!!
8 楼 gakaki 2010-05-01 10:21
去9RIA.com 看看 然后就是一片flash 支持者

站在中立的观点看 我同时开发 objective c iphone ipad,也开发android,最新的cs5的adobe air我也已经开始了。

老实说老乔不能说全队 ,但也有道理,,你说adoe air 他怎么做adnroid的menu功能呢。。。。。多线程的话adobe air
又怎么应对呢。。。


显然不可能做到完全的平台通用性。。。。肯定第三方api要慢于第一方的

总之对于三平台都要做的手机开发人员来说,,被夹在当中真是辛苦啊。。。。
去看看51job上怎么招手机开发人员的。。。

真累老实说
7 楼 rovanz 2010-05-01 09:37
名人放个屁都能成为新闻,javaeye真垃圾
6 楼 troyconder 2010-05-01 09:29
不关心flash技术的飘过
5 楼 treblesoftware 2010-05-01 08:55
史蒂夫·乔布斯  看来也不过如此
自己不爽,不能代表大众。你个人封杀好了,何必还出个鸟文?
4 楼 netlzh 2010-05-01 08:54
这不是枪文吧?乔布斯自己发表的
3 楼 chandler 2010-05-01 07:48
简单的说。就是如果允许apple的东西用flash。那么apple就会对其平台失去控制权。其实都是瞎掰。而为什么apple需要平台的绝对控制权。因为其自身的技术完全不够支撑一个完全开放的平台。
2 楼 xieye 2010-05-01 06:24
感觉此文很有用!
1 楼 fight_bird 2010-05-01 02:36
很反感javaeye一再出现此类枪文!

发表评论

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

相关推荐

  • C语言头文件库

    C语言头文件库大全,工具下载安装后扣出的所有头文件。

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

    来源: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语言中,头文件、源文件和库文件的关系(转)

    以下是原文内容,方便自己以后查看,侵删。 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段  2.词法与语法分析阶段  3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成

  • 头文件与库文件

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

  • 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...

  • Cadence元器件库

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

  • C语言从头学05——头文件及库文件

    介绍C语言有关头文件及库文件的基础知识。

  • 头文件和库文件

    头文件 头文件存放函数的定义没有实现,比如qt里面分为.h和.cpp, .h只是声明了一下,.cpp才是具体的实现 库文件 写的.cpp不想让用户看到,只是给他定义,那么就可以将.cpp编译成库文件,库文件是二进制的,在库文件里面看不到具体的代码。库文件不是独立程序,只是一个方法。 将库文件链接到程序中有两种方式一种是静态链接库,第二种方法是动态链接库,两者区别是静态链接是直接加载到内存,而后者是需要的时候再导入内存。 在win里面静态库文件是.lib 动态库文件是.dll 在linux..

  • 链接库和头文件。

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

  • 头文件+源文件、动态库和静态库、宏定义

    关于静态库与动态库的作用与用法

  • 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

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

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

  • ubuntu 中的 C 环境的 头文件 和 库

    头文件在 /usr/include 库在/usr/lib/i386-linux-gnu/libc.so 转载     http://wenku.baidu.com/view/c2958ce86294dd88d0d26b4c.html### linux下的头文件和库文件搜索路径 include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。当初在编译

  • 【Linux/gcc】C/C++——头文件和库

    【Linux/gcc】C/C++——头文件和库。

Global site tag (gtag.js) - Google Analytics