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.
· 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.
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)
· 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).
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.
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".
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).
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.
No hay comentarios:
Publicar un comentario