
During the history of computing, there’s always been competition within classes of software. Like the one between operating systems, browsers or text editors. The outcome of these struggles matters a lot to both companies and users. Try debating Emacs vs Vi or Safari/IE/Firefox/Opera, anywhere on the web, and you’ll easily start a brightly lit flamewar.
Many of these battles hasn’t always been visible until some time has passed. Microsoft anticipated “the information highway” well in advance, but didn’t recognize today’s Internet for what it was until Netscape had the majority of web-users. According to Dataquest, Netscape had 80.1% of the market in 1995, while Internet Explorer only had a measly 2.9%. Today, Netscape has only 0.46% of the market, and falling.
Microsoft put their full weight behind promoting Internet Explorer and used highly controversial tactics. They spent a huge amount of resources on winning late in the game, at all cost. This is one example of how important it is for companies to control the key pieces of software that users use every day.
In fact, I think that’s one of the underestimated strengths of Microsoft; to recognize these battles and try to win them at all cost, even if they play dirty. They recognized it with DOS, Windows, Internet Explorer, Xbox, Visual Studio and many more. I’m sure a whole library of books can be written about all the intrigues they have been involved in for each of these technologies. I think the main difficulty about technology is that companies doesn’t always “get it” until it is too late. I think Microsoft still doesn’t fully understand the mindset that has driven Google to success, but I do think that Microsoft has recognized one of the latest battlegrounds, which is the battle of rich content (within browsers).
It’s been a while since we passed the threshold where the cost of programmers were higher than the cost of hardware, and with that change came the popularity of scripts, dynamic languages, garbage collection and bytecode compiled applications. While virtual machines have been around for a while (IBM had CP-40 in 1967) including them in the browser is comparatively new, from 1995, when Sun introduced Java Applets. This was the start of “rich content”.
Virtual machines in the browser is not just a technical sidenote. We could be talking about the future of the majority of applications that most of the users use. Some users already use applications within their browser for everything. The browser was originally meant for viewing documents, not being the interface to full applications. However, there are web applications that do all the hackery they muster to transform a document viewer into a somewhat usable GUI. Gmail and AJAX in general has succeeded surprisingly well, following this awkward path. Let’s face that this is not the most beautiful swan in the pond, but a hack. Browsers were not really meant to do this. Virtual machines in the browser, on the other hand, lays the groundwork for proper applications with the advantages of web-based applications. I mean “virtual machines in the browser” in a broad sense, and also think of related technologies like JavaScript, Adobe Air and Java Webstart.
So, this is the exciting battle that is going on right now, and the main contenders so far are Microsoft, Sun, Adobe and Google.
Microsoft launched Silverlight in 2007. My impression is that’s it’s slicker than the Java-based alternatives, better suited for accelerated graphics (there will supposedly be 3D support next year) and with a subset of the cross-language development platform .Net, which is good stuff for developers. However, it’s Windows-only, and in the tight grip of Microsoft’s claw, which history has proved to be directly hostile to competition. There is an open source version of .Net called Mono, and an open source version of Silverlight under development, which is Moonlight. However, this is developed by Novell, which has been cozy with Microsoft more than once. One can only assume that Moonlight is part of Microsoft’s plan, and that plan does not involve other players what so ever. I think Silverlight will be somewhat of a hit in Windows-only circles, but fail when it comes to Mac OS X and Linux users. While one can argue that most users use Internet Explorer, I don’t think any sane developer wishes to exclude a large percentage of the audience, especially the ones that are often either developers or have enough money to spare. It’s not like they don’t have any good alternatives to Silverlight, quite the opposite. Microsoft needs to make Silverlight truly cross platform if it’s not going to turn into another Microsoft Bob.
Adobe Flash has been around since 1996, then called Macromedia Flash. After Microsoft included the Flash player in Internet Explorer 5 in 1999, the plug-in reached an audience of over 100 million users. That is probably the reason why Flash is almost a standard on the web these days. While Flash started out appealing mostly to designers, over time Adobe (which acquired Macromedia in 2005), has gradually made the transition to a worthy virtual machine that appeals to developers as well. A good example of this is the release of Adobe Flex and Air in 2007, which really appeals to developers and is for running Flash-based applications outside of the browser. Flash Player has improved too, with the release for 64-bit Linux in 2008, showing that Adobe wants to play on a strength that Silverlight does not currently have, which is being more cross platform. It seems to be a trend for all of the competitors to support applications running on their virtual machine both within and outside of a browser, and try to appeal to developers. Since Flash Player 9, Adobe also started including support for somewhat accelerated graphics, which suddenly makes 3D in the browser feasible. Take a look at Papervision3D, for example. I think Flash Player has come to stay, both because of the enormous amount of users they have right now and because it’s quite good. It’s not open source, though, but a few alternative implementations are coming along nicely, like Swfdec. (Why they selected that name is beyond me, even though I know that it stands for Shockwave Flash Decoder).
Sun is the oldest player in this game, but also the slowest moving. While Java-applets have been around for a long while, it’s seldom I see a Java-applet that is more impressive design-wise than content-wise. A common sight is watching a gray box where the applet should be, waiting for the applet to load and being rewarded with pixelated fonts and design that looks two decades old. Much due to Flash having a tradition of being appealing to designers, most of the Flash content is a lot better than what I’ve seen in applets. I think Sun realized this, which is why they released JavaFX in 2007. While Sun is a fantastic company when it comes to catering to the needs of developers, I think they have failed completely when it comes to making JavaFX appealing to designers. “JavaFX SDK is Available Now” does not appeal to designers. Period. However, Java Webstart is superb. It makes starting real applications easy for regular users on almost any platform. I think Java Applets will become obsolete, JavaFX will fail, unless they make designers interested and that Java Webstart will succeed over time. One thing that really proves how well Sun connects with developers, is that they released Java as open source. I’m pretty sure Java in general has a future.

Google is the newcomer here. While Java seems to be close to their heart, with Android supporting the Java language and also brilliant projects like GWT, it seems like they prefer to stay away from virtual machines in the browser and stick with AJAX, except for the occational use of Flash. I think Google choosing to use Flash instead of Java applets, while being as Java-friendly as they are, says a lot about how well Flash is doing these days. What is still pretty fresh news, is that Google has released their own client for the browser, called Native Client. While it’s not a virtual machine, it covers the same uses. It compiles code in a special way (a modified version of gcc), tries to ensure that the code is safe, is cross platform and runs in a browser. I would say it targets the same use as Flash and the others, while doing things just a bit differently. The really cool thing about Native Client is that high-performance applications, like 3D-games and video editing software, suddenly is possible to use right in the browser. Also, it’s an impressive leap for cross-platform applications to compile the same application in a way that makes it run natively, not byte-compiled, on both Windows, Mac OS X and Linux. Not that it’s been impossible before, but this seems, to me, like a better way to do it. I think Native Client has a future too.
Some think JavaScript might fill this niche as well, but I’ve yet to see any impressive demonstrations. Quick JavaScript execution is all the rage these days, with V8 in Chrome, TraceMonkey in Firefox and Squirrelfish in Webkit. Also, there’s the new Canvas feature in Firefox, which is promising. Who knows if JavaScript will replace Flash in the far future. I know many people are hoping for this, since it’s an open standard.
To sum up my extremely subjective predictions, I think JavaFX, Silverlight, Moonlight and Adobe Air won’t really take off, while Flash will grow stronger, Java Webstart will pick up speed slowly and Native Client may become a surprise hit. I think JavaScript is a bit early to judge.
Please share your insights, corrections and opinions by leaving a comment.















