Win8, WinRT, Metro, Oh My

There has been a great deal of confusion about the differences between and WinRTamong WinRT, Windows 8, Metro, Metro Applications and etc.

[ Click on the image for full size ]

While there is no reason to be absolutist or pedantic about these differences, if we are going to communicate effectively we need to understand the fundamental differences. 

Thus, I offer the following simplifications to get us started…

Windows 8 is an operating system, the successor to Windows 7.  There are numerous ways to create applications for Windows 8, and in fact there are now two classes of applications: Metro Style Applications and Desktop Applications.

Desktop Applications are exactly the type of applications that were built for Win7 and, in fact, Win7 applications will continue to run on Win 8.

Metro Style Applications are immersive, chrome-less and distinctive in appearance.  There is much to say about what goes into Metro-style (one word? hyphenated? two words?) applications but what is clear is that they are built on top of WinRT and are distinguishable from Desktop Apps.

Metro is a design style, originated for Windows Phone and now carried over to Metro Style applications on Windows 8

WinRT is a set of APIs used to create Metro Style applications that will run on Windows 8.  WINRT supports development in C++, C#, VB.NET and Javascript.  WinRT itself is an unmanaged native API, giving excellent performance.   For more details see the Wikipedia entry.

Any simplification of this magnitude will cause some distortion.  If I’ve said anything that gives you apoplexy, please feel free to leave a comment.

Share

About Jesse Liberty

Jesse Liberty is a Master Consultant for Falafel Software, and has three decades of experience writing and delivering software projects. He is the author of 2 dozen books and multiple Pluralsight courses, and has been a Technical Evangelist for Telerik and for Microsoft, a Distinguished Software Engineer for AT&T, a VP for Information Services for Citibank and a Software Architect for PBS.
This entry was posted in Metro, Windows 8, WinRT. Bookmark the permalink.

15 Responses to Win8, WinRT, Metro, Oh My

  1. Joshua Collins says:

    Does something seem wrong with this statement?
    “WinRT itself is an unmanaged native API (giving excellent performance) on top of which managed applications can be written in C/C++ and C#/VB.NET and unmanaged applications can be written in JavaScript”

    Note: The only prize you get for being correct here is having to use WinRT anyways to develop Windows Metro applications.

    Answer:
    C/C++ is not a managed language. C++/CLI, however, is managed, but is a different beast from actual C/C++ since it is compiled into Common Language Instructions.

    Javascript, however can actually be considered to be managed since it is interpreted and runs on a VM. It’s not managed by the CLR tho, rather a JVM. However, as the first answer shows, this might not actually be about actual Javascript, but rather Microsoft’s implementation of it.

    Additionally, if Unmanaged applications are faster, why would Microsoft try to make the only option to have unmanaged apps be Javascript, an interpreted (and therefore slow) language which is actually merely managed by a different system.

  2. Scott Barnes says:

    the fact you had to write this is an indication that there is a huge ball of failure here. This is Circa 2005 when we rolled out Avalon mistakes being repeated.

    The MSFT teams really needs to sit down and reboot there developer engagement models if they want this to fly with some wind. There is a good 3-5 years of historical lessons you, others, myself etc all made during that time that could jump-start this discussion beyond 3rd party explanations of the architecture that shouldn’t have to occur :)

    • Joshua Collins says:

      See my comment above for how I agree, in somewhat more specific terms.

      The whole Managed Application fad is already slipping away. It’s good to have them around for quick productivity, but as Microsoft’s own implementation of WinRT shows, there are many situations where it does not perform fast enough for important applications. Hence, having Javascript as the only option to use outside the IL programs they offer is just not good enough.

      A good example of this is the Video Game world. While things like Microsoft XNA make it easy to make games, take a quick look at what has been made successfully. You will notice that very few 3d games or MMORPGs have been made using XNA, C#, or anything remotely relating to the world of Managed Apps. Those games which have been made are, overwhelmingly, 2d or at best Isometric games, and quite simple to boot.

      The simplicity of the games may be indicative of the skill level of the coders, but the lack of skilled coders points towards the more pressing issue: Managed Applications tend to be much slower than ones written in a lower level language. They may be easier to code, but they are often much less responsive.

      And as I believe that most everyone realizes, games are highly indicative of the overall power of a computing system. They are often coded for fun, with the intent of them being used for fun, while at the same time they must be quick and responsive. They push the boundaries of what is possible with any computing system. And the lack of truly awesome and powerful Managed Games proves to me, beyond the shadow of a doubt, that Managed Applications just cannot be the “silver bullet” that they have been advertised to be.

  3. Anonymous Coward says:

    From a strictly technical POV, the picture reminds me of the ISO network protocol stack: too many layers. That’s why TCP/IP took over the world, eventually.

    I think Djikstra said that there’s not really many tools a software designer has for increasing the system’s flexibility – in fact, there’s just one: an added layer of indirection. However, when you add additional layers without purpose, you’re just creating baggage, which will show up as performance loss and resource hunger. Which is what I understand from the diagram above.

    They could at least do away with XML, CSS, HTML and the like at compile time. But even so they’d still force programmers to learn an entirely new API, compared to “normal” desktop apps. My guess is that W8 will be added to the list of supported platforms of PhoneGap, and ppl will start building on top of that, instead of the W8 APIs. Learning the PhoneGap APIs looks like an investment likely to keep its value over time, compared to learning ani Windows APIs, IMO.

    @Rob Grainger: have a look at D-Bus. It originated on Linux desktops, but is now available for Windows too – I have no doubt a port for W8 will quickly become available. IMOm it’s a quite nice and secure inter-app communication mechanism.

  4. Puzzled says:

    Do I understand correctly that if I create a little Metro style helper application or game that I can’t give it to a dozen or so of my friends? My current understanding is that if I want to give a Metro style application away that Microsoft has to OK it and then have to give it to the whole world instead of just those I want! Is that really true?

  5. Chris Hayes says:

    again, Jessie Liberty is a down to earth guy. I always enjoy his straightforward jovial approach to development.

  6. Charles Cotton says:

    Chrome-less! Microsoft’s abuse of the word ‘chrome’ when talking about Metro style apps, is an excellent example of mindless over simplification. When was the last time you saw toolbar, menu-bar and ribbon options on your car’s bumper! How is it they call that chrome? Now they’re having a problem with aero and desktop gadgets! Talk about being continuously jerked around … Looking at Microsoft as a single organism, it is seriously schizophrenic!

  7. Vijay Sringeri says:

    HI,
    Thanks for the epitome of Windows 8 operating system.
    Yes this was much needed, if one is not from a tech background.
    I have started with Win8 metro app development and below is my blog article where I tried to explain the same… But may be in a different way.

    http://www.vijaysringeri.blogspot.in/2012/06/windows-8-from-consumer-and-developer.html

  8. Rob Grainger says:

    Mostly correct.

    In fact, WinRT is more expansive than that. Some elements of the WinRT API will be available to Desktop applications as well as Metro apps. Currently, it is hard to know exactly what is available to desktop app’s, as Microsoft haven’t got around to documenting this yet.

    More crucially, Metro app’s effectively run in a sandboxed mode, where they can only access a limited subset of system resources – for example only write to folders they are given access to by the O/S. In many ways this a good thing – it reduces the possibility of app’s overwriting itself. Win Phone developer’s will have some experience of this aspect. In other ways, it is bad, as it limits communications between app’s to the limitied “contracts” between apps – which is more like an improved clipboard mechanism, but still not as flexible as sharing between files.

  9. Pingback: Windows 8 Developer Links – 2012-07-20Dan Rigby | Dan Rigby

  10. Dieter says:

    Is WinRT a new subsystem in Windows like Win32 ?

    • TKR says:

      Yeah, WinRT is like modern Win32.

      Windows 8 RT is the version or variant of Windows 8 that will run on arm processors.

      I’m sure there will be confusion between WinRT (the APIs) and Windows 8 RT the OS.

  11. I would add Windows 8 RT :)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>