An Introduction to Mobile Platforms
Hello everyone! My name is Christopher Hays, and I too am a student at Full Sail University. There are few things I like more than programming (and tech in general). I feel that one of the best parts of being a software engineer is an ever changing and expanding world, meaning there is no shortage of things to learn. I have tried expanding into different languages, APIs, and even entirely different platforms. One platform in particular should be on everyone’s mind: the mobile platform.
Since I started programming, it was my goal to spend a lot of my extra time learning about mobile environments. My first mobile app, while crude and rudimentary, was called AutoPoke and was for Windows Mobile phones. Its one and only purpose was to automatically poke someone on Facebook back as soon as you were poked. It may sound simple (and code wise, it was extremely simple), but for someone new to the platform, it can seem impossible.
One of the largest problems when working in any new enviornment is getting started. If you are a Windows programmer, programming on Windows Mobile will probably seem familiar. It even has .NET Compact, which is practically the same as its full counterpart, only scaled and stripped down to work on a handheld device. What about using features that are specific to the mobile world, such as SMS?
While not complicated, the lack of proper documentation and examples for this lead to many difficulties for a programmer just getting started on the device. In fact, some documentation, such as for the SmsMessage class for .NET Compact, is just plain wrong. I suggest using Google rather than the actual documentation. Yes, the documentation can be extremely helpful at times, but often there are many ways to do what you are trying to do. For example, there are several ways to parse and XML file on Android, all requiring different approaches to loading and saving the file. Having a library of ink and paper books also comes in handy, as there are often sections dedicated to tasks, showing the different techniques to do the same thing.
Currently there are several mobile platforms a programmer looking into the mobile market should really pay attention to. The first of which is probably the most widespread, but most difficult to develop for. I am of course talking about JME/J2ME. Java Micro Edition is on almost every phone, all the way from the free one you got a few years ago to new phones today. Many other devices will also run JME, giving you a huge user base to work with. There are some huge drawbacks, however. Support for hardware specific features is extremely limited, and variations in manufacturer implimentations of J2ME can result in a much lower portability rate than expected. Due to this, J2ME is no longer a common/popular platform for mobile developers.
If you are working on something for a business, especially something for an entire fleet, chances are you will be working on a BlackBerry. BlackBerries were an amazing innovation for the mobile world. As one of the first popular “smartphones,” it gave access to powerful hardware, mobile internet, and graphics that were once impossible for a phone. BlackBerry is one platform that is hard to ignore.
One platform many have ignored is Windows Mobile. For several years now I have had a Windows Mobile device. Built from the Pocket PC platform, Windows Mobile replicates much of the Windows enviorment on the go. Unfortunately it was never geared towards the general public, nor did it ever have a flagship device. Several problems exist when accessing more hardware specific things, such as the camera, so portabily can at times suffer. Windows Mobile will be completely reworked in the next few months to a year, so keep an eye out to see if Microsoft makes a move on the phone market.
It seems all the mobile buzz these days surrounds Apple’s iPhone. I personally am not a fan, but it has several features that have lead to its success that truly appeal to a developer. Most importantly is a centralized store for applications, making it easy for users to find and purchase content. With impressive hardware specs and an unpresidented amount of tutorials, books, and help content for the iPhone, many developers make their entire living just off the iPhone. Be prepared to learn Objective-C, though. For many C/C++/C# Windows programmers, the transition may not be the easiest.
One of my favorite platforms is Android, Google’s open source operating system for the mobile world. First seen on the HTC Dream (aka T-Mobile G1), Android will be on over 20 phones by the year’s end. While no single phone is expected to rival the popularity of the iPhone any time soon, as a platform Android could quite easily have more users very soon. Android, like the iPhone, is a very rich and powerful platform. While there is not nearly as much documentation on Android (and much that exists is outdated as Android continues to evolve), there is definitely enough to get started, it gets better every day.
Over the next several posts, I’ll detail more of what I have learned about Android. Over the last few weeks, I’ve managed to get to the point where I am comfortable with how the system works, especially with things such as specific hardware features and security. In fact, I was lucky enough to get the new stock of Android Dev Phone 1’s from Google. As a registered Android developer, I was able to get the device, which is hardware, software, and SIM unlocked. Currently I am working on an augmented reality project, which will be the focus of my upcoming posts.
- An Introduction to Mobile Platforms