miércoles, 24 de febrero de 2016

1.1 Evolución de las aplicaciones web

Una aplicación es un programa o conjunto de programas para ayudar al usuario de un ordenador para procesar una tarea específica. 
Una aplicación web es básicamente una manera de facilitar el logro de una tarea específica en la Web, a diferencia de un sitio web estático que es más bien una herramienta, no menos importante, para la comunicación. La aplicación web por lo tanto permite al usuario interactuar directamente contigo y tus datos, todo en forma personalizada, para llevar a cabo esa tarea específica.

Las aplicaciones Web han revolucionado la forma de utilizar internet, aumentando el contenido de las páginas con texto estático (texto que no evoluciona, sino que permanecen como es) a un contenido rico e interactivo, por lo tanto escalable.

La 'Web 1.0 (1991-2003) es la forma más básica que existe, con navegadores de sólo texto bastante rápidos. Después surgió el HTML que hizo las páginas web más agradables a la vista, así como los primeros navegadores visuales tales como IE, Netscape, explorer (en versiones antiguas), etc.

La Web 1.0 es de sólo lectura. El usuario no puede interactuar con el contenido de la página (nada de comentarios, respuestas, citas, etc), estando totalmente limitado a lo que el Webmaster sube a ésta.

Web 1.0 se refiere a un estado de la World Wide Web, y cualquier página web diseñada con un estilo anterior del fenómeno de la Web 2.0.
Web 2.0 está asociado a aplicaciones web que facilitan el compartir información, la interoperabilidad, el diseño centrado en el usuario y la colaboración en la World Wide Web. Un sitio Web 2.0 permite a los usuarios interactuar y colaborar entre sí como creadores de contenido generado por usuarios en una comunidad virtual, a diferencia de sitios web donde los usuarios se limitan a la observación pasiva de los contenidos que se ha creado para ellos. Ejemplos de la Web 2.0 son las comunidades web, los servicios web, las aplicaciones web, los servicios de red social, los servicios de alojamientos de videos, las wikis, blogs y mashups.


  • El primer lenguaje de programación para el desarrollo de aplicaciones web es el "Perl". Fue inventado por Larry Wall en 1987 antes de que internet se convirtiera en accesible para el público en genera
  • En 1995 el programador Rasmus Lerdorf puso a disposición el lenguaje PHP con lo que todo el desarrollo de aplicaciones web realmente despegó. Hoy en día, incluso muchas de estas aplicaciones se han desarrollado en PHP, como Google, Facebook y Wikipedia. 
  • En 1996 dos desarrolladores Sabeer Bhatia y Jack Smith lanzaron Hotmail (no fue un desarrollo original de microsoft), un servicio de correo en línea que permite (por primera vez) para el público en general para acceder y consultar el correo electrónico siempre que sea los usuarios pudieran estar en cualquier sitio lejos de su ordenador. 
  • Plataforma Flash es utilizado para añadir contenido interactivo para sitios Web. Flash hizo su aparición en 1997, conocido como Shockwave Flash. Más tarde, después de ser adquirido por Macromedia y Adobe, Flash se convirtió en una plataforma para desarrollar aplicaciones web interactivas. 
  • El 17 de enero de 1998, el sitio web The Drudge Report anunció por primera vez un informe de noticias antes de que se difundiera en los medios de televisión y la prensa tradicional. Se informó el escándalo Clinton/Lewinsky. Este evento fue el detonante del periodismo en línea tal como lo conocemos hoy en día. Antes de esa fecha, internet nunca había sido considerado un medio de comunicación más importante. 
  • En 1998 la compañía Google desarrolló su primer motor de búsqueda en línea que, por su nueva forma de indexar páginas web, facilita enormemente la búsqueda de información en internet. Google sigue innovando y se convirtió en uno de los más prolíficos en cuanto a las aplicaciones Web, con indicación del muy popular Google Maps, Google Docs, Gmail y en aumento. 



  • En el 2001 después de la explosión de la burbuja de internet, Wikipedia se lanzó como un sub-proyecto de Nupedia, una enciclopedia en línea tradicional. Para desarrollar su plataforma, se utiliza un tipo de Wikipedia de la aplicación web denominada "wiki", que permite a cualquier usuario agregar contenido. Las contribuciones no se hicieron esperar, y al final del primer año de funcionamiento, Wikipedia ya contaba con 20000 páginas en 18 idiomas. Hoy en día, casi 21 millones de artículos en 285 idiomas conforman el sexto sitio más visitado en el mundo, siendo el primero Google. 
  • En 2003, MySpace fue fundado y más tarde, de 2005 a 2008, el sitio se convirtió en el medio de comunicación social más visitado. MySpace fue una plataforma de lanzamiento para otras aplicaciones web conocidos como YouTube, y Slide.com! RockYou, todos los cuales comenzaron como módulos adicionales para los usuarios de MySpace antes de convertirse en sus propios sitios web en su propio derecho. 
  • En 2004 en una conferencia de la Web 2.0 a cargo de John Battelle y Tim O'Reilly, el concepto de "web como plataforma" fue mencionado por primera vez. Esta innovación allanó el camino para futuras aplicaciones web, es decir, un software que aprovecha las ventajas de la conexión a internet y que se desvían del uso tradicional del escritorio.  
  • En 2004 el sitio interactivo de Digg se puso en marcha. Propuso una forma innovadora de crear y encontrar contenido en internet mediante la promoción de noticias y enlaces democráticamente votado por los usuarios.  
  • En 2004 fue el lanzamiento de Facebook, que estaba entonces en su infancia, abierto sólo a los estudiantes. Con un millón de suscriptores a finales de 2004, Facebook se ha convertido en el medio de comunicación, utilizado con más de 900 millones de usuarios. 
  • En 2005, YouTube fue lanzado oficialmente, permite a los usuarios compartir vídeos en línea. De simple sitio para compartir vídeos en internet a una plataforma madura que se conoce hoy en día, YouTube ahora ofrece cerca de 4000 millones de videos al día, además de un servicio de alquiler de películas en línea, y, finalmente, episodios de emisión para las empresas o las películas de MGM, Lions Gate Entertainment y CBS. 
  • En 2006 Twitter aumentado de 1,6 millones de 'tweets' en 2007 con la impresionante cifra de 340 millones de dólares por día en marzo de 2012 (equivalente a casi 4000 'tweets' por segundo). 
  • En 2007 fue la aparición del iPhone, que fue sin duda responsable de la llegada de la nueva moda para las plataformas móviles y aplicaciones web. Ahora son accesibles por teléfono inteligente. 
  • En 2011, la empresa Kickstarter, facilita la financiación de proyectos en línea de forma participativa, ha llegado a los 4000 proyectos con más de 30 millones de dólares en donaciones. Por otra parte, casi el 44% de los proyectos se han iniciado con éxito desde esta plataforma.
Internet es una de las últimas tecnologías que más rápidamente se está desarrollando para su introducción en los hogares. Apunta a su integración como un electrodoméstico más, con unas capacidades y servicios que evolucionaran rápidamente. Por ese motivo, cada vez más adquieren importancia en las respuestas de los usuarios frente a la implantación de estas nuevas tecnologías.

Internet y las conexiones de alta velocidad que lo acompañan, se ha podido mejorar de manera significativa la manera de trabajar de algunas personas al poder hacerlo desde sus hogares, Internet ha permitido a estas personas mayor flexibilidad en términos de horarios y de localización. La programación web es un término adecuado para describir el proceso general que engloba el diseño y la creación de un sitio web.

1.2 Arquitectura de las aplicaciones web


Una aplicación web es proporcionada por un servicio web y utiliza por usuarios que se conectan desde cualquier punto vía clientes web (browsers o navegadores). La arquitectura de un sitio web tiene tres componentes principales:

Un servidor web: El servidor Web distribuye páginas de información formateada a los clientes que las solicitan. Los requerimientos son hechos a través de una conexión de red, y para ello se usa el protocolo HTTP. Una vez que se solicita esta petición mediante el protocolo HTTP y la recibe el servidor Web, éste localiza la página Web en su sistema de archivos y la envía de vuelta al navegador que la solicitó.
  •  Una conexión de red 
  • Uno o más clientes

Las aplicaciones web se basan en una arquitectura cliente/servidor: por un lado está el cliente (el navegador, explorador o visualizador) y por otro lado el servidor (el servidor web). Existen diversas variantes de la arquitectura básica según cómo se implementen las diferentes funcionalidades de la parte servidor.

 

Arquitectura Cliente/Servidor


La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes. En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece solo lo particular de cada usuario.

Características del Cliente: 
  •  Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación.
  • 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.
Características del Servidor:

  • Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación.
  • Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.




Arquitectura en tres capas


La utilización de la plataforma Java Enterprise Edition (JEE 5.0) permite una concepción del sistema en n- capas, en específico se usará una arquitectura en tres capas, cuyo objetivo primordial es la separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la capa de presentación al usuario. La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, solo se ataca al nivel requerido sin tener que revisar entre código mezclado. Además, permite distribuir el trabajo de creación de una aplicación por niveles; de este modo, cada grupo de trabajo está totalmente abstraído del resto de los niveles.

Capa de presentación: Es la que ve el usuario, presenta el sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio.

Capa de negocio: Es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos para almacenar o recuperar datos de él.

Capa de datos: Es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.

Patrón Modelo-Vista-Controlador (MVC): El patrón MVC separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. La lógica de un interfaz de usuario cambia con más frecuencia que los almacenes de datos y la lógica de negocio. Si se realiza un diseño donde se mezclan los componentes de interfaz y de negocio, entonces la consecuencia será que, cuando se necesite cambiar la interfaz, se tendrá que modificar trabajosamente los componentes de negocio. Mayor trabajo y más riesgo de error. Se trata de realizar un diseño que desacople la vista del modelo, con la finalidad de mejorar la reusabilidad. De esta forma las modificaciones en las vistas impactan en menor medida en la lógica de negocio o de datos.