With Datalogics’ recent addition of Windows 8 and Windows RT support to the Adobe Reader Mobile SDK, a number of questions have come to me about the recent versions of Windows and about the new WinRT APIs and Modern UI application style. Here I’ll attempt to summarize recent developments in the Windows world and untangle some of the various names and terms that have floated about.
Over the course of 2012 Microsoft backed down from its positioning of Windows 8 as one OS for every form factor, fragmenting new versions of Windows into the following set we have today (November 2012):
- Windows 8: this introduces the tile-based Modern UI to AMD and Intel-based x86 and x86_64 platforms, including desktop and notebook computers and the upcoming Surface Pro tablet. Windows 8 includes a compatibility interface (the “Desktop”) that is capable of running software that currently runs on Windows 7.
- Windows RT: this OS has the same look and interface as Windows 8, but ported to the ARM platform. It’s important to note that Windows RT only supports Windows Runtime (WinRT) and Windows Store (Modern UI) applications, and it cannot run software built for AMD/Intel processors. The Microsoft Surface tablet is the best-known example of a tablet running Windows RT.
- Windows Phone 8: internally this OS is very similar to Windows RT and is also designed for the ARM platform. While Windows Phone 8 has the Modern UI, it has a somewhat limited version of the WinRT interface and therefore programs built for Windows RT may not run on Windows Phone 8.
- Windows Server 2012: this is the server analog to Windows 8 and supports x86 and x86_64 – based servers. As of Windows Server 2012, Microsoft has discontinued support for the Intel Itanium family of processors.
While all of the above Windows versions can run WinRT – based applications, the runtime functionality of Windows Phone 8 has some limitations vs. the other Windows versions. Windows RT cannot run programs built for Windows 8 nor for earlier Windows versions.
Windows Runtime and Modern UI
An important update to Windows 8 is the move from the Win32 APIs and runtime to the Windows Runtime (WinRT). These represent two different programming interfaces for programs to work with the operating system for privileged and common tasks, such as file access and drawing on-screen. An equally important update is the move to the Modern UI – the tile-based interface of Windows 8 – from the desktop metaphor used in Windows 7.
Modern UI applications are only permitted to use the WinRT APIs, meaning that programs that run on Windows 7 require rewriting of any parts that use the Win32 SDK before they can be built for any newer Windows version. For some programs this process is trivial; for programs written in C++ or for .NET programs that interact heavily with the underlying Windows SDKs, however, this process can be quite onerous as it can involve significant modification to program code.
Microsoft has taken a page from Android and iOS and introduced their own app store, the Windows Store. Windows Store applications are required to be Modern UI applications, therefore Windows Store applications may only use the Windows Runtime (WinRT) APIs. Windows RT devices are only allowed to obtain programs via the Windows Store. Windows 8 also has the Windows Store for Modern UI applications. Win32-based applications are installable in the legacy desktop user interface.
Programming Language Support
Building and Testing Applications
Visual Studio 2012 running on Windows 8 is required for building Windows Store applications. While Visual Studio 2012 will run on Windows 7, it will not load projects that are set to use WinRT. Consumer preview versions of Windows 8 will not run Visual Studio 2012; it must be installed on a developer preview or a final version of Windows 8.
Windows Store applications cannot be run directly from a Visual Studio build. Doing so will bring up an error about the application not being able to run outside the context of a container. To test a built program, one must deploy the application into a container. To do so, first build the application package for testing, then install the application package for testing. This process involves making a test deployment of your Windows Store application, and may feel quite cumbersome if you’re coming from earlier versions of Windows.
Developing Windows Store applications represents quite a change over developing for previous Windows versions. Depending on your application’s implementation language and architecture, porting to the Modern UI may be easy – or it may require a complete rewrite of your application. The ability to more easily build Windows applications for both computer and tablet environments is appealing, though the limited language support and application development obstacles are a disappointment.