2008-09-16 31 views
20

Me pregunto si existe la facilidad de desarrollo de aplicaciones web similar a Django combinada con una buena implementación, depuración y otras herramientas.Django -vs- Grails -vs-?

Django es un marco muy productivo para la construcción de sitios de contenido pesado; lo mejor que he probado y una bocanada de aire fresco en comparación con algunas de las monstruosidades de Java que hay. Sin embargo, está escrito en Python, lo que significa que hay poco apoyo real en la forma de implementación/empaquetado, depuración, perfiladores y otras herramientas que hacen que la construcción y el mantenimiento de las aplicaciones sea mucho más fácil.

Ruby tiene problemas similares y aunque me gusta mucho Rubí mejor que me gusta Python, me da la impresión de que Rails es más o menos en el mismo barco en Django cuando se trata de administrar/apoyo a la aplicación.

¿Alguien ha intentado tanto con Django como con Grails (u otros marcos web) para proyectos no triviales? ¿Cómo se compararon?

Respuesta

29

Has pedido a alguien que haya usado Grails y Django. He trabajado tanto en los grandes proyectos. Aquí están mis pensamientos:

IDE: Django funciona muy bien en Eclipse, Griales funciona muy bien en IntelliJ IDEA.

Depuración: prácticamente la misma (suponiendo que el uso de IntelliJ para Grails, y Eclipse para Python). Depuración de pasos, inspección de variables, etc. ... nunca necesita una declaración de impresión para ninguno de los dos. A veces, los mensajes de error de django pueden ser inútiles, pero los mensajes de error de Grails suelen ser bastante largos y difíciles de analizar.

Tiempo para ejecutar una prueba de unidad: django: 2 segundos. Grails: 20 segundos (las pruebas en sí mismas se ejecutan en una fracción de segundo, la parte de cargar el framework para ejecutarlas toma el resto ... como puedes ver, Grails es frustrantemente lento de cargar).

Despliegue: Django: copiar un archivo & pasta en una configuración de Apache, y volver a implementar, basta con cambiar el código y volver a cargar Apache. Grails: crea un archivo .war, despliégalo en tomcat, enjuaga y repite para redesplegar.

Lenguajes de programación: Groovy is TOTALLY awesome. Me encanta, más que Python. Pero ciertamente no tengo quejas.

Complementos: Grails: muchos plugins rotos (y pueden usar cualquier java lib). Django: algunos complementos estables, pero suficientes para hacer la mayor parte de lo que necesita.

Base de datos: Django: schema migrations using South, y en general relaciones intuitivas. Grails: no hay migraciones de esquema, y ​​por defecto se elimina la base de datos en el arranque ... WTF

Uso: Django: nuevas empresas (sobre todo en el espacio Gov 2.0), tiendas web dev independientes. Grails: empresa

Espero que ayude!

+2

Solo para agregar un poco de actualización a mi publicación: Para complementos en Django, comience con Pinax. Es el único repositorio real de complementos integrados. Con Grails hay un comando para simplemente enumerar todos los complementos e instalar lo que quieras. – hendrixski

+2

Grails db migration plugin, http://grails-plugins.github.com/grails-database-migration/docs/manual/guide/1%20Introduction%20to%20the%20Database%20Migration%20Plugin.html –

+2

En mi humilde número de errores que están presentes en Grails vs Django core también se debe comparar especialmente cuando Grails tiene muchos y muchos de ellos. Se han roto cosas muy simples como ejecutar pruebas unitarias varias veces desde el mismo entorno de grial y se tarda una eternidad en cargarlas y ejecutarlas. Además, la curva de aprendizaje con grails es mucho más que django a menos que estés construyendo algo trivial. Con los monstruos como Spring e Hibernate, el aprendizaje de los griales es muy intenso para alguien que no ha trabajado antes con estos monstruos. – Divick

1

cakephp.org

Cakephp es muy buena, muy cerca de Ruby on Rails (1.2). Está en php, funciona muy bien en hosts compartidos y es fácil de implementar.

El único inconveniente es que la documentación es deficiente, pero la obtiene rápidamente y rápidamente comienza a hacer cosas geniales.

Recomiendo totalmente cakephp.

+1

¡Escuché que Symfony es mucho mejor para grandes proyectos! http://www.symfony-project.org/ ¿Tienes alguna experiencia con eso? –

+0

Eche un vistazo a Symfony pero no me atrapó, y todavía estoy con Cakephp y dudo que vaya a cambiar eso a menos que cambie a Ruby on Rails –

+0

Symfony 2 es mucho mejor que la versión anterior, debería intentarlo http: //symfony.com/ – svlada

10

Sin embargo está escrito en Python, que significa que hay poco apoyo real en el camino de despliegue/embalaje, depuración, perfiladores y otras herramientas que hacen construcción y mantenimiento de aplicaciones mucho más fácil.

Python tiene:

  1. un great interactive debugger, lo que hace muy buen uso de Python REPL.
  2. easy_install anv virtualenv para gestión de dependencias, empaquetado e implementación.
  3. profiling features comparable a otros idiomas

Así que en mi humilde opinión que no debe preocuparse por estas cosas, utilizar Python y Django y vivir felices :-)

Por suerte para ti, nueva versión de Django runs on Jython, por lo que no necesita dejar atrás todo su ecosistema de Java.

Hablando de marcos, evalué este año:

  1. Pylons (Python)
  2. webpy (Python)
  3. Symfony (PHP)
  4. CakePHP (PHP)

Ninguno de estos marcos se acerca al poder de Django o Ruby on Rails. Basado en mi opinión del colega, podría recomendarle el marco kohana. La desventaja es que está escrito en PHP y, hasta donde yo sé, PHP no tiene excelentes herramientas para la depuración, creación de perfiles y empaquetado de aplicaciones.

Editar: Aquí hay una muy buena article about packaging and deployment of Python apps (específicamente las aplicaciones de Django). Es un tema candente en la comunidad de Django ahora.

+0

El enlace al artículo sobre embalaje e implementación ya no funciona (la página muestra 404), ¿alguien sabe a dónde fue? – Epcylon

+0

Aunque estoy de acuerdo en que Python/Django es mejor que cualquier framework de PHP, el hecho es que PHP tiene una mayor adopción y mindshare. A menos que planee ser el único desarrollador para algún proyecto de juguete, PHP es el único camino a seguir. Es un suicidio profesional depender de Django, que tiene pocas oportunidades de empleo, si es que tiene alguna, y aún menos desarrolladores por contrato. Si no me cree, busque en cualquier lista de trabajos. La diferencia de oportunidades es de varios órdenes de magnitud. – Cerin

+0

@Chris S: soy un desarrollador bastante exitoso que trabaja exclusivamente con Django. Puedo asegurarle que depender de Django NO es un suicidio profesional. – zuber

3

Tengo dos amigos que originalmente comenzaron a escribir una aplicación usando Ruby on Rails, pero se encontraron con una serie de problemas y limitaciones. Después de aproximadamente 8 semanas de trabajar en él, decidieron investigar otras alternativas.

Se instalaron en el Catalyst Framework, y Perl. Eso fue hace aproximadamente 4 meses, y han hablado en repetidas ocasiones sobre la mejora de la aplicación y la flexibilidad que tienen.

Con Perl, tiene todos los CPAN disponibles, junto con la gran cantidad de herramientas incluidas. Sugeriría echarle un vistazo, al menos.

+0

¿Con qué frecuencia se usa Catalyst en la industria? – svlada

+1

Diría que depende en gran medida de la industria que esté buscando. La mayoría de las compañías más grandes todavía están bastante orientadas a Java para cosas web. En las empresas más pequeñas y en el mundo de las empresas de nueva creación, encontrará mucho más Perl, Python y Ruby en general. Puedo decir que vi una publicación de trabajo para Catalyst aparecer en mi lista de correo del grupo de usuarios local de Linux hace algunas semanas, pero no he estado muy pendiente de esas cosas últimamente. –

1

Personalmente hice algunos proyectos bastante grandes con Django, pero puedo comparar solo con dichas "montrosidades" (Spring, EJB) y cosas de bajo nivel como Twisted.

Los marcos web que utilizan lenguajes interpretados son en su mayoría incipientes y todos (mantenidos activamente) mejoran cada día.

1

Por "buena implementación" ¿lo está comparando con los archivos EAR de Java, que le permiten implementar aplicaciones web cargando un único archivo en un servidor J2EE? (Y, en menor medida, archivos WAR; los archivos EAR pueden tener archivos WAR para proyectos dependientes)

No creo que Django o Rails ya hayan llegado a ese punto, pero podría estar equivocado ... zuber señaló un artículo con más detalles sobre el lado de Python.

Capistrano pueden ayudar en el lado de Ruby.

Desafortunadamente, realmente no he trabajado tanto con Python ni con Ruby, así que no puedo ayudar con los perfiladores o depuradores.

3

El problema de la "buena implementación" - para Python - no tiene la Importancia profunda que tiene para Java.

La implementación de Python para Django es básicamente "mover los archivos". Puede ejecutar directamente desde el directorio troncal de subversión si lo desea.

Puede, sin romper demasiado, usar el Python distutils y crear un kit de distribución que coloque sus aplicaciones de Django en los paquetes de sitio de Python. No soy un gran admirador de esto, pero es realmente fácil de hacer.

Dado que mis cosas se ejecutan en Linux, tengo scripts simples "install.py" que mueven cosas de los directorios de Subversion a los directorios /opt/this y /opt/that. Utilizo una configuración de ruta explícita en mi configuración de Apache para nombrar esos directorios donde viven las aplicaciones.

La aplicación de parches se puede hacer editando los archivos en su lugar. (Una mala política.) Prefiero editar en la ubicación SVN y volver a ejecutar mi pequeña instalación para asegurarme de que tengo todos los archivos bajo control.

10

Grails.

Grails se parece a Rails (Ruby), pero usa groovy, que es más simple que java. Utiliza la tecnología de Java y puedes usar cualquier lib de Java sin ningún problema.

También elijo Grails sobre la simplicidad y hay muchos java lib (como el informe jasper, jawr, etc.) y me alegra que ahora se unan a SpringSource, lo que hace que su base sea sólida.

+0

¡Es una de las cosas más poderosas en el entorno JEE que conozco! Conozco muchas aplicaciones de negocios que realmente se ejecutan en Grails. Entonces, ++ para Grails. –

+1

Groovy no es "más simple" que Java. Tal afirmación significa que no ha excavado lo suficiente en el lenguaje para darse cuenta de su completo potencial y complejidad. –

+0

Grails es limpio, lamentablemente la documentación a menudo falta o simplemente está mal. Además, los mensajes de error que se generan cuando las cosas van mal son bastante inútiles. Sin embargo, tiene un buen potencial una vez que madura y obtiene una comunidad más amplia. –

8

La afirmación de que grails elimina la base de datos en la puesta en marcha es completamente incorrecta. Su comportamiento en la puesta en marcha es completamente configurable y fácil de configurar. Generalmente uso create-drop cuando ejecuto una aplicación en modo dev. Utilizo la actualización cuando corro en prueba y producción.

También me encanta el proceso de arranque que me permite preconfigurar usuarios de prueba, datos, etc. por entorno en Grails.

Me encantaría ver a alguien que realmente ha construido y desplegado algunos proyectos comerciales comenta sobre los pros/contras. Se una lectura realmente interesante.