Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Does Java license allow other companies to create their own versions of Java language or just implement it accurately? Same question about JVM.

I heard about Sun suing Microsoft for changing their .NET version of Java implementation and Java for Google Android, but I just can't grasp the whole concept as a totality.

share|improve this question

migrated from Apr 26 '11 at 22:58

This question came from our site for professional and enthusiast programmers.

up vote 22 down vote accepted

You can write a compiler that implements the Java Language Specification or write a JVM that implements the Java Virtual Machine specification, but when you officially want to call it "Java", you have to prove it is compatible by passing the tests of the TCK (technology compatibility kit) and pay for a license from Oracle.

Oracle doesn't make it easy for other parties to do this, though. Apache has their own implementation of the JVM (Apache Harmony) but previously Sun, now Oracle, is not cooperating in making the TCK available nor let Apache get a license, which has led to a lot of resentment between Apache and Oracle.

Long ago Microsoft had their own version of Java (that was indeed called "Java"). They tried to change it to make it Windows-specific, which Sun of course didn't like. There was a lawsuit, Microsoft lost, quit their own Java version and created .NET, which is a completely different thing that just happens to work a lot like how Java works...

The lawsuit about Android isn't based on this at all; Google isn't saying that Android is Java. That lawsuit is about patents; Oracle has patents on a number of ideas and concepts in their own JVM implementation and is claiming that Google is using the same patented ideas in Android without getting a patent license from Oracle.

share|improve this answer
+1 for a nice explanation on these lawsuits :) – asgs Apr 26 '11 at 21:13
Apache wanted the TCK and licensing for free, which is what Sun refused (as is their right). Microsoft IMO was shafted by Sun as what they did was in line with the language spec, they created a library on top of Java to make interfacing with Windows easier. It was just poor timing that Sun was pushing out Swing at the same time. Sun cashed in on the anti-MS sentiment in US politics at the time and won. – jwenting Apr 27 '11 at 8:14
@jwenting thanks. – Jesper Apr 29 '11 at 13:39
what do you mean by 'officially call it java'? can i modify the jvm and sell it? can i name it 'VM with java support'? – piotrek Aug 4 '12 at 23:29
@jwenting - what MS did was completely not in line with the Java spec. It wasn't just a "library on top of" (which would have been fine), it was a completely incompatible implementation (it didn't pass Sun's compliance tests which was a requirement to use the Java trademark). Regardless of the political situation, Sun was definitely in the right on that one. – mikera Sep 27 '12 at 9:18

Well, as I understand it, you can implement the specification all you like - to be able to legitimately call it "Java" you have to license and pass the compatibility kit, which apparently isn't trivial.

Android is not "java" although it uses the java language. It doesn't even attempt to pass the TCK.

share|improve this answer

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.