# Resumen DPL Tema 1
# Introducción a las aplicaciones web
## Introducción
- Internet: una red de ordenadores mundial
- World Wide Web: conjunto de protocolos, tecnologías y convenciones desarrolladas sobre Internet
- Página web: documento en formato HTML, con hiperenlaces, que se puede descargar desde un servidor web y se visualiza en un navegador web
- Sitio web: conjunto de páginas web, con contenido relacionado, identificados con la misma URL
- Aplicación web: aplicación informática completa con acceso vía web
## Internet
- Internet es un conjunto descentralizado de redes de comunicación interconectadas que utilizan la familia de protocolos TCP/IP
- Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, Estados Unidos
- Uno de los servicios que más éxito ha tenido en Internet ha sido la World Wide Web (WWW, o “la Web”)
- La web (1990) es un conjunto de protocolos, estándares y tecnologías, basadas en Internet, diseñado originalmente para la consulta remota de información en archivos de hipertexto
- Existen muchos otros servicios y protocolos en Internet:
- Envío y recepción de correo electrónico (POP3, IMAP, SMTP)
- Transmisión de archivos (SSH, FTP, P2P, HTTP)
- Mensajería instantánea (IRC, XMPP)
- Transmisión de contenido multimedia (VoIP, IPTV, RTP)
- Conexión remota por consola (SSH, Telnet)
- Conexión remota gráfica (VNC)
## World Wide Web
World Wide Web se traduce como telaraña mundial y su acrónimo es www
- La web es un sistema de distribución de información basado en hipertexto enlazados y accesibles a través de Internet
- Con un navegador web, un usuario visualiza sitios web compuestos de páginas web que pueden contener texto, imágenes, vídeos u otros contenidos multimedia, y navega a través de ellas usando hiperenlaces
- La Web fue creada alrededor de 1989 por Tim Berners-Lee y Robert Cailliau mientras trabajaban en el CERN
- Se publicó en 1992
- Las páginas web tienen formato HTML y CSS, tienen enlaces a otras páginas y a contenido multimedia (imágenes, vídeos, audio)
- El protocolo con el que se comunican el cliente y el servidor es el Hiper Text Transfer Protocol (HTTP)
- Las páginas se identifican con un nombre único llamado coloquialmente dirección web (URL)
## Página web
- Una página web es un documento electrónico adaptado a la web
- Está diseñada para ser visualizado en un navegador web, que la descargará de un servidor web
- Contiene texto, gráficos y contenido multimedia
- Contiene hiperenlaces integrados en el texto que permiten al usuario navegar o acceder a diferentes páginas web relacionadas entre sí
- Una página web generalmente es un fichero con extensión .html o .xhtml
- Está escrita con formato de marcado textual HTML o XHTML
- Puede contener información de estilos (colores, tipos de letra, distribución de elementos,…) en el formato CSS integrado en el propio documento o en un fichero diferente
- Puede enlazar a imágenes en formato JPG o PNG
## Aplicaciones web
- En vez de ser ficheros .html en el disco, empezaban a ser pequeños programas que se ejecutaban cada vez que un usuario pedía una página
- Inicialmente eran cambios mínimos con lenguajes de script como PERL y PHP
- Una aplicación web es aquella aplicación que los usuarios pueden utilizar accediendo a un servidor web a través de Internet mediante un navegador
- Las aplicaciones web son muy populares
- El navegador web como cliente ligero
- Independencia del sistema operativo
- Facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software a miles de usuarios potenciales
- Actualmente, prácticamente todas las webs del mundo son aplicaciones web, en mayor o menor medida, porque la mayoría tienen cierto contenido dinámico
## Evolución de la Web
### Web 1.0
- 1993 – 2003
- Páginas con hiperenlaces
- El usuario sólo leía contenido publicado por otros
- Contenido muy estático, muy difícil de editar
### Web 2.0
- Los usuarios toman el control de los contenidos
- El término Web 2.0 fue acuñado por Dale Dougherty en 2004
- Web como plataforma con aplicaciones ligeras, dinámicas y en constante evolución
- Inteligencia colectiva: creación, incluso colaborativa, y distribución de contenidos.
- Experiencia enriquecedora del usuario
- Múltiples dispositivos de acceso
#### Redes sociales
- Las redes sociales forman parte de la denominada web 2.0
- En los últimos años las redes sociales se han convertido en el centro neurálgico de la red
---
- Las redes sociales generalistas están cambiando los hábitos de uso de Internet
- En ocasiones facebook recibe más visitantes que la página del buscador Google
- Los blogs personales se usan cada día menos
- El correo electrónico está siendo sustituido por mensajes privados
- Para los usuarios es mucho más cómodo comunicarse en una red social porque todos los servicios están integrados
## La web hoy
- Las redes sociales generalistas están desplazando a otros medios de colaboración en la red (blogs, mail, wikis…)
- Las redes sociales temáticas cada vez son más usadas
- Los usuarios conocen y usan el modelo de red social
- Los usuarios quieren aprovechar ese modelo en otros contextos: trabajo, investigación, deporte, cocina…
- Las páginas webs se integran cada vez más con las redes sociales
- Las redes sociales están en los medios de comunicación generalistas
- Las redes sociales son “la nueva web”
- Las empresas tienen presencia en las redes sociales para llegar a sus clientes
## Navegadores y Servidores web
- La web sigue una arquitectura cliente-servidor
- El navegador web actúa como cliente
- El servidor web actúa como servidor
- La comunicación se establece usando el protocolo http
### Navegadores web
- Un navegador web es una aplicación que se instala en el sistema que utiliza el usuario
- El usuario escribe una dirección web (URL - Uniform Resource Locator). La dirección contiene el nombre del servidor web y el nombre del recurso que se solicita
- El navegador hace una petición al servidor y solicita el recurso
- El navegador descarga el recurso y lo visualiza
- Si el recurso en una página HTML, además de visualizar su contenido, descarga recursos adicionales como imágenes, estilos, etc. y los visualiza integrados en la página
- Uno de los elementos que más han definido a las páginas web son los enlaces o links
- El navegador carga una nueva página web cuando el usuario hace clic en un enlace
- Pulsar links permite pasar de una página a otra navegando
- El navegador dispone de un historial para volver hacia atrás en la navegación
### La guerra de los navegadores
- La primera guerra enfrentó a Netscape Navigator vs Internet Explorer a mediados de los 90
- Internet Explorer estaba preinstalado en todos los Windows
- En el año 2000 un juez de EEUU consideró que esto constituía monopolio y obligó a Microsoft a dividirse en dos compañías, pero apelaron y sólo pagaron una multa y permitieron a fabricantes no incluir Internet Explorer
- Durante la década de los 90, las páginas web no se podían visualizar correctamente en todos los navegadores porque estaban diseñadas para Internet Explorer (que no seguía los estándares)
- Internet Explorer 6 estaba incluido de serie en Windows XP
- Entre los navegadores más recientes siguen existiendo pequeñas diferencias, pero existen técnicas para que una página se vea correctamente en todos ellos
### Servidores web
- Software
- Alberga sitios web estáticos y los sirve con el protocolo http a los navegadores web
- Ejecuta aplicaciones web que el usuario utiliza desde un navegador web (usando http)
- Hardware
- Servidor en el que se ejecuta el software de servidor web.
- Generalmente dispone de otros servicios adicionales como un sistema gestor de base de datos
- Un servidor web básico sirve por http los ficheros que están en el disco duro, cualquier tipo, aunque lo habitual son los ficheros que un navegador reconoce (html, jpg, png, pdf…)
- Cuando recibe una petición, devuelve el fichero del disco duro que se ajuste a la ruta indicada en la URLs
- La mayoría de los servidores web permiten que en cada petición se ejecute un pequeño programa que genera dinámicamente el recurso que se envía al usuario (server-side scripting)
- A este contenido generado “al vuelo” se le denomina contenido dinámico
- Es bastante habitual que el contenido dinámico se genere con la información de una base de datos
- Los servidores web con contenido dinámico no sólo envían recursos al navegador, también pueden procesar información que les llega del mismo
- Datos contenidos en formularios web
- Ficheros enviados desde el navegador
- Información codificada en los links que pulsan los usuarios (URL)
- Esta funcionalidad permite el desarrollo de completas aplicaciones web
### Programacion del lado del servidor
- La tecnología que conectaba el servidor web con un programa para generar las páginas web se denominada CGI (Common Gateway Interface)
- Los programas, llamados CGIs, se ejecutaban completamente en cada petición http que se hacía al servidor
- Estos programas estaban implementados en lenguajes como C o scripts de Perl, Shell y PHP
- Debido a los problemas de rendimiento con los CGIs surgieron nuevos mecanismos para la programación del lado del servidor
### Java Enterprise Edition (Java EE)
- Tecnología basada en Java
- Tecnología muy usada a nivel empresarial
- Estos servidores se integran en los servidores web Apache, NginX e IIS
- Estándares en Java EE
- Java tiene una organización de estandarización propia llamada Java Community Process (JCP)
- En ella se definen estándares abiertos que se pueden implementar con licencia libre o propietaria
- Estándares web: Java EE, Servlets, JSP, JDBC, JPA, JSF, EJBs…
- Bibliotecas y frameworks en Java EE
- Existen multitud de implementaciones independientes que pueden seguir o no un estándar
- Ejemplos: Spring, Hibernate, GWT, Vaadin, Google Closure, Struts, Apache Tiles…
- Estándares más importantes en Java EE
- Servlets: Estándar para ejecutar código Java ante una petición web en un servidor Java EE
- JSP (Java Server Pages): Estándar que permite mezclar en un documento código Java y HTML para generar páginas web de forma dinámica
- JDBC (Java Database Conectivity): Estándar para conexión a bases de datos relacionales desde Java
- JPA (Java Persistence API): Estándar para la correspondencia objeto-relacional (ORM, Object Relational Mapping)
- JSF (Java Server Faces): Estándar de construcción de aplicaciones web basadas en componentes reutilizables
- EJB (Enterprise JavaBeans): arquitectura manejada para la construcción de aplicaciones web (transacciones, seguridad, distribución…)
- Servidores Java EE
- Toda aplicación web Java EE tiene que ejecutarse en una servidor de aplicaciones Java
- Existen muchos tipos de servidores, dependiendo de sus funcionalidades/rendimiento y de su licencia/coste
- Ejemplos: Glassfish (Oracle), Tomcat (Apache), Jetty (Eclipse), JBoss (RedHat), WebSphere (IBM), WebLogic (Oracle)
- Herramientas de desarrollo
- Para desarrollar aplicaciones Java EE se utilizan IDEs y plugins para ellos
- Eclipse: Fundación Eclipse con multitud de plugins. Mucha diversidad, falta de integración. Software libre.
- Netbeans: Oracle. Muy integrado. Software libre.
- IntelliJ: Jetbrains. Muy integrado. Propietario
### PHP
- La tecnología dispone de un lenguaje con tipos dinámicos llamado PHP
- Es multiplataforma
- Es una tecnología multiplataforma que se integra bien con servidores como Apache, NginX e IIS
- Estándares y empresas en PHP
- No existe un organismo de estandarización, la tecnología evoluciona por la comunidad en PHP Group
- No hay muchas empresas grandes que apoyan el desarrollo de PHP, pero Zend es muy relevante
- Facebook es sin duda una muestra importante de la popularidad de PHP
- CMSs como Drupal y Wordpress también están implementados en PHP
- Bibliotecas y frameworks
- Existen multitud de frameworks para el desarrollo de aplicaciones PHP
- Ejemplos: CakePHP, CodeIgniter, Zend, Symfony, Yii, Zeta Components, Horde
### ASP.NET
- Versión evolucionada del ASP clásico
- Forma parte de la tecnología .NET de Microsoft
- Se utiliza el lenguaje C# (muy similar a Java)
- Licencia propietaria y para plataformas Windows
- Se integra bien con el servidor IIS
- Librerías y frameworks
- La mayoría de las librerías para ASP.NET son las oficiales proporcionadas por Microsoft
- Web Pages: Tecnología similar a JSP y PHP que permite combinar HTML con código ASP
- Web Forms: Tecnología de construcción de aplicaciones web basadas en componentes (similar a JSF de JavaEE)
- Data Access Layer (DAL): Capa de acceso a los datos. Proporciona la misma funcionalidad que JDBC y JPA
- Como las aplicaciones web tienen muchas necesidades de escalabilidad y tolerancia a fallos, hay una nueva familia de bases de datos
- Se denominan genéricamente NoSQL, que se puede interpretar como: No SQL o como Not Only SQL
### Protocolo http
- Protocolo Hypertext Transfer Protocol estándar (W3C y IETF)
- La versión 1.0 se publicó en 1996
- Los paquetes están codificados en texto plano y con un formato sencillo (no en binario)
- El puerto por defecto es el 80
- La petición solicita un recurso, identificado por la URL (Uniform Resource Locator)
- Es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores
#### Ciclo de vida de una petición http
1. En un navegador se introduce la dirección web
2. El navegador abrirá una conexión al puerto 80 del servidor (cuya IP obtiene por DNS)
3. Enviará la petición con formato

4. El servidor devolverá una respuesta con el formato

---
- El navegador analiza la respuesta del servidor.
- Si es correcta (200 OK) se lee el contenido
- Se determina el tipo de contenido por el “Content-Type”. puede ser “text/html”, "text/plain, json, etc"
- Se lee el contenido y se muestra en el navegador
- Si el contenido referencia a más contenido (imágenes, reglas de estilo, etc…) se vuelve a hacer una petición http por cada uno de ellos
## Aplicaciones de Internet en dispositivos móviles
- Debido a sus características (pequeña pantalla y control táctil) es recomendable que exista una versión adaptada de la aplicación web
- Responsive web design
- Técnicas y herramientas que permiten que los elementos de la web se adapten al tamaño del dispositivo y su forma de interacción
- Las aplicaciones nativas de las plataformas móviles se implementan con diferentes tecnologías:
- Android: Kotlin y Java
- iPhone y iPad: Swift
- Desarrollo híbrido: Ionic, Flutter, React Native y Xamarin.
- Existen diversos protocolos/técnicas:
- Sockets: Conexión TCP con el servidor
- API REST: Uso del protocolo http, pero en vez de devolver HTML+CSS, se devuelve información en XML o JSON
- Websockets: un híbrido entre ambas técnicas
---
- Las técnicas más habituales son:
- API REST
- websockets (más reciente)
- Arquitectura cliente/servidor:
- La aplicación (cliente) se implementa con la tecnología nativa de la plataforma
- La implementación del servidor es similar a un servidor en una aplicación web
---
- Las tecnologías que se utilizan en el lado del cliente en el desarrollo web son HTML, CSS y JavaScript
- Permiten el diseño de interfaces de usuario atractivos, adaptados a diferentes resoluciones, interactivos, etc.
- Funcionan en una gran cantidad de plataformas gracias a los navegadores web (portables)
- Estas tecnologías también se pueden usar para implementar aplicaciones en los dispositivos móviles
- Estas aplicaciones se comportan como las aplicaciones nativas:
- Se publican en las tiendas de aplicaciones
- Tienen icono
- Pueden acceder a la cámara, acelerómetro, almacenamiento, etc…
- HTML5 para desarrollo de apps:
- Ventajas:
- Reduce el esfuerzo de desarrollo porque una misma app funciona en todos los dispositivos.
- Es una tecnología familiar a muchos desarrolladores y existen muchas herramientas
- Inconvenientes:
- Es posible que no se integren a la perfección con la plataforma
- No suelen tener acceso a las últimas innovaciones
# Desarrollo de Aplicaciones Web
## Introducción
- Desarrollo de software
- Se han creado multitud de tecnologías, frameworks de desarrollo de aplicaciones, bibliotecas, aplicaciones configurables, arquitecturas, modelos de publicación de versiones (release)…
- Administración de sistemas
- Se ha evolucionado enormemente en la administración de sistemas, servicios de alojamiento, técnicas de escalabilidad, monitorización, gestión de centros de procesos de datos…
- Existen dos enfoques en el desarrollo de aplicaciones web:
- Creación de webs con tecnologías de desarrollo
- Creación de webs con sistemas gestores de contenido
- Creación de webs con tecnologías de desarrollo
- Arquitecturas de aplicaciones web: Una aplicación web puede tener diferentes arquitecturas. Esto determina cómo se usan las diferentes tecnologías existentes
- Tecnologías de cliente: Tecnologías que permiten crear interfaces de usuario atractivos y permiten la comunicación con el servidor. Basadas en HTML, CSS y JavaScript.
- Tecnologías de servidor: Tecnologías que permiten implementar el comportamiento de la aplicación web en el servidor: lógica de negocio, generación de informes, compartir información entre usuarios, envío de correos, etc…
- Bases de datos: La gran mayoría de las webs necesitan guardar información. Las bases de datos son una parte esencial del desarrollo web.
- Creación de webs con sistemas gestores de contenido
- Existen aplicaciones web cuya principal funcionalidad es la publicación de contenido.
- Para desarrollar este tipo de webs, en vez de desarrollar la web con técnicas de desarrollo, se utiliza un software ya desarrollado y se personaliza y adapta a las necesidades
- A las aplicaciones de este tipo se las denomina Sistemas Gestores de Contenido (CMSs).
## Administración de sistemas
- Internet y las aplicaciones web han hecho evolucionar la administración de sistemas en muchos aspectos
- Para que una aplicación web funcione necesita que el sistema donde se instale disponga de un servidor web y habitualmente una base de datos
- Como la web tiene que estar disponible para los usuarios de Internet, habitualmente se instala en sistemas que se alquilan a terceros: alojamiento en la nube
- Como las aplicaciones web pueden tener un número muy grande de usuarios y tienen que estar siempre disponibles, se utilizan técnicas de escalabilidad y tolerancia a fallos
## Arquitecturas de aplicaciones web
- Las arquitecturas se diferencias principalmente en lo estática o dinámica que sea la web
- Una web puede ser dinámica en el cliente y/o en el servidor
- Las tecnologías utilizadas:
- Dinamismo en cliente: JavaScript
- Dinamismo en servidor: Java EE, .NET, PHP, Ruby on Rails, Python Django, Groovy, Node.js, Scala Play…
### Cliente estático (Sin JavaScript)
- Servidor estático
- Servidor dinámico (3 capas)
### Cliente dinámico (Con JavaScript)
- Servidor estático
- Servidor dinámico
- JavaScript para efectos gráficos
- JavaScript con peticiones en segundo plano (AJAX)
- Single Page Application con REST
### Arquitectura Cliente estático y Servidor estático
- El navegador hace petición al servidor mediante http
- El servidor transforma URL a ruta en disco
- El servidor devuelve el fichero de disco al navegador
- El navegador visualiza (renderiza) la página HTML con estilos CSS e imágenes (sin JavaScript).
- Cuando el usuario hace clic en un enlace, el navegador repite el proceso con la URL del link y recarga por completo la página web
- Con esta arquitectura el servidor siempre devuelve los mismos recursos
- La web está formada por HTML, CSS, Imágenes, PDF, etc… (pero no incluye JavaScript)
- La web se diseñó con esta arquitectura
- Todavía se sigue usando en muchas páginas web:
- Páginas personales o de proyectos básicas (p.e. Tecnología de webs de github)
- Documentación técnica (JavaDoc en Java, Maven site,etc…)
### Arquitectura Cliente estático y Servidor dinámico
Es un ejemplo de arquitectura de 3 capas:
- Navegador: Capa de presentación
- Servidor web: Capa de aplicación (Lógica de negocio)
- Base de datos: Capa de datos
Cuando el servidor web recibe una petición, dependiendo de la URL:
- Devolver contenido del disco
- Ejecutar código para generar el recurso dinámicamente
- Cuando se ejecuta código, normalmente se hacen consultas a una base de datos para recuperar la información
- Lo más habitual es que se genere la página HTML de forma dinámica
- También se pueden generar recursos de otro tipo (imágenes,PDFs…)
- Si el usuario pulsa un link, se recarga la página al completo
- Es la arquitectura de las primeras “aplicaciones web”
- El contenido es dinámico, porque se ejecuta código en el servidor para generar dicho contenido
- La experiencia de usuario antes no era muy buena:
- Conexiones lentas implican tiempos de carga apreciables en cada clic
- La recarga completa de la página ofrece una mala experiencia de usuario (página en blanco)
- Pero ha mejorado:
- Mayor velocidad de Internet (menos tiempo de espera)
- Navegadores muestran la nueva página una vez cargada (sin pasar por la página en blanco)
### Arquitectura Cliente dinámico y Servidor dinámico
- La mayoría de las aplicaciones web actuales son dinámicas tanto en cliente como en servidor
- Dependiendo de cómo se use el JavaScript en el cliente, las aplicaciones se pueden dividir en tres tipos:
- JavaScript para efectos gráficos
- JavaScript con peticiones en segundo plano (AJAX)
- Single Page Application con API REST
#### JavaScript para efectos gráficos
- En este caso, el dinamismo en el cliente se utiliza exactamente igual que con un servidor estático
- JavaScript se diseñó, entre otras cosas, para añadir efectos gráficos básicos a las páginas cuando el CSS era muy limitado
- La gran mayoría de las aplicaciones web que existen en Internet siguen esta arquitectura
#### JavaScript con peticiones en segundo plano (AJAX)
- JavaScript se puede usar para no tener que recargar completamente la página completa al pulsar un link
- Con JavaScript se puede hacer petición al servidor web en segundo plano (oculta al usuario)
- Cuando llega al navegador el resultado de la petición, el código JavaScript actualiza aquellas partes de la página necesarias
- A esta técnica se la conoce como AJAX (Asynchronous JavaScript And XML)
- Cuando el código JavaScript hace peticiones, el servidor puede devolver:
- Contenido para ser incluido en la página directamente:
- Fragmentos de HTML generados dinámicamente
- Recursos estáticos en disco: Imágenes, PDF, HTML, etc…
- Información que será interpretada por JavaScript para modificar la página (Mostrar un error, cambiar un color, …):
- Información generada dinámicamente estructura en XML o JSON (un formato similar a XML).
- Un servidor web genera HTML de forma dinámica cuando recibe peticiones http
- Si se usa AJAX, el servidor genera información en XML o JSON cuando recibe peticiones http
- Habitualmente, cuando un servidor web genera XML o JSON ante peticiones http, implementa una API REST
- La mayoría de las aplicaciones que se han desarrollado en los últimos años usan AJAX en algunas de sus páginas por la mejora en la experiencia del usuario
#### SPA (Single Page Application)
- En este caso, la aplicación web es un conjunto de recursos HTML, CSS y JavaScript estáticos, que se cargan en el navegador
- El contenido dinámico se genera en el servidor únicamente como XML o JSON que se carga en segundo plano con JavaScript mediante peticiones a la API REST del servidor web
- El cliente una web SPA es una aplicación completa y autónoma, que se descarga de la red al acceder a una URL y que se comunica con un servidor usando REST
- Existe una única página cuyo contenido va cambiando según el usuario interactúa con botones, pestañas, etc.
- El botón de atrás del navegador funciona porque se “emula” una navegación por páginas cuando se evoluciona por los estados de la aplicación
- Las aplicaciones autónomas que se implementan con tecnologías HTML5 se consideran SPA:
- Móviles: Apache Cordova, Firefox OS, ubuntu mobile…
- Escritorio: Windows Store Apps, Google ChromeApps...
- SmartTV: Samsung, LG…
- En la mayoría de estas tecnologías en código de la aplicación cliente (HTML, CSS y JS) puede estar contenido en el paquete de instalación o puede descargarse al iniciar la aplicación
## Tecnologías del cliente
- Existen un conjunto de estándares web, definidos por el W3C, que todo navegador debería implementar
- Existen un conjunto de tecnologías no estándar que algunos navegadores implementan para la construcción de aplicaciones avanzadas y acceso a contenido multimedia
- El W3C (WorldWideWeb Consortium) es una comunidad internacional que desarrolla estándares abiertos que aseguran el crecimiento de la Web a largo plazo
### Estándares web
- HTML (Hypertext Markup Language) y CSS (Cascading Style Sheets) son dos de las tecnologías principales para la construcción de páginas web
- HTML proporciona la información estructurada en secciones, párrafos, título, imágenes, etc…
- La versión actual es HTML5
- Todavía no está finalizada, pero la mayoría de los navegadores implementan gran parte de la especificación
- Ha supuesto una revolución para el dinamismo en el cliente porque ofrece muchas librerías/tecnologías avanzadas
- CSS proporciona la distribución de los elementos y su estilo (colores, tipos de letra, fondos, efectos…)
- CSS es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML, XML, SVG o incluso interfaces de usuario de otras tecnologías (JavaFX)
- Su versión actual es CSS3 (aunque todavía no está finalizada)
- Scripting
- Las páginas web pueden programarse con diversos lenguajes de script, aunque prácticamente sólo se usa JavaScript
- Con JavaScript se puede modificar la página y ejecutar código cuando se interactúa con ella (a través del modelo de objetos del documento DOM)
- JavaScript
- Es un lenguaje de programación basado en el estándar ECMAScript de ECMA (otra organización diferente al W3C)
- Hay ligeras diferencias en la implementación de JS de los navegadores, aunque actualmente todos son bastante compatibles entre sí
- Inicialmente era un lenguaje interpretado, pero actualmente se ejecuta con máquinas virtuales en los navegadores (velocidad de ejecución y eficiencia de memoria)
- Características:
- Tipado dinámico
- Funcional y orientado a objetos
- Librerías JavaScript
- Existen multitud de bibliotecas (APIs) JavaScript para el desarrollo de aplicaciones
- Las más utilizadas son:
- jQuery: es un recubrimiento de la API DOM que aporta facilidad de uso, potencia y compatibilidad entre navegadores. Se usa para gestionar el interfaz y para peticiones ajax.
- underscore.js: Librería para trabajar con estructuras de datos con un enfoque funcional. También permite gestionar plantillas para generar HTML partiendo de datos
- Además de librerías, también existen frameworks del alto nivel que estructuran una aplicación de forma completa. Especialmente en aplicaciones SPA
- Los más populares son Angular.js, Backbone.js y Ember
- DOM
- Document Object Model
- Librería (API) para manipular el documento HTML cargado en el navegador
- Es el equivalente en web a la librería de componentes gráficos
- Permite la gestión de eventos, insertar y eliminar elementos, etc.
### Tecnologías no estándar en la web
- La web ha avanzado y evolucionado gracias a tecnologías no estándar incluidas en los navegadores mediante plugins
- La tecnología no estándar por excelencia de la web es Adobe Flash
- La llegada de los dispositivos móviles, consolas y televisiones conectadas (SmartTVs) y la estandarización de HTML5 han hecho que estas tecnologías no estándar estén en desuso
- Adobe Flash
- Es una tecnología que se usaba para incrustar contenido multimedia interactivo en páginas web
- Durante muchos años fue la única forma de tener interactividad, animaciones, vídeos, juegos… en la web
- Obsoleta y no soportada desde 2020 por los navegadore actuales, todo se debe realizar actualmente con tecnología estandard como el HTML5.
- Java Applets
- Los applets de Java fueron los precursores de Flash
- Hace mucho tiempo que está en desuso
- Microsoft Silverlight
- La apuesta de Microsoft para competir con Adobe Flash, al igual que el flash, obsoleta y ya no soportada.
- Si no hay un motivo importante, todas las aplicaciones web deberían implementarse con estándares
- En un mundo con multitud de dispositivos conectados a la red, es la única forma de la web sea accesible desde todos ellos
- HTML5 avanza muy rápido. Se ha convertido en la tecnología estándar para multitud de plataformas diferentes
## Tecnologías del servidor
- Los estándares no son necesarios en el servidor
- En el servidor, se utilizan tecnologías, propietarias o abiertas, para el desarrollo de aplicaciones web
- Existen multitud de tecnologías de construcción de aplicaciones en el servidor
- Más usadas: PHP, Java EE, ASP.NET
- Menos usadas: Ruby on Rails, Grails (Groovy), Django (Python), Perl, ColdFusion, etc
## Bases de datos
### Bases de Datos SQL
Las bases de datos más populares para el desarrollo de aplicaciones web han sido las bases de datos relacionales
- MySQL
- Sistema gestor de base de datos multiplataforma
- Desarrollado en C
- Licencia código abierto GPL
- Soporte de un subconjunto de SQL 99
- Herramienta interactiva para hacer consultas y crear bases de datos
- Muy popular en el desarrollo web
### Base de Datos NOSQL
Como las aplicaciones web tienen muchas necesidades de escalabilidad y tolerancia a fallos, hay una nueva familia de bases de datos, NoSQL, que se puede interpretar como: No SQL o como Not Only SQL Algunas de las más famosas son:
- MongoDB
- Cassandra
- Redis
- Riak
## Sistemas gestores de contenido
- CMS (Content Management System)
- Aplicación web genérica que permite la creación y administración de contenidos vía web
- El sistema permite manejar de manera independiente el contenido y el diseño, permite el cambio de diseño (con templates o themes)
- Los CMSs han evolucionado para convertirse en un nuevo modelo de desarrollo de aplicaciones web configurando y adaptando módulos con un interfaz web
- Existen multitud de CMSs con enfoques y objetivos diferentes
- Ejemplos: Drupal (PHP), Joomla (PHP), Wordpress (PHP), Plone (JavaSript), Moodle (PHP), Liferay (Java)
- Joomla: Principal ventaja es permitir editar el contenido de un sitio web de manera sencilla.
- WordPress: Es un sistema de gestión de contenido enfocado a la creación de blogs
### Drupal
- Comenzó como Sistema de tablón de anuncios
- Código libre con licencia GPL/GNU
- Escrito en PHP
- Desarrollado y mantenido por una activa comunidad de usuarios
- Código abierto: El código fuente de Drupal está libremente disponible bajo los términos de la licencia GNU/GPL.
- Módulos: La comunidad de Drupal ha contribuido con infinidad de módulos que proporcionan diversas funcionalidades.
- Objetos de Contenido (Nodos): El contenido creado en Drupal es, funcionalmente, un objeto (Nodo).
- Plataforma Independiente de la base de datos: Aunque la mayor parte de las instalaciones de Drupal utilizan MySQL.
- Multiplataforma: Drupal ha sido diseñado desde el principio para ser multi-plataforma
- Múltiples idiomas y Localización: Drupal está pensado para una audiencia internacional y proporciona opciones para crear un portal multilingüe
- Administración y Análisis Administración via Web: La administración y configuración del sistema se puede realizar enteramente con un navegador
###### tags: `DAW` `DPL` `UT1`