Materia: Programacion web
¿Qué son los Servlets Java?
Los Servlets son las respuesta de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Construir páginas Web al vuelo es útil (y comunmente usado) por un número de razones:
La página Web está basada en datos envíados por el usuario. Por ejemplo, las páginas de resultados de los motores de búsqueda se generan de esta forma, y los programas que procesan pedidos desde sites de comercio electrónico también.
Los datos cambian frecuentemente. Por ejemplo, un informe sobre el tiempo o páginas de cabeceras de noticias podrían construir la página dinámicamente, quizás devolviendo una página previamente construida y luego actualizandola.
Las páginas Web que usan información desde bases de datos corporativas u otras fuentes. Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line que liste los precios actuales y el número de artículos en stock.
¿Cuáles son las Ventajas de los Servlets sobre el CGI "Tradicional"?
Los Servlets Java son más eficientes, fáciles de usar, más poderosos, más portables, y más baratos que el CGI tradicional y otras muchas tecnologías del tipo CGI. (y lo que es más importante, los desarrolladores de servlets cobran más que los programadores de Perl :-).
Eficiencia. Con CGI tradicional, se arranca un nuevo proceso para cada solicitud HTTP. Si el programa CGI hace una operación relativamente rápida, la sobrecarga del proceso de arrancada puede dominar el tiempo de ejecución. Con los Servlets, la máquina Virtual Java permanece arrancada, y cada petición es manejada por un thread Java de peso ligero, no un pesado proceso del sistema operativo. De forma similar, en CGI tradicional, si hay N peticiones simultáneas para el mismo programa CGI, el código de este problema se cargará N veces en memoria. Sin embargo, con los Servlets, hay N threads pero sólo una copia de la clase Servlet. Los Servelt también tienen más alternativas que los programas normales CGI para optimizaciones como los cachés de cálculos prévios, mantener abiertas las conexiones de bases de datos, etc.
Conveniencia. Hey, tu ya sabes Java. ¿Por qué aprender Perl? Junto con la conveniencia de poder utilizar un lenguaje familiar, los Servlets tienen una gran infraestructura para análisis automático y decodificación de datos de formularios HTML, leer y seleccionar cabeceras HTTP, manejar cookies, seguimiento de sesiones, y muchas otras utilidades.
Potencia. Los Servlets Java nos permiten fácilmente hacer muchas cosas que son difíciles o imposibles con CGI normal. Por algo, los servlets pueden hablar directamente con el servidor Web. Esto simplifica las operaciones que se necesitan para buscar imágenes y otros datos almacenados en situaciones estándards. Los Servlets también pueden compartir los datos entre ellos, haciendo las cosas útiles como almacenes de conexiones a bases de datos fáciles de implementar. También pueden mantener información de solicitud en solicitud, simplicando cosas como seguimiento de sesión y el caché de cálculos anteriores.
Portable. Los Servlets están escritos en Java y siguen un API bien estándarizado. Consecuentemente, los servlets escritos, digamos en el servidor I-Planet Enterprise, se pueden ejecutar sin modificarse en Apache, Microsoft IIS, o WebStar. Los Servlets están soportados directamente o mediante plug-in en la mayoría de los servidores Web.
Barato. Hay un número de servidores Web gratuitos o muy baratos que son buenos para el uso "personal" o el uso en sites Web de bajo nivel. Sin embargo, con la excepción de Apache, que es gratuito, la mayoría de los servidores Web comerciales son relativamente caros. Una vez que tengamos un servidor Web, no importa el coste del servidor, añadirle soporte para Servlets (si no viene preconfigurado para soportarlos) es gratuito o muy barato.
¿Qué es JSP?
Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámicamente. Muchas páginas Web que están construidas con programas CGI son casi estáticas, con la parte dinámica limitada a muy pocas localizaciones. Pero muchas variaciones CGI, incluyendo los servlets, hacen que generemos la página completa mediante nuestro programa, incluso aunque la mayoría de ella sea siempre lo mismo. JSP nos permite crear dos partes de forma separada. Aquí tenemos un ejemplo:
¿Cuáles son las Ventajas de JSP?
Contra Active Server Pages (ASP). ASP es una tecnología similar de Microsoft. Las ventajas de JSP estan duplicadas. Primero, la parte dinámica está escrita en Java, no en Visual Basic, otro lenguaje específico de MS, por eso es mucho más poderosa y fácil de usar. Segundo, es portable a otros sistemas operativos y servidores Web.
Contra los Servlets. JSP no nos da nada que no pudierámos en principio hacer con un servlet. Pero es mucho más conveniente escribir (y modificar!) HTML normal que tener que hacer un billón de sentencias println que generen HTML. Además, separando el formato del contenido podemos poner diferentes personas en diferentes tareas: nuestros expertos en diseño de páginas Web pueden construir el HTML, dejando espacio para que nuestros programadores de servlets inserten el contenido dinámico.
Contra Server-Side Includes (SSI). SSI es una tecnología ámpliamente soportada que incluye piezas definidas externamente dentro de una página Web estática. JSP es mejor porque nos permite usar servlets en vez de un programa separado para generar las partes dinámicas. Además, SSI, realmente está diseñado para inclusiones sencillas, no para programas "reales" que usen formularios de datos, hagan conexiones a bases de datos, etc.
Contra JavaScript. JavaScript puede generar HTML dinámicamente en el cliente. Este una capacidad útil, pero sólo maneja situaciones donde la información dinámica está basada en el entorno del cliente. Con la excepción de las cookies, el HTTP y el envió de formularios no están disponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript no puede acceder a los recursos en el lado del servidor, como bases de datos, catálogos, información de precios, etc.
Bibliografias:
http://www.programacion.com/articulos/servlets_y_jsp_82
Ocho puntos para el lab.
ResponderEliminarLos Servlets Java son más eficientes, fáciles de usar, más poderosos, más portables, y más baratos que el CGI tradicional y otras muchas tecnologías del tipo CGI.
ResponderEliminarLo siento, Obed Guevara, pero ninguno de esos adjetivos es correcto: el CGI es un "protocolo" de comunicaciones, que es muy parecido a como los JSP lo resuelven: el usuario manda una solicitud y el servidor web delega la respuesta a un proceso externo. Más información sobre CGI, en la Wikipedia.
En cuanto a los adjetivos... yo tengo una empresa de alojamiento Web, y desde hace diez años damos servicios CGI y Java (con el servidor de aplicaciones Tomcat). Después de esos diez años estos son los resultados:
* Eficiencia: una aplicación Java consume casi 400 veces la memoria necesaria que un CGI escrito en Perl, ocupa en disco unas 200 veces más, y el consumo de CPU supera las 20 veces más.
* Fáciles de usar: recientemente una empresa cliente desarrolló un sitio web muy complicado. Con la ayuda de 6 programadores se realizó todo, en Java para Tomcat. El resultado fue más de 90.000 ficheros distintos, de los cuales casi un 25% eran ficheros de "apoyo" XML necesarios para el Eclipse y NetBeans, es decir, ficheros que no intervienen directamente en la ejecución del sistema.
* Más poderosos. Nos hemos visto en la necesidad de duplicar la memoria necesaria que Tomcat consume, ya que con 4Gb anda algo escaso.De hecho, nos hemos visto en la obligación de reiniciar el Tomcat todas las noches, de madrugada, para evitar agotamientos de memoria. Mientras, un CGI "tradicional" puede ejecutarse en la mayoría de los teléfono móviles.
* Más portables: un CGI programado en C es mucho más portátil...
* Más baratos: en otras palabras: los sueldos de los programadores de Java son más bajos que los de otros lenguajes :) Cuantos más programadores tiene una tecnología, más fácil y barato es desarrollar en esa tecnología. Por eso, también, los programadores de COBOL ahora están ganando fortunas.
(y lo que es más importante, los desarrolladores de servlets cobran más que los programadores de Perl :-).
¿Puede darnos una referencia en alguna página web de sueldos donde se ratifique eso?