Suppose you have a great idea for a brand new web application: what would be your language/platform combination and why?
In addition, suppose you have to develop your web app in an enterprise context. Would that change your original choice?
Suppose you have a great idea for a brand new web application: what would be your language/platform combination and why?
In addition, suppose you have to develop your web app in an enterprise context. Would that change your original choice?
ASP.net, because it's proven good. No change for enterprise.
Being an enterprise shop would not change my choice; I'd go with what my team knew. If we were a .Net shop, than ASP.net. If it's a Linux shop than Ruby, PHP, or Python. Don't break with what your team already knows, and your admins can already support.
Ruby on Rails.
It has a strong and growing developer community, great code generation tools, and built-in database version control.
I look for a solid API that I can leverage, to get me up and running quickly. I want to use something that has good performance, can scale, is secure, and something that I know I can get support on if I run into trouble.
Lately I've been developing most my applications in ASP.NET C#. It's a well supported language and framework that is fast and solid.
If you want something quick and dirty I agree with Alexander Django is cool. Ruby on rails is nice too though.
If you want something to get you up and running quickly there are also options within asp.net like MVC and especially Dynamic Data.
I'd have to go with ASP.NET, because that's what I'm most comfortable with. In choosing your initial toolset, you simply need to consider what you think would be the easiest way to do what you want to do. If you're preoccupied with what tools to you use, you're not really moving forward with your project- pick something, try it, and if it's too difficult, switch to something else! If I were developing a website for a startup, I'd go with jQuery/ASP.NET MVC/Linq to Sql. I know jQuery pretty well, ASP.NET MVC allows fine tune control over html with the power of .NET, and Linq to Sql is a slick ORM tool that's well integrated with Visual Studio.
The enterprise portion of your question is far more interesting. I wouldn't say you need to change your toolset, just the amount of work you need to put into development. You'll probably need to focus more on what's going on in the database, use stored procedures to separate your data schema, develop more reliable logging/validation, and probably build some extra tiers to handle business processes, etc. Finally, you're also probably going to have to hire people to help you- so consider the availability of the market and how easy it is to find candidates who know what you're using.
It depends on the specifics of the project and the available assets.
If it was a large complex web application I would probably go with something like ASP.NET MVC or Spring Web MVC. If it was a small-scale project that's not likely to evolve much I might just go with PHP to get it done quicker.
As far as the enterprise context goes, that would depend on whether or not that context involves sharing things like authentication or business logic with other projects. Obviously if that is a consideration then you'd want to go with a platform that facilitates that easily, possibly something that supports dependency injection so that those assets can be managed more independently.
You should pick the platform you and your team know and have real experience with, and no matter which you choose you will be good. If you know multiple, then you're lucky enough to have choice.
You should always pick a platform that you know. If the only thing you know is PHP, then use PHP. If you know PHP and ASP.NET, then choose which you prefer. Most platforms will scale just fine for any "enterprise" needs you may have.
Also, if you manage a team, you must factor in your entire teams skill set also, unless you can afford to train everyone in a new technology, but even then you don't get the best results.
I wouldn't tell anyone to use my choice in platform because it's biased on what I know best.
For a project of any considerable size I would use Django.
For anything quick and dirty it would be PHP.
For the first part of your question (brand new web application) I would suggest also looking at some of the new "cloud" environments, such as Google Apps Engine. GAE is basically Python, Django, and their own SQL version called GQL. You can add your own JS library as you like, like jQuery. It has the benefit of free (scalable) hosting and a nice and simple local development environment. You can set it up with PyDev and Eclipse if you want a local IDE. Google has put together some simple "hello world"-style tutorials that makes it easy for you to take it for a spin.
I prefer the Spring MVC framework as well as J2EE. We use WebLogic at my job, but for personal use (or cost matters) JBoss is nice. It's hard to go wrong with any setup...the important thing is to do what is right for your project. If implemented well, it won't matter what you're using. Also, if you design it right, you can always change the environment with minimal impact on your code.
I would probably go with the CakePHP framework. I've done some work with it in the past and found it scales pretty well. I'm also slightly more comfortable with PHP than ASP currently though, which probably plays a factor in my choice.
If you do have a large amount of knowledge in a particular language stick with that.
If you are going to be learning one I would go for asp.net, but with an emphasis on the ajax side. I really think of asp.net as two languages, use the javascript ajax stuff where possible, but if you get stuck or have a reason for server side processing you are always able to go back to the server side stuff. It really is very flexible and has been proven to be able to handle massive loads such as myspace.
Stick with what you know - it's the fastest way to get the site up and running. If you are a .NET programmer, do it in .NET, if you are a PERL programmer, do it in PERL.
That is assuming that getting the thing built is a priority which certainly is the case in an enterprise situation.
If the goal of the exercise is to learn a new platform or language, then feel free to try whatever platform inspires you.
I have built more than one site where learning a new platform is the main motivation, or at least an important motivation. It takes a lot longer but you improve your skills and that is a big benefit.