Have I found my new favorite SDK in Metro?
With all the major announcements from Microsoft this week, and what not, about their new Surface tablets, Windows 8/RT, and the next version of Windows Phone, it was quite natural that my curiosity got piqued, and I decided to give a second glance to Microsoft’s SDKs for the Windows Platform. All along, I had been thinking that there were just two SDKs for the newer generations of Windows (Windows 8, and WP7+). A Native SDK for the experienced developer who wants to build high performance Windows Desktop Apps and DirectX games, and a Managed Runtime SDK, based on WPF, for building Metro Apps, that would share similar functionality between Metro on the Desktop, as well as the Mobile Phone.
But Microsoft had a few surprises for me. At least when it game to Windows 8/RT Metro SDK. The Native SDK for Windows desktop was just what I had imagined it to be. Old faithful Win32/COM. DLL Hell isn’t as bad as they make it sound, if you know what you’re doing ;) But when it came to building Metro Apps, the SDK supported C#/VB development as I expected, but in addition to it, they also had a Native C++ SDK, and get this… A Javascript based SDK, that uses HTML for views.
The Native SDK was kind of expected since you already allow Native development for apps, and it only makes sense that you are able to have hooks from Metro into the native environment. But the Javascript SDK on top of a runtime based on IE 10? That is amazing and is definitely a step in the right direction! What this means is that I can design my Metro App views using Open Standards, that could be easily ported over to other platforms.
Yes, the underlying API calls are still proprietary, but at least the view layer can now be made reusable across platforms. The cool thing is, even though Windows’ Javascript API provides you with its own set of controls, like the Pivot, or the Hub / Panoramic Grid you don’t necessarily have to use those. You have the option of creating your own custom UI using basic Javascript and CSS. And there’s more to it! IE 10 has extensive CSS3 support, including 3D styles, and CSS transitions. So does Webkit on iOS and Android. Say “Hello!” to x-platform slickness! Build your UI using HTML, slap it in a UIWebView / IEHtmlView and all you have to do is hook it up to system specific backend API calls using Javascript.
You might wonder “Wait! Wasn’t this already possible before?” Well, Yes… but this is the first time there is an end-to-end HTML5 / Javascript based API for building platform-quality apps, that encourages developers to think in terms of HTML5 for building their app’s UI.
I hope Microsoft also comes up with a similar HTML5/Javascript based SDK for Windows Phone 8. The current ones based on .net/WPF, Silverlight, and XNA are good. But, having an open-standards based SDK would make it awesome!