Interview with James Gosling
mypointofview wrote to us with an interesting interview with James Gosling [?] . It's an interesting interview format, similar to Slashdot's style. Good questions about Java, but also the problems of getting Java and Linux to *ahem* play nicely with each other.
Deja vu all over again -- the same interview was on javalobby earlier today and I just had to bite on the "incompatible Linux distribution" bait.
I assume that the "incompatibilities" he describes were differences in kernels (2.0.x vs. 2.2.x) and libraries (libc/glibc). If that's the case, I would simply suggest writing for the most recent stable version. It is possible to upgrade kernel and libraries, as we all know. Admittedly, upgrading is a drag -- especially on known-to-be-rock-solid systems. Version control is a problem on every platform, though. Let me tell you about Windows and oleaut32.dll one of these days....
While "Java vs. Linux" does not rank quite as high as "BSD vs. Linux" or "KDE vs. GNOME" on the flamewar meter, it is getting just as tired. More importantly, it is counterproductive to both sides. There is no reason to pick one or the other, either -- Linux works well as a development platform for Java. The only drawbacks right now are somewhat sluggish performance with some JVMs (I saw where IBM's alphaworks JVM actually scored pretty well on the Volano benchmark), and the annoying tendency to be 6-12 months behind the latest version (which may not be a problem if you like waiting for the bugs to shake out first).
I'm going to walk into the flamepit now:
The Java vs. C arguments are also silly. I like C, I use C, C is my friend. If I need to do system programming (OS-level, device drivers, etc.) or anything where speed is absolutely, positively the overriding concern, give me C.
But there is also application development. Here, I want short development time, easy maintenance, and a whole lot of functionality already built in. In this case, Java starts looking really good.
Insert tired "right tool for the right job" cliche here.
The "Java will soon take over" hype from 4 years ago has turned into a huge burden for the language. There are just some languages that do what they do so well that there is no need to replace them with anything (Perl, for instance). Java does have the potential, though, to move into areas where there are still some gaps. I think that Java has tremendous potential in distributed applications, for example. This is also an area where I would like to see BSD and Linux start playing larger roles. The combination will work if the two sides can quit flaming each other long enough to get it done.
Thanks for letting me get that off my chest. Back to work for me, now.
Save the whales. Feed the hungry. Free the mallocs.
Our needs included:
portability - the application must be able to run on Windows, Mac, and Linux (if we get other *nixes as a bonus then that's even better)
consistency - the interface must be as consistent as possible across platforms
gui flexibility - the interface must be as customizable as possible
html/XML support - the language or its libraries/runtime must support HTML content, and at least be pledging future support for XML.
After doing our research, and delving into Sun's commitment to Linux, as well as its seeming support for Open Source we decided that Java was likely our best choice. The Swing components seemed to provide the desired customizability and consistency, Java supported HTML and was on its way to XML support, and the Linux support promised would guarantee us a presence on what we deemed the important platforms.
So now it's a year later. The product is designed, mostly written, and really beginning to take shape. We are trying to put together our package to show to potential underwriters but have been plagued by a serious Java issue:
The Windows and Solaris JDK/JRE packages, while still a bit slow and memory-intensive, provide most of the features we need to produce a stable and slick application which can usefully present our content. What bugs there are appear to be hot items ready for fixing in the next release. However, the Linux JDK/JRE packages are not stable, not well-supported, and not even at the same release level as the Windows and Solaris versions.
Month after month we have watched the progress of JDK development (as supposedly supported by Sun) for Linux crawl forward. We have been programming steadily, working around bugs, redesigning interface features to not rely upon features which are not yet present in Linux. Generally acting as if Java2 for Linux is not coming any time soon.
As we watch we have gotten the feeling that, despite press releases to the contrary, Sun could care less whether the Linux JDK ever gets finished, and doesn't appear to be devoting its resources at all towards the platform. Indeed, it seems as if they would prefer people forgot about Linux and its Java port altogether. Here's an example. java.sun.com is Sun's main website devoted to the Java language. Trying to actually find the Linux port from this page takes the patience of Job. Want some help? I'll locate you a few pages down in the right direction. See if you can find it from here. It doesn't help matters that Sun "reorganizes" their Java site periodically, essentially scrambling the links on the page -- reminiscent of the supermarket technique of seemingly random placement of necessities to make one wander through the store, hopefully buying non-necessities (or, similarly, the legendary placement of keys on the QWERTY keyboard to slow down the typist).
"Bad site design" aside, after looking in more desperation for help we noticed other symptoms of "Sun support gone wrong.":
Cryptic messages on Sun's message board about the availabili ty of Linux Java tools
Rumblings on the Blackdown Java port mailing list about lack of progress, with occasional hints that Blackdown is fixing bugs in Sun's code which are getting folded in for later release. While that's great (they should report bugs and the bugs should be fixed in later releases), this forces us to ask the question, "What form is the press-released 'Sun support' taking?" Evidently it's not in the form of programming resources or even $ to support developers.
Additionally, Blackdown appears to be in the lead as far as releases of the JDK go, with IBM purportedly not close to a Java2 JDK, and the other viable options being "for profit" and likely Closed Source. So, this is the net effect of Sun's much publicised "support for Java on Linux"?
This interview, to me, gives me additional reason to doubt Sun's corporate motives. While there are (even discussed on the Linux/Java developers lists) difficulties in porting Solaris thread code to Linux, and difficulties testing graphical components under the numerous X environments available to the Linux end user, if Sun were truly "supporting" the port of Java to Linux this would not really be an issue. Sun could at least provide a more portable reference implementation if nothing else. Gosling is as aware of this as anyone, but uses this as his "out" ("Sun FUD" if you will).
Similarly he straddles the fence by parroting the Sun party line -- why not truly Open Source Java (e.g., GPL it or release it under one of the BSD licenses?)? Well, it really is Open Source, but we have our own proprietary license because we want to maintain platform independence. But, ironically, the fact that Java is not truly Open Source is one of the reasons (determined from hours of sifting through user and developer mailing lists) why it isn't being ported more quickly to Linux. So, the Sun license is guaranteeing (at least for the moment) that Java is NOT platform independent.
Take this together with some reconsideration of the recent StarOffice purchase, and one begins to wonder whether Linux support is, in Sun's eyes, great PR but bad business.
"Cause there's 40 different shades of black, so many fortresses and ways to attack, so why you complainin'?"
I've been writing code for a living for 10 years or so. For a while now, I've been reading the various Slashdot discussions about Java. The signal-to-noise ratio is really low.
1. Java execution speeds are now approaching and in some cases exceeding those of compiled C and C++. If you don't believe it's possible, you don't understand optimization.
2. Our developers compile on NT or Linux, pick up the binaries and run them on our Solaris servers. Or the OS/390 mainframe upstairs. They love it and it saves them time and effort (and that means money too).
3. The IBM JDK for Linux works fine. There are some minor issues. Who cares? Stop worrying about it! Get on with the coding.
4. Java has more in common with Smalltalk than with C or C++. That's why serious object developers use Java and not C++.
If you want to write professional object software now, on PCs or mainframes, Java is your best choice. Smalltalk second. Then maybe Eiffel or Python if you're not bothered about performance, JPython if you are. C and C++ are not in the picture. Don't even think about Perl.
Now don't get me wrong - I love Open Source, and Linux is one of the best things to happen in personal computing for years and years. I would love to see a genuinely free JDK, and I wish I had the time to do it.
Free or not, Java gives you the chance to write clean, elegant and most importantly *simple* code for object systems that work.
Anyway that's my advocacy spout over with. One more thing though: some Linux people here spread FUD about Java the way MS spreads FUD about Linux. It's sad to see. We should be above that by now.
Apologies for ranting,
__ Em