On October 17, 2007, in an open letter posted to Apple's "Hot News" weblog, Steve Jobs announced that a software development kit (SDK) would be made available to third-party developers in February 2008. The SDK was released on March 6, 2008, and allows developers to make applications for the iPhone and iPod Touch, as well as test them in an "iPhone simulator". However, loading an application onto the devices is only possible after paying an iPhone Developer Program fee. Since the release of Xcode 3.1, Xcode is the development environment for the iPhone SDK. iPhone applications, like iPhone OS and Mac OS X, are written in Objective-C.
Developers are able to set any price above a set minimum for their applications to be distributed through the App Store, of which they will receive a 70% share. Alternately, they may opt to release the application for free and won't need to pay any costs for releasing or distributing the application except for the membership fee.
Developed by Google under the Open Handset Alliance, a group of hardware and software developers whose goal is to create a more open cell phone environment, Android is a software stack for mobile devices that includes an operating system, middleware and key applications. It has also been defined as the first truly opened platform for mobile devices, with all of the software required to run a mobile phone, but without the proprietary obstacles that have hindered mobile innovation in the past years.
What makes Android really different is its open and fair architecture relying over a robust Linux kernel. Windows Mobile and Apples iPhone provide now a richer, simplified development environment for mobile applications. However, unlike Android, they are built on proprietary operating systems that often prioritize native applications over those created by third parties and restrict communication among applications and native phone data. Android provides instead hardware access to all applications through a series of API libraries, and a fully supported (while carefully controlled) application interaction.
Moreover, third-party and native Android applications are written using the same APIs (based on the Java language) and are executed on the same run time (a custom Java Virtual Machine called Dalvik). In this way users can remove and replace any native application with a third-party developer alternative, even the dialer and the home screens. On the other side, developers are able to build applications by composing self made code with application already installed on the operative system (like maps, contacts etc.).