If you are an app developer and want to learn about what is required for Windows 8 Desktop and Windows Store apps, this article, “Ultrabook Feature Compatibility Matrix for Windows 8* Development,” will help guide you in the right path.
You will need to understand what programming models are available to you for apps targeted for mobile devices (phones, tablets) and apps targeted for the Ultrabook™ devices. Also, whether you are porting your current app, or writing a new app, you will need to understand what developer tools and programming environments are compatible with Windows 8 development.
This article will help you determine, not only how portable your current apps are, but what development paths to take for new app development.
There are many new features available to Ultrabooks running Windows 8 (specifically those with 3rd generation Intel® Core® processors.) The Windows 8 developer framework now has two new modes of operation for apps. Developers can target their apps to run on the Windows 8 Desktop or they can write Windows Store apps (this is the new UI environment.) While there aren’t a lot of changes for developers writing desktop apps, the Windows Store app development environment has some new requirements. We will explore what it means to develop apps that support these Ultrabook features for both platforms (Desktop and UI) using some of the more popular existing tools and developer environments.
Architecture Support for Windows 8 Application Modes
Developers should be aware that feature availability may differ according to development language or mode of Windows 8. The development environments shown in Figure 1 are those communicated on the Microsoft Developer’s Network. Apps targeting the WinRT APIs are now being referred to as Windows Store apps. It is important to note that in order to write a Windows Store app, the only development environment allowed is MS Visual Studio* 2012, with project templates. Writing apps for the Desktop is much less restrictive, currently.
Figure 1-- High Level Development Environments allowed for Windows 8* apps
You may want to port your current apps to the Windows 8 environment. To do so, you need to know if the tools you are currently using will work and the features you wish to expose are supported. For example, Unity*, a gaming engine very popular amongst app developers, has not been updated to include all the features available in Windows 8.
Taking this further, Figure 1 implies that there is no cross functionality between WinRT and Desktop APIs; this is not entirely the case. The following WinRT APIs are shared with the Windows 8 Desktop environment.
- Windows.Sensors (Accelerometer, Gyrometer, Ambient Light Sensor, OrientationSensor...)
- Windows.Networking.Proximity.ProximityDevice (NFC)
- Windows.Device.Geolocation (GPS)
- Windows.Security.Authentication.OnlineId (including LiveID integration)
- Windows.Security.CryptographicBuffer (useful binary encoding/decoding functions)
- Windows.ApplicationModel.DataTransfer.Clipboard (access and monitor Windows 8* Clipboard)
For more information about how to use WinRT APIs in desktop apps, take a look at Xavier Hallade's blog, “Using Windows 8* WinRT API from desktop applications.”
The following matrix lists the features that are available for the most common languages and modes of development. Where possible, links are provided to supply more information for the intended feature.
|Windows 8 Desktop Mode Apps||Windows Store Apps|
|Intel® WiDi||Yes||Yes||YES (Browser Plugins)||No||No||No|
|Orientation Sensors (accelerometer, inclinometer, gyrometer)||Yes||Yes||Yes||No soon||Yes||Yes|
|Light Sensor||Yes||Yes||Yes||No soon||Yes||Yes|
|Intel® Smart Connect||Yes||Yes||Yes||Yes||Yes||No|
Building Windows Store apps brings the most changes for software developers. This is a whole new interface so you need to take care to ensure that the planned use of tools is supported for this environment. Table 2 provides further detail on what are the requirements for developing Windows Store apps. Visit the Microsoft Dev Center for Getting Started.
Intel® Smart Connect Technology (ISCT) does not have any developer-specific APIs. To take advantage of ISCT, it needs to be enabled in the BIOS (this should be the default) and should be configured in the OEM-provided User Interface. For examples of what applications are best suited for ISCT and further details on how to implement the technology in an application, please see Developing for Intel Smart Connect Technology.
Table 2 Options for building Windows* Store apps
|Language Support||Getting Started||Advantages/Comments|
|C++ and XAML||Build apps using C++||The new Windows 8 controls have been fully implemented in XAML. Native C++ developers can take advantage of XAML to build highly interactive UIs.|
|C++ and DirectX*||Build apps using DirectX||Provides greater flexibility and greater access to system resources, especially graphic devices.|
Now let’s dive deeper and look further into compatibility among some of the more common developer tools/interfaces.
Windows 8 Store Apps Considerations
- Win32 APIs: Most Win32 APIs are not exposed to Windows 8 UI and many existing tools/libs have dependencies
- WinRT APIs: New API is not comprehended by existing PC apps and Intel Tools
- Graphics and Media: Supports only a subset of technologies (DX11.1, HMFT, and DXVA)
- Application Model: New threading model is not comprehended by Intel Tools
- Windows 8 Store: Cert prevents Windows 8 UI apps from accessing APIs/libs across barrier.
- Windows Store app development is supported only on Windows 8. (No support for Windows 7 or Windows Server 2012.)
Table 3 Common Developer Tool Compatibility Matrix
|Windows 8* Desktop Mode Apps||Windows Store apps|
|Programmable GFX- OpenGL*||Yes||No|
|Programmable GFX – OpenCL*||Yes||No|
|Programmable GFX-OCL, CM||Yes||No|
|DirectX*||Utilize Win32* DX11 Gfx support exposed in Win8 UI||Utilize Win32 DX11 Gfx support (Games and Media)|
|Amplifier||Full tool functionality support||Partial feature support in WinRT apps. No thread model support. No Hotspot/Locks/Concurrent analysis for WinRT apps WinRT API support WIP|
|Intel® Graphics Performance Analyzers (Intel GPA)||Full tool functionality Except: IE10, WinRT app analysis and DX10 in Frame Analyzer (with 15.28 driver + new OpenCL SDK)||No (WinRT does not support Instrumentation)|
|MS xPerf/xRay||Full tool functionality||Full system wide support with some limitations (ETW data collection command line only. Viewer Desktop UI only)|
|Intel® Performance Bottleneck Analyzer (PBA aka xIF)||Works. Supports Desktop app analysis. Viewer works in Desktop.||Partial feature set works with WinRT. (Not available: Thread Models, WinRT data, JIT support)|
|Dev Environments (VS, Eclypse*)||Yes||Partial|
|HTML 5 HW Acceleration||Yes||Yes|
|DirectX 11.1 Support||YES (with C++)||Yes|
|In-App Purchase||No||YES (customer must have purchased full version of app.)|
- Windows 8 Product Guide: http://msdn.microsoft.com/en-us/windows/apps/hh852650.aspx
- Windows Dev Center: http://msdn.microsoft.com/en-US/windows
- Touch: Enabling Touch in for Windows Store apps with C#
Relevant Intel Blogs
- Using Windows 8 WinRT API from Desktop Applications: http://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications
- New Windows 8 Code Samples on Intel Develoeper zone: http://software.intel.com/en-us/blogs/2012/10/09/new-windows-code-samples-on-intel-developer-zone
- Get the Most out of Intel Compilers for your Ultrabook apps: http://software.intel.com/en-us/blogs/2012/09/14/get-the-most-out-of-intel-compilers-for-your-ultrabook-apps
- Intel Developer Tools for Ultrabook: http://software.intel.com/en-us/blogs/2012/08/17/intel-developer-tools-for-ultrabook
About the Author
Gael is a Software Engineer in the Developer Relations Division at Intel working with Business Client Technologies. Gael holds a BS in Math and an MBA, both from the University of New Mexico. Gael enjoys hiking, biking, and photography.
Intel, the Intel logo, Core, and Ultrabook are trademarks of Intel Corporation in the US and/or other countries.
Copyright © 2012 Intel Corporation. All rights reserved.
*Other names and brands may be claimed as the property of others.
OpenCL and the OpenCL logo are trademarks of Apple Inc and are used by permission by Khronos.
OpenGL is a registered trademark of Silicon Graphics, Inc. in the United States and/or other countries worldwide.
For more complete information about performance and benchmark results, visit www.intel.com/benchmarks