¿Qué significa la demanda de Sun contra Microsoft para los desarrolladores de Java?

7 de octubre de 1997 - Sun ha respondido al lanzamiento de Microsoft de Internet Explorer (IE) 4.0 y su lanzamiento 2.0 del SDK para Java (SDKJ) con una demanda en el Tribunal de Distrito de EE. UU. Según el comunicado de prensa de Sun, "la denuncia acusa a Microsoft de infracción de marca registrada, publicidad engañosa, incumplimiento de contrato, competencia desleal, interferencia con posibles ventajas económicas e inducir incumplimiento de contrato". Específicamente, Microsoft tomó la decisión la semana pasada de enviar productos que, según afirma, cumplen totalmente con Java 1.1, pero que no pasaron las pruebas de compatibilidad con Java 1.1 que la compañía recibió de Sun en febrero. "Microsoft se embarcó en un curso de conducta deliberado para fragmentar Java", dijo Alan Baratz, presidente de JavaSoft, durante una teleconferencia de Sun hoy a las 10:30 am PST.

Desde la perspectiva de un desarrollador, ¿qué significa esto? Bueno, primero, si crea algo con Sun's 1.1 JDK (o con el entorno certificado Java 1.1 de otra empresa, como IBM, Borland y Symantec), es posible que no se ejecute bajo IE 4.0. Además, si crea algo con el entorno de desarrollo de Microsoft, es posible que no se ejecute en un entorno que no sea de Microsoft Java 1.1. Específicamente, Microsoft no es compatible con las interfaces nativas de Java (JNI) o la invocación de método remoto (RMI), y ha modificado las bibliotecas de clases Core Java con aproximadamente 50 métodos y 50 campos que no forman parte de las interfaces de programación de aplicaciones Java públicas ( API) publicado por Sun.

JNI y RMI: por qué el rechazo de estos por parte de Microsoft plantea un problema

JNI es la interfaz de código nativo que se utiliza para acceder a capacidades específicas de la plataforma, como un puerto serie o un micrófono, para cosas que aún no están disponibles a través de la API central. El objetivo de JNI es permitir que los desarrolladores proporcionen un único conjunto de bibliotecas nativas para cada implementación de Java en una plataforma específica.

Microsoft ha decidido admitir su propia interfaz, llamada RNI, que proporciona las mismas capacidades que JNI. Al no admitir JNI, Microsoft está obligando a los desarrolladores a proporcionar diferentes bibliotecas para usuarios de máquinas virtuales Java (JVM) de Microsoft y de otros fabricantes. No hay nada de malo en el apoyo de Microsoft a RNI si la empresa cree que su tecnología es mejor. Sin embargo, al no ser compatible con JNI, Microsoft no puede afirmar que IE 4.0 sea totalmente compatible con Java 1.1.

RMI proporciona un medio para ejecutar código Java en máquinas virtuales Java externas. Se compara con frecuencia con las llamadas a procedimiento remoto (RPC), la arquitectura de agente de solicitud de objeto común (CORBA) y el modelo de objeto componente distribuido (DCOM), según los antecedentes de la persona que habla. Microsoft afirma que admite DCOM en lugar de RMI porque RMI no admite comunicaciones de Java a no Java. El propósito específico de usar RMI es para las comunicaciones del sistema Java a Java. Por ejemplo, con RMI, puede invocar métodos de objetos existentes en otras máquinas virtuales Java, sin conocer el tipo de clase, mientras se preserva la seguridad del tiempo de ejecución de Java.

Si necesita moverse fuera de las comunicaciones de Java a Java, CORBA es en realidad la solución portátil, no DCOM. ¿Por qué? DCOM está orientado hacia el mundo de Microsoft, y solo recientemente está disponible para el mundo Unix con productos como EntireX de Software AG. Si necesita utilizar RMI, obviamente Internet Explorer no es una opción disponible. Si necesita comunicaciones entre sistemas Java y no Java, para interactuar con sistemas heredados (no Java) que dependen de CORBA, Netscape Communicator 4.0 se envía con VisiBroker ORB de Visigenic. (Para obtener compatibilidad con RMI con Netscape Communicator, debe utilizar una versión beta de un parche de navegador, ya que Communicator no pretende ser un navegador Java 1.1).

Rotten to the Core Java API: el meollo del problema

El último problema de incompatibilidad de Java 1.1 identificado es en realidad el más aterrador. Es fácil evitar RMI y JNI si su aplicación lo permite: simplemente no los usa. El problema es que Microsoft decidió que las bibliotecas de clases Core Java eran insuficientes para sus necesidades. Ahora no hay nada de malo en extender cosas subclasificando y colocando los nuevos objetos en un paquete fuera de la jerarquía de clases java. *. Pero decidir agregar alrededor de 50 métodos y 50 campos en las clases dentro de los paquetes java.awt, java.lang y java.io, como hizo Microsoft, es extremadamente problemático. "Microsoft alteró engañosamente las clases de claves y las insertó en su SDK", dijo Baratz, lo que hace que los desarrolladores piensen que están escribiendo Java, cuando en realidad están escribiendo algo que solo se ejecuta en Internet Explorer.

¿Cómo afectan las adiciones de Microsoft a las clases a los desarrolladores de Java? Bueno, si confía en estos cambios, o simplemente los usa sin darse cuenta, su programa funcionará solo dentro del sistema Java de Microsoft. Además, si crea un programa fuera del entorno de desarrollo de Microsoft, esperará una API central determinada. Desafortunadamente, esa API central es diferente a la del entorno de Microsoft, por lo que es posible que el programa no funcione allí. La prueba de la suite de compatibilidad que señaló este problema es lo que se llama signature test.

Como ejemplo, si foo()se supone que el método acepta un parámetro de tipo bar, es mejor que obtenga un objeto de tipo bar. Si alguien quiere que pase un objeto de tipo en su bazlugar, funcionará solo en aquellos sistemas que cambiaron el núcleo para aceptarlo. Y Microsoft introdujo ese cambio. Ahora, Microsoft puede pensar que se erige como la implementación de referencia de Java para Windows. Pero el hecho es que solo Sun puede introducir cambios en la API Core Java. Sí, cualquier licenciatario puede solicitar cambios, y muchos lo hacen con frecuencia. Pero Microsoft, por sí solo y sin permiso, decidió cambiar estas cosas.

Al final, el objetivo de la demanda es, en palabras de Baratz, "hacer que Microsoft vuelva a cumplir" y lo antes posible. Pero hasta que se resuelvan las legalidades, Sun negará a Microsoft todas las mejoras de tecnología Java en curso, como la nueva máquina virtual Java 2.0 llamada HotSpot. Si Microsoft no vuelve a cumplir con Java, deberá idear una implementación de sala limpia de su versión de algo que no se llamará Java, es decir, si quiere hacer algo con el equivalente. de códigos de bytes de Java. ¿Quién sabe qué pasará con IE 4.0, el SDK para Java 2.0 y el próximo Visual J ++?

Palabras de sabiduría: tenga cuidado con el desarrollador de Java

Como desarrollador, tendrás que andar con mucho cuidado. Si decide utilizar los entornos de desarrollo de Microsoft y necesita crear soluciones multiplataforma, familiarícese con las API de Core Java. Deberá evitar todo lo que no forme parte de las especificaciones públicas. Hasta que se publique una lista completa de elementos incompatibles, la responsabilidad de cada desarrollador será saber qué es y qué no es compatible. Por supuesto, si no le importa "escribir una vez, ejecutar en cualquier lugar", puede utilizar las capacidades específicas de la plataforma de Microsoft. Sin embargo, es posible que se revoque la licencia de Java de Microsoft. Sun ya está intentando revocar la capacidad de Microsoft para mostrar el logotipo compatible con Java.

John Zukowski es un mago de software con MageLang Institute, autor de Java AWT Reference de O'Reilly & Associates y JBuilder de Borland: No se requiere experiencia de Sybex, así como la guía Focus on Java en Mining Company.

Más información sobre este tema

  • Comunicado de prensa de Sun Microsystems

    //java.sun.com/announcement/index.html

  • Preguntas frecuentes de Microsoft sobre por qué no es compatible con RMI / JNI, etc.

    //www.microsoft.com/java/issues/techsupfaq.htm

  • Soporte actual de Netscape para Java en Communicator 4.0

    //developer.netscape.com/library/documentation/communicator/javajdk.html

  • Vea la historia de Elizabeth Heichler, de News Service, y Bob McMillan, SunWorld

    //www.javaworld.com/jw-10-1997/jw-10-sunsuit.html

  • Nuestra propia Jenni Aloi escribió una historia sobre la ira del lobby de Java contra Microsoft

    //www.javaworld.com/jw-10-1997/jw-10-javalobby.html

  • La historia de CNet sobre la demanda de Sun contra Microsoft

    //www.news.com/News/Item/0,4,14986,00.html

  • San Jose Mercury News sobre la demanda

    //www.sjmercury.com/business/sunsuit100797.htm

  • ¿Debería permitirse a Microsoft alterar las bibliotecas de clases clave de Java? Realice nuestra última encuesta

    //nigeria.wpi.com/cgi-bin/gwpoll/gwpoll/ballot.html

  • Una revisión de las herramientas de desarrollo Java de plataforma neutral en NC World , la publicación hermana de JavaWorld

    //www.ncworldmag.com/ncw-10-1997/ncw-10-jvtools.html

  • Comentario de Nick Petreley sobre la demanda de Sun / MS, también en NC World

    //www.ncworldmag.com/ncw-10-1997/ncw-10-straypackets.html

Esta historia, "¿Qué significa la demanda de Sun contra Microsoft para los desarrolladores de Java?" fue publicado originalmente por JavaWorld.