Microsoft: Silverlight Demo Was in Jscript, Not C#

During a presentation to analysts on Tuesday in Seattle, as BetaNews reported yesterday, Microsoft technical product manager Brian Goldfarb, standing beside his boss, Chairman Bill Gates, demonstrated an application produced for Major League Baseball, showing how fans can keep track of multiple games from stand-alone consoles that include graphics of the current diamonds, and can show multiple video clips simultaneously. Gates cited the demo as an example of what could be achieved by Silverlight developers who move beyond AJAX, which he described as "problematic" and "very complex."

But a spokesperson for Microsoft on behalf of Goldfarb told BetaNews today that, as it turned out, the specific MLB demo shown Tuesday was actually "written in Jscript," and was not the same demo that was written "entirely in C#" and described by Microsoft developer Robert Unoki on his personal blog this week. That C# demo was tailored to be portable so that it runs with .NET Compact Framework, which Unoki is helping to produce for Windows Mobile 6.

The problem emerges from the fact that there are two Silverlight versions being tested simultaneously. As a result, we learned, there are two MLB demos whose basic functionality may be identical:

The first supports the Silverlight 1.0 beta, which is the more stable edition that deploys a subset of .NET on Windows, Mac OS X, and Linux machines, and which supports Microsoft's ASP.NET AJAX. This is the version of Silverlight that Goldfarb showed to analysts, the spokesperson confirmed with him. It can also be seen in this video from a MIX '07 session late last month.

The second supports the Silverlight 1.1 alpha, which enables application development in C# as well as the other, more strictly-typed languages that .NET supports. That alpha is also being tested with the .NET Compact Framework, which is the platform for the demo on Unoki's blog.

Functionally, the demos are identical, although the version for the 1.1 alpha is currently the one that scales down its graphics to enable deployment on handsets. But it was the 1.0 beta edition that Goldfarb and Gates showed off to developers on Tuesday, arguably a very rich and functional example of getting lost in baseball on one's computer - about as "immersive" as it gets.

So just what is it about "so-called" AJAX that's complex and problematic, as Gates described it, if it yields such rich and rewarding results? In order that we don't appear to have taken Gates' comments out of context, here are his paragraphs on the subject, taken from the official Microsoft transcript, in their entirety. They begin at the moment Goldfarb's Silverlight MLB demo - again, as we now know, using AJAX - concludes:

Thanks, Brian. What you're seeing there is quite important. Over the last three or four years, people have been really finding the limitations of HTML to be very problematic, and they've been trying some browser capabilities that we had really going back over five years with Internet Explorer 4.0. But even though so-called AJAX-type technologies have forced very complex development, and they don't integrate into the traditional HTML very well. They've been experimenting with things that you download that let you do more interactivity and media.

In fact, what we've done there is pulled all of this together, and so the future of the Web experience that you're not going to think about it as just being text, or click and wait long periods of time, really will be created around that Silverlight runtime, and it's been great to see the reaction, not just in the classic developer community, but also in the designer community to the freedom that they're getting there.

What's also important about Gates' comments is that he refers to a single Silverlight runtime, which will hopefully be the case. But also - perhaps borrowing a page from Sen. John Edwards' "Two Americas" - he refers to two communities: the "classic developer community" to which Gates himself reputedly belongs, and a second group of Web designers to which his company now markets the Expression suite.

Nearly everyone agrees that, in order for Silverlight to succeed, it must appeal to both of these groups; the question is, though, whether it's necessary to migrate one group into the other, as Microsoft appears to do whenever it touts C# as necessarily better.

The day after this particular presentation, Microsoft CEO Steve Ballmer gave remarks to a software conference in Santa Clara that, while briefly touching on Silverlight, seemed much more supportive of AJAX as a cross-platform, interoperable technology.

"Sometimes the most important thing as you're building out a new Web site cum software product is that you're ubiquitous," Ballmer stated. "The most important thing is touching the most number of people. And you get into issues like cross-platform and making sure that everybody on the planet can participate in your software experience.

"We started out with just good old HTML, a little bit now we have things like AJAX as a client-side technology to deliver. We announced our Silverlight technology," Ballmer continued. "Adobe has Flash. But people want the richness of the client experience but with the ubiquity that you get for some of these Web-site software-plus-service experiences."

Ballmer's remarks appeared to support what we now know to be the facts: that Silverlight + AJAX can indeed be responsible for the "immersive experiences" which product managers have successfully demonstrated, and that there may be no need to play down AJAX in favor of a "classic" alternative.

Yesterday, Ballmer also referred to "Silverlight" and "Silverlight Extended" as separate products, which may be an indication that the alpha and beta tests of Silverlight may fork into two versions of the product suite.

2:40 pm 10 May 2007 - In response to our query asking Microsoft to explain the difference between the Silverlight experience in AJAX and the Silverlight experience in C#, and whether Chairman Bill Gates may have been confused about which demo his product manager was actually giving, the Microsoft spokesperson who first informed us the Silverlight demo was in Jscript told us that the difference was essentially something you can feel, even if you can't really see it.

"The MLB app that you saw on stage was written in managed Jscript," the spokesperson wrote. "When we talk about 'normal' ECMAScript 1.x JavaScript/JScript that's what we mean when we say Silverlight supports AJAX development. Essentially the AJAX script is interpreted by the browser whereas the Managed JScript is JIT compiled and executed by the CLR."

In other words - if we read this correctly - the Jscript used in the AJAX for this particular demo (and perhaps several others) was written in ASP.NET AJAX, although it need not have been. Conceivably, this JavaScript code may be executed by the so-called JavaScript Virtual Machine (VM), which is a separate component entirely. And maybe it's that type of AJAX that Gates was referring to...maybe.

Whether non-managed JavaScript/Jscript integrates more or less well with the browser than managed JavaScript under ASP.NET AJAX may be a matter for Web developers to resolve, though it does not appear to be a major concern at present. Still that doesn't give much clue as to what Gates was referring to when he said AJAX, in one form or another, does not integrate well with the browser. What was the difference that Gates was trying to explain?

"The difference is one of execution time," the spokesperson told BetaNews. "Dynamic languages tend to perform slightly worse than static languages even with JIT'ing [just-in-time compilation]. However, the performance degradation would be slight vs. C#. However, compared to AJAX/JScript the performance of managed code (including dynamic languages) will be much greater. That is C# vs. AJAX is 1000x faster in preliminary testing."

The spokesperson admitted to not having hard and fast technical figures on hand, so the "1000x" number here is probably an estimate.