Overview
Version: This article is being written on 06/21/2012 using Windows 8 Release Preview as a reference.
In Windows 8 Metro Style apps you have a number of choices for your markup and programming languages You can choose the XAML markup language with C#, VB.NET or even C++. You now also have the choice of using HTML5 as your markup language along with JavaScript as the programming language. Both XAML and HTML5 provide a way for you to define object instances in a declarative way.
When creating Metro Style apps with XAML, we declare instances of objects defined in the family of Windows.UI.Xaml.Controls namespaces, as well as some others. These namespaces are provided as part of the WIndows API for Metro Style apps, They are included with the Windows SDK which is automatically referenced by the Visual Studio project templates.
When creating HTML5/JS Metro Style apps, you can use the HTML5 markup to define either standard HTML5 elements (div,span,input,button, etc). These standard HTML5 elements are the EXACT same elements you would use in a browser based application. With HTML5/JS Metro Style apps can also declare control instances from the WinJS.UI namespaces provided by the Windows API for Metro Style apps (AppBar, Flyout, ViewBox, etc), . the project templates provided with Visual Studio automatically reference the “WinJS” library. This library is provided with the Windows 8 SDK (C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\Microsoft.WinJS.1.0.RC\1.0\). The WinJS library is made up of a number of individual JavaScript files, but one in particular (ui.js) includes control definitions for the JavaScript WinJS.UI namespace. These controls provided features similar to those provided in the Windows.UI.Xaml.Controls namespace used by XAML developers.



