品评 OS X Mavericks ——唯快不破(下)

Maver

本来触动我写这个系列的原因就是 Mavericks 的快,所以起名唯快不破。结果拉开架势写了两篇都还没有写到这个快字,真够失败的。今天的终结篇将主要介绍 Mavericks 是如何做到「多快好省」。

更正1:Java 从 Lion 开始就不是 OS X 的一等公民了,而是按需安装,但是之前 Lion 和 ML 升级时不会干掉原有的JRE,所以 Mac 君没有觉察,这次他们干得更彻底一些。

更正2:双屏显示的时候,在扩展的桌面空间里也可以出现 Dock,具体操作方式是鼠标在屏幕下方滑动两次,就会呼出该屏幕的 Dock。但是这个功能还不稳定,经常发生呼不出来的现象,等正式版吧。

更正3:Ant 被干掉了,Maven 保留着。看来自古都是「但见新人笑,那闻旧人哭」。依然想使用 Ant 的童靴可以执行以下脚本安装:

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/ant.rb

性能:唯快不破


一个操作系统除了功能性和安全性之外,考虑最多的就是迅疾如风的响应速度和持久的续航能力,这次 Mavericks 的升级使用了多种技术保证了 OS X 的快和节能。

(一)Kernel

OS X 的内核基于 FreeBSD和 Mach3.0构建,可以通过32位或64位内核启动系统,并充分发挥32位或64位应用程序的运行效能。在64位内核的情况下,Mavericks 经测试可以最大支持 128G 的物理内存,这特么就是个服务器版本啊。

(二)Compressed Memory(内存压缩)

内存压缩技术是 Mavericks 新增加的底层技术,这货彻底提升了整个系统的使用容量和响应速度,也就是说你可以开启几十个应用程序,在联动内存超过80%,物理内存使用几乎达到100%的时候,依然可以像整个系统只打开了一个程序那样,毫无顿挫感的使用每一个打开的程序,这种美妙的感觉让人想想都要流口水的。

具体原则就是永远去满足最需要内存的程序,当内存告急的时候,系统就会根据时间顺序去寻找那些不活跃程序的内存,将其压缩到一半大小,然后把内存倒出来给最需要的程序。当这些被压缩了内存的程序活跃起来的时候,系统会以最快的速度释放内存,让你切换程序毫无顿挫的感觉。

这就像一个家族企业,哥哥姐姐弟弟妹妹各有各的生意,有一天大哥说要干一票大的,这时候其他人就会把手里的闲散资金贡献出来给大哥用,当有其他人也想拓展生意时,也是一样的路数。资源虽然有限,但总能让最需要最活跃的人获得足够的资金。当然前提是活跃的人数是有限制的,都活跃了这个游戏就没法玩了。

Mavericks 的内存压缩采用了 WKdm 算法(http://terpconnect.umd.edu/~barua/matt-compress-tr.pdf ),这个算法巨牛无比,压缩和解压缩可以说唯快不破。我查了上面提到的论文,这算法也有年头了,不知道为毛现在才翻出来使用。这种压缩技术比硬盘 Swap 交换技术要快,即使是 SSD 硬盘也无法比拟。内存压缩的使用,在增加内存使用效率的同时,还减少了硬盘的读写次数和 CPU 的占用率,另外,与传统的虚拟内存技术不同,这玩意还能充分利用多核 CPU 的特性,实在是牛到逆天。

所以,大家如果总是把创新定在 UI/UE 的变化上是图样图森破的,没有技术底蕴都是昙花一现。

为了测试内存压缩的效果,我开启了三十个左右的GUI程序,包括各种浏览器、阅读器、办公软件、开发工具(IntelliJ、Eclipse、Xcode 和模拟器),其中 Safari 和 Chrome 分别打开了几十个标签页,整个系统什么感觉都没有,运转如飞。于是开始出大招,打开 Parallels Desktop,开启了三个 Linux 和一个 Win7,整个系统的内存变化如下图所见(见网站),红色部分表示内存压力高的时候,也就是我逐一打开四个虚拟机的阶段。这时系统终于有反应了,程序切换略有卡顿,但是依然不影响独立程序的使用。关掉一个虚机之后,这个系统又恢复如初了,性能远超上一代的10.8 ML。

mem

(三)Power Efficiency(电源效率)

Mavericks 中的电源技术是根据现代处理器的功能和程序需求构建的,可以有效的延长电池的续航时间,简单来说就是当你的电脑在使用电池供电时,系统会把后台程序的功耗降到最低,尽可能只帮你处理激活窗口的程序,并根据 CPU 的具体使用状况尽可能让各处理器处于 idle 状态,一旦有需要再满负荷运行。比如我现在正在打字写文章,CPU 和硬盘都会处于低功耗的状态。系统对大功耗的后台程序做了严格的控制,并且会通过电池状态告诉你哪些程序是不合格的,以方便你随时干掉这些程序。

perf

很牛的技术,但苹果没说怎么实现的,杯具!

(四)App Nap(程序挂起)

这个技术叫程序挂起也好,程序休眠也好,事实上是和Power Efficiency结合使用的。系统会把你暂时不用的程序,或者不可见的程序迅速而强硬的置于休眠状态,比如你开了三个 Safari 窗口,每个窗口开启了30个 标签页,一共访问90个网址,但是你只能同看一个或几个页面,这时候其他标签也都会被置为挂起状态,当你进行标签也切换时再迅速唤醒。并且在你访问 Safari 的时候,其他不可见的程序都会被置为挂起状态,限制程序向 CPU 发出中断请求,降低磁盘和网络 I/O。同时,App Nap技术还降低了 UNIX 基础进程的优先级,以保证系统的低功耗。

写过程序的都知道,这基本上就是一种懒加载技术,使用的时候才加载,但最神奇的是,系统在做了这么多限制之后,一旦某个程序需要处于激活状态,系统就会开足马力将其唤醒并提供足够的资源,让用户完全感觉不到有休眠和挂起这回事,这让我个人感觉非常悲伤,因为完全不知道人家是怎么实现的。

人比人死,货比货扔,没啥说的。

(五)Timer Coalescing(计时器聚合)

最后说说计时器聚合的技术。传统的应用程序在运行的时候向 CPU 发请求是杂乱无章的,这就搞的 CPU 很烦,因为永远不知道什么时候能休息,刚眯一下会就可能被叫醒的程序员你们感受下。

比如一位忙碌的程序员,几十位上级轮番上阵的向程序员要资源要成果,而且不分场合不分时间不分类型,长此以往,代码必将写无可写,因为程序员已经疯掉了。这时候就需要一个秘书出现来梳理这些请求,定时定点分门别类的处理,这样程序员的工作就轻松多了,有了计划性,还能得到休息。计时器聚合就是 CPU 的秘书,它会把请求进行梳理,通过合理的时间管理保证请求的有序性和间歇性,这样 CPU 就会有更多的低功耗休息时间,具体的处理示意图如下,表示处理之前和之后的CPU 时钟对比。同样,用户完全感受不到这位秘书的存在。

timer3

好,以上内容根据苹果提供的 OS X Mavericks Core Technologies Overview 演绎而得,如有雷同,必是他人抄袭。

遗留问题


目前这个 DP5 的版本已经达到工作机可用的程度,但问题也不少,如下:

  1. 外接显示器启动 Mac 的时候你会看到左右两个灰灰的界面,如果你一直等下去的话,夏去秋来也不会有结果的。拔掉外接插头,你就能看到那张熟悉的脸(登录界面)。
  2. 多屏的情况下鼠标经常会失去焦点,如果你发现某个页面怎么也无法滚动时,不要怪罪你的食指,一定是有另一个程序在后面骂娘,「老子已经在后面归隐多时,为毛还要被反反复复的拖来拖去?」
  3. 总体来说,Mavericks的 UI 并没有太大的变化,但是时而扁平时而立体的效果,还是容易让人产生困惑,我们期盼两岸尽快统一起来。
  4. 程序的稳定性仍需加强,比如 Safari、iBooks等,每天还能崩溃一两回,iBooks 的性能和渲染也是问题,丫经常把自己搞得很慢。日历也经常出问题,你会发现周历和月历突然不能滚动了,或者用着用着事件的颜色被偷偷的修改了,总之,凡做过大手术的程序,都不稳定,Xcode5.0 没敢升级,不作死就不会死。

希望下一个预览版能够解决这些问题。

另外,应部分童靴的要求,我把Mavericks 10.9 DP4完整镜像包和DP5的升级包的下载链接都放到了这篇文章的后面,感兴趣的可以去试试,尝试新鲜事物永远是保持内心鲜活的动力之一,但这毕竟是给开发者的预览版,记住两点:

  1. 先备份
  2. 杯具了就别来找我

DP4安装镜像:
SHA1 9578dfd2f8fba1a574cf792013af62d0930ba00e
原始地址 百度网盘

DP5升级包:
SHA1 f8a48a662463855abb093ce3a2a67e35c6f42296
原始地址 百度网盘

三篇写完,颇感疲累,我要休息一下,这两天别等更新了。


希望长期听 MacTalk 可以在 macshuo.com 上赞助,谢谢。

品评 OS X Mavericks ——唯快不破(中)

Mavericks2

昨天发了上篇之后,很多人发来贺电说,Mavericks不就是达拉斯小牛吗?怎么成冲浪胜地啦。我建议大家去苹果官网看看 OS X 10.9的 logo,那一片大浪啊……实在不行去维基百科查查,总之,这里提到的Mavericks和达拉斯小牛的一根牛毛关系都没有,请大家暂时忘掉牛,想着浪。

小伙伴们看了昨天的文章之后说了句天津话,这有嘛?我说别急啊,时光都穿梭到2013年了,如果你还认为升级就是改改 UI/UE 那就太 Naive 了,事实上这次 Mavericks 真正动大手术的地方在底层的技术框架上。我们会在性能一章着重描述。今天讲讲应用软件的兼容性和新功能。

应用软件


1、兼容性

一看到这个标题估计就有童靴扔砖头了,不是说所有软件都不需要重新安装么?请注意,Mac 君在「所有」之前加了「几乎」二字,行走江湖……你们懂的。

所以,升级完成之后有几个地方还是需要修缮一下的。

首先,JDK 没了,这在前几个操作系统升级时是从未发生过的,最多默默的帮你把 JDK5升级为6,而这次是默默的把 Java 干掉了,难道库克大爷和 Oracle 的埃里森结下了梁子?总之,Java 在 OS X 上一直充当一等公民的日子结束了,但也没那么惨,当你需要运行 Java 相关的应用时,系统会自动提醒你安装 Java 框架,比如你想打开 IntelliJ 或 Eclipse,Mavericks就会问你要装 Java 么,你说是的,人家也不会为难你,分分钟就帮你装好了。装完之后,所有相关的程序就都可以正常运行了。

Python 比 Java 麻烦一些。Python 依然是 OS X 的一等公民,并且版本升级到了2.7.5,但这个升级导致的直接后果是以前安装的那些库统统都不见了。比如Django、ElementTree、Markdown、html5lib、MySQL-python等,甚至 bpython 和 ipython 两个增强型 shell 也需要重新安装,让人愤愤不平。这还不算,用easy_install安装时出现的编译错误是你躲不开的宿命,这时候是不就想骂娘了?别急这才刚刚开始……

发生编译错误是因为 Xcode 的 command line tools 没装,在 OS X 里玩命令行没有这货是万万不行的。这时你微笑着打开 Xcode,找到Preferences—Downloads—Components,发现,command line tools 的安装包不见袅!再一次,Mavericks 把 XCode 4.6.3的 command line tools 全部干掉了,而且你还找不到单独的10.9的 command line tools 安装包,当你想装10.8 的包时,系统会明确的告诉你版本不合适,想都别想。

在诅咒了这个万恶的强删制度以后,我决定使出杀手锏和 Plan B,在命令行输入xcode-select --install,这时会弹出一个选项框,问你是去下载 Xcode 还是直接安装,选择安装,你会发现,总会有解决方案的。 xcodeselect

我担心的Parallels Desktop 8和 Papers 2都可以正常使用,用来干活的 JetBrains 系列和 Eclipse、Xcode 4.6.3 都没什么问题。

Ruby 升到了 2.0,在经历了这些之后,我决定让别人去填坑,自己则无耻的跳了过去。

其他我用到的几十种软件大部分都能正常使用,兼容性测试到此结束,简单来说,这个预览版是可以投入日常工作使用的!

2、新成员和新改进

iBooks和地图是 Mavericks 新增的原生软件,尤其是iBooks,在第五个预览版首次发布。

(一)iBooks 的功能类似 Amazon 的 Kindle for Mac,支持云同步,支持打开本地文件,可以做笔记和书签,iBooks 对应的文件格式是 epub,Kindle 是 mobi。除了普通电子书,iBooks 还能够支持多媒体交互式电子书,比如那本著名的《Life on Earth》,在 Mac 版的 iBooks 上显示效果相当惊艳。

终于能够在 Mac 拥有 epub 书籍的完美体验,我感觉心满意足。当然,这个新版本问题也不少,崩溃、渲染问题、性能等都像最近的地震一样说来就来,期待最终版。

ibooks

(二)地图就没什么可说的了,就是一个原生的地图软件,大家去看官网介绍即可。

(三)Finder 新增了 Tab(标签) 和 Tag(标记)功能,标签这个功能已经被用户吐槽很多年了,在看到苹果迟迟没有动静的情况下,程序员们愤怒的开发出了 TotalFinder 和 XtraFinder这样的软件来告诉苹果,没有你妹一样可以用 Tab!Tag的功能可能创意来自互联网的标签云,现在我们除了可以为文件和文件夹标记颜色,还可以打标签,并把这些标记过文件一次显示出来,Mac 的文件系统也向着扁平化多纬度管理浩浩荡荡的进军了。目前Tag自身的管理比较弱,就一个列表,这要是有50个 Tag 基本会疯掉,期待改进。

(四)日历和备忘录的 UI 都重新设计了,尤其是日历的改进,除了设计简约清新之外,周视图可以左右滚动,月视图可以上下滚动,阅读和记录更加方便,事件还能直接与地图位置绑定。备忘录去除了拟物化设计,界面采用了白色和淡黄,字体用了手札体。

calendar_inspector_2x

(五)Safari 的性能、阅读器、边栏、Top Sites 都进行了重新设计。阅读器有了更好的阅读体验,基本不需要其他插件了,但取消了底部的设置和导出打印的功能,不知何解。边栏提供了书签、阅读列表和共享链接三个功能面板,和 iOS7的 Safari 一模一样。共享链接会列出你在微博、Twitter上跟随的那些小伙伴分享的链接,让你一个链接都不放过。

Safari 这次发布的版本是7.0,在高速缓存、页面解析和平滑滚动上做了很大的优化,如果网站和带宽足够,网页几乎没有刷新和加载的感觉,瞬间开启,让你产生一种MD出事了的错觉!长页面上下滚动几乎没有停顿感,我用Quartz Debug测试了一下,FPS 能达到60帧,相当强悍。

safari

(六)监视器的 UI 重新设计、功能增强,为 CPU、内存、网络、磁盘提供了更多图形化的系统信息,界面设计也隐约透出扁平化的味道。

(七)双屏或多屏支持放到最后说,是因为这个功能太赞了。这次多屏的改进并不是扩展或辅助屏幕,而是为扩展显示器增加了一个桌面空间,比如你的 Mac 原来有三个桌面空间,外接显示器时,系统会默认为你创建第四个桌面空间,并在扩展屏里显示,这个空间是完全独立的,除了没有 Dock,其他和主屏完全一样。这样做的好处就是两个屏幕是完全独立的,互不干扰,如果你的机器足够强悍,都可以当两台电脑使用,爱全屏全屏,爱切换切换,互不侵犯,各自为政。对于多桌面空间爱好者来说,吸引力这绝对是致命的。

通知和 iCloud Keychain 就不细说了,总之让通知和密码保存更加方便,大家届时自己体会吧。

本来想今天一把写完,结果发现自己太幼稚了,只好把「下」改成「中」,明天再谈谈性能和目前存在的一些问题。

品评 OS X Mavericks ——唯快不破(上)

Mavericks1

2013年6月11日,苹果的 WWDC 大会结束的第二天,我就升级了 iOS7,还写了两篇文章(回复 wwdc 回顾)。那时就读者问,为什么不顺手把 Mavericks 也升了呢?

其实无论是 iOS 的beta 版,还是 OS X 的开发者预览版,都是为了开发者测试和适配现有软件程序并提交 bug 的,苹果不会保证其可用性,尤其是前几个版本,系统崩溃、变砖、发热耗电、断网都非常可能,你看着千百个 App在你面前挥舞但一个也不能用时是不会有人同情你的,甚至可能有代码界的达人慢慢的踱过来安慰你说,「该,谁让你丫升级了!」,让你觉得世界残酷无比。那我为什么升级 iOS 7 呢?第一,我觉得出了问题自己能 Hold 住,第二,别看大家每天走路开车冒着被撞飞和撞飞别人的风险低头看手机,但是手机只要能够打电话和发短信,就不至于耽误大事。OS X 就不同了,那是工作和学习的必须品,我可不愿意冒风险花时间去折腾Mac,所以 Mavericks 一直没升。

前几天 Mavericks 的第五个预览版发布了,先问了几个朋友都说比较稳定,后外事不决问 Google,得知我必须用的几个软件都已经有新版本兼容了,遂决定周末花时间升级,并在微博上发布了这一消息。这时就看出人品了,马上有达人发来祝福,「无数事实证明了一个颠扑不破的真理——不作死就不会死啊,兄弟」,我毅然回复,「哥行走江湖靠的是个稳字,早就备份袅」。

插播一句,自从开通了 MacTalk,有无数的人跑来问文件误删除了怎么办,系统挂了怎么办,硬盘坏了怎么办?一问之下都是没备份过的,为什么不备份,一部分不知道,一部分嫌麻烦。在这里我只能通过MacTalk再次告诉大家,「苹果为 OS X 开发了一个叫做时间机器(Time Machine)的软件,不是让大家混不下去的时候穿越到清朝去找格格玩的,而是为了备份你的操作系统和重要文件的,Mac 君只能帮你们到这里了…」。

于是,我周末准备了茶、咖啡、啤酒和披萨,一边欣赏羽毛球世锦赛,一边完成了 Mavericks 的升级,整个过程无比顺利(人品好没办法),下面聊聊升级过程和使用体验。

Mavericks的命名


OS X 向来是用我心爱的大猫命名的,比如 Leopard,Lion等,这次不知道怎么发神经用了个加州冲浪胜地的名字,让我非常困惑,到现在也不知道中文名字是什么。而且这个名字似乎很难记,我发微博时把 rick 写成了 risk 居然没有被各类「错字控」和「错字党」发现,可见一斑。总之,大猫没了,让人伤感,而且,你不知道下一个版本会叫什么名字,难道找个攀岩胜地么?

安装


再说一次,安装之前先用Time Machine 进行系统备份,保证你可以随时恢复到现在的系统状态。

下载OS X Mavericks 10.9的第五个开发者预览版,把安装程序拖到应用程序文件夹,双击安装即可。因为是升级安装,所以过程傻瓜的令人发指,选择一下安装磁盘,剩下的事情就交给安装程序了。我看完一场羽毛球比赛后回来,发现系统已经升级完成。

有童靴问什么是升级安装?这么理解吧,有一天你很累,早早就睡下了,这时候一个装修队趁着夜色的掩护偷偷进入你的豪宅进行了一次升级装修。等早晨的闹钟轻轻敲醒沉睡的心灵,你慢慢张开自己的眼睛,发现一切似乎都不一样了,但所有的东西都在,家具和电器换了新的,但衣物、摆设、位置都没变,甚至你上次打开的电视频道都保留下来了,总之系统已经不是那个系统,但你的个人设置(Profile)都保存下来了。 OS X系统的每次升级都是如此,安装完成后几乎所有软件都不需要重新安装,甚至你打开文件的进度、Safari 的 Tab 页都会被作为状态保存下来。我从第一次使用 Leopard 之后再没有重装过系统,要么升级要么恢复,就是这样。

用户体验


升级完成登录系统,我的第一感受是「MD 被骗了,什么变化都木有啊魂淡」,接着才进入第二感受,以下均为第二感受的体验。

1、去材质化

其实看到登录界面就会感觉有所不同,但由于只是背景材质的改变,所以容易让人忽视。Lion 系列的登录界面背景是亚麻材质的灰黑色图片,苹果的 Logo 也带有镌刻的立体感,Mavericks 的登录则极为简洁,纯灰色的背景和白色的 Logo,登录用户头像也被妥妥的拍扁了。

通知界面的背景也做了同样的改变,由亚麻背景改为纯色。Launchpad 则彻底与当前桌面的色系融为一体,取消了二级文件夹打开显示纹理背景的设计,这一点与 iOS7 的毛玻璃效果有异曲同工之效。Dashboard 空间的背景也由原来立体的圆变成了横竖交织的线。

mvr1

至此,就我的观察,Mavericks 基本完成了所有背景材质的去除,从早期充满贵族气息的金属拉丝和近期沉稳含蓄的纹理设计,都不会出现在新的 OS X 中了,一个时代已经结束。

2、扁平设计

Mavericks 在 OS X 的扁平设计上做了一些尝试,比如登录界面,新应用 iBook 和地图的图标,日历、通讯录、备忘录和活动监视器的新设计,都显示了 OS X 的扁平化趋势,那为什么没有对所有的原生程序进行全新设计?我估计一个是时间上的问题,另一个是 OS X 的演进一直是潜移默化的,可能还不到大变脸的时候。老话,路要一步一步走,走的过大,容易扯着淡。另外,OS X 用了这么多年,我确实还没有产生类似 iOS 那样的审美疲劳,那就让扁平来的缓慢一些吧。

mvr2

3、细节改进

  • 手势:四指划开显示桌面的时候可以通过手指的动作实时控制程序的位置,目前只有显示桌面和桌面空间切换可以做到类似效果。
  • 万般委屈的 Finder 终于有了全屏功能,到现在我也想不通为毛原来就不让 Finder 全屏。另外,在 Finder 中选择文件列表时选择区域也变成大圆角了。
  • 原来按一下电源键就会弹出是否关机的窗口,现在按一下关闭屏幕,长时间按弹出关机窗口,再长时间按强制关机。
  • 点击顶边栏的电池状态,会显示使用大能耗的应用程序,如果你在用电池供电,可以把这些程序选择性关闭。
  • 可以离线听写了,不过需要下载语音包,大概700多M。
  • 勿扰模式增强,可以在系统选项设置—通知里设置勿扰的时间段、使用模式等,类似 iOS7里的勿扰模式。
  • 平滑滚动继续增强,无论是在 Safari、Finder、iTunes 里上下滚动都丝般柔滑,毫无停顿的感觉,明天我测试一下 FPS(每秒显示帧数),看看效果如何。

mvr5

大概就这么多吧,最后发现 iTunes 居然是英文的,我决定暂时不用它来同步手机,避免误伤友军。

明天讲讲应用软件的兼容性和新功能,iBook,Finder,Map,双屏等。最后是性能部分(高科技总是放在最后讲),这个主题就算完结了。