The goal of write the code once and have it run everywhere has existed for a long time. That was the promise of C (except back then it was called “portable code” and then “cross-platform”). While the goal is admirable, in practice it means coding to the lowest common technology denominator. Java works fine until one tries to create a compelling user interface. The same is true for HTML/Javascript in a web browser. The best applications of today (and yesteryear) have exploited the native hardware using platform dependent APIs.
What does HTML5 offer that is better than JavaFX, Curl, Flash or Silverlight. All the same problems exist—which browser is running (what version and what features are supported), what hardware is the browser running on (CPU speed, screen size, colors), etc… The developer will need to write a lot of code (or trust frameworks) to test for the browser’s features which brings back memories of write once debug everywhere.
HTML5 is an evolution supported by the W3C that will make the world wide web better (over time). It won’t replace native (OS tuned) applications. But it does have a nice logo: