Here is my attempt at your (very broad) question:
- Django is a Python framework that makes it easy to develop CRUD-based applications for multiple clients.
- Ruby on Rails is a Ruby framework that simplifies application development with multiple clients based on multiple clients.
- Google App Engine - Google hosting of Python or Java applications that uses BigTable as a storage engine.
- CGI scripts / applications are old school web applications where a CGI script was run for every request to a web server.
Grails is a Ruby-like framework that simplifies CRUD-based application development for multiple clients. It is based on Java, Groovy, Spring, and Hibernate.
Java servlets are HTTP listener classes that you deploy using Java EE servlets / JSP engines. These engines almost always have HTTP servers built into them, so you can choose whether to deploy them over a web server such as Apache or IIS. They will be part of a framework such as Grails, but you need to add many other materials besides servlets to create a dynamic, data-driven web application. That's why you cannot rock a cat without going to another Java web environment (e.g. Struts, Spring, Wicket, JSF, etc.) - there is much more to it than just servlets.
All this seems to be different attempts to solve the same underlying problem. You would choose one of them based on your acquaintance with the main language.
I would not add Google App Engine in the same category. It looks more like a host in the cloud option than an alternative to Rails or Django. You can deploy Python applications that use Django in the Google App Engine, so this is not an alternative in this sense.
duffymo
source share