When Microsoft announced its latest version of Windows last September, there was some uproar among developers. Windows 8 is an answer to the rise of smartphones and tablet PCs.
The new Metro UI supports small screens, multi-touch and ARM-based CPUs. But Windows 8 also raises some questions for developers, because the programming tools for Metro are not the same as those for classic windows clients.
Metro vs. Retro
Windows 8 is some kind of a hybrid system. It has two major operating modes: Metro and the classic desktop.
In Metro mode there are no windows. Applications always run full screen. There’s only some kind of split screen mode to display a second application on a narrow strip either on the left- or right-hand side. The new Metro applications follow the smartphone/tablet model. These “apps” will be sold via the new Windows Store, an online marketplace for buying, selling and advertising applications. Metro apps are designed for touchscreen input in addition to mouse and keyboard.
For classic desktop applications nothing changes. Everything that runs on Windows 7 runs on Windows 8 desktop mode. Desktop applications for Windows 8 can be developed using .NET, Delphi, Java or any other existing development environment for Windows
Implications for developers
Metro applications more resemble browser applications than desktop applications, because they typically consume services running in the web or cloud. Developers can build applications either with XAML in combination with C++, C# or VB, or they can use the HTML-CSS-JavaScript stack, which is well-known from web development. The backbone for all Metro applications is WinRT, a new runtime which provides basic functions like graphics, communications and access to devices.
The amount of work for porting an existing desktop application to Metro depends on the technology used for the source application.
- If you have existing UI code from a .NET WinForms project or an application built using Java, MCF, Delphi or VB6, you’ll have to completely rewrite your application for Metro.
- There is a good chance to reuse UI-code for Metro from an existing Silverlight or WPF desktop application. Metro XAML looks a lot like Silverlight, but you’ll have to adapt your code for the new Metro XAML flavor.
- Web applications written in standard HTML/JavaScript have the best chance for a Metro port without major rewritings, because there are many standard JavaScript libraries which run on Metro out-of-the-box.
- The Metro web browser doesn’t support plugins like Flash and Silverlight, although they still run on the web browser of the desktop mode. Source code for Silverlight web applications can partially be reused in Metro XAML whereas there’s no migration path for Flash/Flex.
If you plan to start a new project for Windows 8, you’ll first have to consider whether it should be Metro or desktop. Metro apps will be Win8 only and won’t run on Windows 7/XP. On the other hand, there are strong indications that desktop applications won’t run on ARM-based Win8 systems. If you go for Metro applications, you’ll also have to decide if you want to follow the XAML/.NET or the HTML/JavaScript path, even XAML/C++ would be an option.
Conclusion: Currently it is hard to decide which of the options will provide the best balance between future-proofing and productivity. There are many factors to consider like target audience, complexity of the domain, existing code-base and knowledge-base of the developers. The good news: For any path you can integrate PTV xServer.
PTV xServer @Win8 in action
We’ve tested the Windows 8 developer preview in combination with PTV xServer and ran through several scenarios from heavy-duty desktop applications to light-weight Metro apps. Here are some screenshots.
Scenario 1 –
Windows Client Application
PTV SmarTour, an PTV xServer based desktop application, running in Metro split-screen mode
Scenario 2 –
Browser Application
map&guide internet, a plugin-free web application, running chromeless, i.e. inside the Metro browser without any frame
Scenario 3 –
Native Metro App
PTV xMap Server embedded in an HTML5 based Metro app
(This post was provided by Frank Gailfuß and Oliver Heilig. Thank you so much!)
[ratings]