Swift 已经正式面世一年,而它的 2.0 版本(在我看来是真正的 1.0)也将于今年秋季正式发布,这一年,到底有多少公司、团队开始使用 Swift,并且将他们的 App 用 Swift 来写了呢?
对于新技术的采纳,我相信无论谁都会持谨慎态度的,不仅是因为新技术本身通常意味着不稳定和不成熟,并且可能会遇到各种问题最后被宣布放弃。比如 Google 的 SPDY 协议,还有 Apple 曾经推广过的 Garbage Collection 技术,都属于「新事物」,但不再维护、有更新东西替代的东西。
Swift 作为一门新语言的命运会如何?根据我一年多来针对 Apple 公司及整个生态圈的观察,我的判断是,会成为 Apple 和这个生态圈的主力语言。关于为何得出这个结论又可长篇大论一番,总之今天我想简单地说说,世面上有多少 App 已经用 Swift 来写了,让正在观望的同学能有个参考。
关于「用 Swift 写的 App」,有个疑问是:到底怎么样的一个 App 才算是用 Swift 写的?因为 Apple 对 Swift 语言和 Objective-C 的无缝沟通做了很大的努力,这意味着在你的 App 中可以只用 Swift 来写其中一部分。我总不能将一个只用 Swift 写了 1% 的代码的 App 称作 Swift App。因而我的标准是: 50% 以上的代码是用 Swift 写(不包括第三方库),或者正在用 Swift 逐步重写原 Objective-C 代码的 App 。
那么如何验证?两个方法:第一个方法,通过 OS X 的 iTunes 下载这个 App 的 IPA 包,解包以后看 App 里面有没有一个 Frameworks 目录,里面有 Swift 的运行库,但这个方法只能判断这个 App 用了 Swift,而不能判断是不是主要以 Swift 写。第二个方法,当然是通过业界一些活动和会议上的分享,也就是开发团队主动告之外界的形式。
OK,让我们开始吧!
WWDC: https://itunes.apple.com/app/wwdc/id640199958?mt=8
WWDC 应该是这个世界上第一款用 Swift 写的并且正式发布出来的 App。也就是去年 WWDC 14 的时候,Apple 在推出 Swift 的时候,同时在某个渠道说明 WWDC 这款 App 就是用 Swift 写的…不过目前来源找不着了。
现在我还不知道 Apple 还有哪些 App 用 Swift 写的,目前还知道一个比较重要的信息是:iOS 9 和 OS X 10.11 的 Dock 和 Calendar 是用 Swift 写的,具体见 Apple 的雇员发的 Twitter: https://twitter.com/jckarter/status/608441279677128705
所以说,Apple 已经用 Swift 语言来写自己的 App 和操作系统的部分组件了,不然怎么能说服我们也去用呢?
奇点: https://itunes.apple.com/app/qi-dian-for-wei-bo/id947792507?mt=8
第二个 App 当然要拿我自己的作品「奇点」来作例子了。我在 2014 年 7 月 13 日写下这个项目的第一行代码,历经了 Swift 1.0 的 N 个 Beta,一直折腾到 Swift 1.2,未来还会将其用 Swift 2 来重构。可谓 Swift 的「忠粉」,也是吃尽酸甜苦辣。
当时只是本着操练新语言的尝试心态写了一个 demo,每想到写着写着就下决心写成正式的 App 了。当然这有另外一个故事。总之,奇点里尽管有极少部分的代码仍用 Objective-C 写(涉及到 C Function Pointer 部分),但整个项目真是 99.9% 的 Swift。
在 9 月份 Swift 2 正式发布以后,我也会把它变成 100% 的 Swift 项目,同时分享更多开发心得。
Coursera: https://itunes.apple.com/app/coursera/id736535961?mt=8
Coursera 的大名想必不需要介绍了,我在去年的时候在某个技术分享视频看到来自 Coursera 的员工的分享,就知道 Coursera 已经用上 Swift 了。很遗憾今天我找不到这个视频分享了,不过我从他们的官方技术博客里看到一篇《 Writing a Custom Control for iOS 8 using Swift and Auto Layout 》,嗯,这也是证明他们用了 Swift 的一个技术。
Duolinggo Test Center: https://itunes.apple.com/app/duolingo-test-center/id929167184?mt=8
如果你可能不知道这个 Test Center,那么你一定知道 Duolingo(多邻国)。这是由 Duolingo 出品的一个用来测试英文水平的工具,根据官方的文章《 Real World Swift 》,这是一个 100% 用 Swift 写的 App,这篇文章干货十足,非常值得一看。另外,和官方在文章中透露的一样,Duolingo 这个 App 本身也正在用 Swift 进行一个「渐进式重写」的过程,不信你可以自己解包看看,里面有 Swift 的运行库。没准某天一个大版本更新后,Duolingo 已经是个 100% Swift App 了。
SlideShare: https://itunes.apple.com/app/slideshare-presentations-official/id917418728?mt=8
SlideShare 相信大家也不陌生,这是老牌的一个 Slide (Keynote/PPT) 分享网站,只是我不知道它是什么时候被 LinkedIn 收购了?!回到正题,SlideShare 团队是我目前已知分享 Swift 经验很频繁的一个团队。在他们的 Engineering 网站上,不到一年的时间他们一共分享过两篇文章:
这两篇文章自然是干货十足。他们的 App:SlideShare,不仅是个 Swift App,还是 iOS 8 Only 的…真是羡慕国外能做 iOS 8 Only 的 App。国内还有不少大厂还得兼容 iOS 6…
其他的我就简单列举下,不做更多分享和点评了。因为我知道这些 App 都是用 Swift 写的,不过团队并没有写过类似上面的经验分享,点到即可。
Lyft 是类似于 Uber 的国外一个打车工具,他的最新版本刚刚已经是完全用 Swift 写了,团队成员发推宣布了这件事情: https://twitter.com/SmileyKeith/status/621752405496045568 。App Store: https://itunes.apple.com/app/lyft-taxi-bus-app-alternative/id529379082?mt=8
「Enjoy ~ 精选限量美食」是我最早知道国内用 Swift 写出来的一个 App,来自北京饭本团队。最低支持 iOS 7,App Store 链接: https://itunes.apple.com/app/enjoy/id943837902?mt=8
即刻,也是我在内测阶段就知道是用 Swift 写的一个 App,来自上海的一个创业团队。团队非常激进,因为只支持 iOS 8。App Store: https://itunes.apple.com/app/ji-ke/id966129812?mt=8
小记是一款文艺范的竖排书写工具,来自广州 Catch 团队,我也是内测就开始用的。嗯,和上面一样,都只支持 iOS 8。App Store: https://itunes.apple.com/app/xiao-ji/id975031499?mt=8
火箭闹钟,我昨天才知道这款 App,是一个朋友告诉我的。一样是用 Swift 写的 iOS 8 Only 的 App: https://itunes.apple.com/app/huo-jian-nao-zhong-jiao-chuang/id705079162?mt=8
Quad,是一个基于像限的 Todo App,非常特别。作者,@非主流键盘手,iOS 8.2 Only: https://itunes.apple.com/app/quad-elegant-todo-list-gtd/id989699909?l=en&mt=8
Light screen, 是一个目整理截图的工具,来自@匡俊宇Jonny,作者今年去过 WWDC 。 https://itunes.apple.com/app/id961945908
VPNOn,是一个可以快速连接 VPN 的工具。作者@汤圣罡。 https://itunes.apple.com/app/vpn-on/id951344279?mt=8
关于用 Swift 写的 App,国内外我合起来列举了十个几。我相信还有大量我不知道的已经用 Swift 写的 App,如果你知道,可以留言告诉我。
有意思的一个比较是:国内基本上都是独立团队作品、小团队作品,而国外不乏一些已经是名声比较大的公司。不得不说在新技术的采纳上,国外公司还是相对比国内要敢为先的。
不知道一年以后 Swift 这个开发生态会怎么样,但是根据这一年对其增长的观察,我相信是会越来越好的。目前为止国外已经举办过好多场民间性质的 Swift 分享会了,相信一年后会更多而且更热烈。现在国内关于 Swift 的动静相对还是比较小。
期望一年后,国内也会有一些无论是大厂还是小厂的分享出现,更多的 App 开始采用 Swift。