Django -vs- Grails -vs-?


I'm wondering if there's such a thing as Django-like ease of web app development combined with good deployment, debugging and other tools?

Django is a very productive framework for building content-heavy sites; the best I've tried and a breath of fresh air compared to some of the Java monstrosities out there. However it's written in Python which means there's little real support in the way of deployment/packaging, debugging, profilers and other tools that make building and maintaining applications much easier.

Ruby has similar issues and although I do like Ruby much better than I like Python, I get the impression that Rails is roughly in the same boat at Django when it comes to managing/supporting the app.

Has anyone here tried both Django and Grails (or other web frameworks) for non-trivial projects? How did they compare?

9/16/2008 7:05:48 PM

Accepted Answer

You asked for someone who used both Grails and Django. I've done work on both for big projects. Here's my Thoughts:

IDE's: Django works really well in Eclipse, Grails works really well in IntelliJ Idea.

Debugging: Practically the same (assuming you use IntelliJ for Grails, and Eclipse for Python). Step debugging, inspecting variables, etc... never need a print statement for either. Sometimes django error messages can be useless but Grails error messages are usually pretty lengthy and hard to parse through.

Time to run a unit test: django: 2 seconds. Grails: 20 seconds (the tests themselves both run in a fraction of a second, it's the part about loading the framework to run them that takes the rest... as you can see, Grails is frustratingly slow to load).

Deployment: Django: copy & paste one file into an apache config, and to redeploy, just change the code and reload apache. Grails: create a .war file, deploy it on tomcat, rinse and repeat to redeploy.

Programming languages: Groovy is TOTALLY awesome. I love it, more so than Python. But I certainly have no complaints.

Plugins: Grails: lots of broken plugins (and can use every java lib ever). Django: a few stable plugins, but enough to do most of what you need.

Database: Django: schema migrations using South, and generally intuitive relations. Grails: no schema migrations, and by default it deletes the database on startup... WTF

Usage: Django: startups (especially in the Gov 2.0 space), independent web dev shops. Grails: enterprise

Hope that helps!

12/23/2009 10:42:54 PM

The statement that grails deletes the database on start-up is completely wrong. It's behavior on start-up is completely configurable and easy to configure. I generally use create-drop when running an app in dev mode. I use update when I run in test and production.

I also love the bootstrap processing that lets me pre-configure test users, data, etc by environment in Grails.

I'd love to see someone who has really built and deployed some commercial projects comment on the pros / cons. Be a really interesting read.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow