This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Since technology is booming on its high astonishingly, digital devices are getting popular in our daily life and record people's life insensibly. The most proliferation product in our life is the Mobile phones, and especially the smart phone; it's gaining a lot popularity and importance in terms of convenient and large storage database.
The need for specialized operating systems to host mobile computers and provide application development opportunities has risen due to the proliferation of cell phone users. Because phones have become such pervasive and affordable mobile computers, developers and users need a development environment that allows more of its users to create unique and specialized applications that are affordable. This paper provides a comparison of Android, the Symbian Operating System and Apple's Mac Operating System that identifies the role of an operating system in forwarding a successful mobile technology. It also demonstrates the need for operating systems that are open- sourced and that provide an easier way to develop applications.
CHAPTER 1: INTRODUCTION
Users of this vast industry of Mobile phones are no more longer limited to applications only by the software companies of the manufacturer on their devices or buying readymade mobile applications for their personal purposes. But now people now have the power of knowledge to create their own applications given the right motivation, creativity, skills and tools. Mobile phone companies and organizations have now opened up their application programming interfaces (APIs) that would allow anyone to develop their own applications for their mobile devices.
Examples of these are the
Java Platform Micro Edition (Java ME) API from Sun Microsystems,
Android API from the Open Handset Alliance and the iPhone API from Apple
However, even though many users may have ideas for novel applications for mobile phones, software development is simply too difficult for most people. It takes a large amount of skill and familiarity with how the framework is used before a person can create a decent amount of code for a simple application. Even setting up the programming environment is a complex task, let alone, trying to figure out how to use the APIs, compiling, running and deploying the application on the actual device.
Other things that make developing applications for mobile devices more difficult as compared to desktop applications are factors such as device limitations (e.g. screen size, computing power, power consumption) , different operating systems for mobile devices, different data representation and additional device capabilities (e.g. Bluetooth, Wi-Fi, GPS, Camera-enabled) which are not standard to all devices and therefore should be considered when developing a uniform application that can be run on different mobile devices.
Evaluation of User-Interfaces for Mobile Application Development Environments
Chapter 2: History
Android Inc was founded by Andy Rubin in June 2003. (Elgin, 2005) His goal "was to design a mobile hand-set platform open to any and all software designers." This later was purchased by Google In November 2007 and formed a group of mobile and technology companies called The Open Handset Alliance in November 5, 2007, along with the open source "Android platform" a "software stack" designed to "significantly lower the cost of developing and distributing mobile devices and services" (Open Handset Alliance, 2007) and this Alliance is under the management of Google Inc.
This combination of two corporations engaged in entirely different businesses together into one corporate structure and their aim is to improve mobile phones to change the mobile experience for customers by increasing the openness in the mobile ecosystem.
In October 2008 their first joint project called Android platform under the Apache license was officially released , which has been on Linux-based Kernel that's geared to run on lightweight devices like mobile phones  and has been made open source for any developer to use for example if a developer wanted to make changes to something in the Kernel, they could submit it to Google who manages the project, and Google would approve the change, and allow it into the framework. All of the interviewees believe that even if in practice Android is totally open and everyone can modify the source, this openness makes sense for device manufacturers not commercial developers.
Software architecture of Android platform is a layered architecture. It is possible for a developer to code in any of the layers, one of the Android developers explains. Developer clarifies his opinion about openness in Android more by separating the situation in literature and in reality based on his experience.
The lowest level is Linux Kernel, and it implements the use of Linux 2.6 kernel, the second level is Library and Android Runtime, and the third level is the Application framework, which is designed to simplify the reuse of components so that developers have full access to the same framework that APIs used by the core applications. The highest level is the Application . Application level includes a bundle of programs such as the contact manager, web-browser, an email client, calendar, SMS program, etc. which will be shipped as core programs with the handset .
In Table 2 the openness degree of Android system architecture has four main levels, as shown in Figure 1.
Fig.1. Android Framework
Kernel: Linux is support for core system services such as security, memory management, process management, network stack, and driver model . The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.
Runtime: Runtime includes core libraries and Dalvik virtual machine. Core libraries have a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language. Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool. The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
Libraries: Android has a set of C/C++ libraries used by various components of the Android system. These libraries are exposed to developers. The system C library is a BSD-derived implementation of the standard C system library. The media libraries are based on Packet Video's open CORE which supports playback and recording of many popular audio formats. The surface manager manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications.
Android applications can be developed by using different IDE's,
Application Framework: All Android applications are written with Java programming language, it ships with a set of core applications including email client, SMS program, calendar, maps, browser, contacts and others. Android offers developers the ability to build various applications with an open development. The most recommended IDE one is Eclipse with the ADT plug-in. The ADT plug-in provides editing, building, debugging, and .apk packaging and signing functionality integrated right into the IDE. Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities. This same mechanism allows components to be replaced by the user. The applications including views that can be used to build an applications, including lists, grids, text boxes, buttons, and even an embeddable web browser. Content providers enable applications to access data from other applications or to share data with others. The resource manager providing access to non-code resources such as localized strings, graphics and layout files. The notification manager enable all applications to display custom alter in the status bar. The activity manager manages the lifecycle of applications and provides a common navigation backstack.
"Analysis and Comparison" Lu Cheng
First iPhone was announced by Apple Inc in January of 2007 at MacWorld expo in San Francisco . IPhone operating system was built on Mac OSX, iPhone OS initially did not have an official name until the release of the iPhone SDK on March 6, 2008 . Despite its similarity to Mac OS X, there are some technologies available only on iPhone OS such as Multi-Touch interface . IPhone software platform is built on a layered architecture. Apple has published some public APIs for the iPhone that are the access points of the platform and developers can integrate them in their applications, as the iPhone application developer explains. There are also some private APIs which, if developers use them in their applications, the applications will be rejected when developers want to publish them on AppStore. Apple marketing literature simply stated that the iPhone runs "OS X", a reference to iPhone OS's parent, Mac OS X. The Developer Beta for version 3.0 was made available on March 17, 2009; current version of iPhone iOS 4.2.1 was released November 22, 2010.
Apple provides updates to the iPhone's, iPad's and iPod Touch's operating system through iTunes, similar to the way that other iPods are updated, and touts this as an advantage compared to other mobile phones and devices. Security patches, as well as new and improved features, are released in this fashion. Apple concurrently provides the same version of the iPhone OS for the iPod Touch. IPhone users receive all software updates for free, but iPod Touch users are charged for major software updates like 2.0 and 3.0. 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". But developers have to pay to load applications onto the devices. Developers are able to set any price above a minimum for their apps in the App Store, of which they will receive a 70% share.
Fig.2. demonstrates the openness degree of different architectural layers in iPhone.OPERATING SYSTEMS FOR MOBILE COMPUTING*
Hardware: In iPhone, Hardware refers to the physical chips soldered to the iPhone's circuitry. The actual processor falls under this layer, but the instruction set and in-memory descriptor tables are contained within the "processor" layer. Firmware: Firmware refers the chip-specific code that is either contained with memory in/around the peripheral itself, or within the drive for said peripheral.
Processor: Processor is refers to the ARM instruction set and the interrupt descriptor table as set up by the iPhone OS during boot and driver initialization.
IPhone OS: iPhone OS is the kernel, drivers, and services that comprise of the iPhone Operating System. It sits between the user space and hardware.
Objective-C Runtimes: Objective-C runtime is comprised of both the Objective-C dynamically-linked runtime libraries, as well as the underlying C libraries.
Frameworks/API: Frameworks/API layer has API calls which are Apple-distributed headers with the iPhone SDK, with some dynamic linking occurring at runtime. These reside on top of the Objective-C runtime, as many of these are written in Objective-C.
Application: The application stored in iPhone has to be purchased through the application store. This application was compiled to native code by the Apple-distributed iPhone compiler, and linked with the Objective-C runtime and C library by the linker. The application also runs entirely within the user space environment set up by the iPhone OS.
CHAPTER 3: COMPARISON
Android is not the only Smartphone that has the potential to solve major causes of dissatisfaction that users have with their phones. According to Pip Coburn, a global technology strategist, "People change habits when the pain of their current situation exceeds their perceived pain of adopting a possible solution."  If what he says is true, the technology adoption rate for mobile computing should be phenomenal.
The features described above can be applied to any number of new devices. What makes Android so special? Android has the potential to be a pivotal in the mobile space because of application development. The newest technology, slickest interface and quickest network in the world will not make up for a lack of good applications.
With the assumption that the technology that provides more choices (i.e. more applications) will ultimately be a market leader, then we must compare Android to its largest competitor, the iPhone. Which technology will have more support from the development community? Which technology will offer innovative applications? The areas to compare with respect to developer support are: market base, ease of use, support, and technology.
As a leader in the field, the iPhone clearly has the advantage in the market base. As of June 2008, Apple sold over 9 million iPhones. In comparison, T-mobile expected to sell about 600,000 G1phones by the end of 2008 . Thus, the G1 should be in a good position to compete. If a company is building an application for profit, it makes sense to build it for a large market. The Android operating system can run on many different devices, not just the G1. Users have already installed Android on devices that were built before Android was released. Motorola, for example, has plans to split its devices between Android and Windows Mobile . Currently, there are tens of millions of Motorola devices in use. Ericson, HTC, Samsung and many other hardware manufacturers have plans to release Android devices. Millions of iPhones could be overtaken by an Android platform that is not hardware specific. The critical point is that an application written for the iPhone will work on only one device, the iPhone. An application written for Android has the ability to be deployed on hundreds.
Application Development environments
â€¢ Android: Java
â€¢ iPhone: Objective-C
3.1.2) Programming Model
â€¢ Android: With Android's support for multiple processes and component reuse, the platform itself provides support for Intents and Activities (Intent is just a variant of a command); provide a way of declaring user preferences in XML; XML format is extensible allowing custom UI components to be integrated
â€¢ iPhone: MVC design pattern, provide a way of declaring user preferences in XML; iPhone developers that wish to customize preferences will have to implement a UI from scratch
â€¢ Android: Android development leverages the excellent JDT tools; Everything Java is indexed, the IDE has a rich model of the source code, and refactoring is seamless; JDT's incremental compiler provides immediate feedback with errors and warnings as you type.
â€¢ IPhone: Xcode IDE, Instruments, iPhone simulator, frameworks and samples, compilers, Shark analysis tool, and etc.
3.1.4) UI Builder
â€¢ Android: Android UI builder can't display UIs how they'll actually appear.
â€¢ iPhone: iPhone app developers are given a good UI builder; It's flexible and can model some sophisticated UIs,
Difficulties and Security Issues
Difficulties for current users
To understand the success of Android, it is important to understand the difficulties current smartphone customers are having. Most users of mobile devices report dissatisfaction related to the following areas: difficult interface, typing on a small device, network speed, mobile based web browsing, and a lack of applications.
Difficult Interface: The Android framework allows hardware manufacturers to build user friendly interfaces. As cell phones transformed into smartphones and mobile devices, manufacturers added touch-screens to their devices. The Android operating system was built to take advantage of touch screens.
Typing on a small device: Since Android is an operating system only, the keyboard provided is based on hardware manufacturers. The very first Android phone, the G1, has a slide-out QWERTY keyboard. The Blackberry proved that QWERTY keyboards were the preferred method. Android has the ability to use a standard phone based keyboard or a touch-screen keyboard.
Network speed: All existing proposed Android devices will be based on 3G networks. 3G is much faster than the existing network schemas, however it is not quite broadband speed as most users expect. The average download speed from T- Mobile is 1mbit per second. While it is a step in the right direction, consumer's expectations have increased.
Mobile Web Surfing: Mobile device users want to be able to browse real web pages, not simplified mobile versions. If a device solves the first three issues on this list, real web browsing suddenly becomes possible. Most mobile devices today provide Internet browsing. Website operators build alternate sites just for small screens with limited interfaces. Android provides a built-in full web browser capable of rendering real web pages, not just the small mobile versions.
Lack of applications: Android is a true open operating system. Users can develop a Java-based application and deploy it on an Android device. This feature has the ability to set Android apart from any other device. Its closest competition is the iPhone. Even with the iPhone, an application must be approved by Apple before it can be offered to its users.
CCSC: Rocky Mountain Conference / 67JCSC 25, 2 (December 2009)
Ease of development using Android
One of the biggest advantages that Android has over the iPhone is the ease of development. Apple is pushing a closed, proprietary environment, thus none of the inner workings of the iPhone are as exposed for developers . The following list shows a few key areas that make a technology easy for development: enablement, the underlying OS, development tools, and training.
Enablement: Before developing on any platform, there must be tools. In this case, that is the software development kit (SDK). In order to download the iPhone SDK, one must first register as an Apple Developer Connection Subscriber . Only after agreeing to a strict license agreement can the free SDK be downloaded, since the SDK runs only on Mac OS, this is a huge determent for iPhone developers. As of August, 2008, Mac OS represented only 8% of the PC market share , eliminating 92% of potential developers. Google on the other hand, released 68 Android's SDK for free in an environment that will run on any PC (Mac or Windows-based).
The OS: Android is based on an open-sourced Linux operating system. The iPhone is based on Mac OS. Mac OS is a closed, proprietary system owned and controlled by Apple. Linux, on the other hand, is an open-sourced platform that anyone can extend. Thus, an open, free system will normally win against a proprietary, closed one.
Development Tools: Few developers have experience with iPhone's development language and environment. Android applications, on the other hand, are written exclusively in Java. In addition, Google published an Android plug-in for the Eclipse environment. With millions of Java developers in the world today, this means that there is already a large body of developers who are using the language and the environment needed to create Android applications.
Training: This is one area where the iPhone beats Android. Google only released the typical online manual for software development. Apple, on the other hand, took it one step further and published a series of recorded training sessions. There is a catch; one can only download the free training sessions through iTunes.
For the average developer to build an application for the iPhone, they would need to 1) buy a fairly recent Macintosh running Mac OS 10x or later,
2) sign up for Apple's developer network,
3) Learn a new development language, and
4) Learn to develop in a new proprietary environment.
If you compare that to Android, the average developer
1) Already has a PC that can build Android applications, likely already knows the Java language, and
2) Has a 50/50 chance of using the most common development environment, Eclipse.
CHAPTER 4: API's
I phone API
1. Greg Kroah-Hartman. "Android and the Linux kernel
2. "Linux developer explains Android kernel code removal". http://news.zdnet.com/2100-
3. "What is Android". Android Developers. http://developer.android.com/guide/basics/what-isandroid.
4. Open Handset Alliance. "Industry Leaders Announce Open Platform for Mobile Devices".
5. Bort, Dave. "Android is now available as open source". Android Open Source Project.
6. Honan, Matthew. "Apple unveils iPhone". Macworld.
7. Android architecture. http://www.slideshare.net/deepakshare/android-arch-presentation
8. An overview of iPhone OS architecture.
9. Fingerworks. http://www.fingerworks.com/
10. Into Mobile. http://www.intomobile.com/2009/06/18/iphone-3g-s-torn-apart-samsungs5pc100-arm-cortex-a8-600-mhz-inside-and-double-the-ram.html
Andriod Developers (a). (n.d.). Painless Threading. Retrieved March 21, 2010, from http://developer.android.com/resources/articles/painless-threading.html
Android Developers (b). (n.d.). Application Fundamentals. Retrieved March 21, 2010, from http://developer.android.com/guide/topics/fundamentals.html
Android Developers (c). (n.d.). Activity. Retrieved March 21, 2010, from http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Android Developers (d). (n.d.). Content Providers. Retrieved March 21, 2010, from http://developer.android.com/guide/topics/providers/content-providers.html
Android Developers (e). (n.d.). Avoiding Memory Leaks. Retrieved March 21, 2010, from http://developer.android.com/resources/articles/avoiding-memory-leaks.html
Android Developers (f). (n.d.). What is Android. Retrieved March 21, 2010, from http://developer.android.com/guide/basics/what-is-android.html
Android Developers. (April, 2009). Android 1.5 Platform Highlights. Retrieved February 21, 2010, from http://developer.android.com/sdk/android-1.5-highlights.html
Android Developers. (2009, December). Android 1.6 Platform Highlights. Retrieved February 21, 2010, from http://developer.android.com/sdk/android-1.6-highlights.html
Android Developers. (2010b, January). Android 2.0 Platform Highlights. Retrieved February 21, 2010, from http://developer.android.com/sdk/android-2.0-highlights.html
Android Developers. (2010a, January). Android 2.1, Release 1. Retrieved February 14, 2010, from http://developer.android.com/sdk/android-2.1.html
Android Developers. (2010d). Dowload the Android SDK. Retrieved March 21, 2010, from http://developer.android.com/sdk/index.html
Android Developers. (2010c). PowerManager. Retrieved March 21, 2010, from http://developer.android.com/reference/android/os/PowerManager.html
Android Market. (n.d.). Getting Started. Retrieved March 21, 2010, from http://market.android.com/support/bin/topic.py?topic=15866
Apple. (2008, March). Apple March 6 Event. Retrieved February 21, 2010, from http://www.apple.com/quicktime/qtv/iphoneroadmap/
Apple. (2009c, August 2009). Concurrency and Application Design. Retrieved March 28, 2010, from http://developer.apple.com/iPhone/library/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100-SW1
Apple. (2009e, May 26). Game Kit Framework Reference. Retrieved March 28, 2010, from http://developer.apple.com/iphone/library/documentation/GameKit/Reference/GameKit_Collection/GameKit_Collection.pdf
Apple. (2010b, February 2). iPhone SDK 3.1.3. Retrieved March 28, 2010, from http://www.apple.com/downloads/macosx/development_tools/iphonesdk.html
Apple. (2007, April 02). NSNotification Class Reference. Retrieved March 28, 2010, from http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSNotification_Class/Reference/Reference.html
Apple. (2008, August 09). Reachability. Retrieved March 28, 2010, from http://developer.apple.com/iphone/library/samplecode/Reachability/
Apple. (2009b, May 22). Synchronization. Retrieved March 28, 2010, from http://developer.apple.com/iPhone/library/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i-CH8-SW1
Apple. (2010a, February 24). The Core Application Design. Retrieved March 28, 2010, from http://developer.apple.com/iPhone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/ApplicationEnvironment.html#//apple_ref/doc/uid/TP40007072-CH7-SW56
Apple. (2009a, May 22). Thread Management. Retrieved March 28, 2010, from http://developer.apple.com/iPhone/library/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html
Apple. (2009d, November 17). UIApplicationDelegate Protocol Reference. Retrieved March 28, 2010, from http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html
AppleInsider Staff. (2007, May 17). News Flash: Apple iPhone receives FCC approval. Retrieved February 2010, 21, from http://www.appleinsider.com/articles/07/05/17/news_flash_apple_iphone_receives_fcc_approval.html
Block, R. (2007, June 3). iPhone release date confirmed: yours on June 29th. Retrieved Feburary 21, 2010, from http://www.engadget.com/2007/06/03/iphone-release-date-confirmed-yours-on-june-29th/