The Decaffeinated Penguin - thoughts on Java and Linux
James Governor commented on Java and Linux
, and it stirred up a few thoughts.
I remember only too well how the Java/Linux relationship started. It started when Sun wouldn't make a JRE, let alone a JDK for Linux.
So the Open Source movement, as always, routed around them. Some went on to develop things like Kaffe, an open source Java runtime. But it was always a work-in-progress, sometimes slow, sometimes a bit buggy. But it gave most people the impression, in those earlier days, that Linux wasn't really the platform for Java.
Where does that lead you? Windows. You see, the problem with Solaris is that most developers don't have a Solaris box sitting on their desktop, or under their desk. Solaris boxes are kept by systems administrators, and tend to be used primarily for "enterprisey" projects, which doesn't really include installing a new language and environment and fiddling around with it to see what you can do with it. So the kind of machine the average developer has unfettered access to is, of course, Windows or Linux. Of course today you can run Solaris x86, but not when all this was happening. A couple of years ago Solaris x86 was something of a non-supported product, always rumored to be discontinued with a hardware compatibility list that could fit on the back of a business card.
And since they had no option, developers went on to install Java on Windows, and to develop on Windows, and to deploy on Windows. Sun did that, by merely not supporting Linux early enough.
Now Sun comes talking about Java and Linux. Well, they're a bit late, and they'll have to run a bit to catch the train. Without Linux, the Java community has pretty much settled on Windows ou Unix. And without Java, the Linux community has pretty much settled on whatever other language they choose, Perl, Python, Ruby, PHP, C.
Making developers turn to Java on Linux is probably going to take something more than just hype. You can make it as god as any other platform, it still won't be a reason to switch. You have to make it run better on Linux than it does on Windows, aim for better integration with the kernel API, aim for speed, aim for integration of the Java toolset with other GNU/Linux tools.
Jaime Cardoso was commenting, on an unrelated matter
, that the "if you build it, they will come" motto wasn't really true. Actually, I think he's wrong, I still believe that if you build it, they will indeed come, if:
- if they aren't diverted into something else that has better promotion than you
- if they aren't already somewhere else
Java on Linux suffers from both these problems. The Java developer community isn't all made of fresh-out-of-college junior programmers. Some of the people in the community have been around as long as I have (does anyone still remember Duke?) and were hurt by the no-Java-on-Linux decision Sun made early on. So going back isn't really "the thing we have been hoping for all our lives". We were hurt, and moved on. So we are already somewhere else.
As for the new programmers, Java has a lot to compete against. Windows on one side, with C# and .NET and flashy McDonalds Certified Food Specialist titles that look good to a 19-year-old. Python and PHP and Ruby on the other side, with the save-the-world-in-4-lines-of-code-and-get-a-free-model-train approach.
So where does that really leave Java? What is the competitive advantage of Java nowadays, other than being taught at schools?
The "write once, run anywhere" ideal will not suffice. Portability is nice, but most client Java solutions have problems whenever they touch the graphics subsystem - slow, have to be "tuned" for different platforms, etc., and most server-side solutions aren't just designed to go around running "anywhere". And you can still run PHP or Perl pretty much as "anywhere" that you can run Java - I know, different languages, different features sets, different approaches. But still I don't see programmers flocking to Java and away from Ruby and friends.
Mobile devices come to mind. But where does MIDP come into the Linux equation, if anywhere?
So let me know if I'm wrong, but Sun's current "Java on Linux" drive is just too little, too late.