martes, 4 de diciembre de 2012

Ejecución de applets de Java y 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).

No hay comentarios:

Publicar un comentario