IBM Collaborating With Open Source Java Project
lord_rob the only on writes "According to news.com, IBM has begun participating in the open-source Java project Harmony and intends to contribute code to the initiative, according to a Big Blue executive. At this point, IBM's participation is limited to thoughts on design, but the company has plans to contribute code to the project in the future." From the article: "We really like to see the community get started, and they're still working out the rough edges of what they want to deliver. And we didn't want to disrupt that,"
This should line up with their efforts with Eclipse, too. I might get into a little Java programming if the environment were open-source.
antipaucity
Looks like ~not~ open sourcing Java is fragmenting the Java language after all!
Agile Artisans
- keep IBM from taking the language in directions other than Sun wanted to take it in, and
- make the JCP a democratic and open process whereby any involved company can take the language in any direction they want.
This isn't because Sun is evil or malicious or anything; they're just confused about what they want. They honestly want Java to be an open, democratic standard, and they honestly want to control it.The "control it" side of things keeps winning, because in the end Sun makes the JVM so they can technically decide what goes in and how it gets distributed.
This is why I think Harmony is interesting. Sun will no longer control the only good JVM, and if Sun can't stay at least as good as Harmony, then Sun will no longer control the primary JVM. This makes the JCP's democratic ideals a lot more attainable because Sun's just lost their biggest degree of control. IBM trying to weigh in on the side of Harmony, given this context, makes a LOT of sense. They can begin to grow the language how THEY wanted again.
This is going to be good for IBM, good for open source, and in the long run good for Sun once they realize that trying to control Java too much isn't really in their best interest.
"IBM's participation is limited to thoughts on design, but the company likely will contribute code to the project".
I put this through BabelFish's translator. Apparently, this could be taken to mean:
"A big company is going to do little to help out, but is willing to share credit for an open source project."
Me? cynical? Never!
What are you eating? isItVeg?.
After the FSF call for volunteers, GNU Java compiler / VM has come of age. It was reported here, too. RedHat Fedora Core 4 even includes a native version (doesn't depend on JVM, but runs as a "normal" binary) of Eclipse, compiled with GCJ.
IBM says "this is what we want, now get on with making it for us".
The Richard Stallmans of the world have long wanted Java to be an open source language, while Sun Microsystems has said that they want to be the single point of control for the language. The biug lawsuit between Sun and Microsoft was about Microsoft making unauthorised changes to the language spec. Through the Java Community Process, Sun has allowed developers at large to make suggestions and improvements to the language if Sun approved of them. Sun controls the specification of the language and the reference JVM implimentation. The battle isn't about the JVM being open source, it's about the language specification. Sun's fear is that by opening the specification, someone's going to say "You know, I've always felt the language should have pointers", and the language will fall into Creeping Featurism the way C++ did. The recent (1.5) introduction of template-like behavior, at the demands of the "more features" crowd is already a step in that direction. No matter how you slice it, it seems we're doomed to a Java with more and more new features (remove run-time array bounds checking for performance, anyone?) and more and more fragmentation.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
GCJ still only provides limited support for Swing. I don't think it can be said that it has "come of age" until that support is there in a form that at least remotely resembles javac.
Yet, IBM loves it and is now, apparently, committing to it. Once IBM backs an open-source product (e.g. Linux) and ships it to customers, then IBM ensures that the product performs flawlessly. Who can doubt that IBM is a significant contributor to the high-reliability of today's Linux build? The strength of IBM is its commitment to its customers.
What is interesting is that, from a business perspective, there is no need for Harmony to be fully compliant with Sun's closed Java standards. The route to divergence is to (1) define a new language called "Harmony", (2) place it with a standards body, (3) maintain full compatibility with only the current version of Java (in order to support all of IBM's current customers and developers) but deliberately diverge from compatibility for future versions of Java, (4) arrange for IBM to jettison use of future versions of Java and to fully utilize Harmony, (5) generously borrow the best concepts from Java while ensuring that the word "Java" is never used (in order to avoid a lawsuit), and (6) build support for Harmony in GCC. This strategy could work.
C# is a ripoff of Java and is quite popular.
There is nothing magical about the Java name. Just consistently use the name, "Harmony", on this proposed Java variant. Everyone will know that "Harmony" is Java -- plus additional stuff. Even if "Harmony" is only 98% compatible with future versions of Java, "Harmony" could grab the software development if the open-source community backs it.
I think this is a very bad sign for Sun, because it sound to me like IBM hedging its bets for what might happen if Sun is bought out or sells Java. IBM's java virtual machine is based on Sun code, so if Sun sells the rights to Java then IBM is beholden to somebody else (maybe even Microsoft, who would buy Sun just to finally kill Java). As sad as it is to say, I think IBM sees the writing on the wall that Sun just doesn't seem like the reliable bet these days.
If you'll look at harmony's website, you'll see that they aren't just implementing the Java Virtual Machine as you put it. They are implementing J2SE. J2SE is not just a language. It is a platform.
Platform fragmentation is as, or more important than, language fragmentation*. A language cannot stand alone. You need libraries. Platform fragmentation is what Sun is worried about right now, not language fragmentation. The JVM is not even part of the "open source java" debate, since open source JVMs already exist and Sun is more or less encouraging them!
Please see my other comment here.
* Language fragmentation can still happen if Harmony chooses to implement different JSRs than Sun does for some reason. However it is incredibly unlikely that this would be a bad thing. As long as Harmony stays within the accepted protocols for extending the Java language, and keeps any experimental/unapproved-JSR features cleanly quarantined within the -XX "pragma" flags (both of which things, Microsoft did NOT), this will be fine.
IBM already has a complete JDK which actually used to be much better than Sun's in terms of efficiency etc. (not sure how it compares right now). They could just release the whole thing as F/OSS under the new JCP rules, and create Harmony overnight. Why have they not done this yet?
Because IBM's JDK wasn't written from scratch. It's based, to some degree, on Sun's code. I don't know how much Sun code is in IBM's JDK, or the exact details of the license between Sun and IBM, but I know IBM's JDK is subject to Sun licensing.
// TODO: Insert Cool Sig
I believe you are correct, IBM's JDK was not a clean-room implementation - it owes a lot to Sun's JDK. IBM is bound by their licensing agreements with Sun, and the IBM developers that worked with Sun JDK source code are likely 'tainted' enough so that they cannot now work on a clean room implementation.
IBM's JVM is based on Sun's. They may be able to contribute bits and pieces, but certainly not the whole thing.
Can someone inform you why SUN will not allow Linux distros distribute java? I know it about licensing but what is the logic behind this?
The last thing Sun wants is Linux distros being competitive. The "let's support Linux" war was lost at Sun a couple of years ago... Java and its licensing is a weapon in that war. Why make it possible for Linux distros to legally distribute Java easily when it would take sales/support money away from OpenSolaris? *That's* why an open source Java is needed... or preferably, fuck Java altogether and use something better designed and more open... like Mono (whose spec is at least standardised with an international standards body... something Sun refuses to do with Java).
This isn't true anymore. The old JVM was based on sun's code. The new one is completely cleanroom.
Once I found the Harmony site from someone else's post (hint: it's in the Apache incubator, not a full-fledged project yet), I saw this in the FAQ:
So, it sounds like a cooperative deal between various players. I've been hoping for an OSS JVM because there is no Java for some of the platforms I use. Having a few big-name drivers behind it will definitely help.
Constitutionally Correct