Chances are you’ve probably heard about iOS, the Apple’s operating system for mobile devices. Given the popularity of Apple devices, you might even be using one. It’s the OS behind the iPhone (it used to be called iPhone OS), iPad, iPod touch and Apple TV devices. I’ve recently started to develop apps for iOS, and I’ll try to give you a short introduction to iOS development from the perspective of a long time Java developer. Here I will talk a little bit about the SDK and the tools, and try to give a short general overview of the technology. The next posts will be about the Objective-C (the Apple’s language of choice for iOS development), the MVC and the other essential parts of iOS application.
So first the obvious things. You’ll need a Mac computer for the development since Apple only released iOS SDK for Mac. Most developers who don’t own a Mac won’t be happy with this fact. You’ll also need to register as Apple developer to be able to download the SDK. After that you’ll be able to download Xcode with SDK and other useful tools. Alternatively, you could purchase the Xcode with the SDK from the Mac App Store.
The iOS SDK includes:
- System Frameworks: A dynamic shared libraries and resources providing system interfaces and services. You link them into your project just as you would any other shared library.
- Xcode Tools: A set of tools for application development (Xcode, Interface Builder, Instruments).
- iOS Simulator: A Mac OS X application that simulates the iOS.
- iOS Developer Library: Documentation and reference.
Xcode is Apple’s IDE for developing Mac OS X and iOS apps. If you are a Java developer, you’ve probably seen Eclipse. And if you’ve seen Eclipse you won’t be impressed with Xcode. You’ll need some time to get use to it. You’ll probably even curse it’s name from time to time. On the other hand Instruments is a pretty decent application, considering that in Java world a decent profiler is much more expensive. And regarding the tools, the biggest advantage over Java is probably the Interface Builder which takes away the heavy lifting from building the user interface.
Applications are built using the iOS system frameworks and Objective-C language. The iOS architecture is similar to the basic architecture found in Mac OS X. It’s a layered architecture with the the fundamental services and technologies as the lower layers on which all applications rely, and more sophisticated services and technologies in the higher-level layers. You should prefer the use of higher-level frameworks over lower-level frameworks whenever possible, as the higher-level frameworks provide abstractions for lower-level ones.
The frameworks are divided into four basic layers:
- Cocoa Touch (Address Book UI, Event Kit UI, Game Kit, iAd, Map Kit, Message UI, UIKit): Contains the key frameworks for building iOS applications and provides support for key technologies such as multitasking, touch-based input, push notifications, and many high-level system services.
- Media (Assets Library, AV Foundation, Core Audio, Core Graphics, Core MIDI, Core Text, Core Video, Image I/O, Media Player, OpenAL, OpenGL ES, Quartz Core): Contains the graphics, audio, and video technologies.
- Core Services (Address Book, CFNetwork, Core Data, Core Foundation, Core Location, Core Media, Core Telephony, Event Kit, Foundation, Mobile Core Services, Quick Look, Store Kit, System Configuration): Fundamental system services.
- Core OS (Accelerate, External Accessory, Security): Low-level features like kernel, drivers, UNIX interfaces.