Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

If I would like to quickly set up a modern website, what programming language + framework has best support for this? E.g. short and easy to understand code for a beginner and a framework with support for modern features. Disregard my current knowledge, I'm more interested in the capacity of web programming languages and frameworks.

Some requirements:

  • Readable URIs: http://example.com/category/id/page-title similar to the urls here on Programmers.
  • ORM. A framework that has good database support and provide ORM or maybe a NoSQL-database.
  • Good support for RESTful WebServices.
  • Good support for testing and unit testing, to make sure the site is working as planned.
  • Preferably a site that is ready to scale with an increasing number of users.
share|improve this question
2  
I loves me some human friendly urls and routing as much or more than the next propeller head, but how exactly does RESTful play into agile? The former is a url/api management scheme, the latter is a development methodology. –  Wyatt Barnett Feb 25 '11 at 21:59
    
This question's title seems like a rhetoric tag-line for the Ruby on Rails framework. Look no further than the ever-improving RoR framework! –  Shreyas Satish Feb 26 '11 at 10:32
    
@Wyatt: Updated. –  Jonas Feb 28 '11 at 16:27
1  
Being said its agile,it depends on the capability of the team stick to the one which is comfortable for your team.Again agile development encourages the same. –  prasonscala Mar 17 '11 at 8:41
add comment

closed as not constructive by Jarrod Roberson, Yannis Rizos Jul 25 '12 at 20:07

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

12 Answers

Rails (obviously!)

Has Restful URIS, ORM with Active Record, Webservices - easy, unit tests come as standard. Can scale just fine (v3 is better at this).

And Ruby is a real beginner friendly language, although the meta-programming aspect of it that can trip beginners up. Worth being wary of that.

share|improve this answer
add comment

I like Django which is a Python Web Framework. RESTful URIs are default (also you can create any URL <-> View Mapping you want).

It has a build in ORM Mapper which allows you to to nearly everything without a single Line of SQL supporting PostgreSQL, MySQL, Oracle and SQLite (and other via 3rd party backend, see here).

You have easy access to caching (ie. memcached) entire pages or parts of the response, so scaling is not an issue (to a certain limit of course). And testing is also build in.

Django is relatively wide used so there is a ton of community support. And while Django tries to make it easy and painless to create a webapp on a high level of abstraction it is relatively easy to dig deeper and change internals without.

share|improve this answer
    
Also, Django is so dead easy to learn. And has tons of build in stuff. The one I use more is JSON or XML De/(se)rialization. Also it works with python which is faster than Ruby. –  Christopher Ramírez May 10 '12 at 17:09
1  
Shame Python is such an awful language because Django is very well designed. –  Rig Jul 25 '12 at 18:15
    
I feel it's the opposite. Shame Django is such a mess when Python is such a good language. –  leo-the-manic Jan 3 '13 at 14:15
add comment

ASP.NET + nHibernate (obviously!)

RESTful URIs: http://example.com/category/id/page-title similar to the urls here on Programmers.

programmers.stackexchange.com has been developped with ASP.NET

ORM. A framework that has good database support and provide ORM or maybe a NoSQL-database.

nHibernate is probably the most powerful ORM out there for .NET

Good support for RESTful WebServices.

You may want to use WCF.

Good support for testing and unit testing, to make sure the site is working as planned.

You have the choice between dozens of framework. Including the one included with the free version of Visual Studio.

Preferably a site that is ready to scale with an increasing number of users.

I guess stackoverflow.com is a pretty good example of scalability ;)

You will also take advantage of the wonderful and free IDE called Visual Studio Express and the fast growing community of developers.

share|improve this answer
4  
Also look into ASP.NET Razor. It's the perfect barrier to entry for someone making a basic website. –  EnderMB Sep 27 '10 at 10:10
    
+1 although I'm using Code-First Entity Framework; and indeed, my first basic website was without Razor and it would have been much more productive if I had used Razor. –  Tom Wijsman Sep 27 '10 at 10:39
1  
@EnderMB - "barrier to entry" ... ? –  Slomojo Feb 26 '11 at 0:56
    
A lot of people perceive ASP.NET to be very business-oriented and complex and that the likes of PHP to work almost out of the box for small websites. ASP.NET Razor is basically the answer to that, allowing people to make and deploy small websites with ease. It's several years late to the party but if a friend of mine wanted to build an extremely basic website and had no experience with programming I'd recommend it to them. –  EnderMB Mar 1 '11 at 9:16
add comment

Seaside (obviously!)

Smalltalk's where agile was invented. Seaside has an excellent introductory book. Seaside's sweet spot is complicated, highly interactive, web application design.

It has an extensive test suite, allows for multiple persistence frameworks (including Gemstone, probably the biggest OODB around), and is scales easily.

Hosting:

For non-commercial stuff, there's Seaside-Hosting. Otherwise, Ramon Leon's blog has loads of posts on hosting Seaside.

share|improve this answer
    
...and has simple, cheap hosting solutions? –  Alison Dec 8 '10 at 1:13
add comment

Grails (obviously!)

share|improve this answer
add comment

Scala/Lift (obviously!)

OR

Any other framework that is written in a language that you know well. There is no simple answer here but I have found Lift to be an excellent framework. Scala is also a very interesting and fun language to learn if you are open to trying something different. There is an interesting article about why Twitter decided to use Scala for some things in place of ruby; You can read it here.

I think just about every major language has a framework with all the features that you want, Python has Django, Pylons, etc, Ruby has Rails, Java has Spring, .NET peeps can use MVC2 with NHibernate/Linq2Sql/Linq2Entities, etc. and on it goes. What language are you strongest in? I think that will probably lead you to the web framework that best fits your situation.

share|improve this answer
add comment

Java, Spring and Hibernate (obviously!)

share|improve this answer
add comment
up vote 2 down vote accepted

I have now started to use Play Framework with Scala and Java. It's inspired by Ruby on Rails and it has a very short development cycle where you just save the Scala/Java files and then update the web browser. It's also easy to understand and has good performance. But the IDE's doesn't have very good support for e.g. the template files yet.

share|improve this answer
add comment

Rails !

1) on top of what Mongus mentioned. the data migration handling is also charming. you can easily upgrade and rollback database schema changes. one less thing to handle and you can focus on the functionality to implement.

it is simple, and work across diff database For example, to add a new column:

add_column :companies, :url, :string

2) it has lots of helper method for you to test-driven your program too.

3) lots of MVC thing already handled by convention. you dont even have to type

4) it has code generator. if you are building simple app, you use scaffold to generate model, controller view code by one command. then all the CRUD already works. test case files also generated.

For example,

rails generate scaffold company name:string

it generates everything for you already. after that, you can start list, create, update and delete the company record in the web ui already.

share|improve this answer
add comment

If I wanted to get something usable as quickly as possible, and have fun doing it, I would go with Ruby on Rails. Change the code, run the unit test, refresh the page. No compilation, no deployment, instant feedback. The standard Ruby and Rails books, Programming Ruby and Agile Web Development with Rails are excellent. I was highly productive in Rails after just a couple of weeks.

Java development is hopelessly tedious. Groovy is better, and good if you need to integrate with legacy Java code, but you don't, so I wouldn't go there. With Groovy you'll still be stuck with most of the ugliness of the Java library. Also I haven't found the available Groovy documentation to be nearly as good as the Ruby books.

I looked at Lift briefly and was not impressed. Still too much Java legacy, and much more verbose than Ruby. As soon as I see a statement like

The main thing to remember is that your web.xml ...

my head starts to hurt.

share|improve this answer
1  
You have JRuby if you need to integrate with java code. –  Mongus Pong Mar 2 '11 at 13:49
add comment

I would go for Pierre 303's answer with a twist: ASP.Net MVC (possibly with nHibernate), much easier to test than plain old ASP.Net (some reading).

I haven't really used nHibernate (only HIbernate when I did Java) so my opinion is based on word of mouth from fellow developers

share|improve this answer
add comment

If you can experiment and you have Java experience in your team, I suggest you to try Scala.

It's a kind of Java++, with Java speed and compatibility but all the new cool stuff that changed programming in the last years in a way made GOF history (in a good sense).

I'm speaking about continuations, actors, mixins(traits), named arguments, properties, pattern matching etc.

All this is not for the sake of innovation but they can really improve productivity and decrease debugging time.

The reference webserver for Scala is Lift (appropriately :))

share|improve this answer
    
I agree with the answer but the dev team has to undergo a learning curve and that too for a new language. –  prasonscala Mar 17 '11 at 8:38
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.