In September 2011, the Microsoft BUILD conference came and went, and a new era of software development on the Microsoft platform commenced: the era of WinRT. WinRT—short for Windows Runtime—is exciting because it's cool and powerful. WinRT is also scary because it's brand-new and version 1.0. Now, more than a year and a half later, we are on the threshold of the Windows 8.1 release (aka Windows Blue). Windows 8.1 is a full upgrade to Windows 8, and it is also expected to deliver an improved "2.0" version of WinRT.
For Microsoft platform developers, Windows 8 and WinRT application development offers substantial opportunity. To help you make the most of this opportunity, I'm launching a series of articles—starting with this one—that will help you get your bearings in this relatively uncharted application development landscape. This article series will provide the strategic information you need to make informed decisions about the tools, plumbing, and platforms you'll be building software on and with for the next many years on the Microsoft platform. Let's get started!
What WinRT Is—and Isn't
Microsoft defines WinRT as follows: "WinRT consists of an execution interface as well as a collection of APIs that give access to the functionality provided by Windows 8." (Note that the Windows 8 part is important. Currently we can assume that WinRT will run only on Windows 8 and Windows Server 2012.) "The WinRT application model was designed to make interfacing between languages and platforms easy and seamless." (This is also important because as you'll learn shortly, this monster has many heads—and that is a good thing. I am guessing Microsoft means that HTML and native code are platforms because, as stated in the definition's first sentence, WinRT functions only on Windows 8.)
So what meaning can we derive from this definition, and why is WinRT different from the .NET Framework? Well, .NET as a framework is OS agnostic. It runs on Windows 2000; it runs on Windows 7. It even runs on Windows 8 in desktop mode. It runs on every Microsoft OS in between. Technically, because of the open specification of the CLR, .NET could run almost anywhere, including iOS, UNIX, and even on IBM mainframes. WinRT as a runtime is tied directly to the Windows OS it is running on. And in WinRT's case, it is tied to Windows 8.
Now, one of the longtime critiques of .NET has been that what we gained from .NET in developer productivity, we lost in performance. This is because, as a framework, .NET is abstracted and wrapped to the point that its performance suffers when measured against native code (e.g., processor-specific, Win32, C++ code). Microsoft tells us that WinRT is much "closer to the metal," which we'd assume to mean that WinRT has performance advantages when compared with .NET. However, the WinRT runtime libraries are built upon the Win32 API, just as.NET is. Thus, WinRT provides no significant performance advantage over .NET.
Application development in WinRT comprises three different programming methods: C++, C# and VB.NET, and HTML5. Let's look briefly at each method.
- C++. Historically Win16 and Win32 programing in C++ was challenging and only for the most elite of programmers. With Visual Studio 2012 and WinRT, Microsoft has significantly reduced the C++ pain, if not totally eliminated it. Clearly, C++ is still the choice for best performance for applications running on Windows.
- C# and VB.NET.The managed programming languages of C# and VB.NET have a significant place in Windows 8 under WinRT.
Why Develop Windows 8 Apps?
Many of the advantages of WinRT are not technical advantages—rather, they are business advantages. Windows is still by far the largest computing platform in the world, and the platform continues to expand its reach, as Figure 1 shows. Windows 8 is just the next version of this dominant platform. Adoption of Windows 8 is almost guaranteed in the enterprise because of Microsoft's enterprise licensing programs. Furthermore, the Windows-adoption outlook is similar in the consumer market because just about every new PC, Ultrabook, notebook, and tablet will come with Windows 8. That is a platform you will write your applications for.
Another advantage—and one that is relatively new and untapped—is the Windows Store. The Windows Store's competitive counterparts (e.g., Apple, Google) are saturated with hundreds of thousands of apps. Consequently, the surface for the "next great app" is much larger in the Windows Store. Additionally, the Windows Store is more lucrative. It has paid downloads, trials, and in-app purchase capability. Developers who place apps in the Windows Store get 70 percent of the first $25,000 of revenue on their app and 80 percent of the rest. In the Windows Store, you can use your own commerce engine and keep 100 percent of the revenue, as eBay does, or you can use the Windows Store's full commerce platform. The advertising capabilities of an app in the Windows Store let you advertise with Microsoft Advertising or through your preferred ad vendor. You can use app or web advertising networks. Analytics are provided for free. The Windows Store Analytics include demographics, review, referrals, and usage and performance statistics.
The application development opportunity on the Windows 8 platform is significant. The market for applications is enormous and growing, as Figure 2 shows. Microsoft has always been the leader in application development tooling, and with Visual Studio 2012, this has never been truer. What is different is that with WinRT apps running on Windows 8, Microsoft has provided the plumbing, platform, and tooling to facilitate business success for developers who build Windows 8 applications.