Java Dil Spesifikasyonunu uygulayan bir derleyici yazabilir veya Java Sanal Makine spesifikasyonunu uygulayan bir JVM yazabilirsiniz, ancak resmi olarak "Java" olarak adlandırmak istediğinizde, TCK testlerini geçerek uyumlu olduğunu kanıtlamanız gerekir ( teknoloji uyumluluk kiti) ve Oracle lisansını ödeyin.
Oracle, diğer tarafların bunu yapmasını kolaylaştırmıyor. Apache'nin JVM ( Apache Harmony ) için kendi uygulamaları vardır, ancak daha önce Sun, şimdi Oracle, TCK'yi kullanılabilir hale getirmek veya Apache'nin lisans almasına izin vermemektedir ve bu da Apache ve Oracle arasında çok fazla kızgınlığa neden olmuştur.
Uzun zaman önce Microsoft'un kendi Java sürümü vardı (buna gerçekten de "Java" deniyordu). Sun'ı sevmediği, Windows'a özgü hale getirmek için değiştirmeye çalıştılar. Bir dava vardı, Microsoft kaybetti, kendi Java sürümünü bıraktı ve .NET'i yarattı, bu da Java'nın nasıl çalıştığı gibi çok çalışmak için tamamen farklı bir şey ...
Android hakkındaki dava hiç buna dayanmıyor; Google, Android'in Java olduğunu söylemiyor. Bu dava patentlerle ilgili; Oracle'ın kendi JVM uygulamalarında birkaç fikir ve kavram üzerinde patentleri vardır ve Google'ın, Oracle'dan patent lisansı almadan Android'de aynı patentli fikirleri kullandığını iddia etmektedir.