|
En los últimos días hemos asistido a un curso sobre Python y Django, finalizado con un mini-proyecto “Gestor de Proyectos” para poner a prueba los recién adquiridos conocimientos sobre el tema. En la FDS estamos familiarizados con el desarrollo web utilizando frameworks de alto nivel, concretamente Struts 2, de Apache. Esto nos lleva inevitablemente a comparaciones y a un debate sobre la conveniencia de utilizar una u otra opción en futuros proyectos (sin descartar otras opciones). Los resúmenes que encontramos en los respectivos sitios web son éstos:
- Django es un framework de programación Web sobre Python que favorece un desarrollo rápido y un diseño limpio y pragmático. Resumiendo: práctico, sencillo y rápido.
- Apache Struts 2 es un framework de programación web extensible y elegante, que permite crear aplicaciones Java Enterprise. Ha sido diseñado para aumentar la eficiencia del ciclo desarrollo completo, desde la implementación hasta el mantemiento.
La principal diferencia que aquí se vislumbra es la orientación de Django al desarrollo rápido, frente a la mantenibilidad y extensibilidad de proyectos basados en Struts. Para llegar a este punto basta con comparar el desarrollo en Python y Java, obviando el uso de frameworks. Python es mucho más flexible, pero si cae en manos inexpertas o imprudentes puede dar lugar a código inutilizable por terceras personas. Esto es especialmente crítico en el caso de proyectos medianos o grandes en los que se requiere cooperación entre varios o muchos desarrolladores. Y ante todo, no olvidemos que en Java disponemos de todo un universo de librerías sustentado por Sun y otras grandes empresas del mundo del software y la tecnología en general, además de las aportadas por la comunidad. Python está respaldado por una comunidad considerablemente grande y creciente, si bien aún queda lejos del trono ostentado por Java. Ahora procedemos a comparar, sin entrar en muchos detalles, Struts2 y Django. En ambos casos, el patrón de desarrollo utilizado es MVC, si bien en el caso de Django es algo distinto (MTV, según sus creadores, Model Template View). En la práctica, existen muchas similitudes:
- URLs que se mapean a métodos de determinadas clases. En el caso de Django, el gestor de URLs soporta expresiones regulares, proporcionando mucha flexibilidad. Estas expresiones regulares pueden traducirse a parámetros. En Struts, las URLs se definen de forma estática, y los parámetros deben enviarse a traves de GET o POST. En un sitio web con Django podríamos ver un enlace como éste http://www.sitio.com/users/1, mientras que en otro sitio con Struts sería algo así: http://www.sitio.com/users?id=1.
- Métodos de clases que implementan la lógica de la aplicación y obtienen los datos que se mostrarán en la vista. Dependiendo de la complejidad de nuestra aplicación, existirán capas de lógica sobre las que se sustentará este “controlador”. En el caso de Django, tenemos una ventaja: posee un sistema de persistencia sencillo y al mismo tiempo muy completo. Permite mapear objetos de nuestro modelo a una base de datos, hacer consultas, guardar y cargar objectos con una sola sentencia, etc. Tal y como nos decian en la web de Django, rápido y pragmático. Además, en caso de querer realizar operaciones a un nivel más bajo, podemos utilizar SQL directamente. La funcionalidad de Struts no llega hasta este inframundo de persistencias y bases de datos, así que tendríamos que recurrir a un framework adicional, por ejemplo Hibernate, o trabajar a más bajo nivel con JDBC.
- Plantillas que generan documentos HTML utilizando los datos obtenidos anteriormente. En el caso de Struts, creamos documentos JSP utilizando su propia librería de tags, que incluye multitud de widgets y funcionalidad ajax a través de Dojo. No sólo ésto, sino que disponemos de todas las librerías de tags JSP que están a nuesto alcance. Con esto conseguimos documentos JSP muy limpios, estructurados, y unos resultados espectaculares e interactivos. Django utiliza su propio lenguage de plantillas, que en cierto modo es similar a JSP. Una plantilla de Django es un documento de texto con determinados tags de control, datos y visualización de contenido html. Si bien la funcionalidad es suficiente, no llega a la altura de JSP y Struts.
Tras este breve análisis, y sobre todo tras haber trabajado con ambos, podemos llegar a una conclusión obvia: Django es la opción perfecta para proyectos pequeños que requieren un tiempo de desarrollo rápido, mientras que Struts es apropiado para grandes proyectos que requieren cooperación, mantemiento y extensibilidad. Para grupos de trabajo experimentados y con suficiente pericia en el uso de Python, esto no debería ser un inconveniente. Para principiantes, lo más práctico es migrar a Java antes de morir estrangulados por su propio código.
|