Вот моя попытка ответить на ваш (очень широкий) вопрос:
- Django - среда Python, облегчающая разработку многопользовательских веб-приложений CRUD.
- Ruby on Rails - инфраструктура Ruby, облегчающая разработку многопользовательских веб-приложений CRUD.
- Google App Engine - хостинг Google приложений Python или Java, использующий BigTable в качестве механизма хранения.
- CGI-скрипты / приложения - старые школьные веб-приложения, где CGI-скрипт запускался для каждого запроса к веб-серверу.
Grails - это Ruby-подобная инфраструктура, облегчающая разработку многопользовательских веб-приложений CRUD. Он основан на Java, Groovy, Spring и Hibernate.
Java-сервлеты - это классы прослушивателей HTTP, которые вы развертываете с использованием подсистем Java EE / JSP. Эти механизмы почти всегда имеют встроенные HTTP-серверы, поэтому вы можете выбрать, развертывать ли их на веб-сервере, таком как Apache или IIS, или нет. Они были бы частью фреймворка, такого как Grails, но вам нужно добавить много других вещей, помимо сервлетов, для создания динамического веб-приложения, управляемого данными. Вот почему вы не можете размахивать кошкой, не попав в другую веб-инфраструктуру Java (например, Struts, Spring, Wicket, JSF и т. Д.) - это гораздо больше, чем просто сервлеты.
Все они похожи в том, что они разные попытки решить ту же самую фундаментальную проблему. Вы бы выбрали один из них, основываясь на вашем знании основного языка.
Я бы не отнес Google App Engine к той же категории. Это больше похоже на опцию Google «хост в облаке», чем на альтернативу Rails или Django. Вы можете развертывать приложения Python, использующие Django, в Google App Engine, так что это не альтернатива в этом смысле.