Frank
Frank

Reputation: 81

What's the difference between Django, Ruby on Rails, Google App Engine, etc.?

I have a newbie question about developing interactive, dynamic web sites. Can someone explain concisely the differences between:

When would I prefer, say, the Google App Engine over Django, etc.? If I wanted to open a book store like Amazon, what would I choose to make the website? If I wanted to reimplement SO? What about a news site like nytimes?

Sorry I am throwing all these different technologies and frameworks together, but for me the uninitiated they all pretty much seem to be doing the same thing ...

Upvotes: 7

Views: 2429

Answers (3)

Benjamin Crouzier
Benjamin Crouzier

Reputation: 41965

Amazon, SO and Nytimes are all more or less CRUD apps. So you can implement it with any up-to-date web framework.

I woud consider, in no order:

  • ruby: Rails for ruby
  • python: Django
  • C#: asp.net MVC
  • php: symfony2

If you want a faster learning curve (if you need to launch quickly, you may take a look at smaller frameworks):

One key factor is the language you already know. So try picking a framework where you are familiar with it's language.

One other key factor (that we think about less) is what language your peers know. If your project involves a team, or you will hand it to someone else in the future, pick something that your peers will be comfortable with.

Upvotes: 0

duffymo
duffymo

Reputation: 309008

Here's my attempt at your (very broad) question:

  1. Django - a Python framework to make developing multi-client web-based CRUD apps easier.
  2. Ruby on Rails - a Ruby framework to make developing multi-client web-based CRUD apps easier.
  3. Google App Engine - Google hosting of Python or Java applications that uses BigTable as its storage mechanism.
  4. CGI scripts/apps - old school web apps where a CGI script was kicked off for each request to a web server.

Grails is a Ruby-like framework to make developing multi-client web-based CRUD apps easier. It's based on Java, Groovy, Spring, and Hibernate.

Java servlets are HTTP listener classes that you deploy using Java EE servlet/JSP engines. Those engines almost invariably have HTTP servers built into them, so you can choose whether or not to deploy them on top of a web server like Apache or IIS. They'd be part of a framework like Grails, but you need to add a lot of other stuff besides servlets to create a dynamic, data-driven web app. That's why you can't swing a cat without hitting another Java web framework (e.g., Struts, Spring, Wicket, JSF, etc.) - there's a lot more to it than just servlets.

These are all similar in that they're different attempts to solve that same fundamental problem. You'd choose one based on your familiarity with the underlying language.

I wouldn't put Google App Engine in the same category. It feels more like Google's "host in the cloud" option than an alternative to Rails or Django. You can deploy Python apps that use Django on Google App Engine, so it's not an alternative in that sense.

Upvotes: 17

neo
neo

Reputation: 1270

It's a matter of taste what you choose although you compare apple with oranges:

  • Django and TurboGears are frameworks for using python more easily on the web
  • Ruby on Rails is also a framework but using a different language: Ruby
  • PHP is a scripting language primary developed for the web
  • Java Servlets are used for creating websites with Java
  • CGI is just a method for a webserver for calling a script on that platform
  • Google App Enginge is differnt: It is a service provider at which you can host your webapp. Currently it supports Python (even with Django or TurboGears) and Java

Technically you can create any webapp with one of the technologies above, it would use one I'm familiar with. If you don't know any, just try to read some tutorials and Wikipedia articles on the ones above to choose your preferred and start using it - you'll get familiar with it very soon. Once you learned (and used) one of them thoroughly it won't be hard to use the other ones.

Upvotes: 3

Related Questions