繁体   English   中英

为什么Apple允许在iPhone上使用.NET但不允许使用Flash?

[英]Why does Apple allow .NET on the iPhone but not Flash?

根据我的理解,Apple已禁止在iPhone上使用Flash运行时,因为Apple不希望通过自己的工具提供替代的运行时环境。 据Apple称,允许Flash运行时允许开发人员规避Apple已实施的应用程序更新策略和其他控制措施。 而目前,Adobe还没有选择构建工具来静态编译在Flash中创建的应用程序。

我的进一步理解是,通过MonoTouch创建的.NET应用程序是静态预编译的,并且作为本机代码而不是在.NET公共语言运行时(CLR)中运行,而苹果公司肯定不会这样做。 由于.NET代码不是在微软的运行时执行,而是在iPhone CPU上执行,Apple并没有抱怨。

我的问题是:

  1. 我是否正确为什么Apple允许在iPhone上使用.NET开发的应用程序?

  2. iPhone上(或我认为的任何平台)上的一个供应商的预编译本机代码是否可以与其他代码区分? 换句话说,MonoTouch生成的本机代码是否与编译后的Objective C代码生成的本机代码无法区分? 原生代码的来源是否完全不透明?

正如您刚才所说,Apple并不是“允许”在iPhone上运行.NET - 无论是使用MonoTouch开发还是使用Cocoa或COBOL编写应用程序,或者无关紧要; 它只对它编译的内容很重要。 它可以用JavaScript编写,也没关系。

如果我用英语写一些东西,然后将其翻译成法语,法国读者可以说原始版本是用英文写的吗? 也许,可能不是,这完全取决于翻译的特点,而不是读者。 所有苹果需要的是你给他们的版本是用法语。 到目前为止,它没有任何区别。

对此的逻辑扩展是,理论上,您可以编写用于创建自包含iPhone二进制文件的Flash文件的编译器。 如果在Flash中开发对您来说很重要。 这可能已经或可能没有 这已经完成。

MonoTouch所做的就是将Mono代码音译为目标C并将其编译为本机代码,因此一旦编译完成,即使使用Mono也能“运行”。 它实际上是单声道代码的包装器,它被转换为等效的目标C本机代码和运行时库。

它们本身并不是.NET运行时代码。 所以没有真正可区别的差异! 一旦它被编译为本机代码就是它。

Apple并不关心VM在iPhone上的运行情况。 它关心允许在iPhone上运行外部非appstore代码。

这就是为什么Apple不关心Adobe提出的制作独立Flash应用程序的“Flash编译器”的原因。 这就是为什么Apple不关心编译的.NET项目。

回想一下C64仿真器的问题。 Apple只关心它捆绑了内部BASIC,但仿真器是VM的完美示例。 该VM正在执行的所有C64代码都是6502机器代码。 但是模拟器缺乏从网络下载任意代码并执行它的能力。

这就是Apple关心的问题。

看看这里,苹果

它是Adobe,而不是为各种OS /设备开发Flash的Apple。 Adobe一直无法为iOS设备开发出令人满意的Flash。

http://www.apple.com/hotnews/thoughts-on-flash/

1 - 你非常正确。 我不会说苹果“允许”平台上的MonoTouch应用程序,他们只是没有公开表达任何内容,并且应用程序商店中已经有一些MonoTouch应用程序。 并不意味着明天他们不会开始阻止他们。

2 - 我对Mono Touch的内部结构并不了解,但我认为必须有一些MT应用程序具有的共同特征(它扩展二进制大小的方式,在那里必须有一些共性)Apple可以用来单独出来。 当然,这可能需要花费极大的努力才能带来很少的好处,而且他们可能宁愿花时间来获得3.2以及更高的出门率。

我认为你对用于开发本机应用程序的工具与Apple希望在Safari中支持哪种浏览器插件之间的差异感到困惑。 完全不同的概念。 我想你应该阅读John Gruber最近发表的一篇关于为什么Flash可能永远不会出现在iPhone或iPad上的相当全面的理论。

看来你很快就可以直接从flash制作本机iPhone应用程序了。

http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

知道这些应用程序的性能会很有趣,但对于通用媒体/营销/业务部门,我认为这正是很多应用程序的用途。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM