Skip to main content

Free Java is nothing to yawn about

Posted by robogeek on July 1, 2008 at 11:53 AM PDT

Neil McAllister asks Java is free at last. Now what? and seems to take the position that while Java is a very successful technology that since "The Linux community, in particular, has long viewed Java with ambivalence" that perhaps achieving this milestone of Fedora's OpenJDK/IcedTea implementation passing the JCK may not be all that big a deal. Huh?

There are other ways of looking at this.. such as this post by 'ctrambler' and this earlier post discussing the coming tsunami unleased by the OpenJDK.

Yeah, there are many in the Linux community who don't seem to care about Java. I've heard this several times from many people ... such as last month when I attended the Ubuntu Developer Summit (in Prague) and while there were many people interested that OpenJDK was coming to Ubuntu it didn't unleash huge excitement and fanfare. At least they didn't yawn in my face and instead they were very friendly (I really enjoyed UDS.. it was great great fun).

My theorizing is that the the state of Java-for-Linux before OpenJDK precluded Java from being widely distributed on Linux, and that installation hurdle kept many from installing Java on their Linux boxes, and that this kept Java a stranger on Linux which then led to the "don't care about it" attitude of some Linux folk. There's also some mangled history such as the transition from Blackdown's Java to Sun's and while that's pretty old history it may have left a bad memory in some peoples minds.

The Operating System Distributor License for Java (DLJ) project (FWIW for which I am now the tech lead) was an attempt to broaden Java distribution on Linux and OpenSolaris. The DLJ bundles are still a closed source binary but they are under terms which allow for redistribution and many Linux distros have chosen to redistribute DLJ-derived JDK bundles. Even so the DLJ-derived JDK is not distributed in all distros and the ones who do distribute DLJ derived JDK's are putting them in their non-free repositories because, hey, it's not under a free license.

Getting back to my theorizing ... the history up until this moment ... Sun's JDK RPM bundles .. the DLJ-derived DLJ bundles .. at no time until OpenJDK were fully useable and compatible JDK's available under terms which could be widely distributed in Linux distros. Comparatively other languages like Perl/Python/PHP/Ruby were under licenses that allowed wide distribution in Linux distros. Of course Linux people might not care about Java because they already have some languages they can use without having to deal with the hurdle of downloading and installing an RPM that isn't distributed through their regular packaging system.

2+ years ago when the DLJ project started it was like a breath of fresh air on Ubuntu to go from the nightmare install process it used to require on Ubuntu to the simplicity of "apt-get install sun-java5-jdk". As OpenJDK is more widely distributed in Linux it ought to, over time, make for enough familiarity to change the story of Java-for-Linux. In other words, familiarity and time may well do the trick.

It's not that today we are in a state of nirvana with Java-for-Linux. But I think we're on a very positive path and over the next couple years we should end up in a very good place. Uh, that is, unless the opensource-antibodies that supposedly infest Sun have their way ... (wink) Hmm.. We're 2+ years into the process of open sourcing Java and I have yet to see opensource-antibodies.

Related Topics >>


I've enjoyed developing (desktop) Java applications on Gentoo for 4 years now. While alot of the bias against Java is unjustified, I think Sun would be very wise to take a very aggressive, proactive approach to improve Java's perception with the open source community. For starters, adopt a strategy to integrate better with open source technologies and libraries. Provide bindings to native toolkits and libraries such as GTK+, Qt and ffmpeg. Also Java needs to come out of it's aloof, abstract JVM bubble and not try to reinvent the wheel for everything. Perhaps OpenJDK/IcedTea is already headed down this path, but rather than sit back and hope things work themself out, now is the time for Sun to take the bull by the horns and show the open source community what makes Java great on the desktop. Novell, for example, develops C#, but they also develop some very important Linux applications such as Beagle that really show off their efforts. Do the same fand you'll attract the developers and attention you need to make Java great.

@gnu_andrew: > OpenJDK integration will have a silent but significant impact, Can you be more specific? What's your estimate for the number of Fedora programmers who might now start using (Sun's) Java who wouldn't use it (Sun's Java) before? Just an order of magnitude.

To me, the Fedora build of OpenJDK (which is what it is in truth, not OpenJDK or IcedTea in general) passing the TCK only has relevance as it means that that code has passed x number of tests (where x is large and worthy of note on its own merit). Being able to call it 'Java' is meaningless to me, but I can see how it would be useful for RedHat's corporate clients. I'm not allowed to look at these tests without an NDA so I don't know how useful they are. It also means nothing for the copy of IcedTea on Ubuntu or Debian or Gentoo. To me, the language itself is Java, what I have installed on my system is GCJ or CACAO or IcedTea/OpenJDK. And on that note, I haven't 'avoided Java on Linux' for years; I've simply avoided Sun's implementation of it as it was proprietary software. It's good to see that Sun has now attained enlightenment and released their implementation under the same license as GNU Classpath. This has far greater relevance. But not because of end users. It will have an effect in unnoticed ways because it means distributors can now depend on a complete implementation of the Java 1.6 standard (class libraries, VM and tools) in adding other applications. It hopefully means people can stop writing these buggy C applications and use a modern programming language that won't give us buffer overflows and other such issues that should have long since bitten the dust. As with all Free Software, it means that the developer (Sun in this case) is no longer the only source of resolution for problems. As IcedTea has already shown, greater prioritisation can be given to issues affecting the GNU/Linux build by the distributions than Sun can give. Whether these flow back upstream (they have so far) or end up in a fork solely depends on how Sun treats the community; no-one wants a fork, only a bad upstream results in this and so far Sun have been true to their word. OpenJDK integration will have a silent but significant impact, just like GNU crept in and became the norm before.

Take the extreme assumption: that those 10 people have had so much impact that the number of Java programmers on Linux went from ZERO all the way up to EVERY linux programmer. It would still help to know what that number is. Put another way: having Java now preinstalled on Linux distros will increase usage of Java by how much? Again, no good way to measure, but I wonder if the goal is 10 or if it's 1,000,000, or something in between.

@atripp: Uh.. by getting openjdk into distros it makes it available to anybody using that distro. This means the strategically key people to collaborate with are the ones who create the distros. The approximately 10 people you're referring to are precisely those people who are involved with Java on the distros they help create. Working with those ~10 people leverages into openjdk reaching the users of those distros. Seems like a good investment to me to ...

The reason I mention numbers is that it looks to me like Sun just spent 100 people working two years plus $167,000 cash to get about 10 additional Linux developers to chip in. That's just an order of magnitude estimate. Given the amount of effort to open up Java, it seems like you'd need to be increasing adoption of Java by, say 10% or 50%. Increasing it by, say 0.1% doesn't seem like it's a good investment. It is impossible to measure, even to an order of magnitude. I'm still just trying to figure out what the goal is, though. What the number of Linux developers who will now start using Java (and maybe contributing to the JDK, too)? I've seen around 10. But it could be 100, 1000, 10000, or more. If the goal is just 10, I question the cost/benefit analysis. If the goal is 100,000, then I doubt that it's attainable.

The only import thing by now is the JVM. And in that the linux developers like having control. I love java, still think it is the sanest of the (widely used) object oriented languages out there, however it is becoming broken and in the process of becoming even more broken. Generics complexity, the BGGA inane complexity, autoboxing NPE's, old horses like null by default and boneheaded standard library classes. The HUGE mistake that was including swing and corba on the JDK. And most successors have one or three good ideas and are drowning in (even more) complexity - I am looking at you scala.

i30817, I'll take Swing and CORBA over DHTML/Javascript and Web Services any day of the week! Not all of us are web-centric developers and I'm happy that Sun recognized that early on. (BTW, I'm looking forward to seeing Web Services (SOAP, Rest, etc.) finally catch up to CORBA's capabilities and performance over the next 5-10 years!) Hopefully, with the proliferation of the new Java 1.6_10 plug-in, developers will have more choices over the current crippled lingua franca of the web and produce applications that take us to the next level in user-experience and capabilities.

@alexlamsl: Many find that playground too bureaucratic and prefer Kijaro - I know I did ;)

@mrmorris: Haven't been keeping up with the news, but I think could be a good playground for hackers.

It could also be an issue, that Java/Swing integrates so badly with CompizFusion giving users the gray box syndrome: As far as I can tell, it still shows its ugly face (though it has gotten better over the years).

@flozano: Yeah, I did say the current situation is not ideal but I think pointed in a positive direction. As for binary JDK's for other distros...? Indirectly we are, through the DLJ project. One formulative thought of the DLJ project is that Sun doesn't have to grok the idiosyncracies of preferred installation layout on the various distros. Instead we can give the distros the power to make that decision for themselves. Hence, through the DLJ project we provide a raw bundle that they can repackage under some specific conditions and redistribute. Several distros are doing so now. Unfortunately the terms were not such that JPackage could be involved.

For most Java users and developers who run on Linux, IcedTea being certified does not changes anything. Java was long before widely used in Linux servers and the most used language for Open Source development. So for most people there's no reason for excitement. For Developers interested in "pure" open source (like me) it's a huge achivement, but something we were expecting for quite some time, if not from IcedTea/OpenJDK from GCJ/CacaoVM/Classpath. So it's not "bombastic" news. ;-) But there's still a long way to come untill Java is ubiquitous among Linux users. For example, better packaging, LSB-compliant, not simply a brain-damaged RPM as Sun provides. JPackage have been strugling with this for years, and Fedora provides nice IcedTea RPMs. But why couldn't Sun provide corred RPMs (and Deb) for the more popular Linux distros? Of course, now that Fedora/IcedTea did most of the work, it won't take long to have nice RPMs and packages for SuSE, Mandriva, etc. But only them regular Linux users and developers will notice "hey, now I can use Java!" Sun Java had many more problems regarding Linux integration besides licenses and packaging. For example, the absense of 64-bits plug-in for Firefox and incomplete / incompatible (with gcc and glibc) interfaces for Javascript automation. Incomplete support for international keyboards -- I can't still type correct Portuguese accents while developíng code using NetBeans on my Notebook. Swing and AWT could be better integrate to modern Gnome and KDE desktops, using Gtk (or Qt) for peers, FreeType font rendering, complete and correct Gnome/KDE theming support, etc. You can see, even now IcedTea/OpenJDK will look alien to most Linux users. Thanks Sun we (Linux community) can finally work on our own to fix those problems, instead of waiting for actions Sun never make happen. But it'll still take some time until Java on Linux can really impress, or even be considered adequate, for real Linux users. If you ask about Mono/C#, they valued Gnome integration before Windows/.NET compatibility. And so there's now Mono applications like F-Spot that impress Linux users. No one will be impressed by current Swing applications under Linux. But most users and developers impressed and interested about Mono don't really care about Open Source Software. If they did, they would rather join efforts to Classpath, GCJ and folks.

@atripp: Interesting question on specific numberizing of the adoption rate. There are some numbers being tossed around but that's a serious problem with measuring the number in that with Linux you don't know how many users there are nor how many installations. We could set specific targets but be unable to measure them. If you have ideas on better ways to measure adoption in Linux I'm all ears.

Sorry, just had to post again... > But I think we're on a very positive path and over the next couple years we should end up in a very good place What is that place? All I've heard is "increased adoption and innovation". Inside Sun, do executives ever say specifically what that means? More developers using it? How many? More applications being written? How many? More developers who love Java? How many and what's the impact of that?

When you've got a theory, go ahead and be scientific about it. First, state the theory clearly. For example "the fact that Java was not completely open source prevented many linux developers from using it for their apps". Next, state a specific outcome that would prove the theory correct. e.g. "The number of Java apps on linux will increase by X% over the next Y years" or "The number of Linux developers using Java will increase by X over the next Y years". Then, state a specific outcome that would disprove the theory. e.g. "The rate of increase of developers using Java on Linux stays the same of the next Y years". And finally, present the case for why these outcomes prove/disprove the theory. I guess that's all just a longwinded way of me pointing out that we've always heard "many Linux developers won't use Java until it's Free". And I have no idea whether "many" means 10 or a million. If it's a million, that's a big deal. If it's 10, it's not. Unless someone specifies a specific number, the whole discussion is meaningless.

Since Editor's Daily Blog (referencing this article) does not allow comments, I'll put it here: Could it be that Mono (C#) and other clean room impl. offer some compelling features not found in Java and people in the hacking community are very little interested in the backwards compatibility issues traditionally holding Java back? (closures in 2012?!) Then there's also the issue of the cross-platform UI which to many is a pipe dream. It's the primary reason for people perceiving Java as slow and looking ugly/non-native. I.e. why would Google prefer to write multiple platform specific versions (Google Earth) and fund emulation tools (Wine) in order to have some other apps run (Picasa)? Don't get me wrong. Java is good for many things, but it' has grown into this inherently complex and inconsistent monster where being open source by itself is probably it's biggest feature. On a Linux platform however, that sales pitch can't really be used seeing as everything is open source.

jwenting ... your hate-campains are not of any interest, really.

I've been using Java on Linux (servers) for the better part of a decade and never had any problems with it.

The Java "haters" among the Linux zealots won't be swayed by anything short of Sun releasing the language specs to their governorship (for destruction/disposal), so there's no pleasing them and keeping the language alive. Any pragmatic people using Linux have been using Java where appropriate on Linux for years and couldn't care less about it being "open", in fact many of us would rather see it less "open" so that not every idiot with a text editor can "improve the language" by introducing new "features" or "fixing things".