Windows 8 Apps benötigen neue Windows Runtime

HTML & JavaScript

Microsoft hat angekündigt, XAML und HTML5 als gleichwertige Oberflächenbeschreibungssprachen für Metro zu etablieren. Es ist aber bezeichnend, dass die Mehrzahl der Vorträge der BUILD-Konferenz zur Windows-8-Programmierung das mit HTML und JavaScript vornehmen. Auch anhand der von Microsoft zur Preview bereitgestellten Sammlung von Beispielcode für Windows-8-Anwendungen sieht man klar, wo Microsoft die Präferenz sieht: 145 Beispiele in HTML/JavaScript, 74 in XAML/C#, 80 in XAML/C++ und ein einsames Beispiel in XAML/Visual Basic.

Mit HTML geschriebene Windows App (alias "WinWebApp") bestehen im Gegensatz zu klassischen Webanwendungen und ähnlich wie einige Web-2.0-Anwendungen nur aus einer einzigen Webseite, in die Inhalte dynamisch geladen werden. Dadurch ist der wesentliche Bestandteil einer WinWebApp JavaScript. Die HTML- und JavaScript-Engine für das Rendering ist die gleiche wie im Internet Explorer 10 ("Chakra"). Für WinRT wird aber nicht der vollständige Browser geladen.

Alle APIs des Browsers (z.B. Index DB, Application Cache, WebSockets, File API, CSS3- Transformationen und -Animationen) stehen zur Verfügung. Darüber hinaus gibt es für WinWebApps mit "WinJS" eine zusätzliche JavaScript-Bibliothek, die die Metro-Steuerelemente bereitstellt und den Zugang zu ausgewählten Funktionen des Betriebssystems ermöglicht. "WinJS" wird automatisch in jedes WinWebApp-Projekt eingebunden. Typischerweise sieht man in einem HTML-Tag Custom Attributes wie data-win-control="WinJS.UI.AppBar".

Mit WinJS und den zugehörigen HTML-Erweiterungen kann man aber von der Nutzung offener Standards nicht mehr sprechen. WinWebApps laufen erst mal nur auf Windows 8 – nicht in einem beliebigen HTML5-Browser und nicht auf anderen Betriebssystemen.

Als Entwicklungsumgebung für Windows Apps in XAML und HTML steht bisher eine frühe Vorabversion von Visual Studio 11 Express for Windows Developer zur Verfügung. Diese basiert eher auf Visual Studio 2010 und enthält noch nicht alle neuen Funktionen von Visual Studio "11" (voraussichtlich Visual Studio 2012). Enthalten sind hier nur Projektvorlagen für XAML-basierte Windows Apps (.csproj oder .vbproj) und HTML-basierte Windows Web Apps (.wwaproj), siehe Abbildung 5. Während es für XAML einen Designer gibt, bleibt für HTML derzeit nur die Bearbeitung in der Quellcodeansicht. Für die Gestaltung der Oberflächen lässt sich alternativ eine Preview von Expression Blend 5 verwenden. Expression Blend erzeugte bisher immer XAML-Code; ab Version 5 entsteht alternativ HTML5-Code. Ein Werkzeuge für beide Seitenbeschreibungssprachen zu haben, ist eine gute Idee.

Projektdialog in Visual Studio 11 Express for Windows Developer (Abb. 5)

Metro-Anwendungen laufen innerhalb der direkt im Kernel des Betriebssystems implementierten App Execution Engine (Abb. 6).

App Execution Engine (Abb. 6)

(Bild: Microsoft)

Jede Anwendung läuft in einem konkreten App Container. Die meisten Aufrufe gehen direkt in das Betriebssystem. Einige potenziell sicherheitsrelevante Aufrufe hingegen durch einen sogenannten "Broker", der den Aufruf unterbinden kann. Der Entwickler muss die Intentionen einer Anwendung in einem XML-Anwendungsmanifest (Package.appxmanifest) zur Entwicklungszeit deklarieren (Abb. 7). Die deklarierten Intentionen sieht der Benutzer bei der Installation und stimmt diesen zu. Alle nicht von der Anwendung deklarierten Funktionen werden von dem Broker unterbunden.

Deklaration der Anwendungseigenschaften für eine Windows App in Visual Studio 11 Express for Windows Developers Preview (Abb. 7)

Für WinRT hat Microsoft ein eigenes Paketierformat mit Namen AppX entwickelt, das ähnlich wie das XAP-Format in Silverlight funktioniert. Eine AppX-Datei ist eine ZIP-Datei, die alle zur Ausführung der Windows App benötigten Dateien enthält. Neben der .appx-Datei findet man im Ausgabeverzeichnis die gewählte Zertifikatsdatei und eine .bat-Datei, die mit der in Windows 8 enthaltenen Windows PowerShell 3 das Zertifikat integriert und das PowerShell-3-AppX-Modul nutzt, um mit dem Commandlet Add-AppxPackage die Windows App zu installieren.

Windows Apps werden primär über den neuen (aktuell noch nicht eröffneten) Windows App Store verbreitet werden, der genauso funktioniert, wie man es von den Smartphone-App-Stores kennt. Eine Zertifizierung durch Microsoft ist erforderlich, und das Unternehmen verdient an dem Verkaufserlös mit, wobei die Höhe der Provision noch nicht genannt wurde. Über den Windows App Store verbreitete Anwendungen können auch nach Nutzung abrechnen. Die Verbreitung über den Online-Shop kann man über das neue Store-Menü direkt aus Visual Studio heraus starten. Unklar ist, ob man über dafür lizenzierte Entwicklerrechner hinaus in der Lage sein wird, Apps von außerhalb des Windows App Stores zu installieren. Grundsätzlich erstellt man eigenständige Pakete über den Eintrag "Create App Package" im Store-Menü.