经过四天多的疲劳轰炸,每天勤跑Session跟Lab,还要加上严重的时差,常常在听Session的过程中不小心睡着,不过在这过程中慢慢有个感觉,Apple 正全力赋予开发者更多的权力,并期望众多的开发者开发出更多优秀的应用,健全生态系,把 Android 遥遥抛在后头。
我有种预感,接下来几年身为开发者将会有更多事情要作,每天会有更多App出来,有更多东西要学,会比以往更忙,压力也更大,但是Apple的确在帮我们这些开发者慢慢创造出一种氛围-在每日敲打键盘的过程当中,你将有机会改变这个世界,就像是今年 WWDC 的标语-Write the code, Change the world。
这次 WWDC,几个我认为相当关键的技术,以及它们为什么重要。
iOS WebKit放低身价 Native App和WebApp混合将更有想象空间
过去Apple封印了 Mobile Safari 以及WebView的某些功能以及效能,所以这几年来常常出现各种争论,到底是NativeCode好,还是Web App也有机会取代NativeCode?
从iOS 8开始,Mobile Safari 所有封印被解开了,就像是封印在鸣人身体中的九尾狐狸,不只效能有大幅提升,还有机会跟Desktop Safari相媲美。而且不仅仅是Mobile Safari,连App内嵌的WebKit都可以达到同样的效能,甚至WebKit开放了一堆API,让App有机会插入任何Javascript程序代码,改变加载的网页,甚至跟内嵌的网页沟通!
这些改变将带来一些值得观察的重点:Web App是否还会像以往那么逊色?是否会有更多的Web App取代Native App?Web App的好处是开发快,而且可以绕过App Store的审核,如果Web App在执行效能上有所提升的话,一些简单的应用其实就不需要写Native App。此外,Native App也将会大量内嵌WebKit,Native/Web将虚虚实实,让使用者分不出哪一部分是Native Code编写,哪一部分其实是从网页载入。所以这个改变会带来很多玩法跟技术上的改变,会让iOS平台变得更有趣。
WebGL 开放且效能提升
WebGL是让使用者可以在网页上无须安装任何Plugin就可以加载各种3D模型,当然也可以玩Game!不信的话,可以看看 Unity 这个示范。
过去Desktop Safari必须进入Developer模式才能开启WebGL功能,而且也仅是部分支持,不过Apple从WebGL成立以来一直都是核心成员之一,也相当支持的WebGL发展,所以在OS X Yosemite之后,Safari将完整支持WebGL,而且连Mobile Safari也同等支持!这代表说游戏开发商也可以不用靠App来发行游戏,透过Web App的方式也可以发布游戏,而且体验将可能不会输给原生App太多,这将会是一个Game Change的改变!
iOS与OSX Extension
iOS 过往最让人诟病的是App之间的整合能力不佳,当然最主要的原因是为了安全性以及持续维持好的使用者体验。在这次WWDC提出了Extension的解决方案,而且是iOS跟OS X都可以适用。目前支持的Extension功能包含Custom Keyboard(第三方输入法)、文件汇入(DocumentPicker)、照片编辑(Photo Editing)、分享(Share)、Control Center 中的Widget(Today),以及动作(Action) Extension。
编写的方式非常简单,如果你是App的开发者,Apple希望你针对Extension另外去编写功能跟使用接口,编写完的Extension会被编译成Framework (Mac/iOS中的shared library格式),在不同情况下,系统会去加载你的Extension并呼叫让使用者即使在其他App里也能叫用你App所提供的功能。
所以目前网络上已经有来开始丢出一些有趣的应用了,像是SwiftKey、Fleksy都号称他们在第一时间已经做出符合iOS 8版本的输入功能,并开放beta注册就等着iOS 8正式版上市的那一天了。此外,飞利浦在没多久之后就在他们的Twitter上贴出Control Center Today中的Widget,让使用者不需要解锁就可以控制飞利浦的智慧灯泡Hue。当然,还有更多可能性存在,例如以后再也不需要出现丑陋又没人用的Bookmarklet功能,透过Extension将获得更好的整合效果。
Framework封印终于打开了!
一直以来Apple都不允许iOS开发者透过Framework去分享程序功能,在这段时间,几乎所有人都是透过cocoapods/github来进行套件分享与管理,但是这道封印终于在iOS 8被解开了,再搭配上XCode 6的Live View功能,开发者在开发与设计App时可以透过 Interface Builder直接看到Framework中所提供的自定接口,让App开发变得简单而且更加可视化。所以相信以后,会出现一群开发者开发很多好用的Framework便利其他开发者,这将会变成很有趣的事情。
CloudKit
如果你哪一天兴致来了,想要写个Cafegram之类的App,让全世界的人分享喝咖啡时的照片跟心情,但是刚好你只会写 iOS App,或者你只找得到会写 iOS App的伙伴,或许就让你兴致减掉一半了,然后一谈到云端的开发跟基本开销,可能剩下一半的兴致消灭殆尽。
Apple 当然不希望你在这时候却步,有好的创意就应该继续下去,所以推出了CloudKit。CloudKit是类似PaaS的服务,或者说是很接近Facebook Parse的服务,开发者完全不用写一行云端程序代码,便可以储存资料到云端去,达到同步以及分享的用途。
储存在云端的数据库还可以分成Public跟Private使用。Public可以用来作数据共享,如果是匿名登录就只能读取,但如果有登入iCloud账号便可以透过App分享自己的信息。而Private比较类似iCloud原有的机制,纯粹储存iCloud用户在App里的数据。此外用户也无须担心个资外泄的问题,Apple对于使用者个资做了很好的保护,连开发者本身也无法取得用户信息。所以当有了CloudKit后,开发者只需要专注在写手机端程序就好,完全不需要去担心云端的负担。
Swift讨论度热烈破表!
整个会场被讨论最多的就是Swift了,讨论的话题不外乎是Swift本身的特性、如何编写 Swift、如何与原有的Objective-C程序代码整合。Swift这几天火红的程度,连国内的 CocoaChina在Swift Programming Language这本电子书一上架到iBook后一天之内便全文翻译成简中版本,整整600页,而且还能维持不错的质量,可见在国内也是有很多开发者对Swift充满了热情!也有其它例子,像是Flappy Bird跟2048都在Swift发表后没多久,就有开发者用Swift重新编写过一次。
Swift在编写程序的安全性上下了很多苦工,也有一部分为了兼容目前的Objective-C,在语言中的确放入了一些让人感到碍手碍脚的功能,但基本上Swift还是很优秀的语言,如果Apple哪天将它开源出来,将可能会有爆发性的发展。而且就我一个同在WWDC朋友讲的,真的很久没有听到这么扎扎实实在讨论一个新程序语言了,还是很令人兴奋!
无疑的,今年的WWDC将是历届以来相当重要的一届,很高兴去年跟今年我都能够在这里某种程度地参与历史;去年是重要的iOS 7大改版,带来了重要的视觉设计的演进,今年是软件的大爆发,新的程序语言,新的架构,新的系统,这些虽然不是一般大众最关心的事情,但是Apple透过这些改进,的确让我们这些开发者感到无比的信心,相信未来将会充满各种可能性,也相信我们的确可以透过编写程序来改变世界。