universidad catolica de cuenca - DSpace de la Universidad Catolica

Anuncio
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
CAPÍTULO I: APLICACIONES WEB
1.1 INTRODUCCIÓN
En los primeros tiempos de la computación, cada aplicación poseía su
propio programa cliente, que servía como interfaz de usuario y tenía que ser
instalado por separado en cada ordenador personal del usuario. El cliente
realizaba peticiones al servidor que le daba respuesta. Una mejora en el
servidor, como parte de la aplicación, requería normalmente una mejora de
los clientes instalados en cada computador, añadiendo un coste de soporte
técnico y disminuyendo la productividad.
A
diferencia
de
lo
anterior,
las
aplicaciones
Web
generan
dinámicamente una serie de páginas en un formato estándar, como HTML o
XHTML, que soportan los navegadores Web comunes. Se utilizan lenguajes
interpretados en el lado del cliente, tales como JavaScript, para añadir
elementos dinámicos a la interfaz de usuario. Generalmente cada página
Web en particular se envía al cliente como un documento estático, pero la
secuencia de páginas ofrece al usuario una experiencia interactiva. Durante
la sesión, el navegador Web interpreta y muestra en pantalla las páginas,
actuando como cliente para cualquier aplicación Web.
Las interfaces Web tienen ciertas limitaciones en las funcionalidades
que se ofrecen al usuario. Hay funcionalidades comunes en las aplicaciones
de escritorio como dibujar en la pantalla o arrastrar y soltar que no están
soportadas por las tecnologías Web estándar. Los desarrolladores Web
generalmente utilizan lenguajes interpretados o scripts en el lado del cliente
NANCY BEATRIZ URGILÉS TAPIA
1
FACULTAD INGENIERÍA DE SISTEMAS
para
añadir
más funcionalidades,
APLICACIONES WEB CLIENTE-SERVIDOR
especialmente
para
ofrecer
una
experiencia interactiva que no requiera recargar la página cada vez.
1.2 HISTORIA
En un principio la Web era sencillamente una colección de páginas
estáticas, documentos, etc., para su consulta o descarga. El paso
inmediatamente posterior en su evolución fue la inserción de un método para
elaborar páginas dinámicas que permitieran que lo expuesto tuviese carácter
dinámico. Este método fue conocido como CGI ("Common Gateway
Interface") y definía un mecanismo mediante el que se podía pasar
información entre el servidor y ciertos programas externos. Los CGIs siguen
utilizándose ampliamente; la mayoría de los servidores Web permiten su uso
debido a su sencillez. Además, dan total libertad para elegir el lenguaje de
programación que se desea emplear.
El funcionamiento de los CGIs tenía un punto débil: cada vez que se
recibía una petición, el servidor debía lanzar un proceso para ejecutar el
programa CGI. Como la mayoría de CGIs estaban escritos en lenguajes
interpretados, como Perl o Python, o en lenguajes que requerían "run-time
environment", como Java o Visual Basic, el servidor se veía sometido a una
gran carga. La concurrencia de múltiples accesos al CGI podía sufrir
problemas graves.
NANCY BEATRIZ URGILÉS TAPIA
2
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Por esta razón se empiezan a desarrollar alternativas a los CGIs que
remediarán el problema del rendimiento. Las soluciones llegan básicamente
por 2 vías:
1) Se diseñan sistemas de ejecución de módulos mejor integrados
con el servidor, que evitan la instanciación y ejecución de varios programas.
2) Se dota a los servidores un intérprete de algún lenguaje de
programación que permita incluir el código en las páginas de forma que lo
ejecute el servidor, reduciendo el intervalo de respuesta.
Entonces se experimenta un aumento del número de arquitecturas y
lenguajes que permiten desarrollar aplicaciones Web. Todas siguen alguna
de estas vías. Las más útiles y las más utilizadas son las que permiten
mezclar los 2 sistemas: un lenguaje integrado que permita al servidor
interpretar comandos "incrustados" en las páginas HTML y, además, un
sistema de ejecución de programas mejor enlazado con el servidor, que no
implique los problemas de rendimiento propios de los CGIs.
Una de las más potentes es la seguida por Sun Microsystems con su
Java, integrado por 2 componentes; un lenguaje que permite la incrustación
de código en las páginas HTML que el servidor convierte en programas
ejecutables, JSP ("Java Server Pages" o "Páginas de Servidor de Java"), y
un método de programación muy ligado al servidor, con un rendimiento
superior a los CGIs, denominado "Java Servlet".
Otra tecnología de éxito y una de las más utilizadas es el lenguaje
PHP. Se trata de un lenguaje interpretado que permite la incrustación de
HTML en los programas, con una sintaxis derivada de C y Perl. El hecho de
NANCY BEATRIZ URGILÉS TAPIA
3
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
ser sencillo y potente ha contribuido a hacer de PHP una herramienta muy
apropiada para determinados desarrollos.
Existen otros métodos, a menudo vinculados a un servidor Web
concreto, como mod_perl para Apache o RXML para Roxen.
1.3 CONSIDERACIONES TÉCNICAS
Una ventaja significativa es que las aplicaciones Web deberían
funcionar igual independientemente de la versión del sistema operativo
instalado en el cliente. En vez de crear clientes para Windows, Mac OS X,
GNU/Linux, y otros sistemas operativos, la aplicación Web se escribe una
vez y se ejecuta igual en todas partes. Sin embargo, hay aplicaciones
inconsistentes escritas con HTML, CSS, DOM y otras especificaciones para
navegadores Web que pueden causar problemas en el desarrollo y soporte
de las aplicaciones Web. Adicionalmente, la posibilidad de los usuarios de
personalizar muchas de las características de la interfaz (tamaño y color de
fuentes, tipos de fuentes, inhabilitar Javascript) puede interferir con la
consistencia de la aplicación Web.
Otra aproximación es utilizar Adobe Flash Player o Java applets para
desarrollar parte o toda la interfaz de usuario. Como casi todos los
navegadores incluyen soporte para estas tecnologías, las aplicaciones
basadas en Flash o Java pueden ser implementadas con aproximadamente
la misma facilidad. Dado que ignoran las configuraciones de los
navegadores, estas tecnologías permiten más control sobre la interfaz,
NANCY BEATRIZ URGILÉS TAPIA
4
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
aunque las incompatibilidades entre implementaciones Flash o Java puedan
crear nuevas complicaciones. Por las similitudes con una arquitectura
cliente-servidor, con un cliente "no ligero", existen discrepancias sobre el
hecho de llamar a estos sistemas “aplicaciones Web”; un término alternativo
es “Aplicación Enriquecida de Internet”.
1.4 ESTRUCTURA DE LAS APLICACIONES WEB
Aunque existen muchas variaciones posibles, una aplicación Web
está normalmente estructurada como una aplicación de tres capas.
En su forma más común, el navegador Web ofrece la primera capa y
un motor capaz de usar alguna tecnología Web dinámica por ejemplo: PHP,
Java Servlets o ASP, ASP.NET, CGI, ColdFusion, embPerl, Python o Ruby
on Rails; constituye la capa de en medio. Por último, una base de datos
constituye la tercera y última capa.
El navegador Web manda peticiones a la capa del intermedio que
ofrece servicios valiéndose de consultas y actualizaciones a la base de datos
y a su vez proporciona una interfaz de usuario.
Figura1. Arquitectura en tres capas
NANCY BEATRIZ URGILÉS TAPIA
5
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
ESTUDIO DE LOS LENGUAJES INTERPRETADOS A LADO
DEL SERVIDOR
CAPÍTULO II: ANÁLISIS DEL PERL
2.1 HISTORIA Y DEFINICIONES
Larry Wall comenzó a trabajar en Perl en 1987 mientras trabajaba
como programador en Unisys, anunciando la versión 1.0 en el grupo de
noticias comp.sources.misc el 18 de diciembre de 1987. El lenguaje se
expandió rápidamente en los siguientes años.
Perl 2, publicado en 1988, aportó un mejor motor de expresiones
regulares.
Perl 3, publicado en 1989, añadió soporte para datos binarios.
Hasta 1991 la única documentación de Perl era una simple y cada vez
más larga, página de manual Unix. En 1991 se publicó Programming Perl y
se convirtió en la referencia del lenguaje. Al mismo tiempo, el número de
versión de Perl saltó a 4, no por marcar un gran cambio en el lenguaje, sino
por identificar a la versión que estaba documentada en el libro.
Perl 4 trajo consigo una serie de lanzamientos de mantenimiento,
culminando en Perl 4.036 en 1993. En este punto, Larry Wall abandonó Perl
4 para comenzar a trabajar en Perl 5. Perl 4 se quedaría en esa versión
hasta hoy.
El desarrollo de Perl 5 continuó en 1994. La lista de correo perl5porters se estableció en mayo de 1994 para coordinar el trabajo de
NANCY BEATRIZ URGILÉS TAPIA
6
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
adaptación de Perl 5 a diferentes plataformas. Es el primer foro para
desarrollo, mantenimiento y adaptación de Perl 5, siendo publicado el 17 de
octubre de 1994. Fue casi una completa reescritura del intérprete y añadió
muchas nuevas características al lenguaje, incluyendo objetos, referencias,
paquetes y módulos. A destacar, los módulos proveen de un mecanismo
para extender el lenguaje sin modificar el intérprete. Esto permitió estabilizar
su núcleo principal, además de permitir a los programadores de Perl añadirle
nuevas características.
El 26 de octubre de 1995, se creó el Comprehensive Perl Archive
Network (CPAN). CPAN es una colección de sitios Web que almacenan y
distribuyen fuentes en Perl, binarios, documentación, scripts y módulos.
A pesar de que la versión actual del intérprete de Perl es la 5, a veces
se puede uno encontrar la versión 4.036, el último patchlevel de la versión 4
y probablemente el más estable.
En enero del 2003, la versión estable es la 5.8, con una nueva
versión 6 en desarrollo que va a ser la caña de España, pero que todavía se
hará de esperar un cierto tiempo. La versión 5 es prácticamente compatible
100% con la 4; virtualmente todos los scripts que funcionan para la versión 4
lo hacen también en la 5.
Aunque desarrollado originalmente en un entorno UNIX, actualmente
hay versiones para casi todos los sistemas operativos: Windows XP, Amiga,
MacOS. Los scripts son compatibles entre las diversas plataformas, de
forma que es un verdadero lenguaje multiplataforma. Muchos fabricantes lo
incluyen en sus versiones de UNIX; también el Linux lo incluye.
NANCY BEATRIZ URGILÉS TAPIA
7
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
En 2008, Perl 5 continua siendo mantenido. Características
importantes y algunas construcciones esenciales han sido añadidas,
incluyendo soporte Unicode, Hilos (threads), un soporte importante para la
programación orientada a objetos y otras mejoras. La última versión estable
publicada es Perl 5.10.0.
Por lo tanto cabe mencionar que a Perl se lo define como:
-
Un lenguaje que hereda ciertas estructuras de los intérpretes de
comandos de UNIX, especialmente el csh, y de otras utilidades
estándar, como awk y sed. Aparte de esto, está diseñado para hacer
todo lo que hacen cualquiera de ellos y todos ellos juntos y la mayoría
de las veces de forma más simple, comprensible y fácil de depurar.
-
Un lenguaje interpretado, aunque en realidad, el intérprete de Perl,
como todos los intérpretes modernos, compila los programas antes de
ejecutarlos. Por eso se habla de scripts, y no de programas, concepto
referido principalmente a programas compilados al lenguaje máquina
nativo del ordenador y sistema operativo en el que se ejecuta.
-
Según la página del manual Unix dice:
Perl es un lenguaje de propósito general originalmente desarrollado
para la manipulación de texto y que ahora es utilizado para un amplio
rango de tareas incluyendo administración de sistemas, desarrollo
web, programación en red, desarrollo de GUI y más.
NANCY BEATRIZ URGILÉS TAPIA
8
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
2.1.1 Nombre
Perl se llamó originalmente "Pearl", por la Parábola de la Perla. Larry
Wall quería darle al lenguaje un nombre corto con connotaciones positivas;
asegura que miró y rechazó todas las combinaciones de tres y cuatro letras
del diccionario. También consideró nombrarlo como su esposa Gloria. Wall
descubrió antes del lanzamiento oficial que ya existía un lenguaje de
programación llamado PEARL y cambió la ortografía del nombre.
El nombre normalmente comienza con mayúscula (Perl) cuando se
refiere al lenguaje y con minúsculas (perl) cuando se refiere al propio
programa intérprete debido a que los sistemas de ficheros Unix distinguen
mayúsculas y minúsculas. Antes del lanzamiento de la primera edición de
Programming Perl era común referirse al lenguaje como perl; Randal L.
Schwartz, sin embargo, forzó el nombre en mayúscula en el libro para que
destacara mejor cuando fuera impreso. La distinción fue subsiguientemente
adoptada por la comunidad.
El nombre es descrito ocasionalmente como "PERL" (Practical
Extraction and Report Language / Lenguaje Práctico para la Extracción e
Informe). Aunque esta expansión ha prevalecido en muchos manuales
actuales, incluyendo la página de manual de Perl, es un retroacrónimo y
oficialmente el nombre no quiere decir nada. La ortografía de PERL en
mayúsculas es usada como idioma para detectar a individuos ajenos a la
comunidad. Sin embargo, se han sugerido varios retroacrónimos, incluyendo
el cómico Pathologically Eclectic Rubbish Lister (Contabilizador de Basura
Patológicamente Ecléctico).
NANCY BEATRIZ URGILÉS TAPIA
9
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
2.1.2 Símbolo
Perl se simboliza generalmente por un dromedario (camello arábigo),
que fue la imagen elegida por el editor O'Reilly para la cubierta de
Programming Perl, que por consiguiente adquirió el nombre de El Libro del
Dromedario. O'Reilly es propietario de este símbolo como marca registrada,
pero dice que usa sus derechos legales sólo para proteger la "integridad e
impacto de este símbolo". O'Reilly permite el uso no comercial del símbolo, y
ofrece logos Programming Republic of Perl y botones Powered by Perl.
2.2 CARACTERÍSTICAS
La estructura completa de Perl deriva ampliamente del lenguaje C y,
en un grado inferior, de muchos otros lenguajes de programación. Se previó
que fuera práctico, es decir, facilidad de uso, eficiente, completo en lugar de
hermoso, pequeño, elegante, mínimo. Sus principales características son
que es fácil de usar, soporta tanto la programación estructurada como la
programación orientada a objetos y la programación funcional, tiene
incorporado un poderoso sistema de procesamiento de texto y una enorme
colección de módulos disponibles.
Perl
es
un
lenguaje
imperativo,
con
variables,
expresiones,
asignaciones, bloques de código delimitados por llaves, estructuras de
control y subrutinas.
Perl también toma características de la programación Shell. Todas las
variables son marcadas con un signo precedente (sigil). Los sigil identifican
NANCY BEATRIZ URGILÉS TAPIA
10
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
inequívocamente los nombres de las variables, permitiendo a Perl tener una
rica
sintaxis.
Notablemente,
los
sigil
permiten
interpolar
variables
directamente dentro de las cadenas de caracteres (strings). Como en los
shell, Perl tiene muchas funciones integradas para tareas comunes y para
acceder a los recursos del sistema.
Perl toma las listas del Lisp, hash (memoria asociativa) del AWK y
expresiones regulares del Sed. Todo esto simplifica y facilita todas las
formas del análisis sintáctico, manejo de texto y tareas de gestión de datos.
En Perl 5, se añadieron características para soportar estructuras de
datos complejas, funciones de primer orden por ejemplo clausuras como
valores y un modelo de programación orientada a objetos. Éstos incluyen
referencias, paquetes y una ejecución de métodos basada en clases y la
introducción de variables de ámbito léxico, que hizo más fácil escribir código
robusto (junto con el pragma strict).
Una característica principal introducida en Perl 5 fue la habilidad de
empaquetar código reutilizable como módulos. Larry Wall indicó más
adelante que "la intención del sistema de módulos de Perl 5 era apoyar el
crecimiento de la cultura Perl en vez del núcleo de Perl".
Todas las versiones de Perl hacen el tipificado automático de datos y
la gestión de memoria. El intérprete conoce el tipo y requerimientos de
almacenamiento de cada objeto en el programa; reserva y libera espacio
para ellos según sea necesario. Las conversiones legales de tipo se hacen
de forma automática en tiempo de ejecución; las conversiones ilegales son
consideradas errores fatales.
NANCY BEATRIZ URGILÉS TAPIA
11
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
2.3 DISEÑO
El diseño de Perl puede ser entendido como una respuesta a tres
amplias tendencias de la industria informática: rebaja de los costes en el
hardware, aumento de los costes laborales y las mejoras en la tecnología de
compiladores. Anteriormente, muchos lenguajes de ordenador como el
Fortran y C, fueron diseñados para hacer un uso eficiente de un hardware
caro. En contraste, Perl es diseñado para hacer un uso eficiente de los
costosos programadores de ordenador y es por esta razón que Perl tiene
muchas características que facilitan la tarea del programador a costa de
unos requerimientos de CPU y memoria mayores. Éstas incluyen gestión de
memoria automática; tipo de dato dinámico; strings, listas y hashes;
expresiones regulares; introspección y una función eval().
Larry Wall fue adiestrado como lingüista y el diseño de Perl ha sido
muy instruido con principios lingüísticos. Ejemplos incluyen la Codificación
Huffman (las construcciones más comunes deben ser las más cortas), buena
distribución (la información importante debe ir primero) y una larga colección
de primitivas del lenguaje. Perl favorece las construcciones del lenguaje, tan
naturales, como para los humanos son la lectura y la escritura, incluso si eso
hace más complicado al intérprete Perl.
La sintaxis de Perl refleja la idea de que "cosas que son diferentes
deben parecer diferentes". Por ejemplo, escalares, arrays y hashes tienen
diferente sigil, Índices de array y claves hash usan diferentes clases de
paréntesis. Strings y expresiones regulares tienen diferentes delimitadores
estándares. Esta aproximación puede contrastarse con lenguajes como Lisp,
NANCY BEATRIZ URGILÉS TAPIA
12
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
donde la misma construcción S-expresión y sintaxis básica se usa para
muchos y variados propósitos.
Perl tiene características que soportan una variedad de ejemplos de
programación, como la imperativa, funcional y la orientada a objetos. Al
mismo tiempo, Perl no obliga a seguir ningún paradigma en particular, ni
obliga al programador a elegir alguna de ellas.
Hay un amplio sentido de lo práctico, tanto en el lenguaje Perl como
en la comunidad y la cultura que lo rodean. El prefacio de Programming Perl
comienza con, "Perl es un lenguaje para tener su trabajo terminado". Una
consecuencia de esto es que Perl no es un lenguaje ordenado. Incluye
características si la gente las usa, tolera excepciones a las reglas y emplea
la heurística para resolver ambigüedades sintácticas. Debido a la naturaleza
indulgente del compilador, a veces los errores pueden ser difíciles de
encontrar. Perl tiene varios lemas que transmiten aspectos de su diseño y
uso. Uno es There's more than one way to do it (Hay más de una forma de
hacerlo), (TMTOWTDI, usualmente pronunciado 'Tim Toady'). Una meta
prefijada de Perl es hacer las cosas fáciles de forma fácil y las tareas
difíciles, posibles. A Perl también se le ha llamado "El esparadrapo de
Internet".
2.4 USOS Y APLICACIONES
Perl tiene muchas y variadas aplicaciones, gracias a la disponibilidad
de módulos estándares y de terceras partes, prácticamente, sirve para todo.
NANCY BEATRIZ URGILÉS TAPIA
13
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Todas las tareas de administración de UNIX se pueden simplificar con un
programa en Perl.
Se usa también para tratamiento y generación de ficheros de texto. La
forma del lenguaje facilita la programación rápida y sucia, es decir, hacer un
programa rápido para que funcione. Esto hace que se utilice para hacer
prototipos rápidos de algún algoritmo que queremos ver funcionar antes que
tomarnos la molestia de programarlo en un lenguaje más eficiente, como el
C++. Y últimamente ha encontrado su aplicación en la escritura de CGI
(Common Gateway Interface), o scripts ejecutados desde páginas de la
World Wide Web. La mayoría de los programas que se puede encontrar para
procesar formularios en la Internet llevan la extensión .pl, lo cual denota que
están escritos en Perl.
En general, los programas en Perl se ejecutan en el servidor, como
todos los programas CGI, a diferencia de otros programas ejecutados por el
cliente (generalmente un navegador como el Internet Explorer de Microsoft o
el Navigator), como aquellos escritos en JavaScript o Java. Existen además
extensiones al Apache (mod_perl) que permiten ejecutar directamente
programas en Perl desde el servidor de HTTP.
Mediante una serie de módulos adicionales, tales como el DBD o el
ODBC, Perl puede servir para acceder a bases de datos, desde Bases de
Datos gratuitas como MySQL hasta el Microsoft SQL Server usando ODBC.
También se ha usado desde los primeros días del Web para escribir
guiones (scripts) CGI. Es una de las "tres Pes" (Perl, Python y PHP), que
son los lenguajes más populares para la creación de aplicaciones Web, y es
NANCY BEATRIZ URGILÉS TAPIA
14
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
un componente integral de la popular solución LAMP para el desarrollo Web.
Grandes proyectos escritos en Perl son Slash, IMDb y UseModWiki, un
motor de Wiki. Muchos sitios Web con alto tráfico, como Amazon.com y
Ticketmaster.com usan Perl extensamente.
A Perl se lo usa a menudo como un "lenguaje pegamento", ligando
sistemas e interfaces que no fueron diseñados específicamente para
interoperar; y para el "escarbado de datos", convirtiendo o procesando
grandes cantidades de datos para tareas como por ejemplo crear informes.
De hecho, estas fortalezas están íntimamente unidas. Su combinación hace
a
Perl
una
popular
herramienta
de
propósito
general
para
los
administradores de sistemas, especialmente en programas pequeños que
pueden ser escritos y ejecutados en una sola línea de comandos.
Perl es también ampliamente usado en finanzas y bioinformática,
donde es apreciado por su desarrollo rápido, tanto de aplicaciones como de
despliegue, así como la habilidad de manejar grandes volúmenes de datos.
2.5 IMPLEMENTACIÓN
Perl está implementado como un intérprete, escrito en C, junto con
una gran colección de módulos, escritos en Perl y C. La distribución fuente
tiene, en 2005, 12 MB cuando se empaqueta y comprime en un fichero tar.
El intérprete tiene 150.000 líneas de código C y se compila en un ejecutable
de 1 MB en las arquitecturas de hardware más típicas. De forma alternativa,
el intérprete puede ser compilado como una biblioteca y ser embebida en
otros programas. Hay cerca de 500 módulos en la distribución, sumando
NANCY BEATRIZ URGILÉS TAPIA
15
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
200.000 líneas de Perl y unas 350.000 líneas adicionales de código C.
Mucho del código C en los módulos consiste en tablas de codificación de
caracteres.
El intérprete tiene una arquitectura orientada a objetos. Todos los
elementos del lenguaje Perl como: escalares, listas, hashes, referencias a
código, manejadores de archivo; están representados en el intérprete como
estructuras C. Las operaciones sobre estas estructuras están definidas como
una numerosa colección de macros, typedef y funciones; esto constituye la
API C de Perl. La API Perl puede ser desconcertante para el no iniciado,
pero sus puntos de entrada siguen un esquema de nombres coherente, que
ayuda a los que quieran utilizarla.
La ejecución de un programa Perl se puede dividir, generosamente,
en dos fases: tiempo de compilación y tiempo de ejecución. En tiempo de
compilación el intérprete parsea el texto del programa en un árbol sintáctico.
En tiempo de ejecución, elabora el programa siguiendo el árbol. El texto es
parseado sólo una vez y el árbol sintáctico es optimizado antes de ser
ejecutado, para que la fase de ejecución sea relativamente eficiente. Las
optimizaciones del árbol sintáctico en tiempo de compilación incluyen
simplificación de expresiones constantes, propagación del contexto y
optimización en trozos sueltos de código. Sin embargo, las fases de
compilación y ejecución pueden anidarse: un bloque BEGIN se ejecuta en
tiempo de compilación, mientras que una función eval inicia una compilación
durante una ejecución. Ambas operaciones están implícitas en otras de
NANCY BEATRIZ URGILÉS TAPIA
16
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
forma notable, la cláusula use que carga bibliotecas, conocidas en Perl como
módulos, implica un bloque BEGIN.
Perl es un lenguaje dinámico y tiene una gramática sensible al
contexto que puede quedar afectada por el código ejecutado durante una
fase de ejecución intermedia. Por eso Perl no puede ser parseado mediante
una aplicación directa de analizadores léxicos/parseador Lex/Yacc. En
cambio, el intérprete implementa su propio analizador léxico, que coordinado
con un parseador modificado GNU bison resuelve las ambigüedades del
lenguaje. Se ha dicho que "sólo perl puede parsear Perl", queriendo decir
que sólo el intérprete Perl (perl) puede parsear el lenguaje Perl (Perl). La
razón de esto se atestigua por las persistentes imperfecciones de otros
programas que emprenden la tarea de parsear Perl, como los analizadores
de código y los auto-indentadores, que tienen que vérselas no sólo con las
muchas formas de expresar inequívocamente construcciones sintácticas
sino también con el hecho de que también Perl no puede en general ser
parseado sin antes ser ejecutado.
El mantenimiento del intérprete Perl, a lo largo de los años, se ha
vuelto cada vez más difícil. El núcleo ha estado en continuo desarrollo desde
1994. El código ha sido optimizado en rendimiento a expensas de la
simplicidad, claridad y unas interfaces internas más fuertes. Nuevas
características han sido añadidas, manteniendo todavía, compatibilidad
virtualmente completa hacia atrás con las primeras versiones. El tamaño y la
complejidad del intérprete son una barrera para los desarrolladores que
desean trabajar en él.
NANCY BEATRIZ URGILÉS TAPIA
17
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Perl es distribuido con unos 120.000 test funcionales. Éstos se
ejecutan como parte del proceso normal de construcción y comprueban
extensamente al intérprete y a sus módulos principales. Los desarrolladores
Perl confían en los test funcionales para asegurarse que los cambios en el
intérprete no introducen errores; recíprocamente, los usuarios Perl que vean
al intérprete pasar los test funcionales en su sistema pueden tener un alto
grado de confianza de que está funcionando adecuadamente.
No hay una especificación o estándar escrito para el lenguaje Perl y
no hay planes de crear uno para la versión actual de Perl. Siempre ha
existido sólo una implementación del intérprete. Este intérprete, junto con los
test funcionales, forma la especificación de facto del lenguaje.
2.6 DISPONIBILIDAD
Perl es un software libre y está autorizado bajo la Licencia Artística y
la GNU (General Public License). Existen distribuciones disponibles para la
mayoría de sistemas operativos como: Linux, Unix, Windows, Mac, etc. De
hecho, plataformas como Linux y Unix traen Perl ya instalado por defecto,
pero ha sido portado a las plataformas más modernas y a otras más
obsoletas. Con sólo seis excepciones confirmadas, puede ser compilado
desde el código fuente, en todos los Unix, compatibles POSIX o cualquier
otra plataforma Unix compatible. Sin embargo, esto no es normalmente
necesario, porque Perl está incluido por defecto en la instalación de los
sistemas operativos más populares.
NANCY BEATRIZ URGILÉS TAPIA
18
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Debido a los cambios especiales necesarios para soportar al Mac OS
Classic, existe una adaptación especial llamada MacPerl.
2.6.1 GNU/Linux
Perl está instalado por defecto en las distribuciones más populares de
GNU/Linux incluyendo Gentoo, Mandriva, Debian, RedHat y SUSE.
2.6.2 Windows
Los usuarios de Microsoft Windows normalmente instalan una
distribución binaria de Perl. Compilar Perl desde el código fuente bajo
Windows es posible, pero la mayoría de las instalaciones no disponen del
necesario compilador de C.
La capa de emulación Cygwin proporciona otra forma de correr Perl
bajo Windows. Cygwin proporciona un entorno parecido al Unix en Windows
que incluye gcc, por lo que compilar Perl desde el código es una opción
accesible para los usuarios que prefieren esta opción.
En Junio de 2006, win32.perl.org fue lanzado por Adam Kennedy en
nombre de la Fundación Perl. Es una comunidad Web "para todo lo
relacionado con Windows y Perl".
2.7
2.7.1
ESTRUCTURA DEL LENGUAJE
Tipos de datos
Perl tiene tres tipos de datos: escalares, listas y hashes.
NANCY BEATRIZ URGILÉS TAPIA
19
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Todas las variables están precedidas por un sigil, que identifica el tipo
de dato que es accedido y no el tipo de dato de la misma variable. Se puede
usar el mismo nombre para variables de diferentes tipos, sin que tengan
conflictos.
$var
# un escalar
@var
# un array o lista
%var
# un hash
Un escalar es un solo valor; puede ser un número, un string (cadena
de caracteres o hileras) o una referencia.
Los números se escriben de la forma usual; los strings están
rodeados entre comillas de varias clases:
$n
= 42;
$nombre = "Juan";
$hilera1 = “Hola”;
$color
= 'rojo';
Perl convertirá los strings en números y viceversa dependiendo del
contexto en que sean usados. En el siguiente ejemplo los strings $n y $m
son tratados como números cuando son argumentos del operador suma.
Este código imprime el número '5', desechando cualquier información no
numérica de la operación y dejando los valores de las variables intactos. El
operador de concatenación no es +, sino el punto (.).
$n
= "3 manzanas";
$m
= "2 naranjas";
NANCY BEATRIZ URGILÉS TAPIA
20
UNIVERSIDAD CATÓLICA DE CUENCA
print
APLICACIONES WEB CLIENTE-SERVIDOR
$n + $m;
Perl también tiene un contexto booleano que utiliza en la evaluación
de declaraciones condicionales. Los siguientes valores en Perl evalúan
todos como falso:
$falso = 0;
# el número cero.
$falso = 0.0;
# el número cero como flotante.
$falso = '0';
# el string cero.
$falso = "";
# el string vacío.
$falso = undef;
# el valor devuelto por undef.
Todos los demás valores se evalúan a verdadero. Esto incluye el
curioso string auto-descriptivo "0 pero verdadero", que de hecho es 0 como
número, pero verdadero como booleano. (Cualquier string no numérico
también tendrá esta propiedad, pero este string en particular es ignorado por
Perl en contextos numéricos). Las expresiones booleanas evaluadas
también devuelven valores escalares. Muchos operadores booleanos
devuelven 1 por verdadero y el string vacío para falso (que evalúa a cero en
contexto numérico). La función defined() le dice si la variable tiene algún
valor. En el ejemplo anterior defined($falso) será verdadero con cada uno de
los valores anteriores, excepto undef. Si, específicamente, se quiere
asegurar el tener un resultado 1/0 (como en C), se necesita realizar el
siguiente cálculo:
my $resultado_real = $resultado_booleano ? 1: 0;
NANCY BEATRIZ URGILÉS TAPIA
21
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Una lista es una colección ordenada de datos escalares, la variable
asociada se denomina arreglo (array), los elementos pueden accederse
mediante un índice y se define listando sus elementos, separados por comas
y rodeados por paréntesis, donde así sea requerido por la precedencia de
los operadores.
@puntuaciones = (32, 45, 16, 5);
Un hash, o memoria asociativa, es un mapeo de strings (claves) a
escalares (valores); y sus elementos pueden accederse mediante la clave.
Un hash puede ser inicializado desde una lista de pares clave/valor:
%favorito = (
Joe => 'rojo',
Sam => 'azul' );
%edad = (
Pedro => 22,
Juan => 35);
Los elementos individuales de una lista son accedidos utilizando un
índice numérico, dentro de corchetes. Valores individuales en un hash son
accedidos utilizando la correspondiente clave, dentro de llaves. El sigil $
identifica que el elemento accedido es un escalar:
$puntuaciones[2]
# un elemento de @puntuaciones
$favorito{Joe}
# un valor de %favorito
NANCY BEATRIZ URGILÉS TAPIA
22
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Múltiples elementos pueden ser accedidos usando en su lugar el sigil
@ (identificando el resultado como una lista).
@puntuaciones[2,3,1] # tres elementos de
@puntuaciones
@favorito{'joe', 'sam'}
# dos valores de %favorito
El número de elementos en un array puede ser obtenido evaluando el
array en contexto escalar o con la ayuda del sigil $#. Éste último da el índice
del último elemento dentro del array, no el número de elementos:
$numero = @amigos;
$#amigos;
@amigos
# el índice del último elemento en
$#amigos+1;
# normalmente el número de elementos
en @amigos, que es, uno más que $#amigos porque el
primer elemento tiene el índice 0, no 1.
Hay unas pocas funciones que operan sobre hashes enteros, como:
@nombres_de_clientes = keys %direcciones;
# guarda en @nombres_de_clientes
de %direcciones
todas las claves
@direcciones_de_email = values %direcciones;
# guarda en @direcciones_de_email todos los valores
de %direcciones
2.7.2
Estructuras de control
Estructuralmente, Perl está basado en un estilo de bloques como los
del C o AWK, y fue ampliamente adoptado por su destreza en el procesado
NANCY BEATRIZ URGILÉS TAPIA
23
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
de texto y no tener ninguna de las limitaciones de los otros lenguajes de
script.
Perl tiene varias clases de estructuras de control, las mismas que
están orientadas al bloque, similar a los de los lenguajes de programación C
y Java. Las condiciones están rodeadas por paréntesis y los bloques
subordinados por llaves:
etiqueta while ( condición ) {... }
etiqueta while ( condición ) {... } continue {... }
etiqueta for ( expresión inicial; expresión
condicional; expresión
incremental ) {... }
etiqueta foreach variable ( lista ) {... }
etiqueta foreach variable ( lista ) {... } continue
{... }
if ( condición ) {... }
if ( condición ) {... } else {... }
if ( condición ) {... } elsif ( condición ) {... }
else {... }
También existe una sintaxis para estructuras que controlan una sola
declaración:
declaración if
condición;
declaración unless
condición;
declaración while
condición;
declaración until
condición;
declaración foreach lista o condición;
Los operadores lógicos son normalmente usados para controlar el
flujo del programa a nivel de expresión:
NANCY BEATRIZ URGILÉS TAPIA
24
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
expr and expr
expr or
expr
Las palabras clave de control de flujo next, last, return y redo son
expresiones, por lo que pueden ser usadas con los operadores lógicos.
Perl también tiene dos construcciones implícitas para bucles:
resultados = grep {... } lista
resultados = map
{... } lista
grep devuelve todos los elementos de lista en que el bloque
subordinado evalúa a verdadero:
resultados = grep {...} lista
map evalúa el bloque subordinado por cada elemento de lista y
devuelve una lista de los valores resultantes. Estas construcciones permiten
un estilo simple de programación funcional.
resultados = map {...} lista
No hay declaración switch (salto multi-camino) en Perl 5. Perl incluye
una declaración goto etiqueta, pero es usada raramente. Las situaciones
donde en otros lenguajes se utiliza goto no ocurren tan a menudo en Perl
debido a sus amplias opciones de control de flujo.
Existe también una declaración goto &sub que realiza una llamada
'final'. Termina la subrutina actual e inmediatamente llama a la sub
especificada. Esto se usa en situaciones donde una nueva subrutina puede
realizar una gestión de la pila más eficiente que el propio Perl, y en una
NANCY BEATRIZ URGILÉS TAPIA
25
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
recursión muy profunda este tipo de llamadas puede tener un sustancial
impacto positivo en el funcionamiento porque evita la sobrecarga de la
gestión contexto/pila en el momento de retornar.
2.7.3
Subrutinas
Las subrutinas se definen con la palabra clave sub y son invocadas
simplemente nombrándolas. Si la subrutina en cuestión no ha sido todavía
declarada, es necesario, para el proceso de análisis sintáctico, poner los
paréntesis:
foo();
# paréntesis necesarios aquí...
sub foo {... }
foo;
#... pero no aquí
Una lista de argumentos pueden ser indicados después del nombre
de la subrutina. Los argumentos pueden ser escalares, listas o hashes.
foo $x, @y, %z;
Los parámetros de una subrutina no necesitan ser declarados, ni en
número ni en tipo; de hecho, pueden variar en cada llamada. Los arrays son
expandidos a sus elementos, los hashes a una lista de pares clave/valor y
todo el conjunto es pasado a la subrutina como una indiferenciada lista de
escalares. Cualesquiera de los argumentos pasados están disponibles para
la subrutina en el array especial @_. Los elementos de @_ son asociados a
los argumentos actuales; cambiando un elemento de @_ cambia el
argumento correspondiente.
NANCY BEATRIZ URGILÉS TAPIA
26
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Los elementos de @_ pueden ser accedidos con los subíndices de la
forma normal.
$_[0], $_[1]
Sin embargo, el código resultante puede ser difícil de leer y los
parámetros pueden tener una semántica de pase por referencia, que puede
resultar algo no deseable.
Un modismo común es asignar @_ a una lista de variables con
nombres.
my($x, $y, $z) = @_;
Esto afecta tanto a la nemónica de los nombres de los parámetros
como a la semántica de los valores pasados por valor. La palabra clave my
indica que las siguientes variables están léxicamente embebidas en el
bloque que las contienen.
Las subrutinas pueden devolver valores.
return 42, $x, @y, %z;
Si la subrutina no sale vía declaración return, entonces devuelve la
última expresión evaluada en el cuerpo de la subrutina. Arrays y hashes en
el valor de retorno son expandidos a una lista de escalares, igual que si
fueran argumentos de una función.
La expresión devuelta es evaluada en el contexto de la llamada de la
subrutina; esto puede sorprender al desprevenido.
NANCY BEATRIZ URGILÉS TAPIA
27
FACULTAD INGENIERÍA DE SISTEMAS
sub lista {
(4, 5, 6)
APLICACIONES WEB CLIENTE-SERVIDOR
}
sub array { @x = (4, 5, 6); @x }
$x = lista;
la lista
# devuelve 6 - último elemento de
$x = array;
de la lista
# devuelve 3 - número de elementos
@x = lista;
# devuelve (4, 5, 6)
@x = array;
# devuelve (4, 5, 6)
Una subrutina puede descubrir su contexto de llamada con la función
wantarray.
sub cualquiera { wantarray ? (1, 2) : "Naranjas" }
$x = cualquiera;
@x = cualquiera;
2.7.4
# devuelve "Naranjas"
# devuelve (1, 2)
Expresiones regulares
El lenguaje Perl posee una sintaxis especial para el manejo de las
expresiones regulares, además el interprete perl está equipado con un motor
para el emparejamiento de hileras y expresiones regulares. El motor de
expresiones regulares usa un algoritmo de Vuelta Atrás (backtracking),
extendiendo sus capacidades desde el simple emparejamiento de patrones
simples con la captura y sustitución de strings. El motor de expresiones
regulares se deriva de regex, escrito por Henry Spencer. Es importante
indicar que en los últimos años, muchos lenguajes como PHP, Java y el
mismo servidor HTTP Apache han adoptado las expresiones regulares de
Perl.
NANCY BEATRIZ URGILÉS TAPIA
28
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
La sintaxis de expresiones regulares fue originalmente tomada de las
expresiones regulares de Unix Versión 8. Sin embargo, se diferenció ya
antes del primer lanzamiento de Perl y desde entonces ha ido incorporando
muchas más características. Otros lenguajes y aplicaciones están adoptando
las expresiones regulares de Perl (PCRE) en vez de las expresiones
regulares POSIX, incluyendo PHP, Ruby, Java y el Servidor HTTP Apache.
Las sintaxis para el manejo de expresiones regulares está formada
por varios operadores como:
Operador m (empareja).- Éste operador permite comprobar un
emparejamiento por medio de una expresión regular. En el caso más simple,
una expresión como:
$x =~ m/abc/
Evalúa a verdadero si y sólo si el string $x empareja con la expresión
regular abc.
Partes de la expresión regular pueden ser incluidas entre paréntesis.
Las partes correspondientes de un string emparejado son capturadas. Los
strings capturados son asignados de forma secuencial a las variables
internas $1, $2, $3,... y una lista de strings capturados se devuelve como
valor del emparejamiento.
$x =~ m/a(.)c/;
# captura el carácter entre 'a' y
'c' y lo guarda en $1.
Operador s (sustitución).- Éste operador sirve para especificar una
operación de búsqueda y reemplazo, como:
NANCY BEATRIZ URGILÉS TAPIA
29
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
$x =~ s/Abc/abc;
# Cambia ‘A’ por ‘a’.
$x =~ s/abc/aBc/;
#Convierte la b en mayúscula.
Operador split: Sirve para especificar delimitadores de campo,
retorna los valores no emparejados.
@palabras = split m/,/, $línea;
de valores separados
por comas.
@x = split m/,/, $hilera;
valores separados por ‘,’
# divide la $línea
#divide $hilera en los
El operador split complementa la captura de string. La captura de
string devuelve las partes de un string que emparejan con una expresión
regular; split devuelve las partes que no emparejan.
Además, Perl incorpora varios modificadores que sirven para cambiar
el significado de una expresión, éstos son sufijos de una sola letra que
modifican el significado de la expresión:
-
Modificador i: Sirve para evitar que se haga distinción entre
minúsculas y mayúsculas.
$x =~ m/aabb/i;
$x =~ m/abc/i; #emparejamiento independientemente
de si están en mayúscula o minúscula.
-
Modificador g: Sirve para lograr un efecto global de la expresión.
$x =~ s /A/a/g;
# Reemplaza todas las ‘A’ por a.
$x =~ s/abc/aBc/g; # búsqueda y reemplazo global
a lo largo de todo el string.
NANCY BEATRIZ URGILÉS TAPIA
30
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Las expresiones regulares pueden ser densas y crípticas. Esto es
porque la sintaxis de estas expresiones es extremadamente compacta,
generalmente usando caracteres sueltos o pares de caracteres que
representan sus operaciones. Perl alivia un poco este problema con el
modificador /x que permite a los programadores poner espacio en blanco y
comentarios dentro de las expresiones regulares:
$x =~ m/a
# empareja una 'a'
.
# empareja cualquier carácter
c
# empareja una 'c'
/x;
2.8 EJECUCIÓN DE UN PROGRAMA
La ejecución de un programa escrito en Perl se divide en dos fases:
2.8.1 Tiempo de compilación
En esta fase se crea el árbol sintáctico del texto del programa, luego
el árbol es optimizado antes de iniciar la ejecución del programa.
2.8.2 Tiempo de ejecución
En esta fase se ejecuta el programa siguiendo el árbol creado en la
fase anterior. Poniendo en evidencia una de las desventajas de Perl y su
interprete, la cual es que cada vez que se corre un programa debe ser
compilado, lo que lo hace más lento en tiempo de ejecución que otros
lenguajes.
NANCY BEATRIZ URGILÉS TAPIA
31
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
2.9 VENTAJAS
Las principales ventajas de utilizar Perl son las siguientes:
-
Es un lenguaje eficiente, completo y fácil de usar.
-
Está en la cantidad de aplicaciones que se le pueden dar al lenguaje
en campos como la administración de sistemas, aplicaciones Web,
entre otros.
-
Está disponible para gran cantidad de sistemas operativos.
-
Es un lenguaje accesible a cualquier usuario, sirviendo esto para
extender la comunidad que es acreedor del lenguaje y así convertir a
Perl en un lenguaje muy usado y a su vez muy confiable.
2.10
DESVENTAJAS
La principal desventaja de Perl se encuentra en el tiempo de
ejecución de un programa, ya que éste es compilado cada vez que se
ejecuta, por lo que puede resultar más lento que un programa similar escrito
en otro lenguaje. Sin embargo, se han implementado técnicas para mejorar
ésta situación como guardar el compilado del programa en memoria y
retrasar la compilación hasta que sea necesitada.
NANCY BEATRIZ URGILÉS TAPIA
32
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
CAPÍTULO III: ANÁLISIS DE PYTHON
3.1 HISTORIA
Python fue creado en el año de 1990 por Guido Van Rossum en CWI
en los Países Bajos como un sucesor del lenguaje de programación ABC,
capaz de manejar excepciones e interactuar con el sistema operativo
Amoeba.
Van Rossum es el principal autor de Python y su continuo rol central
en decidir la dirección de Python es reconocido, refiriéndose a él como
benevolente dictador vitalicio o Benevolent Dictator for Life (BDFL).
En 1991, Guido publicó la versión 0.9.0 en alt.sources. En esta etapa
del desarrollo ya estaban presentes clases con herencia, manejo de
excepciones, funciones, y los tipos medulares: list, dict, str y así
sucesivamente. Además en este lanzamiento inicial aparecía un sistema de
módulos adoptado de Modula-3; Van Rossum describe el módulo como "uno
de las mayores unidades de programación de Python". El modelo de
excepciones en Python es parecido al de Modula-3, con la adición de una
cláusula else.
En el año 1994 se formó comp.lang.python, el foro de discusión
principal de Python, marcando un hito en el crecimiento del grupo de
usuarios de este lenguaje.
Python alcanzó la versión 1.0 en enero de 1994. Una característica de
este lanzamiento fueron las herramientas de la programación funcional:
lambda, map, filter y reduce, su autor explicó que "Hace 12 años, Python
NANCY BEATRIZ URGILÉS TAPIA
33
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
adquirió lambda, reduce(), filter() and map(), cortesía de un hacker de Lisp
que las extrañaba y que envió parches". El donante fue Amrit Prem, y no se
hace mención de cualquier herencia de Lisp en las notas de lanzamiento.
La última versión liberada proveniente de CWI fue Python 1.2. En
1995, Van Rossum continuó su trabajo en Python en la Corporation for
National Research Initiatives (CNRI) en Reston, Virginia donde lanzó varias
versiones del software.
Durante su estancia en CNRI, Van Rossum lanzó la iniciativa
Computer Programming for Everybody (CP4E), con el fin de hacer la
programación más accesible a más gente, con un nivel de 'alfabetización'
básico en lenguajes de programación, similar a la alfabetización básica en
inglés y habilidades matemáticas necesarias por muchos trabajadores.
Python tuvo un papel decisivo en este proceso: debido a su orientación hacia
una sintaxis limpia, ya era idóneo y las metas de CP4E presentaban
similitudes con su predecesor, ABC. El proyecto fue patrocinado por DARPA.
En el año 2000, el principal equipo de desarrolladores de Python se
cambió a BeOpen.com para formar el equipo BeOpen PythonLabs. CNRI
pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el
equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la
versión 2.0 tenían una significativa cantidad de translapo. Python 2.0 fue el
primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera
publicado por BeOpen.com, Guido y los otros desarrolladores PythonLabs se
unieron en Digital Creations.
NANCY BEATRIZ URGILÉS TAPIA
34
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Python 2.0 tomó una característica mayor del lenguaje de
programación funcional Haskell: list comprehensions. La sintaxis de Python
para esta construcción es muy similar a la de Haskell, salvo por la
preferencia de los caracteres de puntuación en Haskell y la preferencia de
Python por palabras claves alfabéticas. Python 2.0 introdujo además un
sistema de recolección de basura capaz de recolectar referencias cíclicas.
Posterior a este doble lanzamiento, y después que Van Rossum dejó
CNRI para trabajar con desarrolladores de software comercial, quedó claro
que la opción de usar Python con software disponible bajo GPL era muy
deseable. La licencia usada entonces, la Python License, incluía una
cláusula estipulando que la licencia estaba gobernada por el estado de
Virginia por lo que, bajo la óptica de los abogados de Free Software
Foundation (FSF), se hacía incompatible con GNU-GPL. CNRI y FSF se
relacionaron para cambiar la licencia de software libre de Python para
hacerla compatible con GPL.
En el año 2001, Van Rossum fue premiado con FSF Award for the
Advancement of Free Software.
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos
pocos arreglos de bugs y con una nueva licencia compatible con GPL.
Python 2.1 fue un trabajo derivado de Python 1.6.1, así como también
de Python 2.0. Su licencia fue renombrada: Python Software Foundation
License. Todo el código, documentación y especificaciones añadidas, desde
la fecha del lanzamiento de la versión alfa de Python 2.1, tiene como dueño
a Python Software Foundation (PSF), una organización sin ánimo de lucro
NANCY BEATRIZ URGILÉS TAPIA
35
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
fundada en el año 2001, tomando como modelo la Apache Software
Foundation. Incluido en este lanzamiento fue una implementación del
scoping más parecida a las reglas de static scoping.
Una innovación mayor en Python 2.2 fue la unificación de los tipos en
Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de
una jerarquía. Esa unificación logró un modelo de objetos de Python puro y
consistente. También fueron agregados los generadores que fueron
inspirados por el lenguaje Icon.
Las adiciones a la biblioteca estándar de Python y las decisiones
sintácticas fueron influenciadas fuertemente por Java en algunos casos: el
package logging, introducido en la versión 2.3, el parser SAX, introducido en
2.0, y la sintaxis del patrón decorator que usa el @, agregado en la versión
2.4.
En el año 2007, el proyecto CP4E estaba inactivo, mientras tanto
Python intentaba ser fácil de aprender y no era reservado en su sintaxis y
semántica.
En febrero de 2008, la última versión de producción de Python es la
2.5.2.
También cabe mencionar que a Python se lo considera como:
Un lenguaje de programación interpretado, lo que ahorra un tiempo
considerable en el desarrollo del programa, pues no es necesario compilar ni
enlazar. El nombre del lenguaje proviene de la afición de su creador original,
Guido, por los humoristas británicos Monty Python. El principal objetivo que
NANCY BEATRIZ URGILÉS TAPIA
36
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
persigue este lenguaje es la facilidad, tanto de lectura, como de diseño. Los
usuarios de Python consideran que es mucho más limpio y elegante para
programar al igual que permite la creación de todo tipo de programas
incluyendo los sitios Web.
3.2 CARACTERÍSTICAS Y PARADIGMAS
Python es un lenguaje de programación multiparadigma. Esto significa
que más que forzar a los programadores a adoptar un estilo particular de
programación, permite varios estilos: Programación orientada a objetos,
programación estructurada y programación funcional. Otros paradigmas más
están soportados mediante el uso de extensiones. También Python usa tipo
de dato dinámico y reference counting para el manejo de memoria.
Una característica importante de Python es la resolución dinámica de
nombres, lo que enlaza un método y un nombre de variable durante la
ejecución del programa, también llamado ligadura dinámica de métodos.
Otro objetivo del diseño del lenguaje es la facilidad de extensión. Nuevos
módulos se pueden escribir fácilmente en C o C++.
Python puede utilizarse como un lenguaje de extensión para módulos
y aplicaciones que necesitan de una interfaz programable, aunque el diseño
de Python es de alguna manera hostil a la programación funcional tradicional
del Lisp, existen bastantes analogías entre Python y los lenguajes
minimalistas de la familia del Lisp como puede ser Scheme.
Es comparado habitualmente con TCL, Perl, Scheme, Java y Ruby.
Python es considerado como la "oposición leal" a Perl, lenguaje con el cual
NANCY BEATRIZ URGILÉS TAPIA
37
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
mantiene una rivalidad amistosa. Permite dividir el programa en módulos
reutilizables desde otros programas Python. Su gran colección de módulos
estándar puede utilizarse como base de los programas o como ejemplos
para empezar a aprender Python. También hay módulos incluidos que
proporcionan entradas y salidas de ficheros, llamadas al sistema, sockets y
hasta interfaces a GUI (Interfaz Gráfica con el Usuario) como Tk, GTK, Qt
entre otros.
Python también puede servir como una base excelente para introducir
conceptos importantes de informática. Puesto que Python soporta
completamente procedimientos y clases, los alumnos pueden introducirse
gradualmente en temas como abstracción procedural, estructuras de datos y
programación orientada a objetos. El intérprete se puede utilizar de modo
interactivo, lo que facilita experimentar con características del lenguaje,
escribir programas desechables o probar funciones durante el desarrollo del
programa.
Python es un lenguaje muy apreciado y tiene una activa comunidad
de programadores y una amplia base de usuarios, entre ellos:
-
La agencia espacial NASA que también hace uso de este lenguaje de
programación.
-
El gestor de listas de correo Mailman.
-
El gestor de contenidos Zope y Plone.
-
El sistema de ficheros soportado sobre Gmail: GmailFS.
NANCY BEATRIZ URGILÉS TAPIA
38
UNIVERSIDAD CATÓLICA DE CUENCA
-
APLICACIONES WEB CLIENTE-SERVIDOR
Google usa Python incluyendo backends de aplicaciones Web tales
como Gmail.
-
La herramienta de arqueología del software carnarvon, entre otros.
3.3 ELEMENTOS DEL LENGUAJE
Python fue diseñado para ser leído con facilidad. Entre otras cosas se
utilizan palabras en inglés donde otros lenguajes utilizarían símbolos, por
ejemplo, los operadores lógicos || y && en Python se escriben or y and,
respectivamente.
En vez de delimitar los bloques de código mediante el uso de llaves
({}), Python utiliza la indentación. Esto hace que la misma sea obligatoria,
ayudando a la claridad y consistencia del código escrito, como se demuestra
a continuación:
Función factorial en C
int factorial(int x) {
if (x == 0)
return 1;
else
return x*factorial(x - 1); }
Función factorial en Python
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x-1)
3.3.1
Variables
Las variables se escriben de forma dinámica. El signo igual (=) se usa
para asignar valores a las variables:
NANCY BEATRIZ URGILÉS TAPIA
39
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
x = 1
x = 'texto' # esto es posible porque los tipos son
asignados dinámicamente.
3.3.2
Comentarios
Los comentarios se inician con el símbolo #, y se extienden hasta el
final de la línea.
3.3.3
Tipos de datos
Los tipos de datos se resumen en la siguiente tabla:
Tipo
Clase
Notas
Ejemplo
Str
String
Inmutable
'Wikipedia'
unicode
String
Versión Unicote de str
u'Wikipedia'
List
Secuencia
Mutable, puede contener
[4.0, 'string', True]
diversos tipos
Tuple
Secuencia
Inmutable
set
Conjunto
Mutable, sin orden, no
set([4.0, 'string', True])
contiene duplicados
(4.0, 'string', True)
frozenset Conjunto
Inmutable, sin orden, no frozenset([4.0,
contiene duplicados
True])
dict
Mapping
Grupo de pares claves,
{'key1': 1.0, 'key2': False}
valor
int
Número
entero
Precisión fija
42
long
Número
Precisión arbitraria
42L
NANCY BEATRIZ URGILÉS TAPIA
'string',
ó
40
UNIVERSIDAD CATÓLICA DE CUENCA
entero
APLICACIONES WEB CLIENTE-SERVIDOR
456966786151987643L
float
Número
Coma flotante
3.1415927
bool
Booleano
Valor
boobleano
True
verdadero o falso
Tabla 3.1.-Tipos de datos
3.3.3.1 Listas y Tuplas
Las listas son estructuras de datos que almacenan secuencias de
cualquier tipo de datos. Son ampliamente utilizadas en Python y son objetos
mutables, esto es, que se puede modificar cada uno de sus componentes.
Para declarar una lista, basta usar los corchetes [ ], ejemplo:
>>> lista = ['pepe',1,6.5,[1,2],38264274572663375L]
>>> lista[0]
'pepe'
>>> lista[3]
[1, 2]
>>> lista[:3]
['pepe', 1, 6.5]
>>> lista[1:3]
>>> lista[1:]
[1, 6.5]
[1, 6.5, [1, 2], 38264274572663375L]
>>> lista.append('nuevo_elemento')
>>> lista ['pepe', 1, 6.5, [1, 2],
38264274572663375L, 'nuevo_elemento']
>>> lista[2] = '3265732'
>>> lista ['pepe',1,'3265732',[1,2],
38264274572663375L,'nuevo_elemento']
Las tuplas son similares a las listas, salvo que en este caso no son
mutables, es decir, no podemos modificar sus elementos. Para declarar una
tupla se deben usar los paréntesis (), como se demuestra a continuación:
NANCY BEATRIZ URGILÉS TAPIA
41
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
>>> tupla = (1,4324,233.45,'hola')
>>> tupla[1] = 'noooo'
Traceback (most recent call last):
File "<stdin>", line 1, in?
TypeError: object doesn't support item assignment
>>> otratupla = (tupla, ('a', 'b'))
anidar tuplas.
# es posible
Tanto las listas como las tuplas pueden contener elementos de
diferentes tipos.
Para acceder a estos elementos, se utiliza un índice entero. También
se pueden utilizar índices negativos para acceder elementos a partir del final
del array.
También se puede usar a Python como calculadora:
>>> 4 + 8
12
>>> 3 * 9
27
>>>384621049783050943275943859347698456*439857943347
55147354874532874587345
1691786239257489967835310375315369464750065917369468
9166079616493639320L
>>>
>>> 3 / 2
1
>>> 3.0 / 2
1.5
NANCY BEATRIZ URGILÉS TAPIA
42
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
>>> 10 % 3
1
3.3.3.2 Diccionarios
Los diccionarios o memorias asociativas son pares clave-valor donde
clave puede ser cualquier objeto no mutable. Los diccionarios se declaran
entre llaves {}, la que puede contener pares de valores separados por dos
puntos (:). Las claves han de ser únicas dentro de un diccionario.
El mejor modo de comprender su funcionamiento es viendo lo
siguiente:
>>> dict = {"dia": 24, "mes": "agosto"}
>>> for k in dict:
...
print "%s=%s" % (k, dict[k])
dia=24
mes=agosto
Ejemplo 3.1.-Recorre la estructura de diccionario, imprime su contenido de la forma
clave=valor
>>> dic = { 233 : 'hola, que tal' , 'pepe' :
'gracias por todo' , (1,2) : 'pues
si'}
>>> dic
{233: 'hola, que tal', (1, 2): 'pues si', 'pepe':
'gracias por todo'}
>>> dic.keys()
[233, (1, 2), 'pepe']
NANCY BEATRIZ URGILÉS TAPIA
43
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
>>> dic.has_key(233)
1
Ejemplo 3.2.-Muestra una cadena con clave y valor
3.3.3.3 Conjuntos o Sets
Los conjuntos se declaran mediante la instrucción set, no tienen
orden ni permiten tener elementos repetidos.
>>> conj = set(['a','b','a'])
>>> print conj
set('a','b')
3.3.4
Funciones
Una función se define con la palabra reservada def seguida del
identificador de la función, y entre paréntesis los parámetros sin indicar su
tipo. Si no hay parámetros se ponen los paréntesis vacíos (). Otra forma de
crear funciones, aunque más limitada, es con la palabra clave lambda, que
aparece en lenguajes funcionales como Lisp.
>>> f = lambda x: x+2
>>> f(4)
6
También se le puede llamar a una función pasando parámetros de
cualquier tipo e incluso se puede hacer cosas como:
>>> f(f('pepe'))
NANCY BEATRIZ URGILÉS TAPIA
44
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
pepe
None
Dado que no se ha especificado un valor de retorno para f, la
segunda llamada se hace con un argumento vacío (None).
Cabe mencionar que todo en Python son objetos, incluso las
funciones. Siendo sus atributos y métodos los siguientes:
>>> dir(f)
['__call__', '__class__', '__delattr__', '__dict__',
'__doc__', '__get__',
'__getattribute__', '__hash__', '__init__',
'__name__', '__new__', '__reduce__',
'__repr__', '__setattr__', '__str__',
'func_closure', 'func_code',
'func_defaults', 'func_dict', 'func_doc',
'func_globals', 'func_name']
Un atributo interesante es __doc__. En este atributo se almacenan las
llamadas cadenas de documentación. Estas cadenas se colocan en la
siguiente línea, a la definición de la función. Sirven para aclarar qué hace la
función y son ampliamente utilizadas por los Entornos Integrados de
Desarrollo (IDEs) para presentar ayuda contextual. Un ejemplo de __doc__
sería:
>>> def g():
...
"Esto no hace nada"
...
return 7
...
>>> g()
NANCY BEATRIZ URGILÉS TAPIA
45
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
7
>>> g.__doc__
'Esto no hace nada'
También se puede crear un alias a esta función:
>>> def f():
...
print 'Hola'
...
>>> f()
Hola
>>> mi_alias = f
>>> mi_alias()
Hola
No se puede olvidar que las funciones en Python admiten argumentos
por defecto, por clave e incluso admiten números indeterminados de
argumentos.
3.4
BIBLIOTECA ESTÁNDAR
Python tiene una gran librería estándar, usada para una diversidad de
tareas. Esto viene de la filosofía "baterías incluidas" ("batteries included")
para módulos de Python. Los módulos de la biblioteca estándar pueden ser
mejorados por módulos personalizados escritos tanto en C o en Python.
Debido a la gran variedad de herramientas incluidas en la biblioteca estándar
combinada con la habilidad de usar lenguajes de bajo nivel como C y C++,
NANCY BEATRIZ URGILÉS TAPIA
46
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
los cuales son capaces de interactuar con otras bibliotecas, Python es un
lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes
menos elegantes.
3.5 IMPLEMENTACIONES
Python posee diversas implementaciones tales como:
-
CPython.- Es la implementación original, disponible para varias
plataformas en el sitio oficial de Python.
-
IronPython.- Se utiliza para .NET
-
Stackless Python.- Es la variante de CPython que trata de no usar el
stack de C.
-
Jython.- Es la implementación hecha en Java.
-
Pippy.- Es realizada para Palm.
-
PyPy.- Es Python totalmente escrito en Python.
3.6 VENTAJAS
Python presenta las siguientes ventajas:
-
Libre y fuente abierta.
-
Lenguaje de propósito general.
-
Gran cantidad de funciones y librerías.
NANCY BEATRIZ URGILÉS TAPIA
47
FACULTAD INGENIERÍA DE SISTEMAS
-
Sencillo y rápido de programar.
-
Multiplataforma.
-
Licencia de código abierto (Opensource).
-
Orientado a Objetos.
-
Portable.
APLICACIONES WEB CLIENTE-SERVIDOR
3.7 DESVENTAJAS
La principal desventaja que presenta este lenguaje es:
-
Lentitud por ser un lenguaje interpretado.
3.8 LICENCIAS
Python posee una licencia de código abierto, denominada Python
Software Foundation License, que es compatible con la licencia GPL. Esta
licencia no obliga a liberar el código fuente al distribuir los archivos binarios.
NANCY BEATRIZ URGILÉS TAPIA
48
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
CAPÍTULO IV: ANÁLISIS DEL PHP
4.1 VISIÓN GENERAL
PHP es un lenguaje de programación interpretado, diseñado
originalmente para la creación de páginas Web dinámicas. Es usado
principalmente en interpretación del lado del servidor (server-side scripting)
pero actualmente puede ser utilizado desde una interfaz de línea de
comandos o en la creación de otros tipos de programas incluyendo
aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK, y es
considerado un lenguaje interpretado de alto nivel embebido en páginas
HTML y ejecutado en el servidor.
Generalmente éste se ejecuta en un servidor Web, tomando el código
en PHP como su entrada y creando páginas Web como salida, es decir, su
interpretación y ejecución se da en el servidor Web, en el cual se encuentra
almacenado el script, en donde el cliente sólo recibe el resultado de la
ejecución, cuando el cliente hace una petición al servidor para que le envíe
una página Web, el servidor ejecuta el intérprete de PHP. Éste procesa el
script solicitado que generará el contenido de manera dinámica, pudiendo
modificar el contenido a enviar, (por ejemplo obteniendo información de una
base de datos). El resultado es enviado por el intérprete al servidor, quien a
su vez se lo envía al cliente. Mediante extensiones es posible la generación
de archivos PDF, Flash, así como imágenes en diferentes formatos.
También puede ser desplegado en la mayoría de los servidores Web y en
casi todos los sistemas operativos y plataformas sin costo alguno.
NANCY BEATRIZ URGILÉS TAPIA
49
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
El fácil uso y el gran parecido que posee PHP con los lenguajes más
comunes de programación estructurada, como C y Perl, permiten a la
mayoría de los programadores experimentados crear aplicaciones complejas
con una curva de aprendizaje muy suave o corta. También este lenguaje
permite a los desarrolladores involucrarse con éstas aplicaciones de
contenido dinámico sin tener que aprender todo un nuevo grupo de
funciones y prácticas.
También se lo puede usar desde la línea de órdenes o comandos, de
la misma manera que se lo puede hacer en Perl o Python, a esta versión de
PHP se la llama PHP CLI (Command Line Interface).
Permite de igual forma la conexión a diferentes tipos de servidores de
bases de datos tales como MySQL, Postgres, Oracle, ODBC, IBM DB2,
Microsoft SQL Server, Firebird y SQLite; permitiendo la creación de
aplicaciones Web muy robustas.
PHP tiene la capacidad de ser ejecutado en la mayoría de los
sistemas operativos, tales como UNIX (y de ese tipo, como Linux o Mac OS
X) y Windows, y puede interactuar con los servidores de Web más populares
ya que existe en versión CGI, módulo para Apache, e ISAPI. Del mismo
modo este lenguaje es una alternativa a las tecnologías de Microsoft como
ASP y ASP.NET, que utiliza C#, VB.NET como lenguajes; a ColdFusion de
la compañía Adobe (antes Macromedia), a JSP/Java de Sun Microsystems,
y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de
los sistemas libres, bajo la licencia GNU, existe además un compilador
(Entorno de Desarrollo Integrado (IDE)) comercial llamado Zend Studio.
NANCY BEATRIZ URGILÉS TAPIA
50
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Últimamente, CodeGear (la división de lenguajes de programación de
Borland) ha sacado al mercado un entorno integrado de desarrollo para
PHP, denominado Delphi for PHP, Existe un módulo para Eclipse uno de
los IDE más populares.
4.2 HISTORIA DE LAS VERSIONES
PHP fue originalmente diseñado en Perl, seguidos por la escritura de
un grupo de CGI binarios escritos en el lenguaje C por el programador
danés-canadiense Rasmus Lerdorf en el año 1994.
PHP es un acrónimo recursivo que significa PHP Hypertext Preprocessor, inicialmente PHP Tools ó Personal Home Page Tools publicado el
8 de junio de 1995 después de que Lerdorf lo combinara con su propio Form
Interpreter para crear PHP/FI. Sin embargo la implementación principal de
PHP es producida ahora por The PHP Group y sirve como el estándar de
facto para PHP al no haber una especificación formal.
Fue publicado bajo la PHP License, la Free Software Foundation
considera esta licencia como software libre.
PHP se encuentra instalado en más de 20 millones de sitios Web y en
un millón de servidores, aunque el número de sitios en PHP ha declinado
desde agosto de 2005. Es también el módulo Apache más popular entre las
computadoras que utilizan Apache como servidor Web. La más reciente
versión principal del PHP fue la versión 5.2.6 de 1 de mayo de 2008.
NANCY BEATRIZ URGILÉS TAPIA
51
FACULTAD INGENIERÍA DE SISTEMAS
4.2.1
APLICACIONES WEB CLIENTE-SERVIDOR
PHP 3
Dos programadores israelíes del Technion, Zeev Suraski y Andi
Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año
1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la
forma actual. Inmediatamente comenzaron experimentaciones públicas de
PHP 3 y fue publicado oficialmente en junio del 1998.
Para 1999, Suraski y Gutmans reescribieron el código de PHP,
produciendo lo que hoy se conoce como Zend Engine o motor Zend, un
portmanteau de los nombres de ambos, Zeev y Andi. También fundaron
Zend Technologies en Ramat Gan, Israel.
4.2.2
PHP 4
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend
Engine 1.0. El día 13 de julio de 2007 se anunció la suspensión del soporte y
desarrollo de la versión 4 de PHP, a pesar de lo anunciado se ha liberado
una nueva versión con mejoras de seguridad, la 4.4.8 publicada el 13 de
enero del 2008.
4.2.3
PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend
Engine II (o Zend Engine 2). La versión más reciente de PHP es la 5.2.6 (1
NANCY BEATRIZ URGILÉS TAPIA
52
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
de mayo de 2008), que incluye todas las ventajas que provee el nuevo Zend
Engine 2 como:
-
Mejor soporte para la Programación Orientada a Objetos, que en
versiones anteriores era extremadamente rudimentario, con PHP Data
Objects.
-
Mejoras de rendimiento.
-
Mejor soporte para MySQL con extensión completamente reescrita.
-
Mejor soporte a XML ( XPath, DOM, etc. ).
-
Soporte nativo para SQLite.
-
Soporte integrado para SOAP.
-
Iteradores de datos.
-
Manejo de excepciones.
4.2.4
PHP 6
Está previsto el lanzamiento en breve de la rama 6 de PHP. Cuando
se lance esta nueva versión quedarán solo dos ramas activas en desarrollo
(PHP 5 y 6), pues se abandonó el desarrollo y soporte de PHP 4 el 13 de
julio de 2007.
Las diferencias que se encontrarán frente a PHP 5.* son:
-
Soporte de Unicode.
NANCY BEATRIZ URGILÉS TAPIA
53
FACULTAD INGENIERÍA DE SISTEMAS
-
APLICACIONES WEB CLIENTE-SERVIDOR
Limpieza de funcionalidades obsoletas como: register_globals,
safe_mode.
-
PECL.
-
Mejoras en orientación a objetos.
A continuación se resume las versiones de PHP:
Versión Fecha
Cambios más importantes
Oficialmente
PHP 1.0 8 de Junio de 1995
llamado
"Herramientas
personales de trabajo (PHP Tools)". Es
el primer uso del nombre "PHP".
PHP
Versión
2
Considerado por el creador como la
16 de Abril de 1996
(PHP/FI)
"más rápida y simple herramienta" para
la
creación
de
páginas
Webs
dinámicas.
Desarrollo movido de una persona a
PHP 3.0 6 de Junio de 1998
muchos desarrolladores. Zeev Suraski
y Andi Gutmans reescriben la base
para esta versión.
Se agregan avanzadas de dos etapas
PHP 4.0 22 de Mayo de 2000
analizar/ejecutar la etiqueta análisissistema llamado entorno motor Zend.
PHP 4.1 10 de Diciembre de 2001
PHP 4.2 22 de Abril de 2002
NANCY BEATRIZ URGILÉS TAPIA
Introducidas las variables superglobals
($_GET, $_SESSION, etc.).
Se deshabilitan register_globals por
defecto.
54
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
PHP 4.3 27 de Diciembre de 2002 Introducido la CLI, en adición a la CGI.
PHP 4.4 11 de Julio de 2005
No hubo cambios importantes.
Motor Zend II con un nuevo modelo de
PHP 5.0 13 de Julio de 2004
PHP 5.1
25
de
Noviembre
objetos.
de
2005
PHP 5.2 2 de Noviembre de 2006
PHP
5.2.4
PHP
5.2.5
PHP 6
No se realizó cambios importantes.
Habilitado el filtro de extensiones por
defecto.
30 de agosto de 2007
Versión
centrada
8 de Noviembre de 2007 estabilidad
(más
en
mejorar
de
60
la
errores
solucionados).
S/D
Tabla 4.1.-Versiones de PHP
4.3 CARACTERÍSTICAS
-
Posee una sintaxis semejante de la de C.
-
Dispone de una alta conectividad con la mayoría de Sistemas de
Gestión de Base de Datos.
-
Es Open-Source y de obtención gratuita.
-
Portable y multiplataforma (W95, 98, 2000, XP, NT, Unix, Linux, etc.)
lo cual permite su desarrollo desde S.O. de base heterogéneos.
NANCY BEATRIZ URGILÉS TAPIA
55
FACULTAD INGENIERÍA DE SISTEMAS
-
APLICACIONES WEB CLIENTE-SERVIDOR
Proporciona soporte para la mayoría de protocolos de comunicación
de Internet (HTTP, IMAP, FTP, LDAP,INMP, etc).
-
Desde su versión 4, incorpora la posibilidad de desarrollar según la
metodología de orientación a objetos, si bien es desde la versión 5
cuando todos los conceptos de este paradigma están disponibles.
-
Se caracteriza por ser un lenguaje muy rápido.
Si bien PHP no obliga a quien lo usa a seguir una determinada
metodología a la hora de programar, al igual que muchos otros lenguajes
tampoco lo hacen, aún estando dirigido a alguna en particular, el
programador puede aplicar en su trabajo cualquier técnica de programación
y/o desarrollo que le permita escribir código ordenado, estructurado y
manejable. Un ejemplo de esto son los desarrollos que en PHP se han
hecho del patrón de diseño Modelo Vista Controlador (o MVC), que
permiten separar el tratamiento y acceso a los datos, la lógica de control y la
interfaz de usuario en tres componentes independientes.
4.3.1 Ventajas
-
Es un lenguaje multiplataforma: Linux, Windows, entre otros.
-
Capacidad de conexión con la mayoría de los manejadores de base
de datos que se utilizan en la actualidad, destaca su conectividad con
MySQL, PostgreSQL, Oracle, MS SQL Server.
NANCY BEATRIZ URGILÉS TAPIA
56
UNIVERSIDAD CATÓLICA DE CUENCA
-
APLICACIONES WEB CLIENTE-SERVIDOR
Capacidad de expandir su potencial utilizando la enorme cantidad de
módulos (llamados ext's o extensiones).
-
Posee una amplia documentación en su página oficial, entre la cual se
destaca que todas las funciones del sistema están explicadas y
ejemplificadas en un único archivo de ayuda.
-
Es libre, por lo que se presenta como una alternativa de fácil acceso
para todos.
-
Permite las técnicas de Programación Orientada a Objetos.
-
Biblioteca nativa de funciones sumamente amplia e incluida.
-
No requiere definición de tipos de variables, ni manejo detallado del
bajo nivel.
-
Tiene manejo de excepciones (desde php5).
-
Leer y manipular datos desde diversas fuentes, incluyendo datos que
pueden ingresar los usuarios desde formularios HTML.
-
Muy fácil de aprender.
4.3.2 Desventajas
-
No posee una abstracción de base de datos estándar, sino bibliotecas
especializadas para cada motor (a veces más de una para el mismo
motor).
-
No posee adecuado manejo de internacionalización, Unicode, etc.
NANCY BEATRIZ URGILÉS TAPIA
57
FACULTAD INGENIERÍA DE SISTEMAS
-
APLICACIONES WEB CLIENTE-SERVIDOR
Por su diseño dinámico no puede ser compilado y es muy difícil de
optimizar.
-
Por sus características favorece la creación de código desordenado y
complejo de mantener.
-
Se necesita instalar un servidor Web.
-
Todo el trabajo lo realiza el servidor y no delega al cliente. Por tanto
puede ser más ineficiente a medida que las solicitudes aumenten de
número.
-
La legibilidad del código puede verse afectada al mezclar sentencias
HTML y PHP.
-
La programación orientada a objetos es aún muy deficiente para
aplicaciones grandes.
-
Dificulta la modularización.
-
Dificulta la organización por capas de la aplicación.
4.4 USOS
Los principales usos del PHP son los siguientes:
-
Programación
de
páginas
Web
dinámicas,
habitualmente
en
combinación con el motor de base de datos MySQL, aunque cuenta
con soporte nativo para otros motores, incluyendo el estándar ODBC,
lo que amplía en gran medida sus posibilidades de conexión.
NANCY BEATRIZ URGILÉS TAPIA
58
UNIVERSIDAD CATÓLICA DE CUENCA
-
APLICACIONES WEB CLIENTE-SERVIDOR
Programación en consola, al estilo de Perl, en Linux, Windows y
Macintosh.
-
Creación de aplicaciones gráficas independientes del navegador, por
medio de la combinación de PHP y GTK (GIMP Tool Kit), que permite
desarrollar aplicaciones de escritorio tanto para los sistemas
operativos basados en Unix, como para Windows y Mac OS X.
4.5 SEGURIDAD
PHP es un poderoso lenguaje e intérprete, ya sea incluido como parte
de un servidor Web en forma de módulo o ejecutado como un binario CGI
separado, es capaz de acceder a archivos, ejecutar comandos y abrir
conexiones de red en el servidor. Estas propiedades hacen que cualquier
cosa que sea ejecutada en un servidor Web sea insegura por naturaleza.
PHP está diseñado específicamente para ser un lenguaje más seguro
para escribir programas CGI que Perl o C, y con la selección correcta de
opciones de configuración en tiempos de compilación y ejecución, siguiendo
algunas prácticas correctas de programación.
4.6 APLICACIONES DESARROLLADAS CON PHP
Las principales aplicaciones desarrolladas con PHP son las
siguientes:
-
Burning Borrad.
NANCY BEATRIZ URGILÉS TAPIA
59
FACULTAD INGENIERÍA DE SISTEMAS
-
CMSformE.
-
Drupal.
-
Gallery Project.
-
Mambo Open Source.
-
MediaWiki (desarrollado para Wikipedia).
-
Moodle.
-
Phorum.
-
phpMyAdmin.
-
PHP-Nuke.
-
phpPgAdmin.
-
PhpWiki.
-
PmWiki.
-
PostNuke.
-
Smarty.
-
SPIP.
-
SugarCRM.
-
vBulletin.
-
WordPress.
-
Xaraya.
NANCY BEATRIZ URGILÉS TAPIA
APLICACIONES WEB CLIENTE-SERVIDOR
60
UNIVERSIDAD CATÓLICA DE CUENCA
-
Xoops.
-
Joomla.
-
MODx.
-
PhpBB.
APLICACIONES WEB CLIENTE-SERVIDOR
A continuación se detalla un ejemplo sobre el funcionamiento de este
lenguaje:
Simulador.-Cuando presiona el botón "Ejecutar el programa" en
el servidor se graba el programa que contiene la caja de texto y se
visualiza el resultado en otra página.
Figura4.1 Muestra el código que visualiza las opciones para la realización de la suma
o resta de dos números utilizando el lenguaje PHP mediante el botón ‘Ejecutar el
programa’.
Este código se detalla a continuación:
NANCY BEATRIZ URGILÉS TAPIA
61
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.php" method="post">
Ingrese primer valor:
<input type="text" name="valor1">
<br>
Ingrese segundo valor:
<input type="text" name="valor2">
<br>
<input type="checkbox" name="check1">sumar
<br>
<input type="checkbox" name="check2">restar
<br>
<input type="submit" name="operar">
#representa
al
botón ‘Enviar consulta’
</form>
</body>
</html>
Cuando el usuario da un clic en el Botón ‘Ejecutar el programa’,
aparece la siguiente página:
NANCY BEATRIZ URGILÉS TAPIA
62
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Figura4.2 Muestra la página que se origina al dar un clic en ‘Ejecutar el programa’.
Aquí el usuario debe ingresar los números solicitados, dar un clic en
el checkbox sumar o restar, luego un clic en el botón ‘Enviar consulta’, en
donde se ejecuta el código de la segunda página programada con lenguaje
PHP, la misma que realiza la operación designada por el usuario.
NANCY BEATRIZ URGILÉS TAPIA
63
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
A continuación se presenta la siguiente página:
Figura4.3 Muestra el código requerido para comprobar que operación escogió el usuario.
Cuyo código se detalla a continuación:
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
if (isset($_REQUEST['check1']))
{
$suma=$_REQUEST['valor1'] + $_REQUEST['valor2'];
echo "La suma es:".$suma."<br>";
}
if (isset($_REQUEST['check2']))
{
NANCY BEATRIZ URGILÉS TAPIA
64
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
$resta=$_REQUEST['valor1'] - $_REQUEST['valor2'];
echo "La resta es:".$resta;
}
?>
</body>
</html>
Luego aparece la página, visualizando el resultado de la operación
seleccionada:
Figura4.4 Muestra el resultado final de la operación realizada por el usuario.
NANCY BEATRIZ URGILÉS TAPIA
65
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
ESTUDIO DE LOS LENGUAJES INTERPRETADOS A
LADO DEL CLIENTE
CAPÍTULO V: ANÁLISIS DEL VBSCRIPT
5.1 INTRODUCCIÓN
VBScript es la abreviatura de Visual Basic Script Edition y es un
lenguaje interpretado por el Windows Scripting Host de Microsoft. Está
basado en Visual Basic, un popular lenguaje para crear aplicaciones
Windows. Tanto su sintaxis como la manera de trabajar están muy
inspirados en él. Sin embargo, no todo lo que se puede hacer en Visual
Basic se puede realizar en Visual Basic Script, pues este último es una
versión reducida del primero.
Del mismo modo, VBScript, es un lenguaje de programación de
scripts del lado del cliente, pero sólo compatible con Internet Explorer y otros
sistemas Microsoft, por lo que en principio es una ventaja para
programadores experimentados en éstos sistemas y sólo funciona
correctamente con el navegador Internet Explorer 4.0 y superiores, por lo
que será necesario disponer del mismo. Los usuarios de otros navegadores
no podrán disfrutar de la potencia y versatilidad del VBScript.
Cabe mencionar que los lenguajes de script son versiones recortadas
de otros lenguajes. Estas versiones se usan para su integración en páginas
Web. Un código escrito en un lenguaje de script se incorpora directamente
dentro de un código HTML y se ejecuta interpretado, no compilado. Para
insertar código VBScript en una página HTML se deberá añadir al tag
NANCY BEATRIZ URGILÉS TAPIA
66
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
<SCRIPT> el parámetro LANGUAGE="VBScript", que determina cual de los
lenguajes de script se está utilizando. Cuando se dice que los lenguajes de
script se ejecutan interpretados y no compilados, significa que un código
escrito en un lenguaje de script no sufre ninguna transformación previa a su
ejecución. Cada línea de código es traducida a lenguaje máquina justo antes
de su ejecución. Después es ejecutada y la traducción no se conserva en
ningún sistema de almacenamiento (como discos, cintas, etc.). Si es
necesaria otra ejecución, el intérprete se verá obligado a realizar una nueva
traducción de cada línea de código.
También se debe indicar que VBScript ha logrado un apoyo
significativo por parte de los administradores de Windows como herramienta
de automatización, ya que, conjunta y paralelamente a las mejoras
introducidas
en
los
Sistemas
Operativos
Windows
donde
opera
fundamentalmente, permite más margen de actuación y flexibilidad que el
lenguaje batch (o de proceso por lotes) desarrollado a finales de los años
1970 para el MS-DOS.
En general es uno de los lenguajes más básicos y es, sin duda
alguna, la base del Visual Basic 6, ya que todo lo que se aprende ahí, luego
puede ser usado en él sin ningún cambio. En otras palabras, es el lenguaje
que se suele aprender antes del Visual Basic 6. Es por eso que todo
programador de Visual Basic que se precie debe conocerlo.
NANCY BEATRIZ URGILÉS TAPIA
67
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
5.2 ¿PARA QUÉ SIRVE?
VBScript es el lenguaje que sirve para escribir algunos famosos
gusanos de red, como I Love You. Esto se debe a varias razones. Primero,
el icono parecido a un pergamino que representa a los ficheros .vbs puede
llevar a pensar a los usuarios inexpertos que se trata de un fichero de texto.
Segundo, es fácil escribir un gusano informático en VBScript que se
propague por correo electrónico, necesitando para ello pocas líneas de
código. Aunque Microsoft ha solucionado los agujeros de seguridad
explotados por dichos programas maliciosos, ésta solución no significa que
esté erradicado, solo ha complicado el proceso; pues si por ejemplo el I Love
You se propagaba a través del Outlook, ahora, si se utiliza el mismo
procedimiento sale un mensaje de advertencia, por lo que se suele emplear
métodos como el envío mediante un servidor smtp, más complejo de
programar que por el otro método.
También VBScript es compatible y se puede usar tal cual en VB6, a
excepción de las funciones siguientes, que tiene su similar en VB6 y difieren:
-
Execute (no existe en VB6, y no tiene similar).
-
Do...Loop Until (en este caso se cambia el orden poniendo Do
Until...Loop).
-
VBScript.Sleep (esto se sustituye por una API llamada Sleep).
-
VBScript.Quit (se sustituye por UnLoad Me)
Por lo demás, ambos son exactamente idénticos.
NANCY BEATRIZ URGILÉS TAPIA
68
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
VBScript además puede usarse para crear aplicaciones HTML
independientes (extensión .hta), que necesitan Internet Explorer 5.0 o
superior para poder ser ejecutados. Aunque los desarrolladores de
aplicaciones en Web suelen preferir JavaScript debido a su mayor
compatibilidad con otros navegadores de Internet, ya que VBScript sólo está
disponible para el navegador de Microsoft Internet Explorer, y no en otros
como Firefox y Opera.
5.2.1 ¿PARA QUÉ SE USA OPTION EXPLICIT EN VBSCRIPT?
Option Explicit es una sentencia optativa y recomendada que se
ingresa al principio del código VBScript, ya sea basado en ASP, VBS, HTML,
etc, de cada página. Las variables en VBScript no necesitan ser declaradas
para usarlas, pero es una buena costumbre hacerlo, pues en todos los
demás lenguajes es necesario. Option Explicit sirve para que las variables
deban ser declaradas si o sí. Al no declarar las variables se deja el código a
libre albedrío del intérprete. Al declarar las variables se deja de manera
explícita la única manera de proceder.
5.3 MODO DE FUNCIONAMIENTO
VBScript es interpretado por el motor de scripting vbscript.dll, que
puede ser invocado por el motor ASP (Active Server Pages), asp.dll en un
entorno Web, por wscript.exe en un entorno Windows de interfaz gráfica, por
cscript.exe es un entorno de línea de comandos y por iexplorer.exe cuando
NANCY BEATRIZ URGILÉS TAPIA
69
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
se trata de scripts a nivel de cliente (similar al Javascript). Cuando el código
fuente VBScript se guarda en ficheros independientes, éstos tienen
típicamente la extensión .vbs.
Cuando se emplea en Internet Explorer, VBScript funciona de forma
muy similar a JavaScript, procesando código contenido en el documento
HTML, es decir que el modo de funcionamiento de Visual Basic Script para
construir efectos especiales en páginas Web es muy similar al utilizado en
JavaScript y los recursos a los que se puede acceder también son los
mismos: el navegador.
No se debe utilizar este lenguaje en la mayoría de las ocasiones,
aunque un caso donde tendría sentido utilizar Visual Basic Script sería la
construcción de una Intranet donde se conozca con toda seguridad que los
navegadores que se van a conectar serán siempre Internet Explorer. En este
caso, un programador habitual de Visual Basic tendría más facilidades para
realizar los scripts utilizando Visual Basic Script en lugar de JavaScript.
5.4 CRECIMIENTO EN SU USO
El crecimiento del uso de las tecnologías de Internet ha aportado un
significativo avance para este lenguaje, dado que es parte fundamental de la
ejecución de aplicaciones de servidor programadas en ASP, las cuales están
en auge en el período 1997-2003, declinando actualmente en favor de
tecnologías de código gestionado y máquinas virtuales, más seguras en la
ejecución de procesos, y por tanto, más adaptadas para ejecuciones en
NANCY BEATRIZ URGILÉS TAPIA
70
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
entornos públicamente accesibles y distribuidos. Sin embargo Microsoft ha
intentado competir mediante esta tecnología también en entornos de cliente,
donde el lenguaje más utilizado es Javascript o su versión estandarizada
ECMAScript, sin éxito. Actualmente Microsoft no ha puesto a disposición
pública nuevas versiones del lenguaje, en favor de la tecnología .NET en la
que se incluye el lenguaje hermano que es Visual Basic, dentro del entorno
de ejecución de la plataforma .NET (CLR, o Common Language Runtime).
No obstante sigue siendo muy útil en gestión de estaciones de trabajo y
servidores en Windows.
NANCY BEATRIZ URGILÉS TAPIA
71
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
CAPÍTULO VI: ANÁLISIS DEL JAVASCRIPT
6.1 INTRODUCCIÓN
JavaScript es un lenguaje de programación interpretado, al igual que
los anteriores lenguajes lo requiere compilación, es utilizado principalmente
en páginas Web, con una sintaxis semejante a la del lenguaje Java y el
lenguaje C.
Del mismo modo, JavaScript es un lenguaje orientado a objetos
propiamente dicho, ya que dispone de Herencia, si bien ésta se realiza
siguiendo el paradigma de programación basada en prototipos, ya que las
nuevas clases se generan clonando las clases base (prototipos) y
extendiendo su funcionalidad.
Todos los navegadores modernos interpretan el código JavaScript
integrado dentro de las páginas Web. Para interactuar con una página Web
se provee al lenguaje JavaScript de una implementación del DOM
(Document Object Model).
Se trata de un lenguaje de programación del lado del cliente, porque
es el navegador el que soporta la carga de procesamiento. Gracias a su
compatibilidad con la mayoría de los navegadores modernos, es el lenguaje
de programación del lado del cliente más utilizado.
Con JavaScript podemos crear efectos especiales en las páginas y
definir interactividades con el usuario. El navegador del cliente es el
encargado de interpretar las instrucciones JavaScript y ejecutarlas para
realizar estos efectos e interactividades, de modo que el mayor recurso, y tal
NANCY BEATRIZ URGILÉS TAPIA
72
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
vez el único, con que cuenta este lenguaje es el propio navegador.
JavaScript es el siguiente paso, después del HTML, que puede utilizar un
programador de la Web que decida mejorar sus páginas y la potencia de sus
proyectos. Es un lenguaje de programación bastante sencillo y pensado para
hacer las cosas con rapidez, a veces con ligereza. Incluso las personas que
no tengan una experiencia previa en la programación podrán aprender este
lenguaje con facilidad y utilizarlo en toda su potencia con sólo un poco de
práctica.
Entre las acciones típicas que se pueden realizar en JavaScript
tenemos dos vertientes:
-
Los efectos especiales sobre páginas Web, para crear contenidos
dinámicos y elementos de la página que tengan movimiento, cambien
de color o cualquier otro dinamismo.
-
JavaScript nos permite ejecutar instrucciones como respuesta a las
acciones del usuario, con lo que podemos crear páginas interactivas
con programas como calculadoras, agendas, o tablas de cálculo.
JavaScript es un lenguaje con muchas posibilidades, permite la
programación de pequeños scripts, pero también de programas más
grandes, orientados a objetos, con funciones, estructuras de datos
complejas, etc. Además, JavaScript pone a disposición del programador
todos los elementos que forman la página Web, para que éste pueda
acceder a ellos y modificarlos dinámicamente.
NANCY BEATRIZ URGILÉS TAPIA
73
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
6.2 HISTORIA Y DENOMINACIÓN
El lenguaje fue inventado por Brendan Eich en la empresa Netscape
Communications, que es la que desarrolló los primeros navegadores Web
comerciales. JavaScript fue presentado y desarrollado en el navegador
Netscape versión 2.0B3 el 4 de diciembre de 1995. Tradicionalmente, se
venía utilizando en páginas Web HTML, para realizar tareas y operaciones
en el marco de la aplicación únicamente cliente, sin acceso a funciones del
servidor. JavaScript se ejecuta en el agente de usuario al mismo tiempo que
las sentencias van descargándose junto con el código HTML.
Los autores inicialmente lo llamaron Mocha y más tarde LiveScript
pero fue rebautizado como JavaScript en un anuncio conjunto entre Sun
Microsystems y Netscape. El cambio de nombre de LiveScript a JavaScript
coincidió aproximadamente con el momento en que Netscape agregó
soporte para la tecnología Java en su navegador Web Netscape Navigator.
La denominación ha causado confusión, dando la impresión de que el
lenguaje es un prolongación de Java, y se ha caracterizado por muchos
como una astucia de marketing de Netscape para obtener prestigio e innovar
en lo que eran los nuevos lenguajes de programación Web.
Microsoft dio como nombre a su dialecto de JavaScript a JScript para
evitar cuestiones relacionadas con el trademark. JScript fue adoptado en la
versión 3.0 de Internet Explorer, liberado en agosto de 1996, e incluyó
compatibilidad con el Efecto 2000 con las funciones de fecha, a diferencia de
los que se basaban en java.util.Date en ese momento. Los lenguajes pueden
NANCY BEATRIZ URGILÉS TAPIA
74
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
parecer tan similares que los términos "JavaScript" y "JScript" a menudo se
utilizan indistintamente, pero la especificación de JScript es incompatible con
la de ECMA en muchos aspectos.
En junio 1997 los autores propusieron JavaScript para que fuera
adoptado como estándar de la European Computer Manufacturers'
Association (ECMA), que a pesar de su nombre no es europeo sino
internacional, con sede en Ginebra, a este lenguaje se le adoptó con el
nombre de ECMAScript. Poco después también lo fue como un estándar
ISO.
JScript es la implementación de ECMAScript de Microsoft, muy similar
al JavaScript de Netscape, pero con ciertas diferencias en el modelo de
objetos del navegador que hacen a ambas versiones con frecuencia
incompatibles.
Para evitar estas incompatibilidades, el World Wide Web Consortium
diseñó el estándar Document Object Model, que incorporan Konqueror, las
versiones 6 de Internet Explorer y Netscape Navigator, Opera versión 7, y
Mozilla desde su primera versión.
6.3 SINTAXIS
La sintaxis de un lenguaje de programación se define como el
conjunto de reglas que deben seguirse al escribir el código fuente de los
programas para considerarse como correctos para ese lenguaje de
programación.
NANCY BEATRIZ URGILÉS TAPIA
75
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
La sintaxis de JavaScript es muy similar a la de otros lenguajes como
Java y C.
<script type="text/javascript">.... </script>
Ejemplo6.1 Sintaxis de declaración en JavaScript.
Las normas básicas que definen la sintaxis de este lenguaje son las
siguientes:
-
No se tienen en cuenta los espacios en blanco y las nuevas líneas,
como sucede con XHTML, el intérprete de JavaScript ignora cualquier
espacio en blanco, por lo que el código se puede ordenar de forma
adecuada para su manejo (tabulando las líneas, añadiendo espacios,
creando nuevas líneas, etc.)
-
Se distinguen las mayúsculas y minúsculas, al igual que sucede con
la sintaxis de las etiquetas y elementos XHTML. Sin embargo, si en
JavaScript se intercambian mayúsculas y minúsculas el script no
funciona.
-
No se define el tipo de las variables, al definir una variable, es decir,
no es necesario indicar el tipo de dato que almacenará. De esta
forma, una misma variable puede almacenar diferentes tipos de datos
durante la ejecución del script.
-
No es necesario terminar cada sentencia con el símbolo punto y
coma(;): en la mayoría de los lenguajes de programación, es
necesario terminar cada sentencia con el símbolo ;. JavaScript
NANCY BEATRIZ URGILÉS TAPIA
76
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
permite no hacerlo, pero es muy recomendable seguir la tradición de
terminar las sentencias con ;.
-
Se pueden incluir comentarios: los comentarios se utilizan para añadir
alguna información relevante al código fuente del programa. Aunque
no se visualizan por pantalla, su contenido se envía al navegador del
usuario junto con el resto del script, por lo que es necesario extremar
las precauciones sobre el contenido de los comentarios. JavaScript
define 2 tipos de comentarios: los de una sola línea y los que ocupan
varias líneas.
// a continuación se muestra un mensaje
alert("mensaje de prueba");
Ejemplo6.2 Comentario de 1 sola línea.
Como se puede observar los comentarios de 1 sola línea se definen
añadiendo las 2 barras oblicuas (//) al principio de la línea.
/* Los comentarios de varias líneas
útiles
cuando
se
necesita
incluir
información en los mismos */
son muy
bastante
alert("mensaje de prueba");
Ejemplo6.3 Comentario de varias líneas:
Como se puede observar los comentarios multilínea se definen
encerrando el texto del comentario entre los símbolos: /* y */.
NANCY BEATRIZ URGILÉS TAPIA
77
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
En el siguiente ejemplo práctico y sencillo, se explica mejor el
funcionamiento de este lenguaje:
Figura6.1 Ejemplo de una página con calendario que da el mes en letras, en donde
al año actual se le agrega más 1900.
<HTML>
<HEAD>
<TITLE>Nombre de mes</TITLE>
//da a la ventana
<BODY bgcolor="#00FFFF">
//texto
// título que se le
// color que se le da al
<CENTER>
<h2>Ejemplo de una página con calendario que da el
mes en letra</h2>
//es el encabezado de la página
<script language="JavaScript" >
//se declara
//lenguaje del script en este caso es de
JavaScript
el
<!-var hoy = new Date(); //se declara la variable hoy
//de tipo fecha.
NANCY BEATRIZ URGILÉS TAPIA
78
UNIVERSIDAD CATÓLICA DE CUENCA
//dia, mes, ano van a tomar
//sistema actual, en donde a
//más.
APLICACIONES WEB CLIENTE-SERVIDOR
//los valores del
ano se le agrega 1900
dia = hoy.getDate();
mes = hoy.getMonth();
ano = hoy.getYear() + 1900;
//se va comparando la variable con cada mes
//existente, visualizándolo en pantalla con un color,
//en este caso rojo.
if (mes == "0") nombremes = "<font color=#FF0000
size 5>enero</font>";
else if (mes == "1") nombremes = "<font
color=#FF0000 size 5>febrero</font>";
else if (mes == "2") nombremes = "<font
color=#FF0000 SIZE=5>marzo</font>";
else if (mes == "3") nombremes = "<font
color=#FF0000 SIZE=5>abril</font>";
else if (mes == "4") nombremes = "<font
color=#FF0000 SIZE=5>mayo</font>";
else if (mes == "5") nombremes = "<font
color=#FF0000 SIZE=5>junio</font>";
else if (mes == "6") nombremes = "<font
color=#FF0000 SIZE=5>julio</font>";
else if (mes == "7") nombremes = "<font
color=#FF0000 SIZE=5>agosto</font>";
else if (mes == "8") nombremes = "<font
color=#FF0000 SIZE=5>septiembre</font>";
else if (mes == "9") nombremes = "<font
color=#FF0000 SIZE=5>octubre</font>";
else if (mes == "10") nombremes = "<font
color=#FF0000 SIZE=5>noviembre</font>";
else nombremes = "<font color=#FF0000
SIZE=5>diciembre</font>";
document.write (dia); //visualiza el día actual
document.write (" de ");
document.write (nombremes);
//del mes actual
NANCY BEATRIZ URGILÉS TAPIA
//visualiza el nombre
79
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
document.write (" de ");
document.write (ano); //visualiza el año actual más
//1900.
// -->
</script>
<hr>
<center>
<h3>
[<a href="javascr.htm">Volver</a>]
</h3>
</center>
</BODY>
</HTML>
6.4 VENTAJAS
-
Es un lenguaje de scripting seguro y fiable.
-
Los script tienen capacidades limitadas, por razones de seguridad.
-
El código JavaScript se ejecuta en el cliente.
6.5 DESVENTAJAS
-
Código visible para cualquier usuario.
-
El código debe descargarse completamente.
NANCY BEATRIZ URGILÉS TAPIA
80
UNIVERSIDAD CATÓLICA DE CUENCA
-
APLICACIONES WEB CLIENTE-SERVIDOR
Puede poner en riesgo la seguridad del sitio, con el actual problema
llamado XSS (Cross Site Scripting renombrado a XSS por su similitud
con las hojas de estilo CSS).
6.6
¿DÓNDE
Y
CÓMO
INCLUIR
JAVASCRIPT
EN
UN
DOCUMENTO?
JavaScript se puede incluir en cualquier documento HTML, o todo
aquel que termine traduciéndose en HTML en el navegador del cliente; ya
sea PHP, ASP, SVG. Incluir código directamente en una estructura HTML es
una práctica invasiva, y no recomendada. El método correcto que define la
W3C es incluir JavaScript como un archivo externo, tanto por cuestiones de
accesibilidad, como practicidad y velocidad en la navegación. Se deberá
escribir en el documento HTML:
<script type="text/javascript" src="[URI]"></script>
Siendo [URI] la URI relativa o absoluta del recurso con código
JavaScript, el cual tendrá extensión js.
También es posible incluir código directamente en el documento entre
los elementos <script> y </script>, aunque no se recomienda:
<script type="text/javascript">
<!-// código JavaScript
-->
</script>
NANCY BEATRIZ URGILÉS TAPIA
81
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Para validar el código en un validador HTML es necesario incluir los
comentarios HTML ‹!-- y --> para que no se interpreten los símbolos < y >
como inicio y fin de la etiqueta.
6.7 ANÁLISIS DE AJAX
6.7.1 Introducción
El término AJAX se acuñó por primera vez en el artículo “Ajax: A New
Approach to Web Applications” publicado por Jesse James Garrett el 18 de
Febrero de 2005. Hasta ese momento, no existía un término normalizado
que hiciera referencia a un nuevo tipo de aplicación Web que estaba
apareciendo.
En realidad, el término AJAX es un acrónimo de Asynchronous
JavaScript And XML, que se puede traducir como “JavaScript Asíncrono Y
XML”. El artículo definía a AJAX de la siguiente manera:
“Ajax no es una tecnología en sí mismo. En realidad, se trata de la
unión de varias tecnologías que se desarrollan de forma autónoma y que se
unen de formas nuevas y sorprendentes.”
AJAX es una técnica de desarrollo Web para crear aplicaciones
interactivas o RIA (Rich Internet Applications). Estas aplicaciones se
ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se
mantiene la comunicación asíncrona con el servidor en segundo plano. De
esta forma es posible realizar cambios sobre las páginas sin necesidad de
NANCY BEATRIZ URGILÉS TAPIA
82
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad
en las aplicaciones.
Ajax es una tecnología asíncrona, en el sentido de que los datos
adicionales se requieren al servidor y se cargan en segundo plano sin
interferir con la visualización ni el comportamiento de la página. JavaScript
es el lenguaje interpretado (scripting language) en el que normalmente se
efectúan las funciones de llamada de Ajax mientras que el acceso a los
datos se realiza mediante XMLHttpRequest, objeto disponible en los
navegadores actuales. En cualquier caso, no es necesario que el contenido
asíncrono esté formateado en XML.
Ajax es una técnica válida para múltiples plataformas y utilizable en
muchos sistemas operativos y navegadores, dado que está basado en
estándares abiertos como JavaScript y Document Object Model (DOM).
Las tecnologías que forman AJAX son:
-
XHTML y CSS, para crear una presentación basada en estándares.
-
DOM, para la interacción y manipulación dinámica de la presentación.
-
XML, XSLT y JSON, para el intercambio y la manipulación de
información.
-
XMLHttpRequest, para el intercambio asíncrono de información.
-
JavaScript, para unir todas las demás tecnologías.
NANCY BEATRIZ URGILÉS TAPIA
83
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Figura6.7.1 Tecnologías que forman AJAX.
Desarrollar aplicaciones AJAX requiere un conocimiento avanzado de
todas y cada una de las tecnologías anteriores.
En las aplicaciones Web tradicionales, las acciones del usuario en la
página (pinchar en un botón, seleccionar un valor de una lista, etc.)
desencadenan llamadas al servidor. Una vez procesada la petición del
usuario, el servidor devuelve una nueva página HTML al navegador del
usuario.
NANCY BEATRIZ URGILÉS TAPIA
84
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Figura6.7.2. Imagen Izquierda: Muestra el modelo tradicional de las aplicaciones Web.
Imagen Derecha: Muestra el modelo de Ajax.
Esta técnica tradicional para crear aplicaciones Web funciona
correctamente, pero no crea una buena sensación al usuario, ya que al
realizar peticiones continuas al servidor, el usuario debe esperar a que se
recargue la página con los cambios solicitados. Si la aplicación debe realizar
peticiones continuas, la aplicación Web se convierte en algo más molesto
que útil.
AJAX permite mejorar completamente la interacción del usuario con la
aplicación, evitando las recargas constantes de la página, ya que el
intercambio de información con el servidor se produce en un segundo plano.
Las aplicaciones construidas con AJAX eliminan la recarga constante
de páginas mediante la creación de un elemento intermedio entre el usuario
NANCY BEATRIZ URGILÉS TAPIA
85
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
y el servidor. La nueva capa intermedia de AJAX mejora la respuesta de la
aplicación, ya que el usuario nunca se encuentra con una ventana del
navegador vacía esperando la respuesta del servidor.
El siguiente esquema muestra la diferencia más importante entre una
aplicación Web tradicional y una aplicación Web creada con AJAX.
Figura6.7.3
Imagen Superior: Muestra la interación síncrona propia de las
aplicaciones Web tradicionales. Imagen Inferior: Muestra la comunicación asíncrona
de las aplicaciones creadas con AJAX.
NANCY BEATRIZ URGILÉS TAPIA
86
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Las peticiones HTTP al servidor se transforman en peticiones
JavaScript que se realizan al elemento encargado de AJAX. Las peticiones
más simples no requieren intervención del servidor, por lo que la respuesta
es inmediata. Si la interacción del servidor requiere la respuesta del servidor,
la petición se realiza de forma asíncrona mediante AJAX. En este caso, la
interacción del usuario tampoco se ve interrumpida por recargas de página o
largas esperas por la respuesta del servidor.
Desde su primera definición, se han creado cientos de aplicaciones
basadas en AJAX que en la mayoría de casos pueden sustituir
completamente a otras técnicas como Flash y en el caso de las aplicaciones
más avanzadas, pueden sustituir a complejas aplicaciones de escritorio.
La siguiente es una lista de algunas de las aplicaciones más
conocidas basadas en AJAX:
-
Gestores de correo electrónico como: Gmail [http://www.gmail.com],
Yahoo
Mail
[http://mail.yahoo.com],
Windows
Live
Mail
http://www.hotmail.com].
-
Sistemas
de
cartografía
[http://maps.google.com],
Yahoo
como:
Maps
Google
Maps
[http://maps.yahoo.com],
Windows Live Local [http://maps.live.com].
-
Aplicaciones Web y metapáginas: Netvibes [http://www.netvibes.com],
Google Docs [http://docs.google.com], Google Personalized Home
[http://www.google.com/ig].
NANCY BEATRIZ URGILÉS TAPIA
87
FACULTAD INGENIERÍA DE SISTEMAS
-
APLICACIONES WEB CLIENTE-SERVIDOR
Otras: Digg [noticias, http://www.digg.com], Meebo [mensajería,
http://www.meebo.-com],
30
Boxes
[calendario,
http://www.30boxes.com], Flickr [fotografía, http://www.-flickr.com].
Es por esta razón que Google está haciendo una significativa
inversión en el acercamiento Ajax. Todos los grandes productos que Google
ha introducido en el último año (Orkut, Gmail, la última versión de Google
Groups, Google Suggest, y Google Maps ) son aplicaciones Ajax. Otros
están siguiendo la tendencia, muchas de las funciones que la gente ama en
Flickr dependen de Ajax, y el motor de búsqueda de Amazon A9.com aplica
tecnologías similares.
Estos proyectos demuestran que Ajax no es solo técnicamente
importante, sino también práctico para aplicaciones en el mundo real. Esta
no es otra tecnología que solo trabaja en un laboratorio. Las aplicaciones
Ajax pueden ser de cualquier tamaño, de lo más simple como Google
Suggest a las muy complejas y sofisticadas como Google Maps.
6.7.2 Antecedentes
La historia de AJAX está relacionada en gran medida con un objeto
de programación llamado XMLHttpRequest. El origen de este objeto se
remonta al año 2000, con productos como Exchange 2000, Internet Explorer
5 y Outlook Web Access.
Todo comenzó en 1998, cuando Alex Hopmann y su equipo se
encontraban desarrollando la entonces futura versión de Exchange 2000. El
NANCY BEATRIZ URGILÉS TAPIA
88
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
punto débil del servidor de correo electrónico era su cliente vía Web, llamado
OWA (Outlook Web Access).
Durante el desarrollo de OWA, se evaluaron 2 opciones: Un cliente
formado solo por páginas HTML estáticas que se recargaban cada vez y un
cliente realizado completamente con HTML dinámico. Alex Hopmann pudo
ver las dos opciones y se inclinó por la basada en DHTML. Sin embargo,
para ser realmente útil a esta última le faltaba un componente esencial;
“algo” que evitara tener que enviar continuamente los formularios con datos
al servidor.
Motivado por las posibilidades futuras de OWA, Alex creó en un solo
fin de semana la primera versión de lo que denominó XMLHTTP. La primera
demostración de las posibilidades de la nueva tecnología fue un éxito, pero
faltaba lo más difícil, incluir esa tecnología en el navegador Internet Explorer.
Si el navegador no incluía XMLHTTP de forma directa, el éxito del
OWA se habría reducido enormemente. El mayor problema es que faltaban
pocas semanas antes de que se lanzara la última beta de Internet Explorer 5
antes de su lanzamiento final. Gracias a sus contactos en la empresa, Alex
consiguió que su tecnología se incluyera en la librería MSXML que incluye
Internet Explorer. Esa es la única razón para el nombre del objeto:
XMLHTTP. Aunque solo está relacionado con HTTP y no con XML, tenían
que encontrar una buena excusa para justificar su inclusión en la librería
XML de Internet Explorer.
Y a pesar de que el término «AJAX» fuese creado en 2005, la historia
de las tecnologías que permiten AJAX se remonta a una década antes con la
NANCY BEATRIZ URGILÉS TAPIA
89
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
iniciativa de Microsoft en el desarrollo de Scripting Remoto. Sin embargo, las
técnicas para la carga asíncrona de contenidos en una página existente sin
requerir recarga completa remontan al tiempo del elemento iframe
(introducido en Internet Explorer 3 en 1996) y el tipo de elemento layer
(introducido en Netscape 4 en 1997, abandonado durante las primeras
etapas de desarrollo de Mozilla). Ambos tipos de elemento tenían el atributo
src que podía tomar cualquier dirección URL externa, y cargando una
página que contenga JavaScript que manipule la página paterna, pueden
lograrse efectos parecidos al AJAX.
El Microsoft's Remote Scripting (o MSRS, introducido en 1998)
resultó un sustituto más elegante para estas técnicas, con envío de datos a
través de un Applet Java el cual se puede comunicar con el cliente usando
JavaScript. Esta técnica funcionó en ambos navegadores, Internet Explorer
versión 4 y Netscape Navigator versión 4. Microsoft la utilizó en el Outlook
Web Access provisto con la versión 2000 de Microsoft Exchange Server.
La comunidad de desarrolladores Web, primero colaborando por
medio del grupo de noticias microsoft.public.scripting.remote y después
usando blogs, desarrollaron una gama de técnicas de scripting remoto para
conseguir los mismos resultados en diferentes navegadores. Los primeros
ejemplos incluyen la librería JSRS en el año 2000, la introducción a la
técnica imagen/cookie en el mismo año y la técnica JavaScript bajo
demanda (JavaScript on Demand) en 2002. En ese año, se realizó una
modificación por parte de la comunidad de usuarios al Microsoft's Remote
Scripting para reemplazar el applet Java por XMLHttpRequest.
NANCY BEATRIZ URGILÉS TAPIA
90
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Frameworks de Scripting Remoto como el ARSCIF aparecieron en
2003 poco antes de que Microsoft introdujera Callbacks en ASP. NET.
Desde que XMLHttpRequest está implementado en la mayoría de los
navegadores, raramente se usan técnicas alternativas. Sin embargo, todavía
se utilizan donde se requiere una mayor compatibilidad, una reducida
implementación, o acceso cruzado entre sitios Web. Una alternativa, el
Terminal SVG (basado en SVG), emplea una conexión persistente para el
intercambio continuo entre el navegador y el servidor.
6.7.3 Tecnologías incluidas
Como ya se mencionó anteriormente, AJAX es una combinación de
cuatro tecnologías ya existentes:
-
XHTML (o HTML) y hojas de estilos en cascada (CSS) para el diseño
que acompaña a la información.
-
Document Object Model (DOM) accedido con un lenguaje de scripting
por parte del usuario, especialmente implementaciones ECMAScript
como JavaScript y JScript, para mostrar e interactuar dinámicamente
con la información presentada.
-
XMLHttpRequest para intercambiar datos asincrónicamente con el
servidor Web. En algunos frameworks y en algunas situaciones
concretas, se usa un objeto iframe en lugar del XMLHttpRequest para
realizar dichos intercambios.
NANCY BEATRIZ URGILÉS TAPIA
91
FACULTAD INGENIERÍA DE SISTEMAS
-
APLICACIONES WEB CLIENTE-SERVIDOR
XML es el formato usado generalmente para la transferencia de datos
solicitados al servidor, aunque cualquier formato puede funcionar,
incluyendo HTML preformateado, texto plano, JSON y hasta EBML.
Como el DHTML, LAMP o SPA, AJAX no constituye una tecnología
en sí, sino que es un término que engloba a un grupo de éstas que trabajan
conjuntamente.
6.7.4 Navegadores que permiten AJAX
Se debe tener en cuenta que lo siguiente es una lista general, y el
soporte de las aplicaciones AJAX dependerá de las características que el
navegador permita.
-
Navegadores basados en Gecko como Mozilla, Mozilla Firefox,
SeaMonkey, Camino, K-Meleon, Flock, Epiphany, Galeon, Google
Chrome y Netscape versión 7.1 y superiores.
-
Microsoft Internet Explorer para Windows versión 5.0 y superiores, y
los navegadores basados en él.
-
Navegadores
con
el
API
KHTML
versión
3.2
y
superiores
implementado, incluyendo Konqueror versión 3.2 y superiores, Apple
Safari versión 1.2 y superiores, y el Web Browser for S60 de Nokia
tercera generación y posteriores.
-
Opera versión 8.0 y superiores, incluyendo Opera Mobile Browser
versión 8.0 y superiores.
NANCY BEATRIZ URGILÉS TAPIA
92
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
6.7.5 Navegadores que no permiten AJAX
-
Opera 7 y versiones anteriores.
-
Microsoft Internet Explorer para Windows versión 4.0 y versiones
anteriores.
-
Safari, cualquier versión anterior a la 1.2.
-
Dillo.
-
Navegadores basados en texto como Lynx y Links.
-
Navegadores para incapacitados visuales (Braille).
A continuación se muestra un ejemplo sobre el funcionamiento de
AJAX (Modo Asíncrono) utilizando el programa Visual Studio .NET 2008
Figura6.7.4 Diseño simple de la página principal
NANCY BEATRIZ URGILÉS TAPIA
93
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
Código de la página principal:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Página sin título</title>
<script
language
="javascript"
type="text/javascript">
//ESTA ES UNA FUNCIÓN USANDO AJAX
function llamarasincrono(url, id_contenedor){
//Declarar variable para la conexion
conexion = false;
//Encontrar el objeto XMLHttpRequest
if(window.XMLHttpRequest){
//Mozilla, Safari, etc..
conexion= new XMLHttpRequest(); //return
conexion;
}
else if (window.ActiveXObject){ // pero si es IE
try
{conexion
=
new
ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){ // en caso que sea una versión
antigua
try{conexion
=
new
ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
conexion.onreadystatechange = function(){
//Función para cargar la página
var ext = url.split('.');
if (ext[1] == "aspx"){
cargarpagina(url,id_contenedor);
}
else{ leerdatos(id_contenedor)
}
}
//Ejecutar el metodo open
conexion.open('GET',url,true);
//Enviar datos al servidor
conexion.send(null);
}
function cargarpagina(Pagina,id_contenedor){
if(conexion.readyState == 4 && conexion.status == 200){
//Llamar a la pagina
NANCY BEATRIZ URGILÉS TAPIA
94
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
document.getElementById(id_contenedor).innerHTML=
conexion.responseText;
}
</script>
<style type="text/css">
#contenido
{
height: 486px;width: 482px; float: none;
position: relative;
top: -65px;
left:
314px;
margin-top: 0px;
}
p.MsoNormal
{margin-top:0cm; margin-right:0cm; marginbottom:10.0pt;
margin-left:0cm;line-height:115%; font-size:11.0pt;
font-family:"Calibri","sans-serif";
width:
179px;
}
.style1
{ width: 111%;height: 127px; }
.style2
{ height: 77px;
}
.style3
{ width: 20%;height: 122px; position:
relative;
top: -12px; left: 0px;
}
</style>
</head>
<body bgcolor="Black">
<form id="form1" runat="server">
<div style="position: relative; float: right; top: 12px; left:
4px; width: 706px; height: 132px; bottom:
-1px;">
<table class="style1">
<tr>
<td class="style2">
<asp:Image ID="Image1" runat="server" Height="88px"
ImageUrl="~/logo/001 logo1.jpg" Width="650px" />
</td>
</tr>
</table>
</div>
<br />
// A continuación se presenta el código para llamar o vincular una
página principal a otra página secundaria que están enlazadas por un
hipervínculo:
NANCY BEATRIZ URGILÉS TAPIA
95
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
<a href=
"javascript:llamarasincrono('PortalImagenes.aspx','conten
ido');"
style="font-weight: bolder; font-style: italic; color:
#FFFFFF; font-size: large">Casas</a> //es el nombre del
hipervínculo
<br />
//'PortalImagenes.aspx' es el nombre del formulario a
llamar
<div style="border-style: none; width: 187px; height:
217px; top: 224px; left: 13px; position: absolute;
bottom: 104px; background-color: #333333;">
<p align="center" class="MsoNormal" style="border-style:
groove">
</p>
<p class="MsoNormal" style="text-align: center">
<span style="font-size: medium; line-height: 115%; fontfamily:
Arial,
sans-serif,
'mso-fareast-font-family:
Times New Roman color: #FFFFFF'; mso-fareast-language:
ES; font-weight: normal; font-style: italic; color:
#FFFFFF;">
La empresa ArquiSystem, ofrece servicios en el área de
sistemas y arquitectura hace cinco años se constituyó
legalmente en la ciudad de Cuenca y gradualmente fue
creciendo en prestigio, gracias a su excelente calidad
tanto en los servicios de arquitectura como en el área de
sistemas.
</span>
</p> <p align="center" class="MsoNormal">
</p>
<p class="MsoNormal">
 </p>
 </div>
<p>
 </p>
<p>  </p>
<p>
 </p>
<p>
 </p>
<p>
 </p> <p>  </p>
<p>
 </p>
<p>
 </p> <p>  </p>
<p>  </p> <table class="style3">
<tr> <td>
<asp:Image ID="Image2" runat="server" Height="114px"
ImageUrl="~/logo/002 logo2.jpg" Width="188px" />
</td>
</tr>
</table>
<div id="contenido">
//Este nombre de id es muy importante para hacer la
llamada asíncrona a la página secundaria (Casas), la
misma que debe tener un Div que contenga el diseño de
toda esta página cuyo id del div deberá ser el mismo que
la página principal en este caso id="contenido".
</div>
NANCY BEATRIZ URGILÉS TAPIA
96
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
</form>
</body>
</html>
Página secundaria a llamar mediante AJAX
Figura6.7.5 Página “Casas”
Código de la página “Casas”
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Página sin título</title>
<script language="javascript" type="text/javascript">
</script>
</head>
<body>
NANCY BEATRIZ URGILÉS TAPIA
97
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
<form id="form1" runat="server" style="backgroundcolor: #000000">
<div style="position: relative; id="contenido">
Nótese que el identidicador de este div principal que
contiene todo el diseño de la página tiene el mismo
nombre que el div de la página principal (Figura6.7.4),
de este modo se efectúa el funcionamiento asíncrono.
<asp:ScriptManager
ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path=
"~/Servicio.asmx" />
</Services>
<Scripts>
<asp:ScriptReference Path="~/Funciones.js"
/>
</Scripts>
</asp:ScriptManager>
<input id="BtnMostCasas" type="button" value="VER"
onclick="ClickInhabilitarCasas()"/>
</div>
</form>
</body>
</html>
NANCY BEATRIZ URGILÉS TAPIA
98
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
CAPÍTULO VII
7.1 COMPARACIÓN GENERAL
ENTRE LOS LENGUAJES DE
LADO DEL SERVIDOR Y DE LADO DEL CLIENTE
Se puede decir que los lenguajes de lado del servidor son aquellos
lenguajes reconocidos, ejecutados e interpretados por el propio servidor y
que se envían al cliente en un formato comprensible para él. Por otro lado,
los lenguajes de lado del cliente son aquellos que pueden ser directamente
"digeridos" por el navegador y no necesitan un pretratamiento.
Cada uno de estos tipos tiene por supuesto sus ventajas y sus
inconvenientes. Así, por ejemplo, un lenguaje de lado del cliente es
totalmente independiente del servidor, lo cual permite que la página pueda
ser albergada en cualquier sitio sin necesidad de pagar más ya que, por
regla general, los servidores que aceptan páginas con scripts de lado del
servidor son en su mayoría de pago o sus prestaciones son muy limitadas.
Inversamente, un lenguaje de lado del servidor es independiente del
cliente por lo que es mucho menos rígido respecto al cambio de un
navegador a otro o respecto a las versiones del mismo. Por otra parte, los
scripts son almacenados en el servidor quien los ejecuta y traduce a HTML
por lo que permanecen ocultos para el cliente. Este hecho puede resultar
una forma legítima de proteger el trabajo intelectual realizado.
NANCY BEATRIZ URGILÉS TAPIA
99
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
7.2 CONCLUSIONES
Se ha establecido las conclusiones con respecto a cada uno de los
lenguajes estudiados en los capítulos anteriores, servidor-cliente, siendo
éstas las siguientes:
Aplicaciones Web.Las aplicaciones Web son una nueva alternativa a las aplicaciones de
interfaz grafica. Estas aplicaciones presentan varias ventajas tanto en la
instalación y actualización como en los requerimientos necesarios para
utilizarlas. A continuación se mencionan
tres puntos importantes con
respecto a la instalación.
Cliente ‘fino’.- Para utilizar la aplicación Web solo se necesita un
browser. Los browsers son distribuidos por Internet y no tienen costo.
Generalmente
vienen
incluidos
al
instalar
el
sistema
operativo.
Adicionalmente se pueden instalar plugs-in, que son programas que agregan
funcionalidades adicionales al browser. Un ejemplo muy común es el plug-in
de Acrobat, utilizado para visualizar archivos en formato PDF o plugs-in para
video o sonido.
Flexibilidad en software y hardware en el cliente.- En las aplicaciones
Web, el cliente puede tener instalado cualquier sistema operativo en
cualquier versión. Las aplicaciones Web no utilizan tantos recursos de
hardware por lo que el costo de las computadoras cliente es menor y no
necesita actualizaciones frecuentes.
NANCY BEATRIZ URGILÉS TAPIA
100
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
La aplicación solo se instala en el servidor.- En una aplicación Web no
se requiere ninguna instalación adicional a la del browser, para poder
accederla o acceder a otras aplicaciones Web.
Estudio de los lenguajes interpretados a lado del servidor
Características de un servidor.Sus características son las siguientes:
-
Al iniciarse espera a que lleguen las solicitudes de los clientes,
desempeñan entonces un papel pasivo en la comunicación
(dispositivo esclavo).
-
Tras la recepción de una solicitud, la procesan y luego envían la
respuesta al cliente.
-
Por lo general, aceptan conexiones desde un gran número de clientes
y en ciertos casos el número máximo de peticiones puede estar
limitado.
-
No es frecuente que interactúen directamente con los usuarios finales.
Perl.Este lenguaje no obliga a seguir ningún paradigma en particular, ni
obliga al programador a elegir alguna de ellas. Aunque la sintaxis de Perl
puede llegar a desconcentrar y hasta a asustar la primera vez que se le ve,
NANCY BEATRIZ URGILÉS TAPIA
101
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
cuando se está familiarizado resulta muy fácil y cómoda para el desarrollo
rápido y eficiente de aplicaciones.
El hecho de que Perl sea portable entre tantos sistemas operativos
hace que la comunidad de personas que lo usan sea muy extensa, lo que
ayuda no solo en la popularidad del lenguaje sino también a extenderlo y
mejorar su intérprete y módulos (ya que son código abierto).
Debido a que Perl toma características de otros lenguajes de
programación (Lisp, C, AWK, etc.), se puede asegurar que la estructura
resultante del lenguaje es lo suficientemente robusta y confiable, quedando
demostrado en la cantidad de aplicaciones en las que se utiliza Perl.
Python.Es un lenguaje que proporciona un equilibrio muy bueno entre lo
práctico y lo conceptual. Puesto que es un lenguaje interpretado, los
principiantes pueden utilizar el lenguaje y empezar a hacer cosas
interesantes casi de inmediato, sin perderse en los problemas de
compilación y enlazado. Además, Python viene con una biblioteca de
módulos que se pueden usar para hacer toda clase de tareas que abarcan
desde programación para Web a gráficos. También puede servir como una
base excelente para introducir conceptos importantes de informática. Puesto
que Python soporta completamente procedimientos y clases, los alumnos
pueden introducirse gradualmente en temas como abstracción procedural,
estructuras de datos, y programación orientada a objetos. El intérprete se
NANCY BEATRIZ URGILÉS TAPIA
102
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
puede utilizar de modo interactivo, lo que facilita experimentar con
características del lenguaje, escribir programas desechables o probar
funciones durante el desarrollo del programa. El principal objetivo que
persigue este lenguaje es la facilidad, tanto de lectura, como de diseño.
También es adecuado como lenguaje de extensión para aplicaciones
adaptables al usuario. En la actualidad Python se desarrolla como un
proyecto de código abierto, administrado por la Python Software Foundation.
PHP.Es un leguaje que tiene la capacidad de ser ejecutado en la mayoría
de los sistemas operativos, tales como UNIX (y de ese tipo, como Linux o
Mac OS X) y Windows, y puede interactuar con los servidores de Web más
populares ya que existe en versión CGI, módulo para Apache, e ISAPI.
También es un lenguaje con asequible estructura de programación, la
facilidad de llevar a cabo sentencias SQL embebidas, además de permitir la
posibilidad de correr en diferentes tipos de servidores, entre ellos Apache.
Quizás la característica más potente y destacable de PHP es su soporte
para una gran cantidad de bases de datos. Escribir una interfaz vía Web
para una base de datos es una tarea simple con PHP. Del mismo modo
soporta el uso de otros servicios que usen protocolos como IMAP, SNMP,
NNTP, POP3, HTTP y derivados. Además se pueden abrir sockets de red
directos (raw sockets) e interactuar con otros protocolos.
El funcionamiento de las páginas en PHP alojadas en un servidor es
el siguiente:
NANCY BEATRIZ URGILÉS TAPIA
103
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
-
El navegador del cliente solicita el documento PHP.
-
Llega la solicitud del servidor y éste localiza el documento, lanza el
intérprete de PHP y ejecuta todo su código.
-
Una vez ejecutado el código se genera el resultado en HTML y lo
devuelve al servidor para que lo transfiera al cliente.
-
El servidor transfiere el resultado en HTML y es mostrado en el
navegador del cliente.
Estudio de los lenguajes interpretados a lado del cliente
Características de un cliente.Sus características son las siguientes:
-
Es quien inicia las solicitudes o peticiones, tiene por tanto un papel
activo en la comunicación (dispositivo maestro).
-
Espera y recibe las respuestas del servidor.
-
Por lo general, puede conectarse a varios servidores a la vez.
-
Normalmente interactúa directamente con los usuarios finales
mediante una interfaz gráfica de usuario.
NANCY BEATRIZ URGILÉS TAPIA
104
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
VBScript.Es un sub-lenguaje limitado a pequeños ámbitos como puede ser la
programación en el cliente de una página Web o en el servidor de páginas
Web. De modo que el VBScript se lo puede utilizar de dos formas:
-
El cliente, se escribe dentro de la página Web y es Internet Explorer el
que lo interpreta y lo ejecuta. Se escribe entre las etiquetas <script
language=vbscript> y </script>
-
El servidor, son páginas ASP, el código lo interpreta y lo ejecuta el
servidor Internet Information Server antes de enviarlo al cliente que
solicitó la página.
La sintaxis de los dos usos es la misma, pero los recursos a los que
se puede acceder son distintos, en el primero se accede al navegador y en
el segundo se puede acceder a los recursos del servidor, como bases de
datos.
VBScript no tiene mucha relación con JavaScript, se tratan de dos
lenguajes que en realidad están compitiendo. La única relación que tienen es
que realmente pueden servir para hacer lo mismo. En JavaScript también se
puede programar en el cliente o en el servidor.
JAVASCRIPT.Se trata de un lenguaje de programación del lado del cliente, porque
es el navegador el que soporta la carga de procesamiento. Gracias a su
NANCY BEATRIZ URGILÉS TAPIA
105
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
compatibilidad con la mayoría de los navegadores modernos, es el lenguaje
de programación más utilizado y se está convirtiendo con suma rapidez en
una de las herramientas más útiles en el arsenal de cualquier desarrollador
de .NET debido a la proliferación de aplicaciones AJAX interactivas con
infinidad de clientes. De hecho, es considerado como la piedra angular que
ha hecho posible el éxito de aplicaciones como 'Google Maps', Gmail o
'Google
Docs'.
JavaScript
y
unido
a
la
interfaz
de
peticiones
'XMLHttpRequest', ha hecho posible que eventos del usuario dentro del
navegador tengan como consecuencias peticiones de información a
servidores Web. De esta manera, los productos anteriores de Google han
podido, sin recargar la página, mostrar solamente los fragmentos de mapa
que el usuario está visualizando.
Sin embargo, JavaScript presentaba varios inconvenientes. Uno de
ellos era que se estaba ejecutando demasiado lento dentro de los
navegadores. Para ello, Google ha incorporado la que puede ser
considerada la Máquina Virtual de este Sistema Operativo vía Web, dentro
del nuevo 'Google Chrome', se llama 'V8', creada desde cero por los
ingenieros de Google localizados en las oficinas de Aarhus (Dinamarca). Es
'Open Source', funciona sobre MS Windows, Mac OS X y Linux, y el código
es compilado en código máquina para ser interpretado directamente por la
CPU. De esta manera, el JavaScript y Ajax funcionan mucho más rápido.
Otro de los inconvenientes de JavaScript es su limitación para trabajar con
información multimedia (imágenes, audio, vídeo), y por ello la inmensa
mayoría de las aplicaciones utilizan tecnologías como la de Adobe Flash (por
ejemplo, YouTube).
NANCY BEATRIZ URGILÉS TAPIA
106
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
Pero, a pesar de ello, JavaScript unido a Ajax, es utilizado
ampliamente para desarrollar las nuevas aplicaciones Web que se pueden
encontrar en Internet. Al igual que la aplicación 'Adobe Reader' permite
desarrollar utilidades con JavaScript, los famosos Widgets de Mac OS X
también pueden ser creados con JavaScript, al igual que ocurre con los
Gadgets de Windows Vista y los 'Google Gadgets'. Y no solamente en los
Gadgets para sitios Web, sino también en los Gadgets para 'Google
Desktop', porque 'Google Desktop' incluye un intérprete de JavaScript desde
el año 2006. Esto quiere decir que, en cuanto a enfoque de plataforma de
desarrollo, 'Google Desktop' y 'Google Chrome' se comportan de manera
muy similar permitiendo ambas herramientas crear aplicaciones con
JavaScript.
AJAX.Es el acrónimo para Asynchronous JavaScript And XML y el concepto
es: Cargar y renderizar una página, luego mantenerse en esa página
mientras scripts y rutinas van al servidor buscando, en background, los datos
que son usados para actualizar la página solo re-renderizando la página y
mostrando u ocultando porciones de la misma.
Pues AJAX permite mejorar completamente la interacción del usuario
con la aplicación, evitando las recargas constantes de la página, ya que el
intercambio de información con el servidor se produce en un segundo plano.
Las aplicaciones construidas con AJAX eliminan la recarga constante
de páginas mediante la creación de un elemento intermedio entre el usuario
NANCY BEATRIZ URGILÉS TAPIA
107
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
y el servidor. La nueva capa intermedia de AJAX mejora la respuesta de la
aplicación, ya que el usuario nunca se encuentra con una ventana del
navegador vacía esperando la respuesta del servidor.
Pero los mayores desafíos al crear aplicaciones Ajax no son técnicas.
Las tecnologías centrales son maduras, estables y bien conocidas. En
cambio, los desafíos son para los diseñadores de estas aplicaciones, es
decir, se debe olvidar lo que se cree saber sobre las limitaciones de la Web y
comenzar a imaginar un rango más amplio y rico de posibilidades.
7.3 RECOMENDACIONES
Aplicaciones Web.Se debe tener en cuenta que en una aplicación Web no se requiere
ninguna instalación adicional a la del browser, para poder accederla o
acceder a otras aplicaciones Web. Como requisito para tomar una decisión
correcta en el uso de una aplicación Web se debe comprender:
-
El funcionamiento de la interfaz Web y las limitaciones que ello trae
como consecuencia.
-
Las limitaciones en la integridad transaccional.
Algunos puntos que se recomiendan para evaluar la creación o
migración a aplicaciones Web son:
-
Requerimientos y proceso de instalación de la aplicación final.
-
Ambiente en donde se ejecute la aplicación.
NANCY BEATRIZ URGILÉS TAPIA
108
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
-
Requerimientos en el acceso.
-
Interfaz gráfica en cuanto a facilidad de uso, diseño gráfico atractivo y
capacidades multimedia.
-
Acceso desde múltiples plataformas como computadoras de bolsillo,
etc.
-
Requerimientos de seguridad en la aplicación.
-
Complejidad en las transacciones Genexus, especialmente en la
validación de datos y disparo de reglas.
-
Restricciones en la interacción de objetos Genexus. Debe ser
evaluado cuidadosamente en el caso de migrar una aplicación GUI a
Web.
-
Servidores, en las aplicaciones Web la ejecución se realiza
completamente en el servidor.
Como acotación final hay que tener en cuenta la evolución de la
aplicación en cuanto a la creación de nuevos módulos, cantidad de usuarios
y mantenimiento.
Lenguajes interpretados: Perl, Python, PHP
Se debe tener presente que un lenguaje interpretado se lo conoce
como un lenguaje de programación o como un lenguaje de Script, diseñado
para ser ejecutado por medio de un intérprete. Estos tres lenguajes a lado
del
servidor
corren
en
cualquier
sistema
operativo,
ya
que
son
multiplataformas. Teniendo en consideración que cuando el usuario requiera
NANCY BEATRIZ URGILÉS TAPIA
109
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
programar, utilizando cualquiera de ellos, éstos deben cumplir con los
requerimientos y requisitos que se necesiten (hardware-software) para que
la CPU funcione correctamente ya sea como cliente o como servidor.
Para obtener más información de ellos, se puede acceder a las
siguientes direcciones electrónicas:
http://www.perl.org/
 para el lenguaje Perl.
http://www.php.net/
 para el lenguaje PHP.
http://www.python.org
 para el lenguaje Python.
Lenguajes VBScript, Javascript, Ajax
No se debe olvidar que el lenguaje VBScript corre en Microsoft
Windows. Y que el código en VBScript puede, además, estar diseñado para
su ejecución en el lado del cliente o en el del servidor. La diferencia es que
un código que se ejecuta en el lado del servidor no es visible en el lado del
cliente. Este recibe los resultados, pero no el código. El código que se debe
de ejecutar en el lado del servidor estará incluido en la página Web
correspondiente entre los tags <% y %> . Además habrá que renombrar la
página para aplicarle la extensión .asp (Active Server Page / Página Activa
en Servidor).
De igual manera el lenguaje JavaScript está basado en prototipos y
en Programación Orientada a Objetos, del mismo modo este lenguaje se
NANCY BEATRIZ URGILÉS TAPIA
110
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
utiliza para aplicaciones servidor y aplicaciones cliente, dependiendo de las
necesidades que se presenten.
JavaScript para aplicaciones servidor
En el servidor, JavaScript también está integrado en páginas HTML.
Por lo tanto, las sentencias de JScript del servidor pueden realizar multitud
de tareas como:
-
Conectarse a bases de datos relacionales de varios fabricantes.
-
Compartir información entre usuarios de una aplicación.
-
Acceder a los ficheros del servidor.
-
Comunicarse con otras aplicaciones a través de LIVECONNECT y
JAVA.
Las aplicaciones JavaScript del servidor se compilan generando
archivos binarios.
Existen servicios especiales de JavaScript en el servidor:
-
Servicio de Gestión de Sesiones.
-
Servicio de Bases de Datos LiveWire.
También JavaScript está:
-
Interpretado por el cliente.
-
Orientado a Objetos.
-
El código se integra e incrusta en documentos HTML.
NANCY BEATRIZ URGILÉS TAPIA
111
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
-
Los tipos de datos de las variables no se declaran.
-
No se puede escribir automáticamente en el disco duro.
JavaScript para aplicaciones cliente
Los clientes Web que soportan JavaScript, tales como el Netscape
Navigator/Communicator (desde la versión 2.0) o el Microsoft Internet
Explorer (desde la versión 3.0) pueden interpretar sentencias JavaScript
colocadas en un documento HTML.
Cuando el cliente Web solicita una página de este tipo, el servidor
envía por la red al cliente el contenido completo del documento; incluyendo
todos los códigos HTML y las sentencias JavaScript que pudieran existir en
éste. El cliente lee entonces la página de forma secuencial, desde el
principio hasta el final, representando visualmente los códigos HTML y
ejecutando las sentencias JavaScript conforme avanza el proceso de lectura
e interpretación. Las sentencias JavaScript colocadas en una página Web
pueden dar respuesta a eventos de usuario, tales un clic, la entrada de datos
en un formulario y la navegación por una página.
También las aplicaciones cliente y servidor en JavaScript comparten
el mismo núcleo de lenguaje. Este núcleo se corresponde con ECMA-262,
con algunos añadidos extra. Aunque Javascript de cliente y de servidor
comparten el mismo conjunto base de funciones y características; en
algunos casos se utilizan de distinta forma. Los componentes de JavaScript
son los siguientes:
NANCY BEATRIZ URGILÉS TAPIA
112
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
-
Núcleo de JavaScript (Core JavaScript).
-
JavaScript para Cliente.
-
JavaScript para Servidor.
JavaScript para cliente engloba el núcleo del lenguaje y algunos
elementos adicionales como, por ejemplo, una serie de objetos predefinidos
que sólo son relevantes para la ejecución de JavaScript en el contexto de un
cliente Web.
Así mismo, JavaScript para servidor incluye también el núcleo de
lenguaje y los objetos predefinidos y funciones necesarias para el correcto
funcionamiento en el marco de un servidor.
El código JavaScript para cliente se integra directamente en páginas
HTML y es interpretado, en su totalidad, por el cliente Web en tiempo de
ejecución. 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.
Cabe mencionar que en JavaScript se puede proteger el código de las
aplicaciones, ya que al igual que el resto de contenidos de las páginas Web,
está disponible para ser accedido y visualizado por cualquier usuario. Con la
aparición de las aplicaciones basadas en AJAX, muchas empresas han
desarrollado complejas aplicaciones cuyo código fuente está a disposición
de cualquier usuario. Aunque se trata de un problema casi imposible de
solucionar, existen técnicas que minimizan el problema de que se pueda
NANCY BEATRIZ URGILÉS TAPIA
113
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
acceder libremente al código fuente de la aplicación. La principal técnica es
la de ofuscar el código fuente de la aplicación.
Los ofuscadores utilizan diversos mecanismos para hacer casi
imposible de entender el código fuente de una aplicación. Manteniendo el
comportamiento de la aplicación, consiguen contaminar y dificultar tanto el
código que no es mayor problema que alguien pueda acceder a ese código.
El programa ofuscador Jasob ofrece un ejemplo del resultado de ofuscar
cierto código JavaScript.
Por ejemplo este es un código original antes de ofuscarlo:
// Calculate salary for each employee in "aEmployees".
// "aEmployees" is array of "Employee" objects.
function CalculateSalary(aEmployees)
{var nEmpIndex = 0;
while (nEmpIndex < aEmployees.length)
{var oEmployee = aEmployees[nEmpIndex];
oEmployee.fSalary=
CalculateBaseSalary(oEmployee.nType,
oEmployee.nWorkingHours);
if (oEmployee.bBonusAllowed == true)
{oEmployee.fBonus=
CalculateBonusSalary(oEmployee.nType,
oEmployee.nWorkingHours,
oEmployee.fSalary);
}
else
{oEmployee.fBonus = 0;}
NANCY BEATRIZ URGILÉS TAPIA
114
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
oEmployee.sSalaryColor=
GetSalaryColor(oEmployee.fSalary +
oEmployee.fBonus);
nEmpIndex++;
}// fin del While
}//fin del programa
Después de pasar el código anterior por el ofuscador el resultado es:
function c(g)
{var m=0;
while(m<g.length)
{var r=g[m];r.l=d(r.n,r.o);
if(r.j==true)
{r.k=e(r.n,r.o,r.l);}
else{r.k=0;} r.t=f(r.l+r.k);m++;
}
}
Al sustituir todos los nombres de las variables y de las funciones por
nombres de una sola letra, es prácticamente imposible comprender el código
del programa. En ocasiones, también se utilizan ofuscadores de este tipo
con el propósito de reducir el tamaño del código fuente.
Además de aplicaciones comerciales específicamente diseñadas para
ofuscar código JavaScript, también se pueden utilizar las herramientas que
minimizan el tamaño de los scripts. Eliminando los comentarios y reduciendo
el nombre de todas las variables, los programas que minimizan el tamaño de
los scripts también consiguen ofuscar su código.
NANCY BEATRIZ URGILÉS TAPIA
115
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
La aplicación packer es gratuita, se puede acceder vía Web y
consigue una excelente compresión del código original. También se puede
utilizar jsjuicer, que está disponible como aplicación descargable y también
se puede utilizar vía Web.
NANCY BEATRIZ URGILÉS TAPIA
116
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
WEBLIOGRAFÍA:
Aplicaciones Web:
-
www.Wikipedia.Com
-
www.Cibernetia.com
-
www.google.com
PERL:
-
www.Wikipedia.Com
-
Descripción de los aspectos fundamentales del lenguaje de
programación Perl por: Andrey Francisco Pérez Hidalgo
-
www.google.com
PYTHON:
-
www.Wikipedia.Com
-
www.MaestrosdelWeb.Com por: Damián Pérez Valdés
-
www.Usabilidadweb.com.ar
-
www.google.com
PHP:
-
www.Wikipedia.Com
-
www.WikiWebDesign.com
-
www.google.com
NANCY BEATRIZ URGILÉS TAPIA
117
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
VBSCRIPT:
-
www.desarrolloweb.com
-
ASP en castellano por: J. Quijado
-
www.Wikipedia.com
-
www.google.com
JAVASCRIPT:
-
www.MaestrosdelWeb por: Damián Pérez Valdés
-
www. google.dirson.com
-
www.Wikipedia.com
-
www.google.com
AJAX
-
www.librosweb.es por: Javier Eguíluz Pérez
-
Artículo original escrito por Jesse James Garrett, uno de los
fundadores de Adaptive Path y traducido por Mariano Amartino
(Denken Uber).
-
www.google.com
NANCY BEATRIZ URGILÉS TAPIA
118
UNIVERSIDAD CATÓLICA DE CUENCA
APLICACIONES WEB CLIENTE-SERVIDOR
GLOSARIO:
-
Modelo Vista Controlador (o MVC), permiten separar el tratamiento
y acceso a los datos, la lógica de control y la interfaz de usuario en
tres componentes independientes.
-
DOM, el Document Object Model es una API empleada para
manipular documentos.
-
SINTAXIS.-La sintaxis de un lenguaje de programación se define
como el conjunto de reglas que deben seguirse al escribir el código
fuente de los programas para considerarse como correctos para ese
lenguaje de programación.
-
ECMA, una organización Internacional sin ánimo de lucro cuyo
objetivo es la redacción de normas y estándares internacionales.
-
Multiparadigma.
Esto
significa
que
más
que
forzar
a
los
programadores a adoptar un estilo particular de programación,
permite
varios
estilos:
Programación
orientada
a
objetos,
programación estructurada, programación funcional y programación
orientada a aspectos. Otros muchos paradigmas más están
soportados mediante el uso de extensiones.
-
Interfaz de entrada común (Common Gateway Interface o CGI), es
una importante tecnología de la World Wide Web que permite a un
cliente (explorador Web) solicitar datos de un programa ejecutado en
un servidor Web. CGI especifica un estándar para transferir datos
entre el cliente y el programa. Es un mecanismo de comunicación
NANCY BEATRIZ URGILÉS TAPIA
119
FACULTAD INGENIERÍA DE SISTEMAS
APLICACIONES WEB CLIENTE-SERVIDOR
entre el servidor Web y una aplicación externa cuyo resultado final de
la ejecución son objetos MIME. Las aplicaciones que se ejecutan en
el servidor reciben el nombre de CGIs. Las aplicaciones CGI fueron
una de las primeras maneras prácticas de crear contenido dinámico
para las páginas Web. En una aplicación CGI, el servidor Web pasa
las solicitudes del cliente a un programa externo. Este programa
puede estar hecho en cualquier lenguaje que soporte el servidor,
aunque por razones de portabilidad se suelen usar lenguajes de
script. La salida de dicho programa es enviada al cliente en lugar del
archivo estático tradicional. CGI ha hecho posible la implementación
de funciones nuevas y variadas en las páginas Web, de tal manera
que esta interfaz rápidamente se volvió un estándar, siendo
implementada en todo tipo de servidores Web.
NANCY BEATRIZ URGILÉS TAPIA
120
Descargar