Hoy en día RIA, Rich Internet Application, es un término bien conocido. ¿Qué significa? El término RIA se refiere a aplicaciones web con una experiencia rica de usuario (como las aplicaciones de escritorio).
En el comienzo en la WWW todo era HTML (HyperText Markup Language) sin más. Teníamos una tecnología orientada al documento. Con HTML tienes texto, imágenes, tablas, formularios, y lo más importante: hiperenlaces. Cuando haces click en un hiperenlace eres dirigido a otra página web. En el navegador todo el contenido se reemplaza por el nuevo documento HTML: el contenido anterior desaparece. Además los formularios HTML son muy simples. ¿Qué haces si quieres que el usuario inserte una fecha en un campo del formulario? La única solución es dejar al usuario que envíe el formulario y entonces si el valor no es correcto redirigir al usuario de nuevo al formulario indicando los errores que debe corregir. ¿Y si el usuario quiere enviar un archivo muy grande? Sí, hay un componente HTML para enviar ficheros, pero ¿qué ocurre si el fichero es muy grande? El navegador no le dice al usuario cúanto tiempo tardará en enviarse o qué porcentaje se ha enviado ya. Simplemente dice enviando petición y eso es cualquier cosa menos algo usable. Y ¿qué ocurre si quieres que el usuario seleccione el típico país y provincia en un formulario? En una aplicación de escritorio pondrías un combo para seleccionar el país y otro para seleccionar la provincia. Cuando el usuario selecciona el país el combo de provincias se rellena con las provincias de ese país obtenidas de una base de datos, por ejemplo. ¿Cómo puedes hacer eso sólo con HTML? Lo siento, no puedes. HTML no permite una experiencia rica de usuario.
Bien, para solucionar esta carencia se desarrolló JavaScript. Con JavaScript y el API DOM se puede cambiar cualquier cosa de una web de forma proramática. Muy útil. Puedes validar las entradas de un formulario en el cliente, puedes permitir al usuario seleccionar una fecha en un calendario,... Pero ¿qué ocurre cuando quieres obtener información del servidor como en el ejemplo de país-provincia? El primer truco era crear marcos internos ocultos (iframes). Con este truco puedes cargar datos en un marco separado y leerlos desde otro marco con JavaScript. Ese fue el comienzo de AJAX. Ahora tenemos XMLHttpRequest que es una manera mucho más elegante de hacer esto.
De modo que ¡JavaScript permite construir Rich Internet Applications! Pero... ¿sabes? Hay gente a la que no le gusta JavaScript porque tiene muchas incompatibilidades entre navegadores, no soporta bien POO (programación orientada a objetos) y normalmente rompe la accesibilidad y la visibilidad (en los buscadores) de tus aplicaciones web.
Bueno, si no te gusta JavaScript hay algunas tecnologías no basadas en JavaScript para crear Rich Internet Applications:
¿Y si te gusta JavaScript pero no quieres reinventar la rueda o quieres usarlo lo menos posible? Puedes usar una solución JavaScript cliente o servidor.
Algunas soluciones del lado del cliente (librerías JavaScript):
Algunas soluciones del lado del servidor (frameworks del lado
del servidor):
Bien ¿hay alguna experiencia rica de usuario más que queramos ver en nuestras aplicaciones web? Veamos. Todas las tecnologías anteriores se basan en la web (necesitan un navegador) y no puedes trabajar off-line con ellas. Si no estás conectado a internet no puedes usarlas. Para solventar este inconveniente Google ha desarrollado una nueva tecnología: Google Gears. Con Google Gears puedes gestionar una base de datos relacional con JavaScript así que pudes almacenar grandes cantidades de datos en el cliente. De modo que puedes replicar datos en el lado del cliente permitando al usuario consultarlos cuando está desconectado. GMail soporta Google Gears así que si lo tienes intalado puedes leer tu correo aunque estés desconectado. Otros servicios de Google como Google Calendar también soportarán esta tecnología.
¿Algo más? Vayamos más lejos. Ahora quieres mayor integración con el escritorio. Quieres que el usuario pueda abrir tu aplicación con doble click usando un icono personalizado y quieres que tus aplicaciones se ejecuten en una ventana independiente (no en el navegador), sin las típidas barras de herramientas: dirección, marcadores,... ¿Alguien ha pensado en esto antes?
Fantástico. Tenemos un gran conjunto de tecnologías. ¿Algo más? Bueno, sí. Hay otra forma de hacer Rich Internet Applications: puedes evitar cualquier lenguaje de programación basado en web y crear una aplicación de escritorio en cualquier lenguaje que obtenga los datos de web services. Por ejemplo: Google Earth, Flickr Uploader o Twitterrific. Con este método no tienes limitaciones en la experiencia de usuario. Pero pierdes una de las grandes ventajas de las aplicaciones web: la instalación y actualización en las aplicaciones web es transparente. Con Adobe AIR tienes el mismo problema. ¿Alguna solución? Desde hace unos cuantos años si desarrollas aplicaciones usando Java SE puedes distribuirlas con Java Web Start. Usando JWS (Java Web Start) defines un archivo XML en formato JNLP y con extensión .jnlp. En ese fichero defines dónde está alojada la aplicación, que versión del Java Runtime Environment se necesita y más cosas. Luego pones un hiperenlace en tu página web que enlace al fichero JNLP. Si el usuario tiene JWS asociado con esa extensión de archivo (puedes detectar con JavaScript si JWS está instalado) y hace click en el enlace Java Web Start descarga, instala y ejecuta tu aplicación. Cada vez que el usuario ejecuta la aplicación Java Web Start solicita al servidor si hay actualizaciones y las descarga si hay alguna. Por supuesto esta tecnología sólo está disponible para aplicaciones Java. Sin embargo si no usas Java o no quieres usar JWS siempre puedes programar tu propio sistema de actualizaciones a mano.
¿Algo más? ¡Sí! ¡No he hablado sobre tecnologías móviles! Quizá en un futuro artículo... De momento recuerda esto: las Rich Internet Applications han llegado y todas estas tecnologías de las que he hablado están cambiando la forma en cómo las aplicaciones web van a ser desarrolladas.
Gimenete es un tipo al que le encanta programar. Lleva media vida programando en Java, y ahora le da bastante también a Python. No le hace ascos a JavaScript. Su tema de investigación favorito ahora es el cloud computing.
izzz escribió
hace 1 años
Billy escribió
hace 1 años
Como dice muy bien gimenete en su articulo, los applets de java ya han pasado de moda, por esa misma razon Sun ha lanzado JavaFX, competidor directo para Flex y Silverlight. Aunque JavaFX aun está demasiado "verde" esperemos un tiempo a que madure porque promete ser un gran competidor.
Saludos
bpbrainiak escribió
hace 1 años
como dice izz es cierto, una implementacion de esas tecnoligias en asp.net seria excelente
juanchoruiz escribió
hace 1 años
Hola muy bueno el artículo, pese a que mencionas JSF como una de las tecnologías de parte del servidor. Creo que es valido mencionar que exiten frameworks JSF que tienen AJAX embebido, lo cual desde el punto de vista del programador es muy bueno ya que lo que se hace es aprender JSF, sin necesidad de irse por el lado Java Script, DOJO, Flex, etc.
Algunos ejemplos, ICEFaces, ADF Faces, Ajax4Jsf. Voy a sacer tiempo parar hacer un articulo sobre el tema.
Saludos
Juan Camilo
etox escribió
hace 1 años
Muy buen artículo, como todos los que te he leído hasta la fecha ;-)
Únicamente un apunte: Dices que GWT es tecnología servidor, pero puede utilizarse únicamente como tecnología cliente.
Un saludo!
jonathan.vila escribió
hace 1 años
Hola a todos.
Yo recien me inicio en la creación de aplicaciones web JSF.... conocen algún buen tutorial paso a paso ?
He empezado por mi mismo y la primera en la frente....
Buscaba como crear una aplicación que tuviera una cabecera, un pie, un menú a la izquierda y el contenido a la derecha. He creado fragments para todas las partes pero lo que quiero es que cuando le de a una de las opciones de menú ( fragment de la izquierda ) el fragmento contenido me navegue a una página concreta.........no he sido capaz.
Y lo que no quiero es hacer como muchas páginas que veo que recargan toda la página una y otra vez ( lo considero una chapuza que genera demasiadas descargas )...
Por cierto, uso Netbeans 6.5.1 y IceFaces 1.8.0.
Muchas gracias a todos.
jose506 escribió
hace 1 meses
© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |
#1
Me parese un articulo mui completo, aunque quisas le faltó alguna tecnologia como ASP.net, si? Gracias!