Monday, October 10, 2011

Windows 8 Metro apps in JavaScript

I’m having a blast exploring Windows 8 Metro app development and poking around in the preview bits shipped at the 2011 BUILD conference.  Last weekend, I presented on Metro app development using JavaScript at the Silicon Valley Code Camp.

I’ve posted the sample code, my presentation script, and my slide deck on the IdeaBlade wiki.

I have not gone crazy and transferred my affections from .NET to JavaScript. I’m just curious about all the hub-bub. It’s also the only fair way to confront the assertions that JavaScript has grown up and that we’ll all soon be JavaScript programmers.

What is all this noise about “programming in standards-based HTML5 and JavaScript” … which is technically possible in Windows 8 … although in practice you’ll be so imbricated in Windows that you might as well have written it in COM.

I exaggerate … slightly. I’m not being critical though. You want to program for the iPad? You’ll use Objective C. For the Android? You’ll write in Java. At least for a Windows 8 device you can write your app in Javascript … or C++ … or C#/VB. The languages are (mostly) open; the application code is locked in.

I had tons of fun following along with Chris Tavares and Chris Sells as they built a Metro RSS Reader in JavaScript. The resulting demo app looks like this:

WinJsDemo-Part 5

I stole borrowed almost everything I showed from Chris’ talk … unless I pinched it from Luke Hoban’s talk.

It’s always a kick to take a new technology out for a spin. The Microsoft folks are doing wonders with JavaScript on Windows but it’s still a dog walking on hind legs and always will be. I get … and approve of … what they’re doing: embracing the fresh faces coming out of school who “know” (be very wary of that verb!) HTML and JavaScript … not C#. That’s smart business.

I expect to keep playing with JavaScript and writing about my experiences. I’m sure that it’s the perfect tool for many jobs. HTML and JavaScript (of a more general variety) may turn out to be the universal solvent for cross-vendor mobility apps.

But not now and not soon. When it’s time to get serious about writing business applications, I’m sticking with the XAML technologies, Silverlight especially. Far more productive, less painful, and less risky in the hands of muggles … which is to say, most of us.


Alexander said...

Interesting post!! I really like this site, and hope you will write more, thanks for your information.

web design company said...

It was very exciting to know about the metro apps with the javascript.It has many interesting applications similar to this.Thanks for sharing !
web design company

Albert said...

I hate Metro :-( It is similar mistake as a Ribbon...

JavaScript Countdown Timer said...

Hello...It may just be a very cool thing if they are brewing a way to utilize html5 + javascript (without us having to mess with javascript, exactly what ASP.NET does on the client side). But it is NOT cool if .NET is not being fully committed to, and that is the problem.


vortexwolf said...

Usage of HTML for windows applications development is a joke which has gone too far. Although it is possible to write any html and use any javascript - it will be rendered very differently. Blue submit-buttons, inputs with custom decorations, there are much more differences than for example between Chrome and Firefox. And some time ago I heard one conversation, they expected that it would be possible to port existing html sites to Windows 8 tables almost without changes. It's a chimerical dream, they will spend so much efforts that it would be faster to develop from scratch with XAML and C#.
Also it will never be possible to use the same language for all mobile platforms because of different design guidelines.

Ward Bell said...

@Albert - Not very helpful comment. What's to hate? In what was is it like the Ribbon, even if you hate that. I'm only actually interested in a reply if you have some substance.

@Countdown - Can't fathom what you mean by "without us having to mess with JavaScript" since that is exactly what you do when programming w/ HTML5+JS in Win8 Metro.

.NET is well represented on the Win8 side as well.

"Commitments" in technology are rather loose don't you think? Seriously, what about the landscape of technologies today resembles the landscape of 10 years ago?

Ward Bell said...

@vortexwolf - I think you're whistling past the graveyard, my friend.

If you know C#/.NET and you're targeting WinRT, that's the obvious way to go.

If you know HTML and JavaScript but not C# ... well I'm not sure who you are but WinRT is inviting you to apply your skills on Win8 to build some compelling desktop apps. That's not a X-plat story; that's a Win8 story for those who like HTML/JS.

I am not one to diminish the significance of X-browser troubles nor do I think JS is a good programming language.

But JS is adequate and, in capable hands (they are few such hands), can be amazingly productive.

I also believe that vast stretches of HTML and JS would be portable. I am ready to pour cold water on the illusions of perfect portability. I'd have said the same about C and C++. But they are portable ... more portable ... than most alternatives.

Face it, your HTML and CSS is going to be far more portable than XAML.

Sean Hederman said...

Given that most people who are skilled in HTML5+JS write applications that are cross-browser and cross-OS every day; why would they ever consider writing for a single OS?

Ward Bell said...

@sean - I took up your interesting challenge in a subsequent post.