STRUTS vs DJANGO
Escrito por Juan Pablo Sevilla   
Tuesday, 30 de October de 2007

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.

 

Comentarios
Añadir nuevo Buscar
juan     |190.79.207.xxx |2009-02-18 13:28:04
esta muy interesante el articulo gracias
Antonio Melé  - django-es     |87.217.176.xxx |2009-02-08 19:54:19
Con la comunidad española de Django http://django.es tratamos de facilitar el aprendizaje de Django a los hispanohablantes.

Un
saludo!
Invitado  - wow gold   |123.153.33.xxx |2008-05-14 03:07:25
World Of Warcraft,WOW Gold,World Of Warcraft Gold,Power Level,Power Leveling,WOW Power Leveling,World Of Warcraft Power Leveling,cheap ,wow gold,World Of Warcraft Gold,buy WOW Gold,buy cheap World Of Warcraft Gold,WOW Gold,Power Leveling,World Of Warcraft
PowerLeveling,WOW Power Leveling,World Of Warcraft Gold, wowgold,Power Leveling.
Shenzhen Galarm Gas Alarm,Producted,GasAlarm,Alcohol,Tester,AlcoholTester,Breathalyser,Breathalyser,Breathalyzer,Breathalyzer,Smoke Alarm,Co Alarm,Gas Alarm,Detector,Gas Detector,Co Detector,Smoke Alarm,Co AlarmPortable Gas Detector,Co Alarm,Co Detector,Shenzhen Galarm Co Gas Alarm,Co
Gas Detector
生产液压升 降机
;,定做各种升降机,固定式升降机, 移动式
升降机.& #32463;销各种不锈&
#3 8050;弹簧,弹...
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
Por favor introduce el código anti-spam que puedes leer en la imagen.

3.25 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Modificado el ( Tuesday, 27 de November de 2007 )