Developers love technical details, and sometimes forget the business context behind those technical choices. This post is my attempt to shed a little light on the subject.
First, the basics. What is a language, and how is it different than a framework or a platform? For the purposes of this article I'll define them:
Language: This is the programming language that the application code is written in. The most popular languages for web development these days are Ruby, C# (c -sharp), Java, PHP, and Python. I would advise sticking to one of those unless you have a really good, concrete reason. ("It's new and cool" is not a really good, concrete reason.)
Framework: Web applications tend to have a lot of infrastructure in common - the very basics of what makes an app work. This is the framework. Frameworks exist to give developers a common place from which to begin their projects. Examples of useful frameworks are Ruby on Rails, Django, Microsoft's .NET MVC, CakePHP, and others. Frameworks, in general, are married to a specific language. Ruby on Rails, for example, requires that Ruby be the programming language.
Platform: This is more my definition than a standard, but what I mean by platform is the combination of technologies and programing libraries that you will use to create your application. Some people might refer to this as a "stack". For example, I tend to gravitate to the following basic technologies for a new web project:
Language: Ruby
Framework: Ruby on Rails
Database: MySQL
Server OS: Ubuntu Linux
Web Server: Nginx with Passenger
Javascript Library: J Query or Prototype
These are some pretty standard options as of this writing for a Ruby on Rails application. Different situations may call for changes, but that's the basics of it.
Now that we have definitions out of the way, lets get to how you choose one. A brand of conventional wisdom existis that says "Let your developer pick." Sometimes that may work, but for the reasons I outlined above, the developer working on the project may be a little biased.
So what are the differences and why do they matter?
I will go out on a limb and say that, technically speaking, there is precious little difference between using the .NET stack and Ruby on Rails. Java, Python - they all get the job done. Technology is not what you need to be worried about.
What you should instead think about are the people behind the technologies. Each platform has a certain culture that tends to attract different sorts of personalities. I'll risk being overly general and categorize platforms as either "startupy" or "enterprisy".
In the startupy category I'd put PHP, Ruby, and Python. These languages tend to be favored by independent developers and startups. They are quick to work with and flexible. These open source languages are supported by volunteers and rely heavily on devoted enthusiasts to maintain and improve them. As a result, some features are more mature than others. Ruby is the newest of these dynamic languages, and anecdotally, I would say it's growing at the fastest rate with the startup crowd. This is almost entirely due to the popularity of Ruby on Rails, a framework that preaches convention over configuration and a practical approach to development.
I'd put Java and the .NET MVC framework in the enterprisy category. These are well supported languages/frameworks that are backed my major corporations for use by other major corporations. As a result, you'll find lots of support through official channels. A significant note: Microsoft's products are not free. Pretty much everything else is.
Often, you'll hear developers who prefer the startupy languages complain about the bloat of the enterprisy ones. The other side of story is that you'll hear proponents of the enterprisy languages complain about the relative lack of discipline and scaling challenges inherent in the dynamic languages. Again, none of this matters.
You will find it much easier in today's market to find a Rails developer willing to work as a freelancer or at a startup. The Java and Microsoft developers tend to gravitate towards large, established companies. Good developers are in demand, so you don't want to make it hard on yourself by selecting a platform that makes it even tougher to hire.
As I said, at Ninth Yard, we use a plain vanilla version of the Rails stack. It may be the best thing for your project, or it may not be. Just remember - pick people, not a platform.