I am seeing more and more people coming to me with requirements for Windows Mobile applications. I actually started programming for mobile under Windows CE (‘Pegasus’) when it first came out in 1996. Since then, in Europe at least, fewer companies have been looking for Windows Mobile development and more have wanted Java ME and Symbian. The work I have done has followed this trend. However, I am starting to see this trend reverse for some reason. Why?
The only reason I can think is that Windows Mobile has only more recently had more exciting phones (mainly manufactured by HTC), has only recently started supporting 3G and these devices are now being taken up by network operators. Even Sony Ericsson is trying to get a slice of this action.
Consequently, I have been doing side by side S60 and Windows Mobile development over the last few months. Windows Mobile development is so much easier. Why? This has always been the case and in the past the main reasons were tools and documentation. In the past, the Microsoft Visual Studio IDE was so much better than Codewarrior and Borland. Using Visual Studio to program for Symbian was possible but troublesome. Documentation for Symbian, S60 and UIQ was poor compared to Microsoft’s SDK help, samples and 3rd party examples.
Today, things have changed. The Carbide.c++ has improved matters greatly for Symbian developers. The Symbian, Nokia and UIQ Wikis have sufficient examples to help developers. So why is Windows Mobile still so much easier?
I think the main reason now is debugging. The latest Microsoft SDKs no longer emulate the phone using WINS emulators. Instead, you debug against a real ARM emulator running on top of Windows – much like you also do with Android. You can easily switch from debugging on the ARM emulator to debugging a real device by just changing a drop-down setting. Everything works the same because the IDE/debugger is just seeing another ARM device.
In contrast, Symbian, S60 and UIQ still use WINS emulators that are very slow to start up, don’t run ARM code (so are a less faithful reproduction of the real thing) and on-target debugging that still hasn’t been perfected. In fact, many Symbian developers working at the application level still use log files to solve problems.