Java’s not open source. Everyone knows it. Sun thinks the current situation is good enough. Scott Dietzen (ex-CTO of BEA) doesn’t think so. Peter Yared doesn’t think so. So instead of just giving reasons of why they should do it, let’s instead talk about the cost of them not doing it. I want to talk about the opportunity costs of them not open sourcing Java. Those things that are clearly measurable as things that were missed because Java wasn’t open source. Here’s the stuff that I know of off the top of my head:
- The rise of the “LAMP” stack. As Peter points out (and as I have many times) that could have been “Java” instead of “PHP and Perl.” But it’s not.
- Mono on the desktop. .NET is an incremental improvement of Java. Mono is a copy of the .NET stack. It’s become the basis for a bunch of really exciting desktop apps in Linux. While “this app is written in Mono!” isn’t a great selling point, it has made a difference to a bunch of developers and is shipped by default in just about every major Linux distribution which means “Mono everywhere” is a reality. Java isn’t. It will never be the default for desktop apps on Linux, as much as we would love it to be.
- A huge number of VMs and class libraries. IBM. BEA. Classpath. Kaffe. gcj. Harmony. In Red Hat Enterprise Linux we include three different virtual machines. Why? Because they are all incompatible with various applications. Write once, run anywhere? It’s a lie, guys. Tests don’t hold a candle to a single source base. Just ask the guys in the Sun X server group.
- Eclipse. Wait, what you say? Isn’t eclipse written in Java? Isn’t that a success for Java? Kind of. In some ways Eclipse is even more important than Java. It’s a great framework and a great development environment. It makes using Java productive. From what I hear from friends who develop in Eclipse and Visual C++ from Microsoft, Eclipse kicks the crap out of it. We could be kicking ass with it. But it’s based on non-free software. Which means it’s tainted and the right people won’t get behind it. The license holds Eclipse back.
- Mozilla. I’m sure that if we had an open source Java that ran on as many platforms as Gecko does that you would be able to write extensions in Java. But you can’t right now. Instead you’re using JavaScript and Top Men are hacking on JavaScript 2. Once again, a missed opportunity.
- More Mozilla – The Plug-in Prison. Right now if you want to use Java in the browser (as opposed to as an extension) it’s stuck in the plugin prison. We could have been writing code to control web content in Java. But we’re not.
And that’s just off my head. Comments are on on this post. If you can think of something else, go ahead and post!
-
This is really insightful. I love programming in Java, but I wish it were used more on the desktop.
-
You have the secondary effects too: Java is not included by default in the freely downloaded distros, so fewer people develop apps in Java, and the apps that do get developed don’t get taken up to the extent other apps do, since every user first has to do battle with a Java install, something decidedly non-trivial for users on the mos popular distros.
So, fewer apps, with less popularity, and so fewer contributors to improve them, or be inspired to write their own apps in Java.
And perversely, the “write once, run anywhere” mantra is arguably hurting Java on the desktop further. It tends to mean “write once, doesn’t fit in anywhere” on the desktop. I have tried to use a couple of tempting Java apps on my desktop, but I need to be able to input Japanese in addition to my other languages (Swedish and English), and since Java is utterly ignorant of the underlying desktop, it requires me do configure i18n for Java separately, something I have yet to succeed in doing successfully.
Had Java been open, distributions could tweak it to fit in with the rest of the system, including picking up and using the settings, inputs and so on every other single app is doing. But distros can’t, and so Java desktop apps remain not fitting in (and in my case being unuseable).
-
Yup. Couldn’t agree more.
I tried to use the gcj web browser plugin because there was no sun JVM for my system. It crashed all the time. It’s a security hazard. I don’t have use java on the internet now. I haven’t missed it really… Java is not as nearly as common as flash for example.
I don’t use any other java programs. They normally only work with one JVM and so they have about a 1 / (number of jvms) chance of working. I can’t deal with that…
In a couple years mono will be kicking java’s butt all over the town. I already use a couple mono programs.
-
Try Mac OS X… Java looks wonderful there… Even for desktop applications!
-
Java on the client – embedded in web browsers – sucks. In the Java 1.2 – 1.4 timeframe, the way you knew you’d hit a page with a Java applet was that your machine froze for 30 seconds while the JVM fired up. Even now, in Java 1.5, it’s not much better.
Fixing this wasn’t Sun’s focus, and so it went unfixed – and so anyone trying to build a business around Java on the client, and do cool browser-based applications which went beyond what you could do with HTML and JS, had a really rough time of it.
This may well have been better if Java was free software.
-
Bindings. Look at all the things that have Python bindings in your average distro these days. All the interesting work in Linux these days, it seems, is either being done in Python, or in C with Python bindings.
OLPC. They’re not going to put proprietary code on it. Bang, you’ve just lost a few million seats. (Not high-paying seats, sure, but the eyes of a million people who will be writing the systems we’ll be using in a couple decades.) And this means, out of all of the open-source code written *in* Java, none of it can go on the OLPC.
Embedded systems. Sure, there’s J2ME, but there’s a whole class of things that people are putting tiny Linux systems in, and don’t want to worry about licensing.
-
> [... Eclipse?] But it’s based on non-free software. Which means it’s tainted [...]
Come on, you know Eclipse runs just fine with the free Java stack.
Or are you talking about a different kind of “based on” or “tainted” than most of us? -
One of the guys on classpath just posted about the same thing, but from the point of view why Sun won’t open-source Java (not a rebuttal – just coincidence):
I think it comes down to short sightedness from seeing apparant success from the Sun executive side. Just because you see 20 million downloads a month now doesn’t mean that it won’t trickle off slowly over the years.
Just look at the market share of Netscape 4.x. Firefox showed up in the end, but much of the market share was already lost! It looks like Sun is getting ready to do the same thing here – it’s just that we’ll have to wait for Classpath to mature enough before it can come to the rescue.
-
Even if the JRE from Sun is still proprietary is still much more open then Microsoft’s .NET. Look at the huge number of open source projects built using Java. But I agree that an open source java runtime that would be 100% compatible with the Sun’s JRE, would boost Java popularity. Speaking of popularity, in my town, seems harder to find a .NET developer than a Java one.
-
If it were open sourced now it would be too little too late. They had their chance a few years ago and they blew it.
I personally feel that a more memory efficient, non-bloated and faster RAD language is needed to conquer the desktop cause at the moment none of the high level languages is a true replacement for c/c++ (unless you have a really fast machine with loads of RAM of course!)
-
[... eclipse ...] It works on a free stack (with GNU Classpath/gcj), and so does everything it depends on. Just look at your latest Fedora Core or Ubuntu installation. The problem with these things isn’t really getting things to work. The applications that really matter do work on the free stack. The problem is packaging and versioning of all that code. We are used to having pretty decent versioning and dependency control on GNU/Linux systems. That is not so in the traditional java world. This is what we/they really need help with if we want to sanely integrate the free java world with the GNU/Linux world. See for example
http://gnu.wildebeest.org/diary/index.php?p=97[... More Mozilla - The Plug-in Prison ...] This is our top priority at the moment. You will be freed! :) Seriously this is a great oppertunity to work better together with the rest of the free software stack since we are finding issues whith gtk+/cairo, security frameworks, etc while testing, testing and testing. Please do see our bug database and patches mailinglist and you will notice that a lot of work is precisely on this part. How about testing and trying out some applet you love and file a bug report/send a patch if it doesn’t yet work perfectly?
There is basically a single code base, where it matters, that is the GNU Classpath core library and tools. And it is the only code base now used on free distributions. The defacto standard is gcj. But it is important to have alternatives available, like kaffe, cacao, jamvm, ikvm/mono (!) so we can learn from each other and experiment with alternative execution environments/performance/size tradeoffs, etc. Sure it is some work. But you can be sure that it is work that people do love to do. Just follow the classpath/gcj mailinglists, bugzilla, irc channel, planet, etc and you will see how much joy we have integrating all this stuff with your traditional GNU/Linux/Gnome/Mozilla/etc environment. We are not split, we are growing together!
-
Heh, interesting you wrote this rant at about the same time Dalibor Topic wrote a similar one[1] but on the opposite direction. Have you been arguing about this? :-)
[1] http://www.advogato.org/person/robilad/diary.html?start=86
-
Heya, great post. I am just thinking to myself though, at this point I’d like to hear a follow up on this question: has the market already determined a winner?
-
At least one person within Sun recognized the problems long ago:
http://www.internalmemos.com/memos/memodetails.php?memo_id=1321
> While the Java language provides many advantages over C and C++, its implementation
> on Solaris presents barriers to the delivery of reliable applications. These barriers prevent
> general acceptance of Java for production software within Sun. A review of the problem
> indicates that these issues are not inherent to Java but instead represent implementation
> oversights and inconsistencies common to projects which do not communicate effectively
> with partners and users.That memo isn’t dated, but judging from the version numbers it contains, it must be at least 6 years old, maybe 7 or 8. Much of its content remains relevant today.
If Sun had loved Java enough to set it free, a community would likely have formed around it in the free software world, and addressed some of the problems listed by Chris, the other commenters, and this memo.
-
However, there’re some goodies in Java to be followed in Mozilla platform/XULRunner: I’m talking about Java’s Webstart and its dowloading system, including app. version checking, local saving of the app, etc. This is one of the bright ideas to be IMO followed and built on. I’d like to see the same features in the upcoming XULRunner and, if possible, improved with incremental update, now implemented at UMO. What you think?
-
Did not read all the posts, so I apologize if this is a duplicate but…
Given the content of your post; I have to ask: why should we care? As you said, both the LAMP stack and Mono stacks are reality. They are both (arguably) “better” than Java for many purposes. Why are we still worrying about what is, in my opinion, a dying technology.
Had Sun not dropped the ball years ago, it might have stood a chance. But as you said, “it could have been java instead of php/perl.” Could have been…but isn’t.
As a developer, specifically a web developer who employs the LAMP stack more often than not, I’ve never found a compelling reason to even look at Java–regardless of the license issues.
-
Actually, I was not arguing against Chris at all. It would have been good for the Java community if Sun had not wasted everyone’s time and energy being greedy. They have, and they still do. Sucks to be outside of Sun’s JCP oligarchy.
As a proprietary software company, Sun puts their mangement’s interests before the interests of the Java community. Their management’s interests are to extract as much money as they can from licensing Java sources, test suites, etc, while appearing to be “benevolent” dictators, and pretending there is a useful function fulfilled by Sun in that role, other than securing their licensing cash flow.
As long as there is money to be made by sqeezing companies for licensing fees, Sun will not change its ways, because it is so lucrative. There would have been no 2bn dollars to be made in suing Microsoft if Sun’s Java implementation was open source, for example.
cheers,
dalibor topic -
blizzard sez:
> In fact, the free java stack is a great example of why Sun’s licensing is terrible. Think of the man years put into classpath and all the compilers. Think what Java could have been if that had been properly harnessed and put into a common Java runtime.
And yet, in the same breath, you point to Mono as if it were different? It’s “tainted”, “based on non-free software” in the exact same reverse-engineering / reimplementation way. Or Linux versus UNIX etc.
Whatever “opportunity cost” there is, it’s borne by the reimplementors, not by their users. Many of the former enjoy that kind of work, so crocodile tears are not necessary.
-
Not to be exceptionally rude, but it’s my understanding that non-free software is used to compile Mozilla products on Windows. Ergo, I think some of these arguments about non-free software and Mozilla become a bit moot. In the grand scheme of things, it’d be nice if Java was FL/OSS, but that involves Sun and is probably a big ugly mess.
I think Java is a good technology, but it falls short of its goals in implementation. Using Java to build web apps seems to be a nightmare right now. unless you have a staff of fully trained people who know all the ins and outs of it. I tried helping a colleague get Tomcat set up, and it was a nightmare. I helped the same person get JRun working a few years ago…that was much worse. On the other hand, my favorite language, Perl…is an absolute breeze. (Don’t talk to me about PHP.)
-
Pingback from Sleep Interrupted » Blog Archive » Java on March 31, 2006 at 1:31 pm
-
I totally agree with your arguments, but it is too late. Sun isn’t going to change anything now, and even if they did, I don’t think it would be enough to save the technology from irrelevance and extinction in the world of Linux desktop software. Mono has already surpassed it. Sun needed to open source Java years ago, and the fact that they still haven’t done it is truly a testament to Sun’s short-sighted nature. It’s time to ditch Java.
-
John Silvestri: I believe it is possible to build Mozilla on Windows using gcc (someone else should confirm, I haven’t paid attention to this area in the last 3 years).
The main reason the official builds and the main effort is behind MSVC builds is that it has simply the best compiler for that platform (and I might actually argue that it has the best C/C++ compiler, period).
-
Trackback from David's Computer Stuff Journal on March 31, 2006 at 3:29 pm
-
Gerv Says:
Java on the client – embedded in web browsers – sucks. In the Java 1.2 – 1.4 timeframe, the way you knew you’d hit a page with a Java applet was that your machine froze for 30 seconds while the JVM fired up. Even now, in Java 1.5, it’s not much better.You guys are light years behind… check out this link
http://www.jgoodies.com/download/jdiskreport/jdiskreport.jnlp
-
Wow. You’re completely right. I hadn’t realized it was quite this significant.
-
>You guys are light years behind… check out this link
>
>http://www.jgoodies.com/download/jdiskreport/jdiskreport.jnlpLol, I was all ready to be impressed, then the program hanged when it asked me to specify a directory and I had to kill it.
-
I think Java is great! Just don’t think it as a programming langauge, but think of it as a platform, like Linux, FreeBSD or Windows.
I have use LAMP for over about 8 years now, and I don’t think it is good now days. It was inovative in 1998 when there are no other HTML embeded scripting language out there.
Check out helma.org, server side javascript implemented in Java. It uses java as a virtual machine instead of a programming language. As a side effect, the application written on a window machine can be zipped and code to a linux machine, and to a freebsd box to a sun machine without any problem or any modification. The system calls are taken care by the VM. No compiling is need, no lib dependency to worry about. Since java is mature, installing java is usually very easy. This can make a lot system admin’s job a lot easier.
With all the bad mouthing about Java out there it is easy to get sucked into the trend. Just remember .NET are just reinventing the wheels.
My view is very similar to this article, “Badmouthing Java”
http://scratchdisk.com/Random+Notes/December+2005/Badmouthing+Java/
-
Bah, Python came first with the whole VM idea. So Java is really copying it.
-
One size doesn’t fit all.
There are scripting languages where you can throw something up in a text editor and then there is Java where you can only feel productive in Eclipse.
I suppose there have been coding styles developed which look leaner, but to me java currently means pages full of getters and setters, full of overly verbose documentation, and then the latest achievement, the ugly “for” iterator over Collections which has yet another syntax different from all other programming languages I know. The concept of .jsp as template engine was also badly executed, since often errors in the .jsp are not caught until in the java compilation step, and then you had top dig out the matching .java for the .jsp from the app server.
Of course LAMP is moving the other direction, closer to java, so I expect that eventually some new scripting language will pop up to make things appear easy again.
-
Oh wow, I must say I am a bit disappointed by the arguments presented. Honestly you need to dig a little deeper than the FUD allways presented:
The .net argument:
.Net versus Java. Let us just get one thing clear, the debate of which is better .net or Java usually means C# versus Java at least when it comes to language arguments. C# is a java clone, but microsoft has weiged the design decisions a bit different like checked vs unchecked exceptions. Saying one is better than the other should certainly be considered an opinion not a fact.Multiple VMs:
Sun has allways provided both a free reference implemenation and the specs for both the language and the class libraries. (F)OSS people has somhow allways claimed this is not good enough release the source for the RI…The multitude of open source VMs and class libraries effort, is really no fault of Sun’s. If all these OS groups would just work together they could have has a single open source VM + class libraries years ago. But they didn’t and that is entirely their own fault
One of suns arguments has been (and believe still is) is that open sourceing the RI would create even more fragmentation. I tend to agree with them, If the entire OSS land cannot work together to produce a single VM, then I will be very woried when coorporate interest and wanna-be tweakers gets their hands on the reference implemenation
Eclipse:
Eclipse certainly isn’t held back by its dependency on JRE RI and its license. First of all, as others noted it runs very well with GCJ. The reason many people are backing off is because of SWT, which is very non-java-Mozilla 1:
I don’t see why Mozilla can not make an design that allows the use of Java extensions… It is entirely up to mozilla people to write such integration. If they need technical changes from the JVM I am pretty sure sun wouldn’t mind a JSR for that…There might be a bundlig issues with the licence, but perhaps you should talk to the openoffice people, they are using java.
Mozilla pluin prioson
Again this is browser design.It is a matter of designing a proper interface between the two layers. Do the ground work and open a JSR.Scripting:
Java 6 (mustang) allready supports scripting.OSS and java
Many of the newer techonologies (JSRs) are open source, including reference implementaions. That includes AFAIK Tomcat,Glassfish JSF etc.David Wragg: That memo is about technical issues with the old JVMs and solaris. Nothing to do with license issues
-
I really disagree with some of this, so this is a bit of a rant.
particularly the idea of software not being under a certain license somehow being “tainted”, so the “right people” won’t get behind it. It’s like there’s a self-appointed elite out there that believes that the best software developers are OSI-compliant-license-only developers, and nothing remotely proprietary can be successful. I think it’s a self-aggrandizing myth. Most software, open source, or not, is absolute crap quality, unsupported, hard to use dreck. Quality software development is the exception, and I don’t think the open source approach has a demonstrated a clear superiority here, because the licensing model has no effect on the fundamental scarcity of talent out there.
Why should Sun even care about the rise of the LAMP stack? What benefit does it provide people? Is it generating revenue anywhere near as much as .NET applications or Java applications? (Not that Sun has had much success selling Java software, but certainly IBM and BEA have). LAMP is the Microsoft Access of the web. It just means that most developers can slap things together on a language that often leads to unmaintainable monstrosities (PHP), and have very simple requirements (and can consequentially run on a very simple database).
And Java’s write once, run anywhere, is not a lie, no matter how much people repeat this ciche. I see people developing Java systems on Windows and deploying on Linux, or HP-UX, or Solaris — with completely different architectures, and even different VM’s, without any problems. Yes, this is for server-side applications, and yes, that’s all that really matters to most people in Java-land. Yes, there sometimes are incompatibilities, and they can be worked around. But the point is that single-code-bases are somehow “superior” to a competitve marketplace of implementations is complete crap. It’s just a different model, with its own strengths and weaknesses.
Have there been opportunity costs with Java’s licensing model? Absolutely! But let’s understand the context and stop the self-congratulating banter about how much more successful open source things have been over Java. Oops, that’s because they haven’t. People love to point out Java’s failures because its successes were so unbelievably massive. It was the fastest growing language and programming platform in computing history, and likely will remain that way for decades, until the next “dot-com” sized wave comes along.
Comments are now closed.


37 comments