IE9 Platform Preview 3 Marches to the Standards Beat

Microsoft have released IE9 Platform Preview 3, an application that gives developers access to the IE9 rendering engine (it’s not a full browser). In this update they have added hardware accelerated HTML5 Video, Canvas, Fonts (using WOFF) and big improvements in JavaScript with ES5, DOM Traversal, L2 and L3 events and 83/100 Acid3 score. It sits between Firefox and Chrome 6 on JavaScript speed, but outperforms every browser in real tests.

Microsoft’s use of language has improved too. Microsoft reiterate their goal of “same markup” working across browsers which is a fresh break from Apple’s one-browser view of the web. Their tests work in other browsers rather than blocking them.

The changes are almost too numerous to list, Microsoft have added more stuff than you can shake a stick at. The main things to note are:

Canvas

Canvas is a tag invented initially by Apple for use in their Dashboard feature in Mac OS X Tiger, it allows a developer to draw arbitrary graphics on the page and opens the gates for games, visualisations and new kinds of interactive effects. Microsoft’s implementation is hardware accelerated (when the hardware is present) and outperforms every other browser at this time by an order of magnitude. Microsoft only have to support Windows Vista and Windows 7 unlike other browser vendors and have thus been able to focus on tight Windows integration with DirectX.

Because some browsers run on many different operating systems, there can be a tendency to use a “least common denominator” approach to implementing HTML5. By using more of the underlying operating system, and taking advantage of the power of the whole PC, IE9 enables developers to do more with HTML5. Running through Windows, instead of just on Windows, makes a big difference; the web runs more like a native application.

Video

HTML5 video has become a buzz of hyper-activity following a string of high profile clashes between vendors. Adobe’s Flash Player has continued to be a sore spot and Apple have vehemently refused anything Flash-related to go within a league of their precious iDevices. This has caused many to sound the death knell for Flash and Flash advocates to then fight back likewise. A number of large mainstream video sites offered HTML5 demos and Google purchased On2 for $120M before releasing VP8 as an open, royalty free codec, stirring up the pot even more.

HTML5 video is not without its problems. It lacks basic features present in Flash, the implementations in browsers are spotty and flawed and the debate on codecs has raged with still no one codec to rule them all.

The HTML5 video specification doesn’t specify any codec to be used, and thus it’s fair game for the vendors to decide. Mozilla and Opera have categorically stood on the side of freedom of use by supporting only free and open codecs where Apple and Microsoft have both opted for H.264, a patent laden codec managed by the MPEG-LA who Apple and Microsoft are both patent holders therein. Microsoft relented somewhat following the announcement that Google with be switching YouTube to VP8 and this was already underway, by allowing IE9 to use the VP8 codec if the user installed it themselves.

Web Fonts

Microsoft have supported downloadable fonts in web pages since IE4 using their own EOT format. After an initial push to put this forward for standardisation in 2008, Microsoft [surprisingly] got behind the WOFF format instead and joint with Opera and Mozilla came to an agreement. The WOFF format is an open, compressed font-type designed for delivering fonts over the web and meets the requirements of type foundaries who are worried about rampant piracy. The addition of WOFF to IE9 will seal WOFF as the standard format for font embedding on the web. Currently, browsers support a mix of WOFF, TTF, OTF, EOT and SVG fonts.

Through the use of DirectWrite, Microsoft’s hardware accelerated text API, web fonts are rendered with high quality typography and anti-aliasing.

ES5

ECMAScript is the standardisation effort to define JavaScript given that JavaScript is itself a Netscape invention and trademark of Sun Oracle and there are other incompatible implementations such as Microsoft’s own JScript.

As context, the industry standard that defines the JavaScript language is ECMA-262: ECMAScript Language Specification developed and published by Ecma International. Prior to last year, it had been a decade since the introduction of the Third Edition of ECMA-262 in December 1999. In December 2009 Ecma approved the Fifth Edition of ECMA-262 as the successor to the Third Edition (a Fourth Edition was never published), and last year we debuted elements of ECMAscript 5 (ES5) support when we added native JSON support in IE8. Beyond JSON, though, ES5 standardizes many significant enhancements to the JavaScript language.

Read Microsoft’s article for the skinny on new additions, including new Array methods, an enhanced Object Model and changes to IE’s script parsing to allow “Same script, Same Markup” across browsers.

For a full list of changes and improvements see the Internet Explorer Platform Preview Guide for Developers.

The amount of work presented here (and the manner in which it is presented) shows a firm commitment by Microsoft to participate in the web in a way that makes developer’s lives easier and allows for all new innovations in the native web. (H.264 aside, mind). As mentioned before, this is in stark contrast to Apple, and the Microsoft of the IE6 years. There’s still a long time to go before IE9 is actually released and still many contentious areas of standards (like WebGL, which goes against DirectX and other areas of Microsoft’s business interests).

118 Comments

  1. 2010-06-26 11:40 am
    • 2010-06-26 11:51 am
      • 2010-06-26 1:21 pm
        • 2010-06-26 1:28 pm
          • 2010-06-26 1:37 pm
          • 2010-06-26 2:12 pm
          • 2010-06-26 2:34 pm
          • 2010-06-26 4:38 pm
          • 2010-06-27 10:42 am
          • 2010-06-28 1:01 am
          • 2010-06-28 3:06 am
          • 2010-06-28 5:50 pm
          • 2010-06-28 7:08 pm
          • 2010-06-28 7:17 pm
          • 2010-06-28 7:25 pm
          • 2010-06-28 11:43 pm
          • 2010-06-29 5:05 am
          • 2010-06-29 6:14 am
          • 2010-06-29 6:37 am
          • 2010-06-28 11:33 pm
          • 2010-06-26 4:55 pm
          • 2010-06-27 10:45 am
          • 2010-06-26 2:26 pm
          • 2010-06-26 2:51 pm
          • 2010-06-26 4:34 pm
          • 2010-06-26 5:02 pm
          • 2010-06-26 5:18 pm
          • 2010-06-26 5:15 pm
          • 2010-06-29 1:54 am
          • 2010-06-29 2:38 am
          • 2010-06-29 6:08 am
          • 2010-06-26 5:52 pm
          • 2010-06-26 4:46 pm
          • 2010-06-27 10:15 am
          • 2010-06-27 10:49 am
          • 2010-06-27 6:46 pm
          • 2010-06-27 8:29 pm
          • 2010-06-28 6:46 pm
          • 2010-06-28 11:51 pm
          • 2010-06-28 11:58 pm
          • 2010-06-29 1:18 am
          • 2010-06-29 5:22 am
          • 2010-06-29 6:36 am
          • 2010-06-29 6:47 am
          • 2010-06-29 10:03 am
          • 2010-06-29 2:07 pm
          • 2010-06-29 11:33 pm
          • 2010-06-30 8:21 am
          • 2010-06-30 11:50 am
          • 2010-06-30 5:14 pm
          • 2010-07-01 9:56 pm
          • 2010-06-29 4:58 pm
          • 2010-06-27 2:10 am
          • 2010-06-26 2:44 pm
          • 2010-06-26 3:10 pm
          • 2010-06-28 12:31 pm
          • 2010-06-26 3:16 pm
          • 2010-06-27 10:22 am
        • 2010-06-26 8:41 pm
      • 2010-06-26 10:38 pm
  2. 2010-06-26 11:48 am
    • 2010-06-26 1:41 pm
      • 2010-06-26 4:37 pm
      • 2010-06-26 6:56 pm
  3. 2010-06-26 11:49 am
    • 2010-06-27 11:29 am
  4. 2010-06-26 1:28 pm
    • 2010-06-26 4:41 pm
    • 2010-06-26 4:47 pm
    • 2010-06-26 5:22 pm
    • 2010-06-28 5:48 am
      • 2010-06-28 9:40 am
        • 2010-06-28 10:21 am
        • 2010-06-28 11:14 am
          • 2010-06-28 1:31 pm
  5. 2010-06-26 3:26 pm
    • 2010-06-26 4:44 pm
  6. 2010-06-26 4:07 pm
    • 2010-06-26 4:38 pm
      • 2010-06-26 4:45 pm
      • 2010-06-26 7:29 pm
      • 2010-06-27 2:35 pm
    • 2010-06-26 5:15 pm
      • 2010-06-26 10:50 pm
        • 2010-06-27 11:34 am
      • 2010-06-27 2:24 pm
        • 2010-06-27 9:02 pm
          • 2010-06-29 4:51 am
          • 2010-06-29 10:06 pm
  7. 2010-06-26 4:10 pm
    • 2010-06-26 4:48 pm
      • 2010-06-26 4:51 pm
      • 2010-06-27 3:58 am
  8. 2010-06-26 4:50 pm
    • 2010-06-26 4:59 pm
      • 2010-06-26 6:30 pm
        • 2010-06-26 8:03 pm
          • 2010-06-26 8:25 pm
          • 2010-06-26 8:48 pm
          • 2010-06-27 6:54 am
          • 2010-06-27 9:15 am
          • 2010-06-27 9:11 pm
  9. 2010-06-26 6:26 pm
  10. 2010-06-26 9:27 pm
    • 2010-06-27 11:05 am
  11. 2010-06-26 10:36 pm
    • 2010-06-27 2:07 am
  12. 2010-06-27 11:16 pm
    • 2010-06-28 1:56 am
    • 2010-06-28 8:01 am
      • 2010-06-28 10:16 am
  13. 2010-06-28 10:26 am
    • 2010-06-29 6:45 am
      • 2010-06-29 5:17 pm
        • 2010-06-29 5:21 pm
        • 2010-06-30 12:33 am
  14. 2010-06-29 1:01 am