iTunes和Cocoa

约翰纳克发布一个好恶魔的倡导者关于iTunes是否以及为何应该使用64位Nack问道:

  • Do people really have performance problems* with iTunes as it is? I never haveIt filters my 3,000-item library as fast as I can type, does a lovely job with HD video, and whips through album art in Cover FlowI can’t recall others complaining, either.
  • Do they want iTunes to use more than 4GB of RAM? I think we can safely say “No.”
  • 他们是否抱怨用户界面(例如non-standard scrollbars) and think that Cocoa will make iTunes more “Mac- like”? Again, I haven’t heard complaints (or rather, only荒谬的)。

So what, then? Let me put it another way: If you were directing the iTunes team’s efforts, why would you — as a customer — tell them to spend their time on Cocoa and/or 64-bit, at the expense of doing other things customers want?

我,在所有人中,当然从来没有一个人为了让Cocoa变得更好而仅仅因为它是Cocoa而争论Carbon-to-Cocoa重写64位也是如此真正重要的是功能和用户体验,而不是让他们使用的开发技术。

当我说苹果最终将iTunes推向Cocoa和64位似乎不可避免时,并不是因为这两件事本身就会大大改善软件的功能和体验我说,这似乎是不可避免的,因为苹果已经几乎他们所有的“系统软件”到64位查看第一个脚注Apple的Snow Leopard Technology页面

All system applications except DVD Player, Front Row, Grapher, and iTunes have been rewritten in 64-bit.

几乎Mac OS X附带的所有其他功能现在都是64位。1Were customers demanding a 64-bit Dock? Has anyone’s life been changed now that the Dictionary app is 64-bit? Of course not对于某些应用程序来说,转向64位确实取得了明显的性能提升,但Apple将几乎所有应用程序迁移到64位的原因仅仅是因为它现在是他们认为构建Mac软件的最佳方式他们以身作则,为未来做好准备。

仪是最好的例子来比较iTunesSnow Leopard Finder不仅需要从32位移植到64位,它必须从Carbon移植到Cocoa在Mac OS X的早期,Finder是Apple在WWDC上作为其“狗食”示例的应用程序 - 证明它使用Carbon API作为必备应用程序这是碳典范。

No matter how modern a Carbon app the Finder was (insofar as that it was written specifically for the then-new Carbon APIs on Mac OS X, not a port of old classic Mac OS code), it must have been a lot of engineering work to port it to Cocoa — with the result being an app that most users won’t notice being any different at all from the Carbon Finder in 10.5.John Siracusa描述了新的Snow Leopard Finder从而:

The conversion to Cocoa followed the Snow Leopard formula: no new features… except for maybe one or twoAnd so, the “new” Cocoa Finder looks and works almost exactly like the old Carbon Finder. The biggest indicator of its “Cocoa-ness” is the extensive use of Core Animation transitions.

斯文-SPorst有点苛刻

In short, people probably put a lot of effort into creating a Finder that sucks just as much as the old one but which can tag itself with the labels ‘64bit’ and ‘Cocoa’.

可可不是神奇的小精灵尘埃本身使得Finder从根本上变得更好But so why did Apple bother? Because Cocoa and 64-bit are the future of Mac OS X并且,对于许多新的API,它们是当下锡拉库萨指出在他的Snow Leopard评论的64位部分中:

The second big carrot (or stick, depending on how you look at it) is the continued lack of 32-bit support for new APIs and technologies豹开始了这一趋势, leaving deprecated APIs behind and only porting the new ones to 64-bit. The improved Objective-C 2.0 runtime introduced in Leopard was also 64-bit-only.

雪豹继续沿着类似的路线前进The Objective-C 2.1 runtime’s non-fragile instance variables, exception model unified with C++, and faster vtable dispatch remain available only to 64-bit applicationsBut the most significant new 64-bit-only API is QuickTime X.

简而言之,有新的Mac OS X的api和功能只要可用于64位应用程序,并且因为没有64位Carbon API,64位应用程序含蓄地意味着64位Cocoa应用程序

碳尚未被弃用没有任何警告称现有的Carbon API将在未来版本的Mac OS X中消失一些最大和最受欢迎的第三方应用程序,如Microsoft Office和Adobe CS套件,都是Carbon即使这些应用程序的下一个主要版本都被移植到Cocoa,也有很多Mac用户想要继续使用他们已经购买的版本而且,即使你不相信Apple支持第三方Carbon开发者的动机,也要注意几乎所有Apple自己的“Pro Apps”,就像那些Final Cut Studio,仍然是碳应用程序。

也许碳api永远不会消失,但我不会打这个赌他们当然不会消失不久但是决不好久不见而Apple的新东西都是64位的。

自从计划用于64位碳后,写作一直在墙上在WWDC 2007上毫不客气地制作了它几年后,Classic Mac OS环境就消失了默认情况下不再使用Snow Leopard安装Rosetta(PowerPC模拟器),我的猜测是它在10.7中根本不会包含Apple不只是向Mac OS X添加东西 - 他们删除旧东西Carbon并没有被弃用,但Apple显然认为它是传统技术,并且Apple已经表现出强烈的制度厌恶遗产任何东西。

雪豹的最了不起的事是,比之前版本的系统它是一个操作系统 - 而且,它回归到NeXT的根源,一直在发展,而不仅仅是在成长Apple不只是添加它他们修剪他们流失跟踪记录显示,当涉及到将旧技术引入后门时,他们会错误地站在后门太快了而不是冒险让它徘徊太久Apple担心事情的方式应该远远超过它对事物的连续性的担忧以前是

用户的Cocoa优势

由于64位Cocoa魔法,64位Cocoa版本的iTunes不会更快地与你的iPod同步但是新的Snow Leopard Finder展示Cocoa重写的微妙方式为用户带来了实实在在的好处系统范围的服务可以通过“服务”菜单在Carbon和Cocoa应用程序中运行,但只有Cocoa应用程序可以使用the new-to-Snow-Leopard contextually-aware services在上下文菜单中这是Apple向Cocoa添加的东西,因此所有Cocoa应用程序都“免费”,包括新的FinderiTunes 9,因为它是碳,没有。

另一个例子长期的DF读者可能会记得“高度选择性“,三年前我写的一篇文章,关于使用键盘在列表中选择多个项目的两个UI模型:锚定和未锚定我认为(成功,事实证明)支持锚定模型,并对Cocoa和大多数Mac软件使用未锚定模型这一事实感到遗憾那在豹中改变了当Apple改进Cocoa标准列表控件(NSTableView)以使用锚定模型时突然间,所有Cocoa应用程序从劣质的无锚选择模型切换到优越的锚定模型但是像iTunes和Finder这样的Carbon应用程序中的列表选择保持不变(并且,唉,未经修复)。

Snow Leopard Finder,现在它是一个Cocoa应用程序,提供锚定选择iTunes 9,仍然是Carbon,没有These little bits of functionality and system-wide consistency constitute the Cocoa advantage.

iTunes与Finder的最大区别在于iTunes是跨平台的没有Windows版本的Finder(甚至在Mac上,iTunes 9仍然在10.4和10.5上运行,而10.6 Finder只需要在10.6中运行。)与大多数Mac / Windows跨平台应用程序一样,Mac版本是Carbon,而不是Cocoa大多数(如果不是大多数)原因都是历史性的 - 大多数大型跨平台应用程序的历史可以追溯到十年前,当时Mac版本无法用Cocoa编写,因为Mac OS X还没有出来这对于Microsoft Office来说确实如此,对于Adobe的CS套件来说也是如此,对于Firefox来说也是如此,对于iTu​​nes来说也是如此。

事实上,一个很好的反例来自Adobe。Lightroom中是一个跨平台的应用程序,Mac版本不只是Cocoa,它是我知道第一个主流的Cocoa应用程序支持64位模式(甚至超过Apple本身)If and when iTunes does make the move to 64-bit Cocoa, I expect it to resemble Lightroom architecturally: relatively thin UI layers written with the native Mac and and Windows APIs, with most of the code residing in cross-platform compiled libraries and scripting runtimes但是Lightroom使用了LUA作为一个跨平台的脚本运行时,我的钱说Apple会将WebKit用于iTunes。

今天在iTunes中越来越多地使用WebKit可能是朝这个方向迈出的一步Apple不必为新的iTunes LP内容或新的iTunes Store编写单独的Mac和Windows渲染器 - 他们只使用了WebKit,它已经在两种操作系统上运行良好。

而且,当然,Apple本身有一个很大的跨平台应用程序,它是Snow Leopard上的64位Cocoa应用程序它叫做Safari。


  1. 结束Podcast Capture(在/ Applications / Utilities中/文件夹,仍然是32位Not sure if there are any others Apple’s footnote neglects to mention. ↩︎