Was it only six years ago that Windows Mobile was a big part of the cellphone business? That was a time when only programmers thought of a mobile phone as a computer. Now we're heading into the second or third generation of the smartphone, and the little thin slabs are becoming even more complex than the desktop. Do you want to edit a document? Find your way home? Take a picture? Send email? Actually talk with someone? Your smartphone is there for you.
We've come a long way from Windows Mobile and BlackBerry. In the meantime, Microsoft looked into the abyss and realised it had no choice but to match the iPhones and Android mobiles feature for feature. The company clearly spared no expense or effort in building something that offers more or less the same extensive list of features as iPhones or Android smartphones. Then Microsoft tacked on a few cool ideas and its own distinctive style that will lure those who love the mod, '60s look.
This isn't just a challenge for the programmers inside Microsoft. The Windows Phone 8 platform can't become relevant on its own. A smartphone today needs apps from an app store, and an app store needs developers, and developers need SDKs. If Microsoft wants to ship phones, it will need programmers to work with the SDK and start creating apps.
Microsoft just released the Windows Phone 8 SDK last week. The first thing any programmer will notice is extensive breadth and the depth. It's not just a tool for putting some buttons on the screen. Today's developer must be ready to build a slick user interface that can work with the various roles of a smartphone.
Windows Phone 8 languages and runtime
The good news is the new version of the SDK includes extensive documentation written with plenty of detail for you to explore as you poke around all the different ways you can build a Windows Phone 8 app. There are hundreds of good examples, though even that might not be enough to cover everything we'll need to learn to work with the SDK. Microsoft thoughtfully includes a separate forum where programmers can write requests asking for new examples and vote for other people's requests. This is a smart feedback mechanism that should help Microsoft develop what the programmers really want to use.
Most of the examples are written in C#, the language that will probably be the first choice for many of the developers. The presentation layer filled with widgets is written in XAML, while the C# code lies bundled in objects waiting for the events to come its way. Microsoft calls this a "managed app." Most of your diddling will probably be choosing the right XAML layout widget so that everything looks just right. You can produce something quite nice by putting the right widgets in the XAML file and letting the OS manage the rest. The C# will pull data in and out of objects, then swap those objects with other parts of the code.
The free Windows Phone SDK 8.0 comes with Visual Studio 2012 Express for Windows Phone (main editor shown), the Expression Blend UI design toolkit, Windows Phone 8 and Windows Phone 7.1 emulators, and plenty of templates to get you started.
C# is not the only choice; C++ and Visual Basic are options as well. Native, C++ apps will probably be the first pick for anyone building a game that requires zippy performance. That said, the arrival of the .Net Framework in Windows Phone 8 promises significant improvements in app performance and responsiveness, thanks to a new asynchronous programming model and a more efficient runtime engine. Microsoft claims Windows Phone 8 apps will launch faster too, since they'll be compiled in the Windows Store cloud instead of "just in time" on Windows Phone 7 devices, though I haven't experienced this.
More than a dozen different coding templates come with the free version of Visual Studio you get with the SDK. If you're looking to create something that pulls data and displays it in a list, there's a template that's done much of the work for you. The IDE makes it pretty easy to pick up the SDK and get something running in the simulator. It should be noted that the simulator is much more responsive than many of the Android or BlackBerry devices around, though for some reason it doesn't accept text from my keyboard. It forced me to use the simulated phone's keyboard. Note too that you'll need to run Windows 8 on a SLAT-enabled CPU (such as Intel's Core I series) to make the simulator go.