ARTICULOS


Desarrollo de sitios Web dinámicos

Autor: Ramón Jesús Millán Tejedor

Publicado en Manual Formativo nº 50, ACTA, 2008

Descargar el artículo en PDF



IntroducciÓn

El sitio Web es el medio más barato para darse a conocer rápidamente con un alcance mundial. Esto es extensible no sólo a empresas que comercializan productos y servicios, o bien a profesionales autónomos, lo mismo les sucede a las personas o a las organizaciones que actúan sin ánimo de lucro, tratando de divulgar sus obras, inquietudes o ideas.

Los sitios Web ofrecían antiguamente casi de forma exclusiva contenidos basados en texto y eran bastante estáticos; en la actualidad son sitios interactivos con abundancia de elementos multimedia (imágenes, iconos, botones, barras espaciadoras, documentos, gráficos animados, música de fondo, animaciones, fragmentos de vídeos de baja calidad, etc.).

Antes de que se popularizaran los lenguajes de desarrollo Web, la forma clásica de realizar un sitio Web consistía en escribir las páginas directamente con código HTML a través de un editor Web. Esta tarea es factible cuando se trata de sitios con muy poco contenido y que no se actualizan con frecuencia, pero se convierte en desesperante en aquellos sitios con muchos contenidos y que incorporan novedades con asiduidad. Por ejemplo, si se quieren realizar en HTML cambios sobre algún elemento común a todas las páginas del sitio, se deben aplicar en todas las páginas, una por una, con lo que se convierte en un trabajo muy tedioso. Los lenguajes de desarrollo Web intentan facilitar las tareas de los creadores de aplicaciones, de manera que se automaticen los procesos y se multipliquen las posibilidades.

De este modo, mientras mediante HTML sólo es posible crear sitios Web estáticos, mediante los lenguajes de desarrollo Web se pueden crear sitios Web dinámicos. Un sitio Web dinámico es uno que puede tener cambios frecuentes en la información. Cuando el servidor Web recibe una petición para una determinada página de un sitio Web, la página se genera automáticamente por el software como respuesta directa a la petición de la página. Es decir, una página Web dinámica es una página que permite al usuario interactuar con ella, que permite actualizar los datos ofrecidos sin tener que ser editada de nuevo y que contiene efectos especiales.

Para crear una página dinámica no basta con programar en HTML, ya que este lenguaje, como veremos, es muy limitado. Es necesario combinar HTML con otros lenguajes, como Perl, PHP, JSP, ASP.NET, JavaScript, Java, etc. La generación del contenido dinámico puede suceder en el servidor o en el cliente, empleándose por lo general lenguajes distintos en cada caso, si bien hay lenguajes que pueden trabajar según ambos paradigmas. Cada lenguaje tiene unas reglas de programación y un funcionamiento distinto. A la combinación de estos elementos se le conoce como HTML dinámico o DHTML (Dynamic HTML).

Componentes dinamicos y multimedia en el sitio Web de "El Mundo"

Figura 1: Sitio Web de "El Mundo" con componentes dinámicos y multimedia

HTML

El HTML (HyperText Markup Language) o lenguaje de marcas de hipertexto, es el lenguaje estándar en el que se crean las páginas Web de Internet. La sintaxis y semántica básica de HTML está definida en el estándar de HTML del W3C (World Wide Web Consortium), el consorcio internacional encargado del desarrollo de los estándares de la Web.

Un documento de hipertexto (hipertext) es aquel que contiene información cruzada con otros documentos, lo cual nos permite realizar una lectura no secuencial pasando de una sección o documento a otro desde la misma aplicación con la que lo estamos visualizando mediante los denominados enlaces (links). Los enlaces son palabras o frases generalmente resaltadas y subrayadas, que aparecen en el texto y que dirigen al lector automáticamente al pulsar sobre ellos con el ratón a otras partes del documento o a un documento diferente, pero con el que mantienen alguna relación.

HTML permite, además, crear documentos de tipo multimedia, es decir, que contengan información más allá de la simplemente textual, como por ejemplo: imágenes, vídeo, sonido, o animaciones. Los documentos HTML, cuya extensión es “.htm” o “.html”, se conforman como documentos de texto plano, en los que todo el formato del texto se especifica mediante marcas de texto o etiquetas (tags), que delimitan los contenidos a los que afecta la etiqueta (disponemos de etiquetas de inicio y de final de marcado). Algunos ejemplos de etiquetas son: <head></head>, <body></body>, <h1></h1>, etc.

Los navegadores (browsers) son unas herramientas software gratuitas, que se comunican con los servidores Web mediante el protocolo HTTP (Hypertext Transfer Protocol) o protocolo de transferencia de hipertexto, leen las instrucciones HTML y las presentan al usuario según se indica. La identificación de los distintos servidores en la Red se realiza mediante su identificador uniforme de recurso o URL (Universal Resource Locator).

En nuestros días, el desarrollo Web se realiza mediante editores WYSIWYNG, que permiten manipular los ficheros de forma más potente y cómoda. Los editores WYSIWYG (What You See Is What You Get), que podríamos traducir por “lo que ves es lo que obtienes”, han sido creados específicamente para facilitar el diseño de sitios Web. Estos programas incluyen generalmente diferentes visualizaciones en su interfaz (código fuente HTML, ventana WYSIWYG, visión de etiquetas HTML realzadas), que pueden seleccionarse mediante un intuitivo sistema de pestañas. Entre los editores desarrollados específicamente para construir documentos HTML están  FrontPage, Dreamweaver o NVU.

Edicion Web con NVU

Figura 2: Edición Web con NVU y acceso a su centro de ayuda.

XHTML

XHTML (eXtensible Hypertext Markup Language) o lenguaje de marcas de hipertexto extendido, también desarrollado por el W3C, es un lenguaje más potente que HTML, que nació precisamente con el objetivo de remplazar a HTML ante sus limitaciones de uso con las cada vez más abundantes herramientas basadas en XML.

XHTML extiende HTML combinando su sintaxis, diseñado para mostrar datos, con la de XML, diseñado para describir los datos. Es decir, XHTML es la versión XML de HTML, por lo que tiene, básicamente, las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de XML. Su objetivo es avanzar en el proyecto del W3C de lograr una “Web semántica”, donde la información y la forma de presentarla, estén claramente separadas. La Web Semántica, también conocida por Web 3.0, es una Web extendida dotada de mayor significado, en la que cualquier usuario en Internet podrá encontrar respuestas a sus preguntas de forma más rápida y sencilla gracias a una información mejor definida.

XHTML, al estar orientado al uso de un etiquetado correcto, exige una serie de requisitos básicos a cumplir en lo que a código se refiere; por ejemplo: estructuración coherente dentro del documento donde se incluirían elementos correctamente anidados, etiquetas y sus atributos en minúsculas, elementos cerrados correctamente, atributos de valores entrecomillados, etc. La extensión de los ficheros XHTML es “.xhtml”.

En la actualidad HTML y XHTML coexisten en Internet y los navegadores soportan indistintamente ambos lenguajes. XHTML se emplea en varias aplicaciones como en los sitios Web destinados a dispositivos móviles, en aplicaciones empresariales y en un creciente número de aplicaciones Web como el software para crear blogs.

CSS

Las hojas de estilo en cascada o CSS (Cascading Style Sheets) son un conjunto de reglas que indican al navegador cómo visualizar los elementos del documento al que se aplican, permitiendo así la disociación entre contenidos y su presentación. Esto facilita mucho el diseño y el mantenimiento de las páginas, pues se puede variar la presentación de una página (tipo y tamaño de letra, márgenes, colores, etc.), o de todo el conjunto de ellas, sin tener que introducirse en su código HTML.

En general, cada etiqueta HTML define sus propias reglas para mostrar el texto que engloba. Con las hojas de estilo podemos cambiar cada una de estas reglas y, por lo tanto, el comportamiento de cada etiqueta. Incluso, gracias a las clases, se pueden definir variaciones de diseño no asociadas a ninguna clase en concreto, pero que podemos asociar a etiquetas concretas.

Hay tres maneras de añadir estilos a nuestras páginas Web:

  • Añadiendo instrucciones de estilo sólo a etiquetas concretas o a un grupo de ellas. Es la opción más utilizada, pero no facilita la disociación entre el contenido y su presentación.
  • Incluyendo el bloque de estilo en la cabecera de una página concreta. Esto permite cambiar la apariencia de una hoja entera, cambiando unas pocas líneas.
  • Enlazando todas las páginas que componen un sitio del Web con un fichero –con extensión “.css”- que contiene la hoja de estilo. De esta manera, se puede cambiar la apariencia de múltiples páginas retocando un solo fichero.

Podemos utilizar en nuestras páginas uno, dos o los tres métodos descritos. Para evitar conflictos entre los distintos métodos, el orden de precedencia (de mayor a menor) es el indicado en la enumeración anterior. Lo más práctico es utilizar el tercer método -enlace a una hoja de estilo-, para dar una apariencia consistente a todas las páginas, y si es necesario modificar un aspecto concreto en alguna de ellas, utilizar el segundo o el primero.

GeneraciÓn de pÁginas dinÁmicas en el servidor

Las páginas Web pueden generarse dinámicamente mediante varias secuencias de comandos en el servidor. Una vez que el navegador las recibe, las trata como páginas HTML normales y simplemente las despliega. Por ejemplo, cuando un usuario rellena los distintos campos de un formulario y hace clic en el botón de envío, se envía un mensaje al servidor con toda esta información. Ahora esta información deberá ser entregada a un programa o a una secuencia de comandos para que los procesen. Por lo general, el procesamiento implica el uso de la información proporcionada por el usuario para buscar un registro en una base de datos del disco del servidor y generar una página HTML personalizada para regresarla al cliente.

En una página Web dinámica en el servidor, la base de datos almacena y suministra la información que se le presentará al usuario, con la gran ventaja de que la información puede variar según el usuario, horario, etc. Una vez tengamos claro que nos interesa un sitio Web dinámico, deberemos definir qué tecnología usar y qué base de datos. Existen varias opciones para elegir el gestor de la base de datos: Oracle, PostgreSQL, Microsoft SQL Server, MySQL, etc. Todos ellos pueden usarse para páginas Web dinámicas, aunque dependiendo de la plataforma del servidor Web (Apache, IIS, Tomcat, etc.) y del lenguaje de programación Web utilizado (Perl, PHP, JSP, etc.), se usa más una u otra.

CGI

La forma tradicional de manejar formularios y otras páginas Web interactivas es un sistema estándar denominado CGI (Common Gateway Interface) o interfaz de puerta de enlace común. En una aplicación CGI, el servidor Web pasa las solicitudes del cliente a un programa externo. La salida de dicho programa es enviada al cliente en lugar del archivo estático tradicional. Por lo general, estos programas son secuencias de comandos escritas en lenguaje Perl, aunque algunas veces se emplea Python e incluso lenguajes compilados (C, C++, Java, etc.).

Perl es un lenguaje de programación interpretado -no requiere de un proceso de compilación previo-, derivado del lenguaje de programación C pero más sencillo, extraordinariamente potente y flexible, y muy extendido entre administradores de sistemas y desarrolladores Web. La base de programas y herramientas existentes en Perl es muy grande, lo que le podrá ayudar a la mejora de su página Web sin muchas dificultades.

Perl permite manipulaciones sencillas de ficheros y textos, así como la extracción y manipulación de cadenas de caracteres, unidas a unas búsquedas rápidas y sencillas. Esta característica ha sido tremendamente utilizada en la interpretación de formularios y generación de páginas dinámicas Web mediante CGI y de ahí la razón de su éxito. Una reciente utilidad de este lenguaje se encuentra en el procesamiento de documentos XML.

Si queremos trabajar con Perl en el servidor Web será necesario tener instalado el intérprete del lenguaje. Por convención, los ficheros tienen la extensión “.pl” o “.cgi” y se suelen ubicar en el directorio “cgi-bin”.

Paginas Web dinamicas en el servidor

Figura 3: Procesamiento de información mediante CGI en un formulario HTML.

PHP

Las secuencias de comandos CGI no son la única forma de generar contenido dinámico en el servidor. Otra forma muy común y más sencilla es introducir pequeñas secuencias de comandos y hacer que sea el servidor mismo quien las ejecute para generar la página. Un lenguaje muy popular es PHP (PHP Hypertext Pre-processor). La principal ventaja frente a ASP.NET, JSP o ColdFusion, es que es gratuito. Symfony es un potente entorno gratuito de desarrollo de aplicaciones basado en PHP.

PHPes un lenguaje de código abierto interpretado de alto nivel, especialmente pensado para desarrollos Web y el cual puede ser embebido en páginas HTML. La mayoría de su sintaxis es similar a C, Java y Perl. Es un lenguaje relativamente fácil y muy versátil, porque funciona con la mayor parte de los sistemas operativos y servidores. Permite realizar muchos tipos de aplicaciones Web rápidamente gracias a su gran librería de funciones y documentación.

Para utilizar PHP, el servidor Web debe entenderlo. Por lo general, las páginas Web que contienen comandos PHP (dentro de la etiqueta <?php …?>) tienen una extensión “.php” en vez de “.html”. En cualquier caso, el cliente nunca ve el código PHP, sino los resultados que produce en código HTML.

ASP.NET

También es muy importante ASP (Active Server Pages), la alternativa que ofrece Microsoft para generar sitios Web dinámicos, conjuntamente con su software servidor IIS (Internet Information Server). Desde su primera versión ha evolucionado hasta denominarse ASP.NET y estar dentro de la plataforma “.NET”.

Una de las principales ventajas de ASP.NET es la gran cantidad de lenguajes que soporta, destacando: VB.NET (que deriva del Visual Basic); C# (una versión mejorada de C++) y JScript.NET (que deriva de JavaScript).  ASP.NET constituye un entorno abierto en el que se puede combinar código HTML, scripts y componentes ActiveX del servidor para crear soluciones dinámicas y de calidad para la Web. El Proyecto Mono lo ha llevado a Linux, Solaris, Mac y Unix. Las páginas que utilizan esta tecnología tienen la extensión “.asp”.

JSP

Otra técnica es JSP (Java Server Pages), que es similar a PHP, excepto que la parte dinámica se escribe en el lenguaje de programación Java en vez de PHP.

JSP está desarrollado por Sun Microsystems y es una tecnología Java que permite generar contenido dinámico para Web, en forma de documentos HTML, XML o de otro tipo. De este modo, las JSP permiten la utilización de código Java mediante scripts. Además es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilización de librerías de etiquetas (taglibs) externas e incluso personalizadas.

Las páginas que utilizan JSP tienen la extensión “.jsp”.

ColdFusion

ColdFusion es un entorno de desarrollo Web dinámico y un servidor Web que permite trabajar con distintos lenguajes como ASP, PHP, JSP, etc. Integra el ColdFusion Markup Language un lenguaje creado por Macromedia (ahora Adobe) cuyo funcionamiento se basa en etiquetas especiales integradas sobre el código HTML.

ColdFusion es una plataforma que se puede ejecutar de forma concurrente con la mayoría de los servidores Web de Windows, Mac, Linux y Solaris.

GeneraciÓn de pÁginas dinÁmicas en el cliente

Las secuencias de comandos CGI, PHP, ASP.NET, JSP y ColdFusion resuelven el problema de manejar formularios e interacciones de bases de datos en el servidor. Pueden aceptar información entrante de formularios, buscar información en bases de datos y generar páginas HTML con los resultados.

Sin embargo, ninguno de ellos puede responder a los movimientos del ratón o interactuar de manera directa con los usuarios. Para ello es necesario tener secuencias de comandos incrustadas en páginas HTML que se ejecuten en la máquina cliente y no en el servidor. Las secuencias de tales comandos son posibles comenzando con la etiqueta <script>. El lenguaje de secuencias de comandos más popular para cliente es JavaScript. En este caso, todo el trabajo se realiza de manera local en el navegador, no hay contacto con el servidor, por lo que generalmente es más rápido. Otras alternativas populares son los applets de Java, los controles ActiveX y las animaciones Flash.

Los usos de JavaScript y PHP son completamente diferentes. PHP, ASP y JSP se utilizan cuando es necesaria la interacción con una base de datos remota. JavaScript se utiliza cuando la interacción es con el usuario en la máquina cliente. Es posible y común tener páginas que utilicen PHP y JavaScript u otros lenguajes simultáneamente, aunque éstas no pueden hacer el mismo trabajo. JavaScript, por ejemplo, es muy empleado para comprobar la validez de los campos introducidos en el formulario antes de realizar el envío al servidor, conseguir efectos visuales y sonoros, textos en movimiento, utilidades (relojes, calendarios, programas educativos, juegos interactivos, etc.), etc.

Generacion de paginas dinamicas en el cliente

Figura 4: Procesamiento de comandos en PHP y en JavaScript.

JavaScript

JavaScript -que no tiene relación con Java a pesar de su nombre- es un lenguaje de scripts interpretado que está embebido en los navegadores Web (el propio navegador es el intérprete y no hay máquinas virtuales para ello). De este modo, permite a los desarrolladores Web crear páginas HTML dinámicas que procesen la entrada del usuario y que sean capaces de gestionar datos persistentes usando objetos especiales, archivos y bases de datos relacionales.

El código JavaScript para cliente se integra directamente en páginas HTML (a veces por modularidad se separa en ficheros con extensión “.js”) y es interpretado, en su totalidad, por el cliente Web en tiempo de ejecución, sirviendo así para todos los sistemas operativos. Puesto que con frecuencia es necesario ofrecer el mayor rendimiento posible, las aplicaciones JavaScript desarrolladas para servidores se pueden compilar antes de instalarlas en dichos servidores.

AJAX (Asynchronous JavaScript And XML) es un término que engloba a la utilización de varias tecnologías, para crear aplicaciones Web dinámicas que se ejecutan en el cliente mediante JavaScript y XML, junto a XHTML y HTML con CSS. Puesto que permiten realizar cambios sobre la misma página sin necesidad de recargarla, se consigue un notable aumento de interactividad, velocidad y usabilidad.

Java

Los applets son pequeños programas de Java que se han compilado -extensión “.class”- en instrucciones de máquina para una computadora virtual llamada JVM (Java Virtual Machine). Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems basándose en el lenguaje C++. Aunque es también un lenguaje de carácter general, su principal característica es la de ser independiente de cualquier plataforma. Mientras los applets se almacenan en el servidor pero se ejecutan en el lado cliente previa descarga, los servlets son aplicaciones que se almacenan y ejecutan en el servidor (sustituyen a las CGI).

Si en una de nuestras páginas hemos referenciado a un applet (mediante la etiqueta <applet>), cuando un usuario cargue la página, recibirá del servidor dicho applet (al igual que ocurre con una imagen o sonido), y se ejecutará en su navegador. Debido a que los subprogramas de Java se interpretan en vez de ejecutarse directamente, el intérprete Java puede evitar que realicen acciones que puedan dañar la seguridad del PC.

ActiveX

La respuesta de Microsoft a los applets de Java fueron los controles ActiveX. Active X define unas normas para el desarrollo de objetos COM (Component Object Model), pudiendo ser generados con multitud de lenguajes (Visual Basic, Java, C++, etc.). Se trata así de programas compilados  -extensión “.ocx”, ".dll" o ".exe"- y ejecutados en el hardware. Cuando el navegador ve un control ActiveX en una página Web, lo descarga, verifica su identidad y lo ejecuta.

Los controles ActiveX son muy rápidos y versátiles, pero tradicionalmente han presentado problemas de seguridad. También tienen problemas de compatibilidad con plataformas distintas a Windows.

Flash

Flash de Adobe (antes Macromedia) es otro medio para integrar aplicaciones dentro de una página Web que ha desbancado a Java. Adobe ha creado en torno a Flash una herramienta muy amigable y multiplataforma para crear animaciones y aplicaciones, e incluso ofrecer vídeo y audio en streaming. Los ficheros que genera –con extensión “.swf”- son muy compactos, se transmiten rápidamente y pueden visualizarse durante su descarga, siendo además compatibles con la mayoría de los navegadores existentes.

Los diseñadores de la Web utilizan Flash para crear controles de navegación, logotipos animados, animaciones de gran formato con sonido sincronizado e incluso sitios Web con capacidad sensorial. Flash le permite animar objetos para dar la impresión de que se mueven por la pantalla, así como cambiar su forma, tamaño, color, opacidad, rotación y otras propiedades. También puede crear animación fotograma a fotograma, creando una imagen diferente para cada fotograma. Otra posibilidad consiste en crear una animación interpolada, es decir, crear los fotogramas primero y último de una animación y dejar que Flash cree los fotogramas intermedios. Las películas Flash son gráficos vectoriales compactos que se descargan y se adaptan de inmediato al tamaño de la pantalla del usuario. Para soportar Flash, se debe instalar el plugin Flash Player en el navegador.


<<< Volver al listado de artículos