Anda dapat menulis kompiler yang mengimplementasikan Spesifikasi Bahasa Jawa atau menulis JVM yang mengimplementasikan spesifikasi Mesin Virtual Java, tetapi ketika Anda secara resmi ingin menyebutnya "Java", Anda harus membuktikannya kompatibel dengan melewati tes TCK ( kit kompatibilitas teknologi) dan membayar lisensi dari Oracle.
Oracle tidak membuatnya mudah bagi pihak lain untuk melakukan ini. Apache memiliki implementasi JVM ( Apache Harmony ) mereka sendiri, tetapi sebelumnya Sun, sekarang Oracle, tidak bekerja sama dalam menyediakan TCK atau membiarkan Apache mendapatkan lisensi, yang telah menyebabkan banyak kebencian antara Apache dan Oracle.
Dulu Microsoft memiliki versi Java mereka sendiri (yang memang disebut "Java"). Mereka mencoba mengubahnya untuk menjadikannya Windows khusus, yang tentu saja tidak disukai Sun. Ada gugatan, Microsoft kalah, keluar dari versi Java mereka sendiri dan menciptakan .NET, yang merupakan hal yang sangat berbeda yang kebetulan banyak bekerja seperti cara kerja Java ...
Gugatan tentang Android sama sekali tidak didasarkan pada ini; Google tidak mengatakan bahwa Android adalah Java. Gugatan itu tentang paten; Oracle memiliki paten pada sejumlah ide dan konsep dalam implementasi JVM mereka sendiri dan mengklaim bahwa Google menggunakan ide yang dipatenkan yang sama di Android tanpa mendapatkan lisensi paten dari Oracle.