After spending some time with Palm, it's easy to understand some of the rationale behind Apple's tight relationship with AT&T. The information about developing for the Palm is not just segmented by device (Treo, LifeDrive, and so on) but also platform (Palm OS or Windows Mobile) and carrier. Palm helps cut through this clutter with its Virtual Developer Lab, a process that lets you try out your software on any handset in a number of markets throughout the world. You sit at your desk and boot up your software on some handset somewhere else just to make sure it will work for purchasers in that corner of the world.
Some of this confusion must make it hard to keep the PDN Web site up to date because it was easy to trip over old links and musty information. But despite the cruft and dust, I still find myself enjoying the simplicity of the Palm OS. The more I use my Apple iPod Touch, the more I appreciate my Palm TX, a similar platform that delivered all of this palm-sized fun in a very simple and elegant way. The browser, called Blazer, is deliberately minimalist, and that makes it easier to use than Apple's much cooler grown-up browser that requires an endless amount of pinching and twisting to actually read something. Perhaps it's nostalgia, but I think there's something more to this design goal. It's not pretending to be a desktop; it's happy to be small. And if it's nostalgia you really want, there are emulators for the Palm that let you play Nintendo NES games, and they've been around since before the iPod too. I only hope that Palm can keep some of this simplicity intact as it builds out the new OS.
Sure, the Internet is cool. Sure, the Web is neat. But if you live in a Microsoft world, as many companies do, then you're probably writing .Net applications talking with Microsoft servers that store their data in Microsoft SQL Server boxes. Windows Mobile is for you. All of that experience maps over, and while it can be a bit hairy to make the components fit on a tiny screen, you can think of them as one and the same thing.
Windows Mobile is almost as old as Palm's OS, but it's been refreshed a bit more often. Microsoft devotes a fair amount of time to keeping older, legacy platforms like Windows Mobile 2003 and Pocket PC 2002 running. The newest versions support the touchscreens, GPS, mapping, and more.
Jay Roxe, a group product manager for Windows Mobile, explains the breadth of Microsoft's reach: "Windows Mobile phones are made by 56 handset makers [Samsung, LG, Sony Ericsson, Motorola, etc.] and distributed through 160 mobile operators in 99 countries."
Starting up with programming requires buying Visual Studio ($299 to $2,799 with a 90-day free trial), something that's a bit unusual in this arena, where other companies have embraced the open source tools like Eclipse. Still, many Visual Studio developers sing the praises of the platform and often turn up their noses at the lack of polish at the open source tools.
After you buy into the platform, the next investment is in wading through the initial dump of data. You can easily download more than a gigabyte of templates, sample code, simulators, and headers. Microsoft shareholders can rest a bit easier because there were probably more than 1 billion keystrokes devoted to developing this platform, and many of them are still part of the distribution given to everyone.
Much of this complexity comes from the gradual evolution of the mechanism. There are different emulators for all of the combinations that have come out of the electronic factories, like Standard Landscape QVGA (240 by 320 pixels, 131dpi) or Professional Square VGA (480 by 480 pixels, 192dpi). You can fire up your application on these and see how they work.
There are a number of ways to program the platform. Low-level work with the hardware is done in C++. Higher-level work with more customized, form-centered user interfaces is done in either C# or Visual Basic. The tools reach out over the Internet and work with distant Microsoft SQL servers running ASP.Net.
There are other options too. Many parts of Microsoft have caught on to the mobile idea, and they're integrating themselves with the platform. Windows Live blogging, for instance, works with Windows Mobile now.
The greatest strength of this stack of software is probably its place in the Microsoft .Net tradition. It's becoming, like the others, more of a smaller version of the desktop than a handheld with a way all its own. Microsoft stopped calling them "Pocket PCs" and switched to "Windows Mobile," a change that was more than cosmetic. You can feel the overlap between the desktop .Net and the mobile .Net grow. Some sophisticated controls that didn't work on the earlier, tinier screens are now available. Other parts of the API now offer fuller features like XPath for cruising through XML. Threads can abort and join each other.
The options for distribution are quite good. Microsoft doesn't run its own store, at least not in the same big way that Apple does, but it seems to be moving in that direction. Its Total Access program offers plenty of free games, ringtones, and other goodies. Trial versions of games such as Guitar Hero are free but cost $14.99 to unlock all of the features. Developers will probably want to turn to other distribution platforms, and there are a number of companies, including Kagi and Handango, that sell software to phones. There's not one path from compiler to paying customer.
"Windows Mobile is by far the most open," says Flick Software president Jay Flick. "There's very little you can't do." He explained that it was much easier for the programmer to modify all parts of the phone's appearance, including the front page, a place where other development environments exclude third-party software.
Joining the club
Which platform should you choose? Most programmers will be led by their past experiences. These devices, after all, are becoming more and more like little desktops, so it only makes sense to follow the same path. One iPhone programmer's résuméthat crossed my desk pointed out he had been programming Cocoa applications for the Mac for some time. It was only natural that he would migrate to the iPhone.
For the same reasons, many shops with a big investment in Windows .Net programming will see a natural path to migrate to the Windows Mobile world. There are fewer differences now to get in the way, so why not rejigger that desktop app to work with the smaller screen? Most of the widgets work the same way. Java programmers will feel more at home with the phones from Google, Nokia, and RIM.
The big difference between these worlds and the desktop is the greater amount of discordance. They're still too new for many of the differences to be worked out. If you want to write code that will run on many different platforms, Java Micro Edition is one of your best choices, but it's far from a slam dunk. A Swing application may run on almost every desktop these days, but a Java MIDlet won't. The iPhone may be running something close to Mac OS X, but that doesn't mean it has the same Java support.
What should a new business do if it has no legacy code weighing it down? It depends heavily on the nature of your product. Java ME applications run on very cheap phones, and they're widely supported on different lines. The development tools can cost next to nothing, and there's a path, albeit imperfect, to high-end phones like Google's Android that are also programmed in Java.
If you're after sales to end-users, there's no doubt that Apple's tightly controlled garden has delivered some stunning sales numbers. They offer a simple, direct, and trusted pathway that's hard to duplicate with the other phones. But the iPhone is a pain for every other type of development.
Other companies are certain to follow Apple's success. Mike Kirkup, a manager of developer relations at RIM, explains: "We did announce an application store front for launch in March 2009. It's important to understand that what we're focusing on is providing a clear and single point of location, but it won't be the only or sole channel." They'll continue to support many other paths, including independent merchants such as Handango and enterprise channels.
After peeking and poking all of these platforms, I came away assuming that we're only a few years away from the end of the desktop for many casual users. Most of the world will just plug their smartphones into a dock that connects the phone with a full-sized keyboard and a big monitor. The phones already have the power to let people browse the Web and do much of what the average user needs. Only programmers, scientists, number crunchers, and gamers will keep their desktops, but even those cycle hogs will probably follow eventually.