Nota: Bottom line - The trouble with Java

Traducción: Gustavo Novembre

Revisión: Roxana

El Problema con Java

Java ya está entre nosotros - pero ¿valen la pena los problemas? Por Joel Snyder.

Cuadro pg. 38

Continua existiendo mucha confusión sobre el java: para que cosas es bueno y para que cosas no lo es.

La llamamos "La Pompa" una maquina de café espresso italiana a bomba. Le da a mi oficina el mejor espresso de Norte America. Y es el único java que usamos: El lenguaje de programación Java de Sun crea demasiados problemas potenciales para siquiera considerar usarlo.

Continua existiendo mucha confusión sobre el java: para que cosas es bueno y para que cosas no. Aqui encontrarán algunas cosas a considerar al decidir si Java es para ustedes.

Objetivo de la Lección

El Java es un lenguaje orientado a objetos. Los lenguajes tradicionales de programación, tales como el C y Perl son "procedurales" y consisten de una serie de procedimientos que le dicen al computador que es lo que tiene que hacer.

En un lenguaje orientado a objetos se pone enfasis en la información que manipula el programa. Las porciones de información (datos) se agrupan en "objetos", los cuales tiene reglas de como pueden ser manipulados. Y debido a que la mayoría de los programas mueven porciones de información de una parte a otra, cualquier cosa que pueda mejorar a este proceso es especialmente deseable.

El Java también fué diseñado para ser un ambiente orientado a objetos, incluyendo a la Java Virtual Machine (Máquina Virtual o VM, programa que interpreta los comandos Java para ejecutarlos), que se supone debe proveer una independencia verdadera de plataformas. Con el Java VM, se puede, según dicen, escribir un programa una vez y hacerlo que corra bajo Windows, Macintosh o Unix, OpenVMS, MVS, o como quieran llamarlo. Sin embargo, rara vez funciona como se prometió.

De todas maneras, Sun Microsytem mostró a Java como la primer herramienta de implementación de aplicaciones de Internet. Esta impresión fué confirmada cuando Netscape estuvo de acuerdo en incorporar el soporte a Java en su navegador.

Java en la Red

Cuando se habla del Java en el contexto de Internet, existen actualmente tres lugares donde pueden encontrar el lenguaje.

l primero es en el servidor Web en sí. Los servidores corren programas para construir páginas Web en forma dinámica, manejan indices, usan aplicaciones de carros de compras, o buscan en bases de datos. Estas pueden escribirse en Java (En este caso la elección del lenguaje es insignificante para el usuario cliente). Las grandes aplicaciones de Internet, donde el tradicional lenguaje de scripting, Perl, se rompe con facilidad, se mejoran de gran forma con el poder agregado del Java. La independencia de las plataformas no es crítica aquí, pero los otros beneficios del desarrollo de software orientado a objetos sí lo son.

Muchos programadores se están dirigiendo al Java para las aplicaciones Internet del lado del servidor. sin embargo, desde el punto de vista del cliente, esto es inmaterial: Uno no se puede dar cuenta de cual aplicación es la que está generando el flujo de datos que esta leyendo su navegador.

Los otros dos lugares donde pueden encontrar al Java son en el lado del cliente, en oposición al lado del servidor. El Java del lado del cliente se muestra de dos maneras diferentes: JavaScripts y applets de Java (Actualmente el JavaScript y los applets de Java también pueden correr en los servidores Web)

El JavaScript es una versión más simple del Java. Cuando un cliente Web (tal como el Navigator o el Internet Explorer) soportan al JavaScript, el autor de la página puede modificar de alguna forma al comportamiento del cliente Web. El JavaScript no es full Java - es un pequeño lenguaje de programación que complementa a las aplicaciones Java que pueden correr tanto en el servidor como en el cliente. Las páginas Web escritas en HTML pueden tener porciones de JavaScript en ellas, incluidas en las páginas como comentarios.

Los programas de JavaScript no tienen a toda la fortaleza del Java detrás de ellos, pero son lo suficientemente poderosos para controlar y modificar al navegador Web. Esto permite que el desarrollador de aplicaciones vaya más allá del hacer-click-para-hacer-algo del navegador, aunque generalmente de una manera bastante simple.

Uno de los primeros ejemplos del JavaScript en una página Web fué el de un formulario de pedidos online: El formulario automáticamente calculaba los totales y el impuesto a las ventas a medida que el cliente lo iba llenando, antes de apretar el botón Submitir. El JavaScript también se ha usado para agregarle animación a las páginas Web, cambiar el contenido basandose en la ubicación del mouse, y en la construcción de cuartos de chat interactivos.

El siguiente paso más allá del JavaScript es un applet de Java. Los applets de Java no están incorporados a una página Web; se bajan separadamente como objetos pre-compilados. Como todas las aplicaciones Java, un applet de Java corre en el Java VM.

Los applets de Java tienen una enorme poder disponible. Sin embargo, están fuertemente restringidos por el Java VM donde viven. Por ejemplo, a pesar que el Java VM tiene acceso a las facilidades de red de su sistema operativo host, el applet seguro VM solo puede hacer conexiones con el servidor que lo originó.

Red enredada

A pesar de sus beneficios, la implementación del Java preocupa a los usuarios de redes y los diseñadores de aplicaciones.

El asunto de las seguridad es el mayor problema. La seguridad del Java se basa en la fé ciega. Se debe confiar que su implementación de Java es perfecta, no tiene errores, y que los applets de Java y el JavaScript que se baja no está diseñado para ser malvado (por ejemplo, el resultado de algun bromista destructivo de Internet).

Cuando el propósito básico de una herramienta es de conectarse a una red de forma que pueda bajar y manipular datos, tienen que tener mucha confianza en que no irá a enloquecerse. Y en el caso del Java, yo no la tengo.

Ahora, podrían decir, se puede extender el argumento a cualquier aplicación de red: Si no confio en el Java, entonces porqué debería confiar en el Netscape Navigator o en el Microsoft Internet Explorer? Este es un buen punto, pero existe una gran diferencia entre lo que hace el Navigator con una página de datos y lo que hace el Java con un applet.

Cuando un navegador Web lee una página, interpreta al código HTML: centrado, negritas, incorporar gráficos, y cosas por el estilo. No existen operaciones de HTML que digan "leer este archivo desde el disco" o "enviar estos datos a través de la red". Cualquier error en la seguridad de un navegador Web se deberá a las extensiones hechas por el vendedor o a algún otro error. Por el otro lado, el Java es tan complejo como cualquier otro lenguaje de programación. El potencial para los errores en un sistema está directamente relacionado con el tamaño del sistema, y el Java es grande.

A pesar que existen algunas normas para ayudar a identificar donde se originó un applet de Java, ninguna de estas están soportadas por los navegadores de hoy. Más importante aun, los expertos en seguridad que diseñan estas medidas de seguridad tienen ideas inocentes acerca de cuanto se molestará la gente para mantener a sus computadoras seguras.

El otro problema con el Java es su falta de compatibilidad. Como la mayoría de los lenguajes de programación, el Java tiene especificaciones que controlan la manera en que opera. Esto está bien, excepto que los dos principales lugares donde verán al Java en operación es en el cliente - Navigator e Internet Explorer - que no son perfectamente compatibles entre ellos. Esto es directamente una antitesis con la naturaleza del Java: Se supone que el lenguaje debe ser ubicuo, de forma tal que solo se deba escribir a una aplicación una sola vez.

Por ejemplo, uno de mis clientes toma datos históricos de agricultura disponibles en Internet. La compañía usa a Java para asistir en la lectura de los datos y en el análisis y resúmen de la información. Pero debió decirle "no" a Microsoft debido a que la implementación de Java no es compatible con la de Netscape.

Protegiendo su privacidad

Si es un usuario de Internet, querrán considerar la deshabilitación del JavaScript y del lenguaje Java en su navegador de Internet si tienen algo en su computadora que debe mantenerse confidencial. En una red privada, donde se confía en el servidor, el Java es una gran herramienta. Pero en la Internet pública, el potencial para la perdida o la publicación no autorizada de los datos es grande.

Si es un desarrollador de Internet, contar con que Java esté presente en la red Internet pública de su cliente es una mala idea. Por supuesto, si están en una intranet privada o si tienen una relación especial con la gente usando su sitio, tienen suerte. Sin embargo, si no pueden transmitir su mensaje sin usar Java, deberán reconsiderar su diseño.

Finalmente, descarten lo que la gente dice sobre la maravillosa portabilidad del Java. Solo las aplicaciones más rudimentarias funcionarán en varias plataformas. Esto probablemente mejorará con el tiempo, pero pasará un buen rato hasta que lleguemos a esa etapa.

Joel Snyder (jms@opus1.com), es un socio senior de Opus One, una firma de servicios IT, en Tucson, Ariz.