I'm certainly not the first person who has said that promise of Java in the enterprise was more of a dream than reality.
The oft-touted Sun cliche' "Write once, run anywhere" should be followed by an asterisk.
*Depending on the version of JVM on your customer's PC.
I'm not quite certain if the blame can be placed solely on one entity, but in my mind, most of the blame falls on Sun Microsystems - Scott McNealy and Eric Schmidt, specifically - for being either very dishonest or very inept.
What we in the enterprise are seeing is an increasing number of vendor websites that carry with them exacting requirements for the JVM they expect to be installed on local PC's. As it happens, most of the requirements are for fairly old versions of the JVM. In other instances, vendors require versions of Microsoft's JVM - not Sun's, even though Sun wrote the damn thing to begin with.
Want proof? FedEx's website will not print to a locally attached label printer without JVM v1.3.x. Two other insurance websites require varying versions of 1.3.x - not the same as FedEx, mind you - in order to process employee benefit claims. McGraw-Hill requires Microsoft JVM version 3805 to be installed on your Windows 2000 SP4 PC if you wish to access their Construction Dataline service.
These companies are unabashed in dictating technology requirements to me, their customer. They "wrote once"...So if you want to "run it anywhere", you're damn well going to use the JVM around which their code was written.
Somehow it's my fault - the customer - that my company uses more than one vendor for unrelated services, and that they can't figure out how to architect a website with simple old HTML and server-side code.
They were told to use Java - they were sold a lie, and they bought it whole hog. They were told, "People can use your web services at home, at work, on their phone, on their refrigerator, their TV, everywhere!" While that may not be false, it's certainly not completely true.
Let's face facts.
95% or more of all internet traffic originates from or is destined for a PC. Not a toaster. Not a phone. Not an E15000.
Just a simple, standard, utterly ubiquitous Personal Computer.
So the problem is, I can't manage more than one version of JVM on a PC to be used by the browser - any browser. Nor should I have to.
The reason this problem exists, in my opinion, is because Sun has been utterly incompetent. With regard to managing features and functionality as they expand and refine Java, backwards compatibility is a phrase they've never heard.
Vendors specify a version of client-side Java software to access their website, not because they like it more, but because it's the only one that works. Sun hung these companies out to dry, by making significant-enough alterations to the JVM that a developer's code no longer works.
Who is to blame? Tough to say. The code can't be that bad, it works with a certain JVM right? If it doesn't work with a later version, how is it the developer's fault? Even so, who am I (a single customer) to tell them get their act together? It's easier for me to install a different JVM than it is for them to completely rewrite their website.
I admit that I've considered the problem to be our fault...maybe the issue is a combination of factors under my control - Windows 2000 SP4 and a million patches, Internet Explorer 6 and all it's patches, Windows entropy, etc. Maybe we won't have this issue on our new Windows XP machines (although I have no idea why not - the vendors are specific in telling us what JVM we need).
I just know that I should be able to download the latest JVM, install it on my new PC's using a standard image, and anything developed in Java up to that point in time should work.
It doesn't though. And when it doesn't, it's not my fault...just my problem.
I really and truly feel sorry for Google. Eric Schmidt has a history of turning everything he touches into finely polished, almost gilded, pieces of crap.
Take Novell for instance.
Schmidt made Novell relevant again by making TCP/IP a native protocol in NetWare. Then, in one fell swoop, he set it marching off the cliff by forcing Novell's internal developers to use Java for new products. The result? Servers that crash more than ever. Separate pools of memory for Java that are nearly impossible to manage. Products that can't co-reside with one another on the flagship NetWare platform. Customers who have cried for and lacked a unified administration console for upwards of 7 years. The list goes on and on.
The apple doesn't fall too far from the tree, and the tree from which he fell and has lived his life is one that's hell-bent on ruining Microsoft. He's not interested in making things great, he's interested in being better than Microsoft (which, incidentally, any great organization could do handily).
That said, I'm smart enough to see Java for what it means - and I'm not a developer. Java applications need to relegated to the intranet. Keep it out of the DMZ. Keep it off my PC's. Let me decide when my company needs an application built on Java - not the other way around.
Do you hear me FedEx????