On the evolution of the Java plugin

Ted Neward on the demise of Java applets is an interesting look back in history (interview on the Sparkling Client podcast). The Java Applet was the first of the RIA platforms, long before Flash became the king of RIA, long before Silverlight was a sparkle in anybody's eye, long before DHTML and AJAX became suitable as a rich internet applications platform, the Java applet was there. But Ted is quoted saying that Applet's suffered from incompatibilities and then they became frozen in time.

It's not quite correct to say that the Plugin itself was frozen in time. But that's not to say the plugin experience was not frozen in time. I'm listening to the podcast and what Ted really said was the JVM shipped by Microsoft was frozen in time due to the wranglings of Sun/MS lawsuit. Yeah, okay, and I can see how that would have constrained application authors in that they had to assume the majority of their users were on internet explorer w/ the MS JVM frozen at 1.1.4.

Applet's certainly didn't play out the way they were originally portrayed. There was this long strange road which we traveled with Java and Ted gives an interesting take on that history. The Client side of Java was clearly not given as high priority for many years as the Server side. I do like what Ted quoted in this podcast, that HTML in a web browser was equivalent to a 3270 terminal with fancy graphics. You youngsters may not understand the reference, but the 3270 terminal paradigm by IBM was..ah..primitive.. and the HTTP request paradigm is very similar.

However the plugin itself continued to receive bug fixes, performance improvements, etc. However we even have seen the light and Java 6 update 10 includes a completely rewritten Plugin which offers amazing new featureitis. And then there's that little thing named Java FX ...

Should we, as Ted suggest in the podcast, relegate Java to the server?? That's a hard one to determine which is the best answer. Clearly however we intend to have success in the client space with Java FX. And there is this little fact that the "Client space" is much more than browsers on a desktop computer. Java is deeply entrenched in the cellphone market and there is this rise of interesting new mobile devices with more power that can make for a rich internet explerience, and which are not desktops running a browser.

It's clearly going to be interesting to watch this unfold over the coming years.

In the meantime I thought it would be useful to link these two articles from 1997 which go over the nitty gritty details of the incompatibilities in the Microsoft JVM. It seems every time I post about the MSJVM it draws people who think Microsoft was unfairly portrayed ... just look at the comments on my earlier post, but the fact is that Microsoft did ship an incompatible JVM.

Comments

by garidan - 2008-06-28 00:16

I think we are going toward a mixed user and GUI experience where the browser is used for:
a) a mean to deploy software;
b) a directory of software links, instead of windows "start" button
c) the glue to mix and use different technologies as DHTML-AJAX, applets-webstart, flash and video, as well local applications as open office-ms office, pdf readers (with or without 3D and scripting and video) ......
Seriuos applets needed sun JRE (or similar): microsoft messed things up and bandwidth at the time didn't allow a fast JRE download experience.
Nowadays bandwith is not a problem, we are going toward ipTV (and ip HDTV).
The rewritten java plugin as taken the right direction, and capitalized all previous experience about security, installability, upgradability etc.
I think applet (or webstart) are coming back: they just need a fancy new name to re-market themself.

I tried to post this on the editor's blog, but it didn't allow me. Seeing if it will work here instead (and if so, I apologize for posting a bit off topic):
Are you sure that aspect-oriented styling and behavior of a scene graph should be considered a kludge? (To me, the main thing wrong with DHTML is incompatibility between browsers. If anything, that's a general indication of how hard it is to make standards work. Personally, I prefer depending on a consistent open source platform rather than depending on a "standard" that only vaguely matters.)

I just listened to the "Demise of Applets" podcast and felt that a lot of the information was dated and obviously slanted towards Microsoft's unproven, non-cross-platform, fledgling SilverLight technology. He also didn't mention many of the real problems I thought applets had in the 90s: browsers with old versions of Java prior to the creation of the Java plug-in, slow Swing performance, slow download speeds and slow computers. These problems don't apply today, especially with Java 6 b10.
If the internet development world would stop wasting time and resources with Javascript, DHTML and Ajax acrobatics and focused on creating applications with the Java plug-in, we'd actually raise the bar significantly on user-experience and move technology forwards rather than churn sideways yet again. It'd be great to actually move out of the 80s in terms of user-experience! Wouldn't it be great to have web-mail clients in the browser had Thunderbird/Outlook type capabilities and performance? How long is that going to take with HTML/Javascript solutions? (The problem is web-based technology mind-share and inertia. Web developers have invested too much of their time learning these less capable technologies and want to move them towards a Swing-like solution, a.k.a HTML5, to leverage their knowledge).
In terms of lessons learned today, if Google had used JOGL and Java to create Google Earth then embedding it in any browser that supported the Java plug-in would have been trivial and immediate across OSs (like NASA's WorldWind). But now they have to deal with all of the traditional cross-platform cross-browser porting issues for their C++ code. These are the types of applications I'm looking forward to in the future, not just another form-centric HTML page on steroids.

rrr6399
my point was that I do not believe developers who have had years of experience in HTML,FLASH,JAVASCRIPT,etc... would want to take on a new scripting language no matter how 'cool' it is.
You see,when users download FIREFOX , they get HTML,JAVASCRIPT,SWF PLAYBACK in one solution.
The java plugin ( and i am not talking of JAVAFX ) is a 8+MB download .
Now if the java plugin has that problem (after all these years) then JAVAFX will have an even greater problem.
the java plugin is many times more powerful than web 2.0 but until SUN learns how to 'market' the java technology itself then it will remain where it has always been,Sun cannot have it both ways , SERVER-SIDE or CLIENT SIDE?
Anyway, the move with ON2 is very welcome indeed , but i still believe it will be an uphill struggle for JAVAFX.

Wahidos, I agree with you 100%. Iâ€™ve also been watching and hoping for a better Java for the last 10 years. After 10 years, I now start to dump Java and start coding in AS/Flex.
SUN just doesnâ€™t get it. Itâ€™s a bad idea to introduce another script language., especially that language is still based on Swing and driven by the same JVM. After over one year from last yearâ€™s Java one, 6u10 is still in beta and there is still no video support officially. I guess that the efforts spent on JavaFX Script take away some resources from 6u10 development.

Wahidos,
For the mime issue, couldn't you use a JSP to serve up the JNLP file and set the mime type yourself? (I imagine most hosting sites would add a popular mime type like JNLP to their server settings as well.)
As for Apple, Steve Jobs seems to flip-flop on the Java support ("We'll have the fastest Java VM on the planet" to "Java is big slow and bloated") over time so it is hard to tell how serious Apple is about Java or how focused they are.
JavaFX is a declarative programming interface layered on top of Swing, Java2D, Java3D, etc. It is supposed to make programming easier for non-Java experts and content creators (artistic types). JavaFX on its own won't compel people to download the Java Plug-in, but compelling content will. Creating plug-ins for content creation tools to export JavaFX script will facilitate the creation of compelling content. Making the Java Plug-in ubiquitous will allow expert Java developers to create compellilng applications (whether they use JavaFX or just the native Java APIs).
It is too bad that there isn't a video and compressed audio codec bundled with the JDK currently. There are many open source and commercial libraries that do offer those capabilities. Of course, Sun just announced the partnership with ON2
(http://www.geniusdv.com/news_and_tutorials/2008/05/sun-adds-comprehensiv... ) where they will have a streaming video solution by fall.
I think your comments about Java2D are a bit unfair. Sun has made big strides in the performance of Swing and Java2D with the DirectX and OpenGL pipelines. I have seen huge changes in performance when these pipelines are enabled. If you look at animation in the Java2D or SwingSet demos from Java 1.3 to Java 1.6r10, you'll notice huge performance improvements.
The VM startup issues are being addressed. Since Java 1.5, the rt..jar can be predigested to speed loading and the Java 1.6 R10 will split the JDK into separate libraries that should speed up things as well.
There is plenty of RAD development for Swing, have you used NetBeans Matisse? (Check out NetBeans, you might like it.)
Compatibility issues have been addressed by the Java Plug-in. If developers would create compelling content, the most recent plug-in would likely be already installed by the suppliers due to demand.
Also, you might take a look at the Nimbus L&F. (Many of the web interfaces out there are a "joke" as well, but that doesn't keep people from using them.)
Do you really want to wrestle with Javascript/DHTML/PHP/CSS/etc tar babies? Not me. I'd rather stick with a decent language that has a chance of performing for more challenging problems than souped up HTML forms.

the truth is java has missed the boat,i personally i love it , and have been actively watching it for the last 10 years or so but even after all this time it is still slow and buggy.
for example...JNLP , if i wanted to use it on my web site I have to change mime settings on the server side,but what if i have a free hosting site that does not allow this?? I'm stuck.
Mac Os JVM is well behind the official sun JVM , so developing for the latest JVM will not be 100% cross platform.In fact APPLE seem to take their time developing it & seem not too bothered about this , maybe they got more important things to do?
JAVAFX is supposed to be the saviour of java , i don't think so! why?? Ask SUN a simple question - what is JAVAFX?? apart from the snazzy name just what does it do that will make 100's of millions of computer users download it?? -
could it be the scripting ...nope... FLASH AS3 has done it & why another scripting language when the JAVA programming language is allready the best?
could it be the latest and greatest Video playback CODEC ... FLASH & SILVERLIGHT has done that too..
oh , a reminder...10 years of java and still no 'official video playback codec or even 'compressed' audio - SHAME!!
could it be a blazingly fast 2d graphics engine , well we have java2d which is quite fast for office applications and the like but it's way too slow for realtime animation , despite huge advances in graphics technology java2d is the same (performance wise) java2d it was 6 years ago.
and what about VM startup , compatiblity issues , no single development IDE , no RAD development environment , poor font & text output (improved only just slightly in java 6 with cleartext) , a joke of look and feel - METAL .........
nah.... java has lost it and only now SUN has realized this but its too late, ADOBE SWF is the winner,HTML is the winner,PHP is the winner,client side JAVASCRIPT is the winner
sorry SUN,but its the truth...