Developing mobile applications for Microsoft's Windows Phone platform is a straightforward process with many tools available to developers. In fact, the mobile team at Microsoft did a great job with the Windows Phone platform by taking a completely unique approach in several aspects. This article is the first installment of a series on getting started with Windows Phone development. In this tutorial, I cover the platform's most compelling features, common development techniques as well as third party tools you can use for developing Windows Phone applications.
About the Series
This tutorial is the first installment of a series covering Windows Phone development. In this tutorial, you'll learn about the Windows Phone platform, a general overview as well as the platform's core features. As the series moves forward, you will also learn about application structure and other essential aspects of the platform to enable you to build simple and useful applications.
Network interaction, interface design, and data binding are some of the topics we'll cover. At the end of this series, you should be able to create a basic, functional Windows Phone application, have a good grasp of the Windows Phone platform and its capabilities, and know quite a bit about several third party tools and online resources.
A Bit of History
I'd like to start this series with a brief overview of the platform's history. Windows Phone 8 is the latest public release of the platform and succeeds versions 7.1 and 7.8, commonly referred to as Windows Phone 7. The Windows Phone platform is Microsoft's attempt to revolutionize the mobile space and it's the successor to the Windows Mobile platform.
While Windows Mobile was unable to compete with the current market leaders, iOS and Android, Windows Phone has what it takes to get a foothold in the mobile space and change it for the better.
Why Windows Phone?
The mobile space is a multibillion dollar industry with, at the time of writing, two dominant players, Apple with iOS and Google with Android. Even though Windows Phone isn't in the same league with Apple and Google, the release of Windows Phone 8 has significantly helped to increase the Windows Phone market share.
Windows Phone is considered the third horse in the mobile race and many think of Microsoft as a serious competitor, especially with the acquisition of Nokia's mobile division. The question remains why you should consider developing mobile applications for the Windows Phone ecosystem.
First, Microsoft has made it very easy to port Windows Phone applications to its Windows 8 operating system. The two operating systems share a lot of common libraries and it's perfectly possible to develop an application that targets both Windows Phone and Windows 8 using a single code base.
Porting applications from Windows Phone to Windows 8, and vice versa, is another option to consider. This option is particularly attractive to game developers as they can reuse components written for either of the Windows platforms.
Second, the tools for developing Windows Phone applications are great and so is the Windows Phone community. The development tools of the Windows Phone platform are arguably among the best tested and most robust available to developers.
Many developers already have experience with the toolchain for developing Windows Phone applications. Visual Studio is the preferred IDE (Integrated Development Environment) for Windows Phone development and it's a joy to use. It has built-in support for version control, code analysis, TDD (Test Driven Development), and even UML (Unified Modeling Language) diagram generation.
The SDK to develop Windows Phone applications is free to download and registering for a developer account isn't expensive.
Developing for Windows Phone
Developing mobile applications for the Windows Phone platform comes with a certain degree of flexibility. You can, for example, create Windows Phone applications using a number of programming languages, which I will talk about shortly.
Developers with a background in C++, C#, Silverlight, JavaScript, ASP.NET, or even Visual Basic (or VBA) will find it easy to get started with Windows Phone development.
Even developers coming from Java or other mobile platforms, such as Android, will be surprised by the soft learning curve. Let's take a quick look at the options you have with regards to developing mobile applications for the Windows Phone platform.
Silverlight
The first and most popular approach is the Silverlight framework. Silverlight alongside Visual Basic or most commonly C#, is the preferred way to develop Windows Phone applications.
When using this approach, user interface elements are represented in XAML, a flavor of XML created by Microsoft and used in .Net technologies like Windows Presentation Foundation (WPF) and Silverlight. Compared to, for example, web applications, you can think of XAML as the HTML equivalent and Visual Basic or C# as the JavaScript counterpart.
Most of the resources for Windows Phone development as well as Microsoft's official documentation showcase this approach and it's also the path that we will be taking in the rest of this series.
PhoneGap
Another popular approach is to use PhoneGap, a free framework for creating cross-platform applications using HTML5, CSS, and JavaScript. PhoneGap, or the open-source Apache Cordova, is a set of APIs that gives developers easy access to native device capabilities, such as the device's sensors and camera, through JavaScript.
With PhoneGap, developers with a web development background can create Windows Phone applications without the need to write native code. The most important advantage of PhoneGap, however, is that the framework is platform agnostic. This means that you can use one code base to write mobile applications for multiple platforms, such as Windows Phone, iOS, and Android.
XNA Framework
Microsoft's XNA (XNA's Not Acronymed) framework can also be leveraged to create Windows Phone applications. However, it's important to know that XNA is aimed at game development. Since game development isn't the primary focus of this series, we won't be exploring XNA in much detail. If you'd like to know more about XNA, I encourage you to read Nick Ohrn's tutorial about XNA on Tuts+.
C++
The last option you have is writing native C++. This approach is commonly used by game developers who are looking for performance or are already using other resources written in C++.
A lot of game developers choose for C++ because of the portability of the language to other platforms. These applications make heavy use of Direct3D, the graphical component of Microsoft's DirectX API, which requires C++. If game development is your main focus, then this is an option to consider.
Development Tools
As I mentioned earlier, the tools for developing Windows Phone applications are robust and free. The IDE (Integrated Development Environment) used to develop Windows Phone applications is Visual Studio. The Express edition is free and ships with the Windows Phone 8 SDK. The latter also includes an emulator that supports the three screen resolutions available to Windows Phone devices.
Another tool worth mentioning is Blend for Visual Studio, a user interface design tool for creating graphical interfaces for applications. Blend makes the design process of Windows Phone applications much easier and it integrates nicely with Visual Studio. We won't cover Blend in this series though.
Platform Features
Windows Phone 8 has every feature you expect from a modern mobile platform and more, such as NFC (Near Field Communication), Wallet, Storage, Camera, Maps, Push Notifications, and, one of its most notable features, Live Tiles.
Another unique feature of Windows Phone is its design language. The Panorama and Pivot layout patterns are among the most commonly used design patterns on Windows Phone. I encourage you to take some time to familiarize yourself with the Windows Phone design guidelines to make sure that the applications you develop seamlessly blend in on the platform.
Resources
There are a few things I'd like to mention that can help you get started with Windows Phone development. The first is a website named CodePlex, a platform for hosting open source software, managed by Microsoft.
CodePlex hosts many libraries and tools that can save you time when developing Windows Phone applications. Signing up for CodePlex is free and I suggest you create an account to start exploring what CodePlex has to offer. A number of well-known projects are hosted on CodePlex, such as Coding4Fun, Json.NET, and HTML Agility Pack.
I also recommend browsing Microsoft's official documentation and code samples on the Windows Phone Dev Center. Feel free to explore the links below to learn more about Windows Phone development.
Conclusion
In this article, I've given you a brief introduction to the Windows Phone 8 platform. We learned about the platform's history, took a closer look at the options you have when developing Windows Phone applications, and explored which tools you can use to develop applications for Microsoft's mobile platform.
In the next installment of this series, the fun really begins when we take a deep dive and create our very first Windows Phone application. I hope to see you there.