Tuesday, June 16, 2009

Repeating Mistakes

Just a short note... a  number of people have asked me what I think of JavaFX.

First off, I think its both ironic and depressing that Sun made the *same* giant mistake Adobe did.  Its a mistake no one who actually understands graphics should ever make.  Quite simply, both Flash and JavaFX are vector renderers that work in pixel coordinates.  

Bzzzt.  Wrong.  A hint for anyone ELSE entering this space, google "normalized coordinate systems."  I don't know if Silverlight makes this mistake as well or not as I haven't played with it.  But in a world of cheap floating point, this is a no brainer.  (Frankly you can adequately do normalized coordinates in the kinds of resolution we're talking about with fixed-point math if you had to.)

Secondly, I find the JavaFX project itself, astounding , ironic, and maybe a perfect proof of the concept behind the old IBM joke that "when a project is behind, IBM throws man power at it and makes it more behind."  More manpower, beyond a fairly low max, does nothing for a  project but bloat it.  I have it on report from friends inside Sun that, at the time Sun was bought by Oracle, Sun had 400 people one way or another working on JavaFX.  For all that man-power, I'd argue that JavaFX has attained no more "buzz" or penetration then my own alma-mater, Project Darkstar, which, at the largest size its ever been, has maybe 8 full-time people on it.  Project Darkstar also delivered usable results significantly sooner.

Finally, I find it as bit sad and maddening.  Chris M. and I tried really hard to get Java established on the client 4 or 5 years ago.  That's plain old Java.  We made inroads into the game industry that can still be felt today in projects inside of companies such as Electronic Arts as well as a whole host of little developers.  One of those developers created a game (TribalTrouble) that was a headliner on Apple's games website for over a year.  We did all that with, at most, a team of 4 engineers.  And we had that team for only a year.  Chris and i almost broke the back of the whole process three times with deals in place with Sony to get Java onto the Playstation, and Sun corporate managed to kill each one.
In the end, Project Darkstar was born as much by our realization that we would *never* get Sun to understand client computing, and thus had to get them into games on the server side,  as anything else. But with 10% of the manpower Sun has put into JavaFX and a tiny amount of the support, we could've changed the world in ways I am willing to lay money that JavaFX never will.

The one GOOD thing to come from JavaFX in my mind is the "kernel VM."  This is a technology we asked for 5 years ago and was told "couldn't be done."  HAD it been done, we'd probably all still be talking about "applets." Now that the ground has been lost to Flash, however, it may well be too little too late.


pron said...

It is sad that SUN has decided only recently to strengthen Java on the client side, and I must say that I was shocked to read your account of your attempt to get Java on PS (could you elaborate on why it failed?) However, there are quite a few things to be said in favor of JavaFX.
First - the coordinate system. JavaFX does indeed use floating point coordinates that can be scaled as the developer sees fit. It is true that the default, unscaled, unit is the pixel rather than some standard physical length (like a millimeter) and this is a good decision because JavaFX is not used merely for graphics but for UI, and people with large screen resolution are used to program's UI appearing smaller. This is standard behavior.
The JavaFX script language itself is an impressive achievement, and is, I believe, the first mass-market GUI DSL, and it does a good job at what it was designed to do.
Lastly, there were many client-side improvements related to JavaFX other than the kernel VM. There were performance improvements to the graphics pipeline, a new cool 2D and soon-to-be 3D scene-graph and more. And I think that explains the 400 engineers - I assume (though I don't work at Sun) that they work on many different projects all made to improve client-side java, and so are related to JavaFX which has become an umbrella-term for all client-side work.

Justin Wick said...

According to this:

It's possible to do device independent (normalized or otherwise) coordinates in Silverlight using the ViewBox. I've not used SL yet, but sounds like a reasonable approach.

I will also believe Java applets coming back w/ JavaFX when I see it! I'm sorry, but seriously?!

And now that ECMAScript and its derivatives are getting competetive for this kind of thing (especially with hardware acceleration to do the heavy lifting) I don't see what the point of using Java for this kind of thing even is - Java's strengths being a badass general-purpose standard library, not zillions of years of art and animation tool development.