Most of us were expecting a new Windows 10 SDK and assorted tools to arrive in time for Microsoft's Build Developer Conference next month. Instead, the company surprised by releasing an enormous SDK and Visual Studio Tools for Windows 10 package on Monday, five weeks ahead of the annual gathering of the Windows faithful. Microsoft clearly aims to give developers a head start on building Windows apps.
(A note on terminology: What used to be known as Metro apps, then Windows 8 apps, Windows Store, modern, then universal apps, are now simply called Windows apps -- this week anyway. Although you'll find references to all those earlier terms scattered through the documentation. As Paul Thurrott explains on his website, what used to be called Windows programs or Windows apps are now known as Windows desktop apps. Meh.)
To understand the goal of the new tools, take a look at the presentation given at Mobile World Congress a few week ago by Kevin Gallo, director of the Windows Developer Platform at Microsoft. Gallo explains how Microsoft, while bringing together all versions of Windows to run with a common core, has also brought the various developer products together and melded them with a single API interface.
This convergence enables one app to run on every Windows device -- on the phone in your pocket, the tablet or laptop in your bag, the PC on your desk, and the Xbox console in your living room... All these Windows devices will now access one Store for app acquisition, distribution, and update. For APIs specific to a given device family (a phone dialer), the universal platform also provides an easy way to light up that functionality within an app without having to resort to using conditional compiler flags.
That's the Holy Grail developers have been seeking. Whether the Windows 10 developer platform will support that level of integration remains to be seen, but if the 'Softies can pull it off, we may see developers actually writing new, worthwhile software for Windows 10 on all devices.
Gallo went on to describe five key points in the new SDK:
- Adaptive UX: The ViewStateManager will, in theory, adapt Windows apps to different screen sizes. It will also modify the screen automatically to switch between smaller targets for mousing and larger targets for tapping.
- Natural user inputs: Support for speech, inking, and gestures. "You only need to worry about which inputs are appropriate for your app and we'll determine if they are present and parse the intent for you."
- Cloud-based services: Cortana AI support, OneDrive, and hooks into Azure.
- Cortana integration: Installed apps appear on and can be run from the Cortana search list.
- Action center: Apps can interact with the notification area.
The Adaptive UX initiative is controversial: Many devs are skeptical that Microsoft can produce a UI Veg-o-Matic that adapts a single app intelligently to different screen sizes. It's particularly controversial for experienced mobile developers, who are accustomed, begrudgingly, to hand-tuning UIs for every conceivable screen size. The jury's still out.
A Windows Dev Center post goes into great detail about many of the new APIs, some of which are still experimental. There's strong interaction between custom apps and Windows itself in such areas as drag-and-drop, encryption, power conservation, Wi-Fi and Bluetooth, HTTP live streaming, location tracking, and ink panels. There's even an IsWindows10OrGreater function.
Microsoft product manager Cliff Simpkins talks about highlights in the new SDK in his Building Apps post. Those of you with older Metro apps, er, Windows 8.1 apps might give these a try:
For developers with an existing Windows 8.1 app, you can quickly try [Adaptive UX] out by (a) removing one of your UI projects (and going from three Visual Studio projects to one!) and (b) add the improved ViewStateManager to control how your UI adapts at runtime... Start checking, at runtime, if a Windows feature is available on the device before you call a related API. A good API contract for you to try out in your code to see this in action is HardwareButtons, which is present on phones (via the Mobile Extensions SDK), and thus available on the phone and mobile emulator but not available on the desktop. We believe that API contracts and the extension SDKs will allow you to adapt your code at runtime to deliver user experiences that feel right on the device it's being run on.
Windows 10 Technical Preview supports "old" Windows 8/8.1 Metro/universal apps. If you need to continue supporting those apps, you may have to resort to conditional compiles. On the other hand, if you're going Windows 10 only, your app can cut the #IF's and use the new Adaptive UX code, for hardware-specific tests at runtime. A word to the wise: This being a beta, you may well see different behavior in your old apps running with the new SDK.
Finally, S. "Soma" Somasegar, corporate vice president of the developer division at Microsoft, posted an MSDN blog highlighting some of the key differences in the Windows 10 SDK:
Somasegar also goes into detail about how .Net will carry forward to the new platform:
With Windows 10, all .Net apps will be compiled with .Net Native by the Windows Store before being delivered to devices... Windows 10 also comes pre-installed with .Net Framework 4.6 which includes many new features including improvements in WPF and Windows Forms.
To get up and running, first make sure you're completely up to date with Windows 10 Tech Preview build 10041. You'll also need Visual Studio 2015 Community Tech Preview (CTP) 6, which was released last month, as well as the new Tools for Windows 10 Technical Preview. Full instructions are on the Windows dev site.
Microsoft already has sample code posted on GitHub.