Los problemas de la clase JSObject

Publicado en Java, JavaScript el 19 de October, 2009 por Fran. (Sin comentarios)

Como los applets se ejecutan dentro de una página web, se creó un mecanismo (llamado LiveConnect) para comunicarse con el navegador mediante JavaScript, es decir, poder ejecutar JavaScript desde el applet.

Este mecanismo ofrece una clase llamada JSObject que permite realizar la comunicación del applet a JavaScript, esta clase se localiza en el paquete netscape.javascript.

Lo malo es que esta clase tiene varios problemas y fallos relacionados que no vienen documentados en ningún sitio, sólo en algunas páginas de gente que ha conseguido averiguarlos por su cuenta.

Leer el resto »

Applet-fu insertando fácilmente los applets en (X)HTML

Publicado en (X)HTML, Java, JavaScript, Recursos el 1 de October, 2009 por Fran. (Sin comentarios)

Sigo pesado con los applets, esta vez porque he descubierto un script de JavaScript (applet-fu) que permite insertar los applets en (X)HTML de manera sencilla y evitando tener que preocuparte si será compatible con IE o cumplirá los estándares (X)HTML.

A costa de unos cuantos KB del script de JavaScript que hay que incluir en el (X)HTML, se pueden insertar applets con el siguiente código:

<script type="text/javascript" language="javascript" charset="utf-8">
    applet_fu.run (
        // Atributos del elemento (X)HTML (como object)
        { 'width'  : '0',
          'height' : '0',
          'name'   : 'applet',
          'id'     : 'applet' },
        // Parámetros del applet
        { 'archive' : 'applets/Applet.jar',
          'code' : 'es.4bits.Applet' },
        // Versión de Java necesaria
        '1.6',
        // Mensaje mostrado si no se encuentra la versión de Java
        '<p>No se ha encontrado la versión de Java necesaria.</p>'
    );
</script>

Además, este código ofrece mediante el mecanismo del navegador utilizado la posibilidad de descargar Java si no se ha encontrado o si tiene una versión distinta a la necesaria.

Sun ofrece algo parecido llamado Java Deployment Kit, pero ocupa más, sólo por realizar más tareas como la posibilidad de usar Java Web Start.

Dejo el enlace a su repositorio en github, para quién lo quiera descargar: código de applet-fu.

Applets firmados, JavaScript y la pérdida de privilegios

Publicado en Java, JavaScript el 16 de September, 2009 por Fran. (Sin comentarios)

De forma predeterminada, los applets de Java tienen sus funciones limitadas por la sandbox para que no puedan acceder a la máquina local. Pero si el applet se firma, y el usuario acepta su ejecución (mediante una ventana de aviso) el applet podrá acceder a la máquina local como si se tratase de una aplicación Java más.

Hasta aquí todo bien, pero resulta que si desde la web en la que se carga el applet firmado, se realiza una llamada a cualquier método de éste desde JavaScript, el applet vuelve a perder los privilegios ya que el código JavaScript proviene es inseguro.

Aquí surge la pregunta, ¿cómo se hace para poder ejecutar métodos de un applet firmado desde JavaScript sin que el applet pierda los privilegios? La respuesta es utilizar el siguiente trozo de código:

AccessController.doPrivileged (
    new PrivilegedAction () {
        public Object run () {
            // Código con privilegios
        }
    });

Este código permite ejecutar el código que se quiera con privilegios, además el valor devuelto es de tipo Object, por lo que se puede devolver el tipo de objeto que se quiera.

Basado en JavaScript and Applet interaction.