WWDC is like Christmas for Cocoa developers, and this is certainly true for this year's edition due the scarcity of leaks and rumors leading up to the conference. Even though we're all curious to hear what Apple has in store for everyone loving Apple, the keynote is much more fun when you have no clue what's about to be announced, like this year.
If you've seen Tim Cook's keynote, then I'm sure you agree that Apple surpassed everyone's expectations. Let's take a few minutes to summarize what Apple has announced, what it means for developers, and what you can expect later this year.
Confident & Fierce
No matter what's been written about Apple in recent months, Apple is alive and kicking. It seems Apple has indeed doubled-down on secrecy, because some, if not most, of what was announced during Monday's keynote was a surprise, even for people familiar with Apple's product line and roadmap.
What surprised me during the keynote was the tone of the main speakers, Tim Cook and Craig Federighi. The company has regained the confidence that seemed to have left the company in 2011, when Steve Jobs passed away.
The company is proud of its products, its developer community, and it doesn't shy away from the occasional ridiculing of Android. The healthy relationship with Microsoft was also present throughout the keynote.
OS X Yosemite
From an iOS developer's perspective, the announcement of OS X Yosemite may not seem that important, but this isn't completely accurate. Even though Apple has repeatedly stated that iOS and OS X remain separate operating systems, it's clear the company is improving their integration with every release.
It's no coincidence that OS X's development cycle has changed from 18-24 months to 12 months, the same as that of iOS. While iOS inherited a lot from OS X during its first few years, it seems iOS is now returning the favor. With OS X Yosemite, the look and feel of OS X is more like that of iOS. Not only has OS X become flatter, like its little brother, the new Continuity feature is another step to a better integration of and communication between both operating systems.
Features like AirDrop, Handoff, and iCloud Drive make switching between iOS and OS X easier, almost frictionless. These features are part of the company's response to the request from consumers to make the integration between iOS and OS X better and less cumbersome.
But Apple didn't leave it at that. The company has taken it one step further by leveraging proximity sensing, which means that your Mac knows when your iOS device is nearby. This enables a few things, such as accepting incoming calls on your iPhone from your Mac. Your iPhone will also automatically set up a personal hotspot as soon as it knows one of your Macs is nearby. How cool is that?
The transition from iOS 6 to iOS 7 was more than evolutionary and I'm sure you agree the ride wasn't as smooth as Apple claims it was. iOS 7 introduced so many new features, visual changes, and paradigm shifts that the average user, and most developers, we're a bit hesitant to embrace the new direction Apple had taken with iOS.
The announcement of iOS 8, however, is different. The majority of changes introduced in iOS 8 are changes that refine the operating system, integrate it with OS X, and improve the operating system overall stability and usability.
The Photos application has undergone overhaul, it's now more powerful than ever. Apple briefly showed a version for OS X which will ship early next year. There was no mention of iPhoto or Aperture, and it is unclear whether Photos for OS X will replace them.
With Photos for iOS, you can now search every photo and movie you've ever taken with any iOS device. That's the idea and iCloud, which can now store every photo and movie you take with an iOS device, should make this possible.
With that change, Apple has entered the territory of Dropbox. Even though every photo and movie you take with an iOS device is stored in iCloud, note that this won't be free for everyone. Apple's pricing, however, seems more than reasonable.
Starting with iOS 8, an application can have one or more extensions that extend the functionality of an application to other applications, including the operating system. Extensions are Apple's answer to a very common request from both developers and end users.
Extensions come in many forms. An extension can be a simple widget for Notification Center that displays weather data, but it can also be a custom keyboard, another big change for iOS. During the keynote, for example, Federighi showed how a third party application was used to edit a photo in Photos for iOS. The third party application provides the user interface and the integration seemed pretty seamless.
According to Apple, Touch ID is a big success with more than 80% of consumers having it enabled. In iOS 8, Apple opens up the Touch ID API to third party developers. Security remains key, which means that the actual fingerprint information isn't accessible or even exposed to developers.
iCloud and CloudKit
iCloud is still a very important aspect of the iOS and OS X ecosystem for Apple. In fact, the role of iCloud becomes more important with every iteration of iOS and OS X.
Apple's cloud solution has been improved dramatically, both from an end user and a developer perspective. I already mentioned how iCloud can now store every photo and movie you make with your iOS devices, but Apple also enables access to the data that's stored on iCloud by introducing iCloud Drive. It make sharing data between iOS and OS X applications easier and more transparant.
Sending emails with large attachments is no longer a problem with iCloud Drive. As I mentioned earlier, iCloud is free up to 5GB. Additional space costs $0,99 per 20GB per month or $3,99 per month for 200GB. The upper limit is 1TB.
iCloud Drive isn't the only change Apple's made on the server-side, the company also introduced Cloud Kit. With Cloud Kit, Apple takes care of the server-side aspect of iOS application development, letting the developer focus on the iOS application. With Cloud Kit, Apple has entered the BaaS or PaaS market.
Apple also announced HealthKit and Health for iOS. HealthKit is a platform for managing your health and fitness data. The Health application visualizes this data in Apple fashion. Of course, the data Health for iOS shows depends on the input it receives from other applications that collect the data.
An application like Nike+, for example, can share its fitness data through HealthKit and ask for nutrition data that's collected by another application. Apple emphasized that privacy is an important concern. Third party applications can't access your health data without your permission.
It's impressive how many new features, frameworks, and APIs were introduced during this year's keynote. HomeKit is another surprising addition to iOS. The HomeKit framework is an integration between iOS devices and devices that conform to Apple's Home Automation Protocol.
The idea is to bring sanity to the growing market of home automation in which every manufacturer has it's own standards and applications. It doesn't seem Apple is merely testing the waters with HomeKit as the company listed an impressive list of big brands that claim to support HomeKit. Let's hope HomeKit makes home automation less painful and more consistent for iOS users.
Another big surprise was the introduction of Metal, a low-level API for performing complex graphics on iOS devices. As demonstrated during the keynote, Metal aims to minimize the overhead that OpenGL has by replacing it with an API that not only reduces this overhead, but also increases performance on iOS devices.
SpriteKit, introduced in iOS 7, has received a significant update with per-pixel physics, inverse kinematics, and field forces. In addition, SceneKit, available on OS X for several years, is now also available on iOS.
The number of important announcements was staggering. We already knew that Apple acquired Burstly, the company behind TestFlight, but I wasn't expecting them to offer it as a service of their own so soon. But they did.
TestFlight, the name hasn't changed, will allow the distribution of beta applications through Apple's TestFlight application. The only downside is that it will require iOS 8. However, the acquisition of Burstly seems to have nothing but upsides. For example, each application, not developer account, can have up to 1,000 testers. There is no limit on the number of devices per tester. This really is amazing news and it will make the process much less cumbersome for iOS developers. Application provisioning is also much simpler thanks to TestFlight. If you thought beta distribution was easy with TestFlight, it just got even easier thanks to, well, TestFlight.
Apple wouldn't be Apple if it didn't tightly control the distribution of builds to testers. Based on the updated iOS Developer License Agreement, an application needs to be reviewed by Apple before it can be distributed to testers. How this will happen and how long it will take for Apple to review tens of thousands of test builds is unclear, but, as Ole Begemann points out, it seems that Apple is more lenient when it comes to reviewing test builds. We'll have to wait until the fall to find out how things will pan out.
The most important announcement of this year's WWDC keynote was, without a doubt, the introduction of Swift, a brand new programming language to develop iOS and OS X applications. Swift's goal is to make development easier, less painful, and more modern. At first glance, Swift is a dynamic programming language that's incredibly expressive thanks to its intuitive, appealing, and syntax.
Swift has no headers, no semicolons, and it supports closures and generics. Functions can have multiple return values and optional arguments. Another focus point of the language is safety. For example, your application won't crash when you access an element of an array that is out of the array's bounds.
Starting from Scratch
Does this mean every Cocoa developer has to start from zero in terms of learning Cocoa development? No. The beauty of Swift is that it integrates nicely with Cocoa and Cocoa Touch.
If you explore some of Apple's code samples, then you'll quickly notice two things. First, the syntax is very easy to learn. It's less verbose compared to C and Objective-C, and more intuitive. Second, Swift leverages existing APIs and frameworks, which means that your knowledge of building iOS and OS X applications will give you a head start if you decide to adopt Swift in your projects.
While there are many features of the Swift language that deserve our attention, I'd like to highlight a few that will take some getting used to if you're an Objective-C developer.
In Swift, types are inferred, which means that you no longer have to declare a variable as an
NSDictionary. The compiler is smart enough to infer the type and it will even optimize your code behind the scenes.
Say goodbye to header and implementation files. Swift gets rid of header files altogether and I'm sure you don't mind that.
Mind the Semicolon
Like Ruby and CoffeeScript, it's not necessary to end a line of code with a semicolon unless a line contains multiple statements.
Objective-C and C
Swift plays nicely with Objective-C and C. In fact, Swift uses the same runtime Objective-C uses. You can use Swift and Objective-C in the same project without problems. This will make migrating from Objective-C to Swift a bit less of a monumental task.
Even though Xcode 6 is still in beta, Apple also planned a big release for its integrated development environment. Xcode 6 adds support for Swift, view debugging, improved support for localizing projects, live rendering in Interface Builder, custom iOS fonts, and support for extensions.
This is just a small selection of the new features and improvements of Xcode 6. If you're wondering what Apple has been working on for the past few years, then wonder no more.
I agree with Joshua Topolsky and Craig Hockenberry, the tone of the keynote was incredibly optimistic. Apple is ready to take on its competition and has found its confidence again. Tim Cook didn't miss any opportunity to make fun of Google's Android and show people that Apple is still the leader of the mobile space.
Google I/O is just around the corner and I can't wait to see what Google has in store for us. It's never been a better time to be or become a mobile developer.