Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've just started following with interest the soap opera involving Oracle's acquisition of Java and the detriment of goodwill it seems to have generated in the open source community. Specifically, I'm now trying to get my head around the implications of Oracle's decision to refuse Apache an open source license for Harmony. My questions:

1) What is Harmony anyway? Their website states "Apache Harmony software is a modular Java runtime with class libraries and associated tools". How is this different than J2SE or J2EE? Or is Harmony akin to Andriod?

2) The crux of this issue is around the Java Technology Compatibility Kit (or TCK) which certifies that your implementation adheres to the JSR specifications. If I understand correctly, Oracle refuse to offer free or open source license access to the TCK, denying projects like Harmony from being released as open source. Why is this such a big deal for Apache? E.g. why can't (or don't) they release Harmony under a restricted license?

3) From this site is the following quote:

It looks like Oracle’s plan is to restrict deployments of Java implementations in certain markets, particularly on mobile platforms, so that it can monetize its own Java offering in those markets without any competition.

Presumably anything Oracle produced would be subject to the same restrictions it is imposing on others with respect to end-technology licensing, so how could they get a leg up on the competition? While no doubt distateful, wouldn't other competitors such as Google or Apache be able to release competing platforms under the same license as Oracle?

share|improve this question
add comment

2 Answers

Harmony is Apache's clean room version of J2SE without the patent liability issues and a friendly open source license. The truth of the matter is that a significant percentage of the current J2SE stack is Apache code. This includes the XML parser (Apache Xerces) and XSLT engine (Apache Xalan), just put in a different package. However, there are a number of APIs that are encumbered by patents and the "OpenJDK" isn't really that open.

The chief issue that caused Apache to leave the JCP is a long standing issue that existed before Oracle bought Sun. The JCP rules and bylaws require all participants to provide acceptance and compatibility testing suites to all JCP members. Sun, and subsequently Oracle, refused to do this for the TCK. In essence, they proved that the Java Community Process was neither a process for the community nor was the Executive Committee a committee of executives (quote borrowed from an Apache Officer--I forgot exactly which one). Essentially the EC did not or could not require Sun/Oracle to honor their own bylaws for the JCP.

Due to this legal/process problem Apache Harmony cannot be officially certified as a compliant JVM. For all the well known cases, I'm sure it is compliant, but there are probably a few corner cases that the team isn't aware of that are not compliant. The Java stack is huge.

As to why Apache won't release Harmony or any other project under a restricted license, the Apache name means something. All of their software is released under the Apache Software License (ASL), without exception. The license is both corporate friendly, and provides a commitment to ensure all users of the code are free from legal and patent issues when they use the code. If they made an exception for even one project, that affects what the Apache name stands for. It is one of the core tenets that made them successful thus far.

share|improve this answer
It is not as much a matter of compliancy but behaving exactly as expected. –  user1249 Mar 10 '11 at 13:22
Thanks. So what next for Harmony? Or do Oracle's restrictions make it dead in the water? –  Chris Knight Mar 10 '11 at 13:51
It makes it so that it can never be certified. I believe that Apache is still trying to figure out what to do about that. They don't want to fragment the Java community, but they've got a pretty good tool that they've put a lot of work into. –  Berin Loritsch Mar 10 '11 at 14:27
add comment

1) Apache Harmony is an attempt to produce a free (as in speech; not as in beer) implementation of Java. An implementation of Java is everything needed to run a Java program - the main components of which are a Java Virtual Machine and the class libraries. J2SE is the most common Java implementation used, though it's not completely free. Harmony aims to allow J2SE to be replaced. A (slightly inexact) analogy would be replacing a proprietary C compiler and C standard library provided perhaps by your processor vendor, with gcc and glibc. They do exactly the same things, but one does it entirely with free software.

2) The problem is a "give me liberty, or give me death" attitude. Oracle refuse to grant the TCK licence because Apache refuse to restrict use of Harmony to non-mobile devices. Such a restriction would be a violation of the Apache Licence which, among other things, grants the right to use the licensed software for any purpose. I don't know the exact copyright status of Harmony, but if Apache allowed it to be distributed with this restriction they may be violating the licences - and certainly the trust - of third-party contributors, who may have only been willing to contribute to an Apache-Licenced project.

Also note that the TCK is in many ways a rubber stamping. It doesn't stop Harmony from working; it only prevents it from being officially called Java, as it hasn't passed all the officially-certified compatibility tests (they are what defines what is and isn't Java). The situation is similar to Unix - there are many Unix-like operating systems out there (Linux being the best known), but relatively few go to the expense of becoming certified as Unix, and thus allowed to use the Unix trademarks.

3) Oracle own the majority of the Java trademarks, copyright etc. so they can do anything they want to with them and that includes setting what might be considered unreasonable licence requirements that Oracle themselves have no intention of fulfilling.

share|improve this answer
Thanks. With regards to point 3, are you saying that Oracle can force others to use restrictive licenses which them themselves wouldn't use? I.e. force non-mobile only platform restrictions on others, but quite happily develop their own mobile platform without such restrictions? –  Chris Knight Mar 10 '11 at 13:49
Yes. Oracle don't need a licence to use things to which they already own the copyright. Nor are copyright holders required to offer the same licence to everyone - they're perfectly at liberty to offer a less-restrictive licence to someone in their favour. This is the knub of the Harmony problem, though. The JCP rules implied that Oracle should have licensed the TCK to Apache, but there was no mechanism to force them to do so when they refused. –  Scott Mar 10 '11 at 14:23
Also, part of the irony is that, before they bought Sun, Oracle were one of the biggest supporters on the JCP of giving Apache a TCK licence. –  Scott Mar 10 '11 at 14:25
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.