Autor: Steve Mann
Tapa dura, 256 páginas
Publicado por: John Wiley & Sons, Inc., Diciembre 1999.
ISBN: 0-471-32754-9
Revisión de Kostas Pentikousis
Traducido por Pablo J. Rogina
El protocolo de aplicaciones inalámbricas (WAP por sus siglas en inglés - Wireless Application Protocol) es un intento para definir una especificación para toda la industria para desarrollar aplicaciones que operen bajo redes inalámbricas. El Foro WAP (WAP Forum), una asociación de la industria que cuenta con más de 500 miembros (www.wapforum.com), emite las especificaciones [3] para una pila de protocolos y entorno para aplicaciones que permite a una amplia clase de dispositivos comunicarse de manera eficiente bajo redes inalámbricas. El entorno para aplicaciones inalámbricas (WAE por sus siglas en inglés - WAP Application Environment) [4] incluye la especificación de un micronavegador, el lenguaje de marcación inalámbrico (WML por sus siglas en inglés - Wireless Markup Language) [5], un lenguaje de scripting (WMLScript) [6], y un marco para aplicaciones de telefonía inalámbrica. Más aún, WAE asume siempre hay un servidor proxy (a menudo llamado gateway WAP) entre el cliente y el servidor que traduce de WAP a protocolos de Internet y viceversa. Es decir, el cliente (inalámbrico) se comunica con el gateway WAP usando el protocolo WAP, mientras que el gateway WAP usa TCP/IP para comunicarse con el servidor (a menudo conocido como origen o servidor de contenido).
"Programming Applications with the Wireless Application Protocol" por Steve Mann es principalmente una introducción al desarrollo de aplicaciones para el dominio WAP. El autor presenta el andamiaje de la aplicación provisto por WAP en el primer capítulo. Yo encontré las secciones acerca de las características de los dispositivos y la comparación entre los modelos de programación para la web y WAP muy entretenidas. La comparación es útil ya que es importante que el desarrollador entienda cuál es el propósito de WAP y cuál no es el propósito. Por ejemplo, WAP ha sido comercializado, especialmente en el mundo occidental, como la "Web inalámbrica". Esto no es verdad, no solo porque hay propuestas alternativas para la "Web inalámbrica", sino también porque esto va contra la filosofía de WAP, al menos en la encarnación actual. Como señala Mann, el "paradigma de usuario WAP es aquel donde los usuarios son capaces de hacer pedidos pequeños, específicos y focalizados para pedazos pequeños (típicamente menos de 1000 bytes) -- no para navegar sitios Web al azar".
El libro sirve como una buena introducción a WML y WMLScript, remarcando los puntos claves. WML se presenta en el segundo capítulo del libro. Mann cubre completamente todas las características principales de este lenguaje de marcación, y brinda varios ejemplos de páginas WAP (llamadas "WML decks"). El CD-ROM que viene con el libre contiene todos los listados del código incluido en el texto. Yo encontré el CD-ROM útil, y el capítulo más bien completo, ya que en la mayoría de los casos prácticos uno no necesita referirse a la especificación WML [5].
WMLScript, presentado en el capítulo 3, es un lenguaje de scripting derivado de ECMAScript [2] que complementa WML al agregar lógica a las aplicaciones WAP. En el comienzo del capítulo, el autor explica claramente las diferencias entre WML y WMLScript. WMLScript es un lenguaje orientado a funciones: no hay procedimiento principal, sino un conjunto de funciones. Las funciones se guarda en formato fuente en el servidor de contenido como los programas JavaScript. Sin embargo, a diferencia de programas JavaScript [1], los que son tanto compilados y ejecutados en el cliente, las funciones WMLScript se compilan en un gateway WAP, y luego se envían al dispositivo inalámbrico en formato byte-code para su ejecución. Esto ahorra energía de las baterías y resulta en menor desperdicio del ancho de banda. Los teléfonos inalámbricos tienen una potencia de CPU típicamente limitada, de modo que compilar las funciones WMLScript en el gateway WAP también es eficiente respecto del tiempo. El capítulo incluye una aplicación de demostración, meramente una implementación del juego batalla Naval, para un sólo jugador, la cual ilustra todas las partes importantes de una aplicación WAP que utiliza tanto WML y WMLScript. El autor no lista simplemente el código de la aplicación sino explica también las elecciones de diseño y las opciones de desarrollo del programa. Sin embrago, en un intento por hacer más fácil al lector entender los puntos principales de una aplicación WAP, el autor creó una aplicación más bien trivial. Por último, pero no por eso menos importante, el capítulo presenta las bibliotecas WMLScript usuales [7].
En el capítulo 4, Mann analiza WorldFAQ, una aplicación WAP de contenido dinámico basada en un servlet Java que provee una variedad de "tidbits" acerca de una ciudad dada. El libro no cubre Java o Java servlets y el lector es referido a la literatura por más sobre esos temas. Sin embargo, si el lector está familiarizado con cualquier lenguaje de programación probablemente debería entender cualquier cosa presentada en este capítulo. Hay que notar que el kit de desarrolladores de software WAP (SDK por sus siglas en inglés - Software Developer's Kit) por Phone.com - anteriormente conocida como Unwired Planet (UP) - ofrece bibliotecas Perl y C similares a la biblioteca Java presentada en este capítulo. Mann da el largo listado de código de la aplicación y explica algunas partes un poco más. El servlet es más bien un programa sencillo pero demuestra los puntos salientes de la programación de una aplicación WAP. Si está familiarizado con la programación CGI este capítulo puede ser de poca utilidad; este es un libro introductorio después de todo. El autor admite que la aplicación es simple y tiene algunos defectos, por ej. usa un archivo de texto plano para la base de datos de la información de las ciudades, pero explica que se necesitaba simplicidad para poder enfocarse en la parte WAP de la aplicación.
En general, el libro contiene un buen conjunto de referencias para comenzar, incluyendo estándares internacionales y pedidos de comentarios de Internet (Internet RFC por sus siglas en inglés - Request for Comments), y el lector es referido a ellas para mayor información y detalles. Esta es una buena práctica; las fuentes son la mejor referencia. Por otro lado, muchos lectores podrían esperar más de un libro que dice ser "la guía completa del desarrollador". A pesar del subtítulo del libro, Mann no cubre todos los aspectos de la programación WAP en profundidad. Algunos lectores pueden encontrar el libro superficial y de poco uso cuando comiencen a crear aplicaciones complicadas. Otros, quienes estén familiarizados con programación web, pueden querer saltear algunos capítulos juntos. Por ejemplo, el capítulo 5 explica temas relacionados con el uso de caché. En un entorno de ancho de banda limitado el uso de caché puede mejorar la experiencia del usuario. El uso de caché se discute en este capítulo en el contexto de las aplicaciones WAP, y si el lector tiene conocimientos acerca de HTTP [8] no conseguirá mucho más de este capítulo.
El capítulo 6 presenta respuestas gráficas y con varias partes. El uso de gráficos en un entorno de poco ancho de banda y alta latencia puede tener un gran impacto en la experiencia del usuario. Los gráficos toman mucho tiempo en descargarse, lo que puede traducirse en usuarios descontentos. Por otro lado, los gráficos ahorran mucho del valioso espacio de la pantalla. El desarrollador debe hacer una opción inteligente entre usar gráficos o texto. Mann explica, por ejemplo, que con el uso efectivo del caché, las imágenes pueden descargarse una vez al agente del usuario, y usarse una y otra vez. Por ejemplo, en la aplicación WorldFAQ algunas imágenes se descargan en la pantalla inicial y luego se usan en varios decks distintos. El uso efectivo del caché puede llevar a mejorar la experiencia del usuario: una presentación mejor y más efectiva y demoras más pequeñas.
Otra solución para mejorar la experiencia del usuario es el uso de documentos con múltiples partes. Típicamente, un cliente emitirá un pedido para un deck WML, y luego enviará pedidos separados para las imágenes contenidas en él. Por ejemplo, asumamos que un usuario tipea la URL de un deck que contiene tres imágenes. El micronavegador primero traerá el deck WML, y cuándo este sea recibido, emitirá pedidos por las tres imágenes. Con documentos multiparte, el servidor puede enviar el deck junto con sus correspondientes imágenes, y ahorrar al menos un ciclo pedido-respuesta. La idea principal aquí es que si usted definitivamente enviará tres imágenes con la página, ¿porqué esperar cuatro pedidos diferentes?. Se envía todo de una vez y se limita la demora general. Desafortunadamente, esta aproximación no trabaja bien sin el uso de caché.
El capítulo 7 cubre la internacionalización (o I18N), que es el procedimiento de adaptar un programa para que provee contenido en distintos idiomas simultáneamente. El autor describe brevemente los códigos de transferencia, y presenta una aplicación WAP que permite mostrar diferente contenido dependiendo del idioma (servidores de contenido multilingüe). Otra forma de trabajar con I18N es utilizar un servidor web (como Apache, www.apache.org) que sea capaz de hacer negociación de contenido como se especifica en HTTP/1.1 [8]. Esta última aproximación probablemente sea más eficiente.
En general, el libro está bien escrito, y sólo tiene unos pocos errores. También es fácil de leer: uno puede leerlo de principio a fin en un día o dos. El CD-ROM también contiene un SDK de Phone.com, pero se puede bajar fácilmente una versión más reciente desde www.phone.com. Otra consideración es que el libro cubre principalmente productos de Phone.com. Por ejemplo, el autor usa el navegador UP para todos los ejemplos, y aunque él menciona los problemas potenciales que pueden surgir de las diferentes presentaciones del contenido en otros navegadores, no da ejemplos per se. Más aún, en el último capítulo el autor presenta más funcionalidad que la que tiene el gateway Phone.com pero pasa por alto la funcionalidad provista por otros gateways. Las dos extensiones a WAP presentadas en el último capítulo son notificación y contextos anidados. Hubiera sido más útil si el libro incluyera un caso de estudio con diferentes navegadores y la presentación que ellos hacen del mismo deck WML.
En conclusión, éste es un buen texto introductorio sobre la programación de aplicaciones WAP, proveyendo un buen conjunto de ejemplos de WML y WMLScript. Si usted no está muy familiarizado con el paradigma de la programación web encontrará este libro muy informativo. Si usted está familiarizado con el paradigma de la programación web, entonces puede ser que deba referirse directamente a la documentación disponible gratuitamente en el sitio web del WAP Forum [3].