Infografía
Resumen 4
JAVA Y ACTIVEX:
DESCRIPCION DE LOS ESTANDARES
FRANCIS AGOSTINI
Resumen
Java es un
lenguaje de programación orientado a objetos e independiente de la plataforma donde
se ejecute diseñado por Sun Microsystems. Java permite generar componentes de
software denominados "Applets" Java que son ejecutados en
"browsers" Web. Estos "Applets" permiten crear páginas Web
con contenido activo.
ActiveX es un
estándar desarrollado por Microsoft que permite la interacción de componentes
de software en un ambiente de red independientemente del lenguaje en el cual
fueron creados. Con ActiveX se logra que los sitios Web tengan efectos
multimedia, objetos interactivos y aplicaciones sofisticadas. El estándar
ActiveX incluye los controles ActiveX, que son componentes de software que
corren en páginas Web, y proveen funciones interactivas controlables por el
usuario.
Los
"applets" Java y los controles ActiveX son componentes de software y
tienen capacidades y limitaciones diferentes. En este artículo se incluye un
análisis de como funciona cada uno en seis áreas críticas: contenedores,
independencia de plataforma, velocidad, disponibilidad, seguridad y capacidad.
Palabras claves: Java, ActiveX, componentes
de software, contenedores, "Applets" Java, Controles ActiveX, Web,
"browsers" Web, Multimedia.
Abstract
Java is an object-oriented and cross-platform
programming language developed by Sun Microsystems. Java allows creation of
software componentes called Java Applets that are ejecuted by Web browsers.
These applets allows creation of Web pages with active content.
ActiveX is a standard developed by Microsoft that
enables software components to interact with each other in a networked environment,
regardless of the language in wich they were created. With ActiveX, Web sites
come alive using multimedia effects, interactive objects, and sophisticated
applications. ActiveX standard embraces ActiveX Controls, that are software
components that run in Web pages, providing interactive and user-controllable
functions.
Both Java applets and ActiveX Controls are software
components with diferents capabilities and limitations. In this article I
include an analysis of how well each performs in six critical areas:
containers, cross-platformability, speed, availability, security and capacity.
Keywords: Java, ActiveX, software components, containers,
Java Applets, ActiveX Controls, Web, Web browsers, Multimedia.
INTRODUCCION
En este artículo
estudiaremos las principales características y las diferencias entre los
estándares Java y ActiveX, especialmente la utilización de ambos estándares
para realizar aplicaciones multimedia en la Web, utilizando los
"Applets" Java y los Controles ActiveX.
¿QUE ES JAVA?
Java es un
lenguaje de programación diseñado por la compañía Sun Microsystems Inc. El
propósito de esta compañía fue crear un lenguaje que pudiera funcionar en redes
computacionales heterogéneas (redes de computadoras formadas por más de un tipo
de computadora, ya sean PC, MAC's, estaciones de trabajo, etc), y que fuera
independiente de la plataforma en la que se vaya a ejecutar. Esto significa que
un programa de Java puede ejecutarse en cualquier máquina o plataforma (RANGEL
R, 1996). Este lenguaje de programación surge en 1995, aunque el trabajo para
su desarrollo se venía realizando desde 1991 por investigadores de Sun
Microsystems, que buscaban desarrollar un lenguaje orientado a objetos pero
adaptado al mundo de las redes y el desarrollo de aplicaciones distribuidas. En
1994, la investigación se enfocó al mundo WWW.
Java ha pasado de
ser una especificación formal de un lenguaje de programación por objetos a un
ambiente completo de programación con un compilador, intérprete, depurador,
visor de "applets", sistema de ejecución del lenguaje (lenguaje
run-time), bibliotecas de clases, y lenguajes de guiones para facilitar
generación de aplicaciones (JavaScript) (GUERRERO G).
Java es un
lenguaje y por lo tanto puede hacer todas las cosas que puede hacer un lenguaje
de programación: cálculos matemáticos, procesadores de palabras, bases de
datos, aplicaciones gráficas, animaciones, sonido, hojas de cálculo.
Especialmente al usar los "applets" Java en páginas Web, se logra que
las páginas ya no tengan que ser estáticas, se le pueden poner toda clase de
elementos multimedia y permiten un alto nivel de interactividad, sin tener que
gastar en carísimos paquetes de multimedia.
CARACTERISTICAS DE JAVA
· Simple:
Elimina la complejidad de los lenguajes como "C" y da paso al
contexto de los lenguajes modernos orientados a objetos.
· Orientado a
Objetos: La filosofía de programación orientada a objetos es diferente a la
programación convencional.
· Familiar:
El sintaxis de Java es muy similar al de C y C++, los cuales son bien conocidos
por la mayoría de los programadores.
· Robusto:
El sistema de Java maneja la memoria de la computadora por el programador, el
cual no tiene que preocuparse por apuntadores ó memoria que no se esté
utilizando. En el lenguaje Java no existen los apuntadores y realiza un manejo
automático de memoria.
· Seguro:
El sistema de Java tiene ciertas políticas que evitan que se puedan codificar
virus con este lenguaje, además existen muchas restricciones, especialmente
para los "applets", que limitan lo que se puede o no se puede hacer
con los recursos críticos de una computadora.
· Independiente
de la arquitectura: Esta es una de las grandes aportaciones de Java a los
desarrolladores. Como el código compilado de Java (conocido como "byte
code") es interpretado, un programa compilado de Java puede ser utilizado
por cualquier computadora que tenga implementado el intérprete de Java. Esto
quiere decir que el programa puede ser ejecutado en una cantidad de plataformas
sin tener que recompilar el código, por eso se dice que tiene contenido
ejecutable inmerso o empotrado ("Embedded executable code"). De esa
manera, Java logra ser un lenguaje que no depende de una arquitectura
computacional definida (RANGEL R, 1996).
· "Multithreading"
ó múltiples hilos de ejecución: Java soporta múltiples "threads",
es decir que puede ejecutar diferentes líneas de código al mismo tiempo. Un
programa en Java puede realizar más de una operación en un mismo
momento.(RANGEL R, 1996)
· Interpretado:
Java corre en máquina virtual, por lo tanto es interpretado.
· Velocidad
limitada: Como los programas de Java son interpretados son más lentos que
un verdadero programa ejecutable.
· Novedad: La
aparición de este lenguaje es reciente (1995), lo cual hace que aún no se conozcan
bien todas sus capacidades.
"APPLETS"
JAVA
Java puede
funcionar como una aplicación o como un "applet", que es una
aplicación Java en el contexto de WWW. Los "applets" de Java se
pueden pegar a una página Web (HTML), y con esto se puede tener un programa que
cualquier persona que tenga un "browser" compatible podrá usar.
Java funciona de
la siguiente manera: el compilador de Java deja el programa en un Pseudo-código
(no es código máquina) y luego el intérprete de Java (Máquina Virtual Java)
ejecuta el programa. Por eso Java es multi-plataforma, existe un intérprete
para cada máquina diferente (RANGEL R, 1996). La instrumentación de la máquina
virtual Java corresponde a los constructores del equipo físico, del sistema
operativo, de la interfaz gráfica y el "browser" particular (GUERRERO
G). La instrumentación de la Máquina Virtual Java requiere que el sistema
operativo soporte múltiples hilos de ejecución ("Multithreading") por
lo que no puede realizarse en DOS. Hoy en día la implementación de la Máquina
Virtual Java se ha logrado en pocos "browsers", siendo uno de los
primeros Netscape Navigator para sus diferentes plataformas.
Java es un
lenguaje de programación que permite generar código de aplicaciones para el
mundo Internet y en particular para el mundo WWW y sus "browsers". En
el ambiente WWW se generan páginas en el lenguaje de hipertexto HTML que se
muestran en los "browsers" según el contexto indicado en la página
por las etiquetas HTML. Para generar páginas que puedan incluir la ejecución de
una aplicación Java en una zona, se crea una nueva etiqueta llamada APP al
lenguaje HTML (GUERRERO G). A continuación un ejemplo de como funciona un
"applet" de Java:
1. Existe un
código de Java en un servidor de Web. Los códigos de Java se caracterizan por tener
la extensión ".class".
2. Una persona en
Internet, con un browser compatible con Java, realiza una conexión al servidor.
3. El servidor
envía el documento HTML y el código en Java.
4. En la
computadora del usuario remoto llegan ambos, y la Máquina Virtual de Java, que
está en el "browser", transforma el código Java en un código que
entienda la máquina local y se ejecuta el programa dentro de la página de Web.
5. Si el usuario
realiza otra conexión a otro URL o se sale del "browser", el programa
se deja de ejecutar y en la computadora no queda rastro de él. (RANGEL R, 1996)
¿QUE ES ACTIVEX?
ActiveX es un
estándar desarrollado por Microsoft que permite la interacción de componentes
de software en un ambiente de red independientemente del lenguaje en el cual
fueron creados. Este estándar es soportado por la plataforma Internet-cliente
Internet Explorer 3.0 de Microsoft. Con ActiveX se logra que los sitios Web
tengan efectos multimedia, objetos interactivos y aplicaciones sofisticadas.
ActiveX permite unir un gran número de bloques de tecnología para lograr sitios
Web activos (MICROSOFT CORPORATION, 1997). Este estándar incluye lo siguiente:
· Controles
ActiveX: son componentes de software que corren en páginas Web, y proveen
funciones interactivas controlables por el usuario. Esto permite a los usuarios
ver e interactuar con animación, audio y vídeo sin necesidad de abrir programas
separados. Además, los controles ActiveX pueden ser re-usados en aplicaciones y
pueden ser escritos en muchos lenguajes de programación populares incluyendo
Java, Visual Basic y Visual C++.
· "Control
Pad" ActiveX: es un "utility" que facilita la inclusión de
controles y "Scripting" ActiveX en páginas HTML para ser vistas en
Internet Explorer 3.0 ó otro "browser" que soporte controles ActiveX.
· "Scripting"
ActiveX: soporta varios lenguajes de "scripting" incluyendo
Microsoft Visual Basic Scripting Edition (VBScript) y JScript (un lenguaje
compatible con JavaScript). Los script se usan para integrar el comportamiento
de varios controles ActiveX y/o "applets" Java del
"browser" ó servidor, extendiendo su funcionalidad.
· Documentos
ActiveX: permite abrir un programa, con sus propias barras de herramientas y
menús en Internet Explorer 3.0. Esto significa que se pueden abrir documentos
de Microsoft Excel o Microsoft Word en Internet Explorer 3.0.
· Máquina
Virtual Java: Permite a cualquier "browser" que soporte ActiveX
correr "applets" Java e integrar "applets" Java con
controles ActiveX.
· Estructura
de Servidor ActiveX: provee varias funciones basadas en servidor de Web,
como seguridad y acceso a bases de datos.
· Herramientas
de desarrollo: Permite el uso de técnicas y herramientas conocidas para
crear controles y contenido Web. Estas herramientas incluyen Visual Basic,
Visual C++, Macromedia ShockWave, Adobe Photoshop, Borland Delphi, herramientas
de Sybase y Borland y herramientas Java (MICROSOFT CORPORATION, 1997).
COMPONENTES DE SOFTWARE Y LA WEB
Los desarrolladores
en todo el mundo están creando componentes de software que permiten la creación
de páginas Web con contenido activo. Los componentes de software se utilizan
como piezas o partes re-usables para construir aplicaciones. Estas piezas se
unen en algún tipo de contenedor. Los componentes pueden ser escritos
específicamente para esa aplicación, o lo que es mejor, re-usados para otros
proyectos o comprados. La finalidad es crear más aplicaciones confiables más
rápidamente y gastando menos dinero.
Un contenedor
puede ser un "browser" Web como Netscape Navigator ó Internet
Explorer de Microsoft. Cualquier componente puede ser bajado de un servidor Web
localizado en una Intranet corporativa o en Internet. Los usuarios ya no están
limitados a bajar a sus "browsers" solo texto (como archivos JPEG),
sino que pueden bajar código ejecutable también. Esto permite la creación de
páginas Web con contenido activo, donde, por ejemplo, los datos son bajados
junto con el código requerido para trabajar con esos datos. De esta manera es
posible construir aplicaciones muy útiles.
Las dos tecnologías más importantes para construir componentes poderosos
son "applets" Java y controles ActiveX. En la siguiente sección
hacemos una comparación entre estas dos tecnologías.
COMPARACIÓN ENTRE "APPLETS" JAVA Y
CONTROLES ACTIVEX
Contenedores
Los componentes
software por definición no pueden sobrevivir por si solos, requieren cierta
clase de contenedor en el cual ejecutarse. Los "Applets" Java hoy en día
son soportados principalmente por solo una clase de contenedores:
"browsers" Web. Los "browser" Netscape Navigator y
Microsoft Internet Explorer actualmente soportan "applets" Java. Los
controles ActiveX, en cambio, son soportados por toda clase de contenedores.
Muchas organizaciones ofrecen controles ActiveX, la mayoría no relacionados con
las creación de páginas Web activas. Aunque estos controles ActiveX son creados
con otros ambientes en mente, muchos pueden ser cargados y ejecutados en un
"browser" compatibles con ActiveX (CHAPPELL D, 1996).
Independencia
de Plataforma
Los
"applets" Java son independientes de la plataforma, el mismo
"applet" puede correr en cualquier sistema que soporte el ambiente
Java. Los controles ActiveX no lo son, ellos generalmente corren sólo en
sistemas Windows/Intel. El sistema típico es una máquina basada en Intel que
soporte la interfaz Win32, que generalmente significa que está corriendo
Windows 95 o Windows NT. Los "applets" Java son independientes de la
plataforma porque son interpretados, lo que significa que el código
"applet" es ejecutado por la máquina virtual Java en vez de
directamente por el hardware de la plataforma. Sin embargo, los compiladores
Java "just-in-time" podrían cambiar esto compilando el código binario
"applet" en el momento en que llega (CHAPPELL D, 1996).
La importancia de
la independencia de plataforma depende del ambiente computacional al cual se
enfoque la aplicación. Un vendedor de software independiente concentrado en la
Web y que escriba para el mayor mercado posible escogerá crear
"applets" Java, ya que éstos corren en cualquier plataforma (la
máquina virtual Java está disponible en la mayoría de los sistemas operativos).
Un desarrollador en una organización con clientes mayoritarios Windows/Windows
NT preferirá crear controles ActiveX debido a su "performance" y la
habilidad de correr en muchas clases de contenedores, no solo en
"browsers".
Velocidad
En general, las
aplicaciones interpretadas (como "applets" Java) corren
aproximadamente 10 veces más lento que las aplicaciones compiladas (como
controles ActiveX). La importancia de esto es relativa: a medida que la
velocidad de los procesadores aumenta, esta diferencia podría ser cada vez
menos significativa.
Disponibilidad
Para poder
desarrollar "applets" Java es necesario tener el JDK (Java Developers
Kit). Existen también algunos paquetes como el Cafe de Symantec, ó la última
versión de C++ de Borland, que incluyó una herramienta de desarrollo para Java
(RANGEL R, 1996).
En términos de
disponibilidad, ActiveX ha tomado la delantera, ya que es soportado por Visual
Basic 5.0 (CCE) de Microsoft, Visual C++ 4.2., y Visual J++ 1.1. (ahora en
beta). Para desarrollo, está disponible en beta actualmente soporte SKD de
Macintosh. Están disponibles actualmente en el mercado miles de controles
ActiveX, incluyendo reproductores "RealAudio" y reproductores de
películas. Y los principales vendedores de herramientas Java, incluyendo
Borland y Metrowerks han anunciado soporte Java para ActiveX. Además, una aplicación
puede crearse en minutos a partir de componentes ActiveX escritos en diferentes
lenguajes, y el "Developer Studio" de Microsoft automáticamente
cambiará el modo de "debugging" entre los lenguajes componentes a
medida que la aplicación se ejecuta (HUGHES M, 1997).
Seguridad
Java y ActiveX
tienen modelos de seguridad radicalmente diferentes. Los modelos de seguridad
en la Web deben asegurar los siguientes dos aspectos:
1. Proteger a los
usuarios contra código desarrollado deliberadamente para hacer daño. Hasta
ahora, esta clase de código es raro, pero hay algunas demostraciones
importantes como el "ActiveX Exploder" y los programas del
"Chaos Computer Club" de Alemania.(HUGHES M, 1997)
2. Proteger a los
usuarios de errores de programación accidentales que pudieran causar daño.
Existen tres
enfoques posibles para la seguridad en componentes bajados de servidores Web:
1. Confiar en el
servidor: Se puede confiar en que algunos servidores Web bien administrados,
como los de una Intranet corporativa segura, no repartirán componentes que
contengan virus o hagan otra clase de daño al sistema en el cual son cargados y
ejecutados.
2. Limitar la
capacidad de los componentes: haciendo imposible para los componentes ejecutar
funciones que puedan causar algún daño al sistema local.
"Sandboxing", como comúnmente se le denomina, puede garantizar
seguridad, porque los componentes bajados están obligados a jugar solo en su
propia caja de arena ("sandbox"). La desventaja es que los
componentes "sandboxed" no pueden hacer cosas que pueden ser muy
útiles, como por ejemplo, escribir a un archivo en el disco local de la máquina
del cliente (CHAPPELL D, 1996).
3. Firma digital
de los componentes: esta firma digital puede ser chequeada por el
"browser" que recibe el componente. Si está correcto, el
"browser" puede estar seguro de que el componente fue creado por un
entidad confiable (como Lotus o Microsoft o el grupo de desarrollo interno de
la organización) y que no ha sido modificado.
El modelo de
seguridad de Java incluye seguridad intrínseca que protege al usuario de
errores que pueden resultar de escogencia incorrecta de tipos o acceso ilegal a
memoria. Además, un Manager de Seguridad provee seguridad a nivel de los
recursos que restringe cosas como el acceso a disco y a la red del programa
Java . Esto es importante porque el usuario está protegido contra códigos
erróneos y hostiles. El ambiente "runtime"de Java define el nivel de
acceso a los recursos permitido a un programa Java. Actualmente, el acceso a
los recursos es ilimitado para las aplicaciones Java y extremadamente limitado
para los "applets" Java. JDK 1.1 introduce "applets"
firmados digitalmente que permite al usuario permitir acceso a los recursos
extendido para los "applets" que provienen de una fuente confiable.
La firma digital verifica que el "applet" viene inalterado desde la
fuente, así que si uno confía en JavaSoft y un "applet" es firmado
por JavaSoft y uno confía en la autoridad que verifica la firma, entonces uno
puede darle al "applet" acceso extendido a los recursos. Recordemos
que la seguridad intrínseca de Java siempre está ahí protegiendo al usuario de
muchos errores de programación que podrían llevar al "applet" a
causar daño. Los "browsers" futuros permitirán a los "applets"
no confiables cierto acceso extendido a los recursos, por ejemplo, acceso de
escritura en un determinado directorio. Este modelo de seguridad significa que
los programas Java pueden ser ejecutados y serles permitido accesar a los
recursos con seguridad, dependiendo de la confianza en la fuente (HUGHES M,
1997).
Los controles
ActiveX no están sujetos a chequeo intrínseco de seguridad ni chequeos de
acceso a los recursos. En cambio, los controles corren con completo acceso a la
máquina y sus recursos. El único mecanismo de seguridad es la firma digital,
que permite verificar que un control llega inalterado desde la fuente. Para
firmar el control, hay que presentarlo a una Autoridad de Certificación (CA)
como Verisign, junto con una descripción y el nombre del desarrollador. La Autoridad
de Certificación utiliza técnicas de encripción para generar una firma que
verifica el control, el nombre y la descripción. Cuando un "browser"
recibe un control firmado, éste usa su propia copia de las claves públicas CA
para verificar que el control corresponde con la firma. Si es así, entonces se
puede asegurar que el control está inalterado (HUGHES M, 1997).
La falta de
control de recursos hace de ActiveX una tecnología muy poderosa para
aplicaciones intranet basadas en Windows, pero si un control no realiza un
chequeo completo de parámetros puede realizar operaciones arbitrarias en la
máquina del usuario, lo que no ocurre con un "applet" debido a su
seguridad intrínseca. Las firmas digitales son una valiosa tecnología si se
usan para soportar un ambiente seguro como Java, porque permiten el despliegue
seguro de aplicaciones en Internet, con acceso de recursos apropiado en las
máquinas clientes.
Capacidad
Si se ejecuta un "applet" confiable, este tendrá todo el poder
y capacidades de cualquier aplicación Java, pero si se ejecuta un
"applet" no firmado digitalmente por una fuente confiable, sus
capacidades están restringidas. Java sufre una severa deficiencia en
capacidades de multimedia y "performance". Los ambientes Java futuros
ofrecerán un mayor número de opciones de seguridad para códigos que expandirán
las capacidades de los "applets" hacia las de las aplicaciones
nativas. Sin embargo, los API limitados de Java continuarán siendo un problema.
ActiveX, en contraste, tiene todo el poder de una aplicación nativa, que le
permite tomar ventaja de poderosos APIs nativos, como DirectX, OpenGL, y
QuickDraw3D. Java no ofrece esta capacidad. Los API futuros mejorarán esta
situación, pero si se requiere acceso a recursos de bajo nivel del sistema,
solo ActiveX lo provee, por supuesto con el precio de limitar la aplicación a
una sola plataforma (HUGHES M, 1997).
CONCLUSIONES
Tanto
"Applets" Java como Controles ActiveX seguirán desarrollándose en el
futuro. Los "browsers" líderes Netscape Navigator y Internet Explorer
de Microsoft soportarán ambos estándares. Las organizaciones que construyen
componentes usando "browsers" como contenedores tienen que decidir
cual de los dos utilizar.
Si un componente
debe correr en diferentes tipos de sistemas clientes, y las limitaciones
impuestas por "sandboxing" son aceptables o deseables, entonces lo
más lógico es construir ese componente como un "Applet" Java. Si, por
el contrario, el componente va destinado a sistemas Microsoft, no requiere "sandboxing",
debe correr tan eficientemente como sea posible y es útil en un rango de
contenedores mayor que solo "browsers" Web, entonces, la tecnología a
escoger son los controles ActiveX.
Construir
aplicaciones a partir de componentes existentes es una buena idea. Permitir que
estos componentes sean accesados y cargados en la Web es una mejor idea. Y
tener dos tecnologías que enfocan esta área, que compiten y se complementan
entre sí, causando su continua evolución y desarrollo, es mejor aún.
REFERENCIAS
CHAPPELL D. 1996. Components Software meets the Web:
Java Applets vs. ActiveX Controls.
GUERRERO G.
Introducción a Java.
HUGHES M. 1997. JavaBeans and ActiveX go head to head.
MICROSOFT CORPORATION. 1996. Guía de comparación de
Internet Explorer 3.0.
MICROSOFT CORPORATION. 1997. ActiveX Technology and
ActiveX Controls.
RANGEL R. 1996.
Manual de Java.
[Portada] [Resumen] [Infografia]