Integrated Development Environments (IDE)
Visual Studio for Windows Mobile
Visual Studio is the standard and ultimate development environment for developing Windows Mobile applications. Using Visual Studio 2008, you can develop applications for Pocket PC 2003, Windows CE, Windows Mobile 5.0 Pocket PC, Windows Mobile 5.0 Smartphone, etc.
You can download a free Visual Studio Express version from the following Microsoft location (does not have mobile development functionality):
Visual Studio Express
Visual Studio is probably the best commercial development environment. It comes with a sophisticated code editor, full-fledged debugger, source control integration, testing functionality (higher editions of Visual Studio), and help.
Figure 1. Visual Studio 2008 Professional with a Smart Device Project

Eclipse for Android
Applications for Android are developed primarily with Eclipse (though other Java IDEs can be used). Google provides a plugin for Eclipse that makes developing applications for Android easier. Eclipse is an open source integrated development environment. Just like Visual Studio, Eclipse also provides great code editor, debugger functionality, help, etc.
You can download Eclipse from:
Eclipse
You can get the Google’s Android Plugin for Eclipse from here:
Android
Figure 2. Eclipse with Android Applications

Programming Languages
C#, Visual Basic, and C++ for Windows Mobile
Smart Device applications for Windows Mobile can be developed with at least the following languages:
- Visual C#
- Visual Basic
- Visual C++
And, of course, if you are targeting the web browser on a Windows Mobile device (and that browser is Internet Explorer), you have the web development technologies from Microsoft are also available (like ASP.NET and JavaScript/JScript).
Of these languages, if you have no preference, C# is the best way to go. If you are an old VB pro, then that might be appealing. If there is a need to access low-level functionality, then Visual C++ would be the right option.
Figure 3. Smart Device Projects using Visual C++ (uses older, low-level technologies)

Java for Android
Applications for Android can be created using, primarily, Java. Some third-party efforts (like Scala) may support other languages. Officially, Java is the only supported language (at least in the beginning). C/C++ (“native language/APIs”) are not supported (at least in the beginning).
Figure 4. Creating a new Android Project from Eclipse (available after installing the plugin)

Operating Systems
Windows Mobile
Versions 5.0 and 6.0 are on most of Windows Mobile devices as of this writing. This is a Windows “Lite” operating system in both appearance and for development purposes.
Android
The Android OS / stack / platform is based on Linux (version 2.6), which is a free, open source operating system. In addition, the Android platform adds the libraries, application framework, and common applications needed for a mobile device.
Figure 5. Similar sized Windows Mobile and Android PDAs without keyboards

Libraries
.Net Compact Framework for Windows Mobile
.Net Compact Framework is the shortened version of .Net Framework. They both have the same high-level architecture (both are used to develop ‘managed’ applications – providing memory management, etc.); however .Net Compact Framework is optimized for low-memory devices like mobile devices.
Similar functionality comes similarly named namespaces, classes, methods in these two frameworks. But the dlls/assemblies providing the functionality comes from different directories. As shown in the figure below, for example, the Windows Forms functionality comes from a namespace called System.Windows.Forms in both the regular and compact frameworks. But the dll for the compact framework comes from the CompactFramework directory (e.g.: C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\System.Windows.Forms.dll)
Figure 6. .Net Compact Framework

Android SDK for Android
For the Windows Mobile, the library/framework is marketed/grouped under one name .Net (or .Net Compact Framework); but, it has various pieces like Base Classes, Forms, Database, Drawing/DirectX, etc.
Similarly, various pieces of functionality are collected in the Android Library. You will find a file named android.jar in the Android SDK directory. As you can see from the figure below, some classes from Java, JUnit, SQLite, etc. are in here, and, in addition, there is a whole bunch functionality under the android package.
Figure 7. The Android Library

Databases
SQL Server Compact Edition for Windows Mobile
SQL Server comes in several flavors – from Enterprise to the Compact. The Compact version comes with a reasonably nice subset of SQL functionality of the high-end versions. The SQL Server Compact edition (as well as the Express edition) are free.
SQLite for Android
Open source SQLite is the database engine behind Android applications. SQLite is not only free, the source is in the public domain. Lot of devices, including iPhone, use SQLite.
Emulators
Windows Mobile Emulators
Both Visual Studio and Eclipse/Android SDK provide emulators of their mobile devices. These emulators help test the applications without having to deploy them to a real physical device.
Figure 8. A simple Windows Mobile App on an emulator

Android Emulators
Android SDK provides emulators of different sizes to run and test the Android applications.
Figure 9. A Notes application in an Android emulator

User Interface Development
Drawing the User Interface for Windows Mobile
The user interface can be simply drawn on the design window of a form in Visual Studio. Various controls in the Toolbox can be simply dragged and dropped on to the surface. The code is written behind these controls.
Figure 10. Designing user interface for Windows Mobile Apps

Layout XML for Android
The Android Application user interface can not be drawn yet (as of this writing). But the user interface can be created with simple xml markup, as shown below. At some point, tools should be available to generate this XML from a drawing.
Code Listing 1. XML for the Note List screen
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
android:gravity="center_vertical"
android:paddingLeft="27dip"
/>
Built-in/Third-party Components/Controls
Device Controls for Windows Mobile
Windows Mobile comes with a whole bunch built-in controls/components to simply add to your mobile application. The following figure shows the built-in user interface controls (more available from the third-party vendors).
Figure 11. Device Controls for Windows Mobile

Custom Views for Android
In Android, Activities roughly correspond to screens and Views roughly correspond to individual widgets/controls. Android SDK includes widgets like Text, Button, Checkbox, etc. As Android becomes popular, third-party widgets should be more visible.