Por Andrés Vargas

 

Dado que las aplicaciones Web mejoran su interacción con el usuario cuando se evita recargar la página para actualizar una parte de la misma, es importante considerar todas las alternativas que se tienen para conseguir este objetivo.

Además del famoso modelo propuesto por JJ Garret ( Sí! AJAX ), existen otros mecanismos que pueden ayudarnos con los requerimientos al servidor: las llamadas remotas a procedimientos (RPC por sus siglas en inglés).Existen dos protocolos importantes en el mundo de los RPC: XML-RPC y JSON-RPC.

Antes de continuar, es importante definir qué es JSON y cuáles son sus ventajas:

  • JSON es un formato de texto para intercambio de datos, tal como XML, sólo que mucho más liviano.
  • Se utiliza para representar estructuras de datos simples llamados objetos y arreglos asociativos.
  • Existe código para parsear y generar datos JSON para una larga variedad de lenguajes de programación.

JSON está construido en dos estructuras:

  • Una colección de pares nombre/valor: Objeto
  • Una lista de Valores ordenada: Colecciones ( arreglos ).

En el ejemplo siguiente, observamos texto representado usando JSON. En el texto mostrado, la clave phoneNumbers representa un arreglo, la clave address representa un objeto y las claves firstName y lastName que representan pares nombre:valor son parte del objeto que empieza en las llaves más externas.

{

“firstName”: “John”,

“lastName”: “Smith”,

“address”: {

“streetAddress”: “21 2nd Street”,

“city”: “New York”,

“state”: “NY”,

“postalCode”: 10021

},

“phoneNumbers”: [

“212 555-1234”,

“646 555-4567”

]

}

Características de JSON-RPC-Java

JSON-RPC-Java es un framework que implementa el protocolo JSON-RPC. Permite mapear objetos de Java a objetos de JavaScript y viceversa.

Manejando el Servidor y el Cliente

Del lado del Servidor lo primero que se debe hacer es desarrollar las clases que serán accesibles desde el cliente, es recomendable que estén diseñadas de tal manera que no permitan ejecutar funciones de negocio que puedan comprometer la seguridad del sistema. Estas clases permitirán ejecutar acciones y obtener datos necesarios con el mínimo número de mensajes HTTP, mejorando así la eficiencia. Para hacer públicos los métodos debemos registrar una instancia de nuestra clase en un objeto JSONRPCBridge que previamente habremos creado y guardado en la sesión HTTP todo esto implementado en un Servlet.

Del lado del Cliente se debe crear una instancia de la clase JSON-RPC, y con esto llamar a nuestra función Java desde JavaScript.

Cómo usarlo

Para implementar aplicaciones que usen JSON-RPC-Java necesitaremos descargarla distribución de la misma en La utilización de esta tecnología se basa principalmente en descargar la siguiente distribución aqui.

Al descomprimir la mencionada distribución, los archivos que nos interesan añadir al proyecto son: jsonrpc-1.0.jar (directorio raíz) y jsonrpc.js (/webapps/jsonrp). Lo siguiente es indicar en el deployment descriptor (web.xml)la referencia al Servlet que se encuentra en la librería, Este Servlet será el encargado de comunicar al código JavaScript la estructura de nuestras clases compartidas.

El siguiente paso es informar al Servlet de cuáles son nuestras clases. Sólo es necesario registrar las clases una vez en cada sesión. Para ello utilizamos la clase JSONRPCBridge. Mantendremos una instancia de JSONRPCBridge por cada sesión.

Tipos de Retornos

Una vez que todo esté funcionando podremos con facilidad invocar métodos de clases de Java que nos devuelvan Tipos de datos Simples, Objetos, además puede serializar colecciones de objetos de clases que implementen las interfaces Map, Set o List.

Existen dos formas de acceder a los métodos de Java, Asíncrona y Síncrona, si se lo realiza de una forma síncrona tendremos que esperar la respuesta del Servidor para que el cliente JavaScript desbloquee el navegador, en cambio si es asíncrona podremos seguir con la ejecución de la aplicación.

Conclusión

¿Quien alguna vez no ha sentido la necesidad de usar directamente un método de Java desde el Cliente? Pues bien esta tecnología nos permite implementarlo, si bien es cierto un requerimiento AJAX normal nos proporciona una buena solución, puede llegar a ser un poco más complicado de implementar.

JSON-RPC-Java, nos ayuda a disminuir el número de líneas de código significativamente tanto del lado del Cliente como del Servidor, convirtiéndose en una herramienta útil para aumentar el rendimiento de nuestras aplicaciones. En una próxima entrega,incluiré códigos de ejemplo explicados paso a paso para visualizar aún mejor la implementación de aplicaciones que incluyen esta alternativa que sin duda alguna es muy útil!

Fuentes

  • http://json.org/
  • http://www.ateneatech.com/blog/json-rpc-java-comunicaciones-ajax-transparentes-tutorial-completo-y-ejemplos
  • http://edgenhuang.blog.51cto.com/47333/23778
  • http://oss.metaparadigm.com/jsonrpc/