Licencia Java y JVM

17

¿La licencia de Java permite a otras compañías crear sus propias versiones del lenguaje Java o simplemente implementarlas con precisión? La misma pregunta sobre JVM.

Escuché sobre Sun demandando a Microsoft por cambiar su versión .NET de la implementación de Java y Java para Google Android, pero no puedo entender todo el concepto como una totalidad.

Sergey
fuente

Respuestas:

25

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.

Jesper
fuente
2
Apache quería el TCK y la licencia gratuita, que es lo que Sun rechazó (como es su derecho). Microsoft IMO fue diseñado por Sun, ya que lo que hicieron estaba en línea con las especificaciones del lenguaje, crearon una biblioteca sobre Java para facilitar la interfaz con Windows. Fue solo un mal momento cuando Sun empujó a Swing al mismo tiempo. Sun aprovechó el sentimiento anti-MS en la política estadounidense en ese momento y ganó.
Jwenting
¿Qué quieres decir con 'oficialmente llamarlo Java'? ¿Puedo modificar el jvm y venderlo? ¿Puedo llamarlo 'VM con soporte java'?
piotrek
1
@jwenting: lo que hizo MS no estaba completamente en línea con las especificaciones de Java. No era solo una "biblioteca encima" (lo que hubiera estado bien), era una implementación completamente incompatible (no pasaba las pruebas de cumplimiento de Sun, que era un requisito para usar la marca Java). Independientemente de la situación política, Sun definitivamente tenía razón en eso.
mikera
@mikera excepto que MS nunca lo llamó Java por esa misma razón ...
comenzó el
1
El problema era que MS agregaba métodos a las clases Java existentes, haciendo que el código compilado contra ellos fuera incompatible con las clases estándar. Esto, por supuesto, crearía un bloqueo mientras la premisa de Java es que se suponía que debía ejecutarse sin cambios en cualquier plataforma sin cambios.
Peter Kriens
3

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.

Joseph Ottinger
fuente