Mobile Technology - Where are we going?
Google Android is spreading like wild fire. The iPhone™ has changed the technology landscape. Apple™ records over 2 billion app downloads for the last 15 months on the Apple app store. Over 30 Manufacturers have signed on for Google Android. The Google Android 2.0 source code was released today. Alot is changing in the software development world.
For the non-developer community, you might be asking questions that are similar to the following: What is Android? What does Google have to do with Verizon, T-mobile, and Sprint? Why is Android a powerful operating system? Why is it better or worse than the iPhone? Why will consumers adopt mobile technology that runs the Android and how quickly will they do so? The list of questions goes on. So let's start by explaining the iPhone and its history so that you understand the market dynamic that is going on in the mobile development world.
In June of 2007, Apple launched the iPhone. In July of 2008, the Apple iPhone App Store premiered. From inception to today, the iPhone App Store has had over 2 billion individual downloads and the store is hosting over 100,000 apps. The iPhone runs the iPhone Operating System, otherwise known as iPhone OS. The current version is 3.1. Prior versions of the software did not have features such as cut/copy/paste and did not leverage the full capabilities of the new hardware that is found on the iPhone 3GS. With the 3GS hardware, we've seen an increase in processor speed, a deeper processor pipeline, larger L1 cache, integrated BT/WiFi chip, and an upgraded graphics core, amongst other things. The iPhone OS only runs on the Apple iPhone. The iPhone OS is a special port of the Apple desktop operating system, OS X. In turn, the Apple OS X operating system was built from the NeXTSTEP operating system. The NeXTSTEP operating system was the foundation for Apple OS X. Apple actually bought NeXT. The NeXT operating system featured a Mach Kernel and used some of the BSD subsystems. Throughout the development of OS X over the past 10 years, Apple continued to integrate the latest technological innovations from the open source BSD community. BSD dates back to the 1970's and 1980's at CSRG (Computer Systems Research Group at UC Berkeley). Early versions of BSD were used by DARPA (Defense Advanced Research Projects Agency) to provide support for DARPA's networking protocols, TCP/IP. BSD actually branched off of research that begin at Bell Labs in 1969, where UNIX was invented. Early versions of UNIX were written in C. And to today, C remains the dominant language for writing operating system code. Compiled C code is fast, efficient, and not "too abstracted". Assembly code is easily hooked in. All in all, C remains a very solid programming language and one in which the UNIX operating system is built upon. A large number of servers on the Internet run UNIX or a derivant thereof. It is not uncommon to see UNIX servers that have been running (withouth a reboot) for multiple years.
Image via Wikipedia
UNIX has long been an extremely solid operating system and heavily used by many programmers. Another subject worth looking up is preemptive and cooperative multitasking - which well explains how Microsoft popped in and out of the picture. For additional information on this and other topics, please see "The Design and Implementation of the 4.4BSD Operating System" by McKusick, Bostic, Karels, and Quarterman. There are extensive resources available on the Internet for Virtual Memory Mgmt, TCP/IP (early days), and other architectural topics related to OSX, BSD, Mach, NeXTSTEP, and Darwin.
So what did Apple end up with for their OS X operating system? A Posix compliant, rock solid UNIX operating system. And iPhone OS was derived from it. iPhone OS leverages many of the OS X features that came out of NeXTSTEP, Mach, and BSD. All of the great process scheduling stuff is built in, along witih alot of other cool stuff.
However; iPhone OS is locked, out of the box. In other words, you can't run multiple applications (that you've downloaded from the App store in simple terms) at the same time on the iPhone. In unlocked state, the iPhone is a fully operating UNIX computer. This means that you could run a web server on it, a mail server, java or php programs, etc. etc. So you see why it is locked. That being said, applications distributed on the App store are only for locked iPhones. Period, end of story. This is not necessarily a bad thing though because it really challenges the developer to write code and find solutions to problems that are bound by certain constraints - i.e. How does one write inter-process communication code when only one app can run at a time? How do you write daemon processes? What if you wanted to have an app that continually monitors location, even when you did not have the app open? Well, it's very hard to do that unless you unlock the iPhone and if you unlock the iPhone, then the App store will reject it. You see the point... However; Apple hit a home run, even with the OS constraints that they imposed on the iPhone. Apple re-introduced Objective-C code to the entire iPhone developer world. This is huge. As I mentioned, the UNIX operating system is written in C as are early versions of it. C is an extremely powerful language. I say C because Objective-C is an extension of C...i.e you can code all the C you want in your Objective-C program. Apple got the language right, they got the UI (user interface right), they got the multi-touch gesture thing right....the list goes on and on, and they hit a home run. Oh and there is one more thing, remember how I mentioned that BSD is open source (actually freebsd, netbsd, trustedbsd, netbsd, darwin, etc. are). Well, the iPhone OS is not open source. Interesting, eh? That has lots of implications, especially related to firmware and the kernel. And another thing - connecting to third party devices. (think "Made for iPod, Works with iPhone"). This program was created by Apple for connecting third party external devices to the iPhone via the 30-pin dock connector or Bluetooth chip. It's not so simple - you can't just pair any Bluetooth device with the iPhone and you can't just connect the USB end of your 30-pin dock connector cable to any computer and start reading and writing raw data. But there are solutions! And I will be covering those after I talk about Android, in the next post.
Apple, the Apple logo, iPod, iPod touch, and iTunes are trademarks of Apple Inc., registered in the U.S. and other countries. iPhone is a trademark of Apple Inc. App Store is a service mark of Apple Inc.

