Diferencia entre revisiones de «Usuario:ManuelRomero/micursos/DWES/Tema1/Aplicaciones Web»

De WikiEducator
Saltar a: navegación, buscar
Línea 88: Línea 88:
  
 
===Tecnologías para programación web del lado del servidor===
 
===Tecnologías para programación web del lado del servidor===
 +
*Cuando programas una aplicación, utilizas un lenguaje de programación.
 +
*Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos.
 +
*Al programar cada aplicación utilizas ciertas herramientas como un entorno de desarrollo o librerías de código. *Además, una vez acabado su desarrollo, esa aplicación necesitará ciertos componentes para su ejecución.
 +
*Por ejemplo en el caso de javauna máquina virtual de Java.
 +
*Son consideraciones a tener en cuenta antes de empezar a desarrollar.
  
  
 +
===Los componentes de una aplicación web===
  
  
*Cuando programas una aplicación, utilizas un lenguaje de programación. Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos. Al programar cada aplicación utilizas ciertas herramientas como un entorno de desarrollo o librerías de código. Además, una vez acabado su desarrollo, esa aplicación necesitará ciertos componentes para su ejecución, como por ejemplo una máquina virtual de Java.
 
*Es importante ser consciente de ello para tener la capacidad de poder tomar una decisión en un momento determinado antes de empezar a desarrollar una aplicación.
 
  
Los componentes principales para ejecutar una aplicaciones web en un servidor son los siguientes:
+
*1.-'''''Un servidor web''''' para recibir las peticiones de los clientes web
 +
**Suelen ser los navegadores. Reciben la página que solicitan
 +
**El servidor web debe conocer el procedimiento a seguir para generar la página web:
 +
Para ello tendrá módulos encargados de  la ejecución del código y cómo se debe comunicar con él.
 +
*2.-'''''El módulo encargado de ejecutar el código o programa'''''.
 +
**genera la página web resultante.
 +
**Este módulo debe integrarse de alguna forma con el servidor web
 +
**Dependerá del lenguaje y tecnología que utilicemos para programar la aplicación web.
 +
*3.- '''''Un gestor  de base de datos''''', será un servidor.
 +
**Este módulo no es estrictamente necesario pero se usa casi siempre.
 +
*4.-'''''El lenguaje de programación''''' que utilizarás para desarrollar las aplicaciones.
  
    '''''Un servidor web''''' para recibir las peticiones de los clientes web (normalmente navegadores) y enviarles la página que solicitan (una vez generada puesto que hablamos de páginas web dinámicas). El servidor web debe conocer el procedimiento a seguir para generar la página web: qué módulo se encargará de la ejecución del código y cómo se debe comunicar con él.
+
===La arquitectura de la aplicación===
    '''''El módulo encargado de ejecutar el código o programa''''' y generar la página web resultante. Este módulo debe integrarse de alguna forma con el servidor web, y dependerá del lenguaje y tecnología que utilicemos para programar la aplicación web.
+
*Además de los componentes a utilizar, también es importante decidir cómo vas a organizar el código de la aplicación.
    '''''Un gestor  de base de datos''''', será un servidor. Este módulo no es estrictamente necesario pero en la práctica se util#iza en todas las aplicaciones web que utilizan grandes cantidades de datos para almacenarlos.
+
*Esto se conoce como la arquitectura de la aplicación web
    '''''El lenguaje de programación''''' que utilizarás para desarrollar las aplicaciones.
+
*Muchas de las arquitecturas que se usan en la programación de aplicaciones web te ayudan a estructurar el código de las aplicaciones en capas o niveles.
 +
*El motivo de dividir en capas el diseño de una aplicación es que se puedan separar las funciones lógicas de la misma, de tal forma que sea posible ejecutar cada una en un servidor distinto (en caso de que sea necesario).
 +
*Un servidor de aplicaciones web en realidad puede estar formado por varios servidores físicos;
 +
cada servidor se puede encargar de ejecutar una parte de la aplicación.  
 +
*Internamente se puede dividir la funcionalidad de una aplicación web en:
 +
#'''''capa de acceso a datos''''': que se tendrá que encargar de almacenar la información de la aplicación en una base de datos y recuperarla cuando sea necesario.  
 +
#'''''capa intermedia''''' :  donde deberás programar la funcionalidad de tu aplicación.
 +
#'''''capa cliente:''''' que es donde programarás todo lo relacionado con el interface de usuario, esto es, la parte visible de la aplicación con la que interactuará el usuario.
 +
*También en la parte del ser
  
; La arquitectura de la aplicación:
 
*Además de los componentes a utilizar, también es importante decidir cómo vas a organizar el código de la aplicación.Esto se conoce como la arquitectura de la aplicación web.  Muchas de las arquitecturas que se usan en la programación de aplicaciones web te ayudan a estructurar el código de las aplicaciones en capas o niveles.
 
El motivo de dividir en capas el diseño de una aplicación es que se puedan separar las funciones lógicas de la misma, de tal forma que sea posible ejecutar cada una en un servidor distinto (en caso de que sea necesario).
 
*Un servidor de aplicaciones web en realidad puede estar formado por varios servidores físicos; cada servidor se puede encargar de ejecutar una parte de la aplicación. De esta forma, y aunque externamente se vean como un único servidor, internamente se puede dividir la funcionalidad de una aplicación web en:
 
#capa de acceso a datos: que se tendrá que encargar de almacenar la información de la aplicación en una base de datos y recuperarla cuando sea necesario.
 
#capa intermedia :  donde deberás programar la funcionalidad de tu aplicación.
 
#capa cliente:  que es donde programarás todo lo relacionado con el interface de usuario, esto es, la parte visible de la aplicación con la que interactuará el usuario.
 
  
  
 
 
==Programación Web con Java==
 
*Dibujo de una taza de café humeante sobre las letras Java.
 
Java es el lenguaje de programación más utilizado hoy en día. Es un lenguaje orientado a objetos, basado en la sintaxis de C y C++ y eliminando algunas características de éstos que daban lugar a errores de programación, como los punteros. Todo el código que escribas en Java debe pertenecer a una clase.
 
*El código fuente se escribe en archivos con extensión .java. El compilador genera por cada clase un archivo .class. Para ejecutar una aplicación programada en Java necesitamos tener instalado un entorno de ejecución (JRE). Para crear aplicaciones en Java necesitamos el kit de desarrollo de Java (JDK), que incluye el compilador.
 
*Como ya viste, existen básicamente dos tecnologías que te permiten programar páginas web dinámicas utilizando Java EE: servlets (clases Java compiladas que contienen instrucciones de salida para generar las etiquetas HTML de las páginas) y JSP (páginas web que contienen instrucciones para añadir contenido de forma dinámica).
 
Aunque no es así en todos los casos, la mayoría de implementaciones disponibles para JSP compilan cada página y generan un servlet a partir de la misma la primera vez que se va a ejecutar. Este servlet se almacena para ser usado en futuras peticiones.
 
 
Por ejemplo, si quieres calcular la suma de dos números y enviar el resultado al navegador, lo podríamos realizar con una página JSP, incluyendo el código en Java dentro de las etiquetas HTML utilizando los delimitadores <% y %> de la siguiente manera:
 
 
Página JSP que contiene etiquetas HTML y una línea de código Java que muestra el resultado de efectuar una suma.
 
 
O también utilizando el método println dentro de un servlet como el siguiente, que obtiene los valores a sumar de otra página:
 
 
Código de un servlet que se encarga de sumar dos parámetros y mostrar el resultado obtenido.
 
 
No hay nada que se pueda hacer con JSP que no pueda hacerse también con servlets. De hecho, como ya viste, las primeras se suelen convertir en servlets para ser ejecutadas.
 
 
El problema de utilizar servlets directamente es que, aunque son muy eficientes, son muy tediosos de programar puesto que hay que generar la salida en código HTML con gran cantidad de funciones como println. Este problema se resuelve fácilmente utilizando JSP, puesto que aprovecha la eficiencia del código Java, para generar el contenido dinámico, y la lógica de presentación se realiza con HTML normal.
 
 
De esta forma estas dos tecnologías se suelen combinar para crear aplicaciones web. Los servlets se encargan de procesar la información y obtener resultados, y las páginas JSP se encargan del interface, incluyendo los resultados obtenidos por los servlets dentro de una página web.
 
  
  

Revisión de 18:07 24 sep 2014

DWES TituloTema2.gif




Aplicaciones Web

  • Las aplicaciones web emplean páginas web dinámicas para crear aplicaciones.
  • Estas se se ejecuten en un servidor web y se muestren en un navegador.
  • Una Aplicación Web, aunque funcionalmente puede hacer lo mismo que una aplicación de escritorio.
  • Pero tiene una serie de diferencias que podemos ver como ventajas e inconvenientes
Ventajas de las aplicaciones web
  1. No es necesario instalarlas en aquellos equipos en que se vayan a utilizar.
Se instalan y se ejecutan solamente en un equipo, en el servidor.
Esto permite uso simultáneo en diferentes equipos.
  1. Centralizado su gestión hacer copias de seguridad de sus datos, corregir errores, actualizarlas).
  2. Independiente del sistema operativo y la máquina (procesador, potencia, ...)
  3. generalmente el cuello de botella lo presenta el equipo, no la máquina
  4. Se pueden utilizar desde cualquier lugar en el que dispongamos de conexión con el servidor.
Inconvenientes
  1. El interface de usuario de las aplicaciones web es la página que se muestra en el navegador.
Esto restringe las características del interface a aquellas de una página web.
  1. Dependemos de una conexión con el servidor para poder utilizarlas.
 Si nos falla la conexión, no podremos acceder a la aplicación web.
  1. La información que se muestra en el navegador debe transmitirse desde el servidor.
 Esto hace que cierto tipo de aplicaciones no sean adecuadas para su implementación.
 por ejemplo, las aplicaciones que manejan contenido multimedia, como las de edición de vídeo.
  1. Al viajar la información por la red, existe un problema extra de seguridad.

Gestores de contenidos

  • Para generar aplicaciones web, existen herramientas llamadas gestores de contenidos
  • Por ejemplo Drupal, Joomla, Wrodpress y otras muchas.
  • En ellas siempre vemos dos partes bien diferenciadas:
  1. Una parte externa o front-end, que es el conjunto de páginas que ven los usuarios.
  2. Una parte interna o back-end, que es otro conjunto de páginas dinámicas
Normalmente son las que usan las personas que producen el contenido
También sirven para  administrar la aplicación web permitiendo a usuarios con permisos acceder a contenidos.

Back-end y front-end de una aplicación web

  • Una aplicación web normalmente se divide en dos partes
  1. un front-end, que es la parte pública que ven los usuarios externos; (La página html)
  2. un back-end, que es la parte privada que usan los administradores de la aplicación. (Los programa en servidor, bd,...)

Programación en el servidor y en cliente

  • Ya hemos dejado hablado un poco de estas dos tecnologías
El cliente se ejecuta en el navegador
  • El código a ejecutar viene embebido en forma de script en la página que el servidor nos entrega.
  • Este script en principio no puede directamente acceder a los datos que tengamos en el servidor



Icon qmark.gif

Pregunta

Si quiero verificar que la contraseña introducida en una página web tenga una longitud mínima, ¿dónde sería preferible que se ejecutara el código de comprobación?


El servidor ejecuta código y genera páginas html que entrega al cliente
  • El cliente nunca ve este código
  • El servidor accede (si es necesario) a la información que tenemos en la base de datos
  • El servidor responde a una solicitud del cliente y le entrega una página html
  • No se puede pensar que el cliente necesita un dato y se lo pide al servidor y este se lo entrega.
  • lo que entrega es una págian html. Esto debe quedar muy claro


Icon key points.gif

Puntos clave

El servidor ante una solicitud del cliente entrega una página html


AJAX Al rescate



Icon qmark.gif

Pregunta

  1. ¿Qué pasa cuando el cliente solo quiere un dato del servidor para actualziar la página que actual?
  2. ¿y si en un momento dado, sólo pretendemos almacenar algo y qudarnos como estamos?



  • Desde hace unos años existe una técnica de desarrollo web conocida como AJAX.
  • Esta tecnología nos posibilita realizar programas en los que el código JavaScript accede al servidor
  • se puede comunicar y obtener información con la que, por ejemplo, modificar la página web actual.

Plantilla:Punto clave



Arquitectura Web

Tecnologías y arquitectura web

Tecnologías para programación web del lado del servidor

  • Cuando programas una aplicación, utilizas un lenguaje de programación.
  • Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos.
  • Al programar cada aplicación utilizas ciertas herramientas como un entorno de desarrollo o librerías de código. *Además, una vez acabado su desarrollo, esa aplicación necesitará ciertos componentes para su ejecución.
  • Por ejemplo en el caso de javauna máquina virtual de Java.
  • Son consideraciones a tener en cuenta antes de empezar a desarrollar.


Los componentes de una aplicación web

  • 1.-Un servidor web para recibir las peticiones de los clientes web
    • Suelen ser los navegadores. Reciben la página que solicitan
    • El servidor web debe conocer el procedimiento a seguir para generar la página web:

Para ello tendrá módulos encargados de la ejecución del código y cómo se debe comunicar con él.

  • 2.-El módulo encargado de ejecutar el código o programa.
    • genera la página web resultante.
    • Este módulo debe integrarse de alguna forma con el servidor web
    • Dependerá del lenguaje y tecnología que utilicemos para programar la aplicación web.
  • 3.- Un gestor de base de datos, será un servidor.
    • Este módulo no es estrictamente necesario pero se usa casi siempre.
  • 4.-El lenguaje de programación que utilizarás para desarrollar las aplicaciones.

La arquitectura de la aplicación

  • Además de los componentes a utilizar, también es importante decidir cómo vas a organizar el código de la aplicación.
  • Esto se conoce como la arquitectura de la aplicación web.
  • Muchas de las arquitecturas que se usan en la programación de aplicaciones web te ayudan a estructurar el código de las aplicaciones en capas o niveles.
  • El motivo de dividir en capas el diseño de una aplicación es que se puedan separar las funciones lógicas de la misma, de tal forma que sea posible ejecutar cada una en un servidor distinto (en caso de que sea necesario).
  • Un servidor de aplicaciones web en realidad puede estar formado por varios servidores físicos;
cada servidor se puede encargar de ejecutar una parte de la aplicación. 
  • Internamente se puede dividir la funcionalidad de una aplicación web en:
  1. capa de acceso a datos: que se tendrá que encargar de almacenar la información de la aplicación en una base de datos y recuperarla cuando sea necesario.
  2. capa intermedia : donde deberás programar la funcionalidad de tu aplicación.
  3. capa cliente: que es donde programarás todo lo relacionado con el interface de usuario, esto es, la parte visible de la aplicación con la que interactuará el usuario.
  • También en la parte del ser






Icon inter.gif

Recursos de la Web



Instalar java

  • Primero debemos ver si tenemos instalado java
 java -version
  • Nos dirá la versión que actualmente tenemos instalada o que no lo tenemos.
  • En caso de no tenerla lo instalamos, podemos seguir esta guia
  • jdk, jre, jvm
  • Primero instamalos el jre
sudo apt-get install icedtea-7-plugin openjdk-7-jre
  • Luego el jdk
sudo apt-get install openjdk-7-jdk
  • Ahora verificamos la instalación
# java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

Instalar netbeans

http://niconsystem.wordpress.com/2014/04/17/instalar-netbeans-8-0-en-ubuntu-14-04/

http://ubuntuhandbook.org/index.php/2014/03/install-netbeans-ide-8-0-in-ubuntu-14-0413-1012-04/

  • Primero verificamos que nuestro equipo sea de 64 bits o de 32
# uname -a
  • Accedemos al fichero descargado
  • Le damos permiso de ejecución y ejecutamos dicho fichero
chmod +x jdk-8u20-nb-8_0_1-linux-x64.sh 
./jdk-8u20-nb-8_0_1-linux-x64.sh
  • Una vez instalado se puede ejecutar y no hace falta modificar ningún parámetro

Ubuntu restricted extras[editar código]

Una instalación limpia de Ubuntu no permite ver Flash, QuickTime, WMV, aplicaciones Java, etc. Ubuntu Restricted Extras es un paquete que incluye todo el software que por razones de patentes y conflictos con la legislación de ciertos países, Canonical, la empresa madre de Ubuntu, no puede incluir por defecto en la distribución.

sudo apt-get install ubuntu-restricted-extras

Montando nuestra arquitectura Instalar Apache php y MySql

  • Seguimos la instalación de lamp
http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-12.04-lts-lamp
  1. instalamos mysql
  • Durante la instalación nos pedirá la contraseña de root
  • Probamos a entrar y que funciona bien
 mysql -u root -p
 '''insertamos la password'''
 show databases:
 
 use my_baseDatos;  
 
 SELECT database();
  • Podemos probar a crear una tabla
  1. Instalamos apache
 apt-get install apache2
  • Probamos a ver si responde nuestro servidor web
  • Vemos el fichero de configuración

DocumentRoot

  • para parar y arrancar el servicio
sudo /etc/init.d/apache2 stop|start

Ahora debemos instalar php5 y el módulo correspondiente para apahce


apt-get install php5 libapache2-mod-php5

We must restart Apache afterwards:

/etc/init.d/apache2 restart

Obtenido de «https://es.wikieducator.org/index.php?title=Usuario:ManuelRomero/micursos/DWES/Tema1/Aplicaciones_Web&oldid=15554»