As of the time of composition of this initial entry, the iPhone Software Development Kit (SDK) is set to be released in a little over a month. This will allegedly allow 3rd parties to develop native software for the iPhone. I say allegedly because Apple is releasing this with some reluctance...I'm not sure exactly who this SDK will target, but my guess is that it will be aimed at professional developers who work for "significant" software companies.
This blog isn't intended for professional programmers, but rather the amateur...the hobbyist developer who wants to write something for the iPhone. I feel I am especially qualified for this because I am only one step up from the "noob"...my profession has very little to do with computers, and I can certainly relate to how confusing this all can be.
If you fit into this hobbyist demographic, you will want to have a jailbroken iphone. To "jailbreak" an iPhone is to uncripple it so that it will allow 3rd party native applications...(don't confuse "jailbreak" with "unlock" the the media often does). If you haven't reached this step, I recommend visiting a site like ModMyIfone.com, which will have plenty of information on how to do this.
It should go without saying that this blog has absolutely no affiliation with Apple.
Native Apps versus "Web Apps"
A native application is one that runs...well...like a real application. It resides on the iPhone storage drive, and it runs without requiring a web browser. A "web app" (notice how I belittle it with quotation marks) is (in my opinion) a fancy web page. This blog will deal with native apps.
What is required?
So you want to develop software for the iPhone...what will be required?
Here are the requirements that involve spending money:
- An iPhone or an iPod Touch
- A home computer (Windows, Mac, whatever)
- An Internet connection
- A wireless router (for transferring your app to your iPhone to test it)
While programming experience for non-iPhone stuff isn't absolutely required, you probably want some under your belt before attempting to program for the iPhone. If you have programmed for the Mac before, this will be a breeze for you to learn. If you are a C++ person, this will also be fairly easy. I am personally coming from the land of Java. If you have never programmed before, I definitely recommend you spend a few months (at least) toying with Java. Why?
- Java is very friendly for those who are new to programming
- Java is popular on a variety of computer operating systems, including yours
- There is a whole lot of help available on the Internet for Java programmers.
- There are tons of "Beginner's Guide to Java" type books in bookstores
- Java has really great (and free) IDEs like Netbeans and Eclipse.
Programming languages in iPhone development
So what programming language is used to make iPhone apps? The simple answer: Objective C (ObjC). Outside of the land of Apple, ObjC is fairly obscure. So what is Objective C? Let's go back to C.
C is the foundation for a number of languages. It isn't as often used by itself anymore because it isn't object oriented...it doesn't use classes/objects. So a number of languages added object-oriented capabilities onto C. One of these was C++. Another of these was ObjC.
So because ObjC was built on top of C, C can be freely used throughout an Objective C program. So you could program an iPhone app in C, with only a dab of ObjC in the whole thing. But you'll find that ObjC isn't difficult to learn.
So you may have heard about UIKit...what is that? Specifically, it's a single framework (i.e. set of classes) that contains classes needed for iPhone user-interface (UI). (Sort-of like what Swing is for Java.)
UIKit is often used, however, in a more general sense to mean not only the UIKit framework, but all of the frameworks present on the iPhone. And it's sometimes used to refer to the entire iPhone programming experience.
So what's the next step?
So before you get going, you'll need what is called the toolchain. This is a 3rd party bundle of software that is used to build programs for the jailbroken iPhone. You can either find a precompiled binary for your computer system, or you can build it yourself. If you do choose the old-fashioned build-it-yourself technique, check out the toolchain site for instructions. If you use Windows, however, I recommend you using a separate set of instructions that are tailored to Windows. There may be a copy of these on the wiki portion of the ModMyIfone site, but you may have to look around to find them.