Pues yo te hablaré de las tecnologías emergentes para Web en general....
Actualmente las tendencias tecnológicas por la parte del desarrollo de aplicaciones Web está teniendo un gran auge en el mercado, están dominando mucho y eso es porque las aplicaciones Web son muy muy portables, eficientes y de alguna manera muy prácticas.
Todos estos factores obligan a que las tecnologías para ofrecer estos servicios sean de alguna manera paralelos a ellos, es decir, APIs, lenguajes y herramientas que sean sencillas, limpias, eficientes y prácticas.
Por el lado de Perl el desarrollo de contenido dinámico por la parte del Web ha crecido considerablemente, por un lado desde el nacimiento de CGI Perl se ha destacado como un lenguaje afin a las herramientas web, y por el otro lado el nacimiento de nuevas tecnologías hace que Perl también se adapte a ellas ( como Ruby on Rails, Web Scripting ( PHP, et al ).
Desarrollar CGI's como tal ya es un poco arcaico, porque para aplicaciones grandes ( sin tocar aun el término enterprise ) implica tener un ENORME modelo muy bien organizado para poder darle mantenimiento y buen soporte a una aplicación, hablando claro de un trabajo en equipo. No implica que no sirvan, claro que no, pero no es lo mas eficiente para trabajar aplicaciones Web que sean 100% dinámicas y sencillas de mantener.
Por otro lado, están los lenguajes como PHP, ASP y por el lado de Java tenemos a JSP ( aquí incluyo a los Servlets ). Que son lenguajes que permiten programar sitios con algo llamado "scriptlets" que son porciones de código embebidas en código HTML. Este modo de trabajo facilita mucho la creación de aplicaciones dinámicas, sin embargo, la parte de mantenimiento es la que tiene problemas, no te permite separar muy bien la parte lógica de la aplicación con la parte visual ( diseño ). Y mantener aplicaciones que mezclan ambos mundos se pone complejo en aplicaciones grandes.
Y por último están las tecnologías recientes que permiten el desarrollo de aplicaciones por medio de lo que conocen como "Desarrollo multicapa", dónde la mas conocida es un desarrollo de 3 capas, también llamada MVC ( Model-View-Controller ), que no es nada nueva, pero que ha tenido mucho auge para aplicaciones Web. Sin embargo las aplicaciones de 3 capas no son la solución completa, en Java, al generar aplicaciones enterprise puedes diseñar aplicaciones con mas de 3 capas. A qué me refiero con enterprise? Bueno al aspecto de que puedes dividir toda una aplicacion en diferentes niveles de reponsabilidad que incluso vean a cada fase como un equipo remoto ( distribuido ) y todo en conjunto trabaje como un solo ente.
Soluciones? Nombres? ok
Ruby:
Sin duda uno de los ponentes actuales para el desarrollo de sitios verdaderamente dinámicos, sencillo de mantener y muy limpio se lo lleva Ruby on Rails. Es todo un framework para el diseño de aplicaciones mediante el patrón MVC ya mencionado, junto con una manera orientada a objetos muy muy limpia.
Perl:
Clásico en este lenguaje, tienes muchas alternativas, cuestión de elegir las que mas te acomode, yo normalmente trabajo con Template Toolkit ( para la parte del View ), mod_perl ( para la parte del Controller ) y cualquier otra herramienta para manipulación de datos ( para la parte del Model ). Por ejemplo Template Toolkit + Class::DBI + mod_perl, una excelente combinación.
Otras alternativas similares ( prefabricadas ) muy limpias es el hecho de utilizar CGI::Application, Maypole y Catalyst ( esta está basada en Maypole, y es la respuesta de Perl a Ruby on Rails ).
Todas las anteriores ofrecen APIs diferentes, pero limpias y sencillas de manejar.
Java:
Otro de los ponentes actuales de tecnologías emergentes para el Web, si bien Java se ha considerado un lenguaje muy fuerte para el desarrollo de aplicaciones extensibles y grandes, los otros lenguajes no tienen mucho que pedirle ( en ciertas áreas ), así que por esa parte no te dejes engañar o no te sorprendas TANTO.
Java ofrece muchos frameworks para el desarrollo de aplicaciones dinámicas, pero voy a comenzar con una parte del Java Enterprise Edition llamado JSP/Servlets. Primero, un servlet es similar a un CGI , es un programa escrito en Java que procesa peticiones web ( GET, HEAD, POST ), y devuelve contenido HTML, obviamente en este punto es donde puedes manejar sesiones, persistencia y temas afines. Entonces qué es JSP? Un Java Server Page es un código de HTML con porciones de Java, el cual es convertido a un servlet por un contenedor de JSP/Servlets ( como lo es Tomcat por ejemplo ) y poder escupir la salida del Servlet generado. Las desventajas de esta manera de generar a mano las cosas las mencioné arriba.
Por otra parte, Java tiene algo llamado JSTL, es que es Java Standard Tag Library ( por Apache Foundation ) la cual es un conjunto de bibliotecas que te permiten establecer Tags personalizados, con el fin de poder eliminar el código en Java, y poner por ejemplos tags mas naturales ( como al estilo XML por ejemplo ).
Aquí es donde entran los frameworks como Struts, Spring, Velocity, Cricket, etc. Todos estos son frameworks ( como Catalyst, Ruby on Rails ) que te permiten hacer aplicaciones web dinámicas por medio del modelo MVC.
Ahora hay algo imporante que ofrece Java ( y que Perl lo tiene de alguna manera muy similar en Class::DBI ) que es la manera de "mapear" un diseño de una base de datos con un diseño lógico en código de Java, es decir... mapear una tabla de una base de datos, con una clase en Java, de esta manera el manipular el modelo de datos se ve bastante transparente.
No quiero extederme a Python y PHP ( por no mencionar mas ), pero no lo hago aparte de que no conozco mucho de ambos lenguajes ( ya que no me gustan ) y pues.... no son ponentes tan importantes en aplicaciones grandes.
PHP es muy conocido y popular, pero eso no significa que sea muy bueno, si bien PHP5 si fué modificado considerablemente, la gente aun sigue utilizando PHP4 y por lo tanto sigue haciendo esas aplicaciones horribles, inmantenibles y sin un diseño concreto.
Saludos,
PD. Omití demasiados detalles, pero se trata de una opinión no de un libro