Puede escribir un compilador que implemente la especificación del lenguaje Java o escribir una JVM que implemente la especificación de la máquina virtual Java, pero cuando quiera llamarlo oficialmente "Java", debe demostrar que es compatible pasando las pruebas del TCK ( kit de compatibilidad de tecnología) y pague una licencia de Oracle.
Sin embargo, Oracle no facilita que otras partes hagan esto. Apache tiene su propia implementación de la JVM ( Apache Harmony ), pero anteriormente Sun, ahora Oracle, no está cooperando para que TCK esté disponible ni permite que Apache obtenga una licencia, lo que ha generado mucho resentimiento entre Apache y Oracle.
Hace mucho tiempo, Microsoft tenía su propia versión de Java (que de hecho se llamaba "Java"). Intentaron cambiarlo para hacerlo específico de Windows, lo que, por supuesto, a Sun no le gustó. Hubo una demanda, Microsoft perdió, renunció a su propia versión de Java y creó .NET, que es algo completamente diferente que funciona de manera muy similar a cómo funciona Java ...
La demanda sobre Android no se basa en absoluto en esto; Google no dice que Android sea Java. Esa demanda es sobre patentes; Oracle tiene patentes sobre una serie de ideas y conceptos en su propia implementación de JVM y afirma que Google está utilizando las mismas ideas patentadas en Android sin obtener una licencia de patente de Oracle.
Bueno, según tengo entendido, puede implementar la especificación todo lo que quiera: para poder llamarlo legítimamente "Java", debe obtener una licencia y pasar el kit de compatibilidad, que aparentemente no es trivial.
Android no es "java" aunque usa el lenguaje java. Ni siquiera intenta pasar el TCK.
fuente