In 1991, along the same time that Tim Berners-Lee marked the debut of the Web as a publicly available service, Bill Joy conceived of creating an operating language with the best features of C and MESA (MESA being developed by the famous Palo Alto Xerox facility). The goal was to build a system of a network of consumer electronic devices all talking to each other. The original name was Oak, but that turned out to be in conflict with another language. The name Java came from a brainstorming session at a coffee shop, but others have speculated that the name Java came from several individuals involved in the project: James gosling, Arthur Van hoff, Andy bechtolsheim. James Gosling widely credited as the developer of Java.
The first attempts to market Java in PDA devices, TV set-top boxes, and CD-ROM applications failed. In 1994 Joy was working on an offshoot of the project, “Liveoak”, which was a “big small operating system”. One weekend while working on a browser for it the idea clicked to put Liveoak on the Internet. The original concepts such as platform independence, security, and reliability fit neatly into the World Wide Web. Java Applets were compiled to a non-platform-specific Java bytecode that runs through the Java Virtual Machine installed in the browser through a Java Run Time Environment. Early Java technology was impressive. Powered with 3D accelerators, Java Applets in 1995 could demo spinning molecules or do water-like effects. Marc Andersen of Netscape agreed to support Java in Netscape browsers in 1995. Java still enjoys high saturation on servers today, and in 2006, Java became open source, making it even more widely available.
But Java Applets have not had much success. Sun sued Microsoft twice, because of Microsoft’s monopolistic practices and that they used their own brand of JRE which did not support key APIs, crippling its use on Internet Explorer. Further, Java’s Abstract Window Toolkit made for ugly UIs. The Java security was nightmarish for users who had to download the JRE, then download the Applet, then accept any number of certificates or permissions. The bytecode was not human readable, so you couldn’t inspect it to know that it was safe.
But probably the number one reason that Java Applets failed was because of Flash.
Flash started out as an extension of Jonathan Gay’s high school science fair project, Super Paint, which you may remember on the early Macintosh computers. Gay went to work for Silicon Beach Software creating Intellidraw, to compete with Aldus Freehand and Adobe Illustrator. In 1993, he started his own company, FutureWave, in an attempt to capture the market for graphics software on pen-tablet enabled computers with their product SmartSketch. The market was too difficult and the company was too small, so efforts were shifted to animation and capitalizing on the new concept of the Internet. The product was renamed CelAnimator, and then again to FutureSplash Animator.
FutureWave tried to sell their product to Adobe and Fractal Design, but the animation performance suffered due to the poor browser implementation using Java. They finally got a foothold though when Disney Online used it, and MSN, looking for an online TV experience invested. Macromedia took notice and purchased FutureWave for $500,000. The name was changed to condense “FutureSpash” into “Flash”.
In 2000, Laszlosystems introduced OpenLaszlo, an XML-based language that compiled into a SWF. Macromedia must have thought this was a good idea since four years later they introduced Flex 1.0. The plan for Flex was to target server-side developers by providing them with an XML-based language called MXML. Flex has many built-in UI components and is heavily geared for data binding. Shortly after Adobe bought Macromedia, they released Flex 2.0 which coincided with Flash Player 8.5 and AS3.
Flex helped move Flash past its early roots of being used for terrible user interfaces and website intros, adding a more polished look for the UI and targeting serious programmers. But it was Flash Player 6 that introduced video which was undoubtedly its killer app. Flash based FLVs became the standard format for YouTube and most other video around the web, replacing the commonly used and poorly performing players such as Real Media, Windows Media Player and Quicktime.
Flash still enjoys much success today on the web, especially for Flex as developers are in high demand. But Flash is facing stiff competition from HTML5 and even Silverlight.
Everybody clamors for Microsoft to implement Canvas and SVG into IE. So what do they do? As usual, their own thing. The only way to describe the reasoning for Microsoft’s Flash clone is to step back and look at many of the things they copy: XBox 360, Zune Player, MSN, tabs on browsers, and even the browser itself. Xbox and Zune are especially notable due to the fact that they are huge money losers. Microsoft is like the big kid who picks fights with everyone in class – but loses. The company lives in its own world of infinitely deep pockets where it has the luxury to make one bad decision after another, none of which are based upon original ideas (although the augmented reality for Bing maps is an exception and extremely cool).
All that said, Silverlight is actually a pretty decent technology.
Silverlight 1.0 was released in 2007, and it has ramped up very quickly to 4.0 which was released in November of 2009. The features between it and Flash are now quite comparable, and Silverlight seems to have caught up. Feature per feature comparisons find that each wins in different categories – and surprisingly, Silverlight has the edge in video quality and streaming.
Silverlight’s market share is between 40% and 50% depending on whom you believe. Because It’s based on WPF and .NET technologies, it has a built-in developer base and you could argue that they almost needed to let this technology out of the bag – and into the browser. Microsoft made a great move by partnering with Netflix and the NBC Olympics to display their online video content. Of course plugin saturation is one thing, developers who create the content is another. Here too, Silverlight seems to be finding its way as evidenced by Jonathan Campos blog which analyzes indeed.com job trends.
However, like Flash, it is facing competition from HTML5 – and even from itself. Microsoft announced at the 2010 MIX that Internet Explorer would be supporting HTML5 and SVG.
Introduced in 2007, JavaFX was Sun’s answer to the RIA market. I may be selling it short since I don’t use it, but the JavaFX feature set looks pretty slim, including animation, UI controls and charts. Of course since it’s Java you do have that vast library at your disposal. JavaFX Script is interesting, as it looks like AS3 – strictly typed, but allows hash maps in order to cut down on the verbosity of the Swing library it uses.
Since JavaFX sits on top of Java, it shares its same runtime and therefore its same market saturation of around 88%. Like Silverlight, it also benefits from a built-in developer base.
However, I’ve only recently run across a JavaFX plugin for the first time while researching this article and it was a Flash-Silverlight-JavaFX camparison. One in which JavaFX looked pretty shabby too. The download, after I accepted it, seemed to take forever. The author was measuring frame rates, and Silverlight was running around 80fps, and Flash around 40fps. JavaFX didn’t have a measurement, but it was obvious how poorly it performed and also had z-index issues. Admittedly, the author didn’t know JavaFX very well and may have done something wrong. Also to note that FPS is not always the best measurement, as browsers have been known to throttle plugins. But all in all, it was questionable for Sun to invest in such a technology in the first place, and that was only exasperated by the Oracle deal. On top of that, Silverlight, released at the same time, is now on version 4.0, while JavaFX is on 1.2 and floundering in features.
It’s always interesting to put things into an historical perspective. Some of the things to note was that JavaFX and Silverlight were released at the same time but have had different trajectories of success. Flash was actually developed before Java, and was originally embedded with Java, then later “eclipsed” it.