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.

I am trying to come up with a list / ranking system on determining which server language to choose for a particular website. Assume that familiarity with a certain language is not important and the implementation can be done in any language. Here are some things that might be important but I am not sure how to rank them :

  • Maintainability.

  • Libraries.

For example, Memcached and NoSql support right out the box would be really nice addition to a particular framework.

  • 3rd party SDK's.

For example, if I need Paypal on my site they openly provide SDK's for all senarios in Java, PHP and .Net. If I choose Django I would have to rely on 3rd party libraries that are don't support everything and are not officially maintained. Would that be dealbreaker for Django?

  • Performance

This one is tricky to put on a generic list because it can be a deal breaker but for many websites performance will not be an issue that the language/framework is responsible for.

  • Cost (hosting, open source).

edit - Any reason for the votes to close? I didn't see any duplicates mentioned and the question should not drum up a flame war.

share|improve this question
    
what's your budget? –  hanzolo Jun 27 '12 at 20:04
    
The problem with the question is that it is destined to be closed as "not constructive". As it stands, the question will result in a list of everyone's favorite language, with no one answer capable of being "the answer". If you need help editing the question please post a question on the META site. –  Walter Jun 28 '12 at 16:30
    
@Walter thanks for the input. I worded the question on how to choose a langue not what language is best. Unless I am missing something if that results in a list of everyone's favorite language they are not answering my question. –  pllee Jun 28 '12 at 18:22
add comment

4 Answers

up vote 3 down vote accepted

I recently blogged a bit about this (non-English, unfortunately).

To me, you don't really need to be so detailed. Start with the TIOBE top 20, cross off languages which really don't have any sort of traction on the web (i.e. C, Logo, etc.) and you really get a short list. Cross out non-free languages if you want. You end up with less than 10 languages, from where you can discard a few more (i.e. I'd say node.js is not really mature yet, discard Javascript, etc.). You'll narrow it down to a few languages, which are really popular and have a strong ecosystem- they'll all have decent libs for most about everything, with no significant differences between them (i.e. Java has tons of libraries, esp. for enterprisey stuff, PHP has the Facebook SDK, etc.)... then it really comes down to personal choice.

Personally, I'd say Python + Django/Java + Spring are the top choices- depending on whether you want a dynamic language (and Django's admin) or a statically typed language. I'd be hard-pressed to find any other option which is "orders of magnitude better" than either.

share|improve this answer
add comment

There are so many options and so many "cost comparisons" involved you're going to have to ensure careful examination of the entire gamut of costs

You can either sign up for a startup program with Microsofts BizSpark and they'll give you everything for free for a few years (3). they do have express editions which you can download and deploy. Amazons cloud services all have a "FREE" tier, which are pretty nifty for getting something off the ground and offer all kinds of configurations.. etc.. technology will most likely be determined with initial budget allotments and who your developers are.

HOWEVER, technology costs and assumptions are only a small part of the equation. Development costs, implementation costs and maintenance costs are all going to vary depending on which platform you choose. Some get you off the ground quicker, but customization will hinder continued rapid growth, others will give you nothing up front, and will require a master dev to develop appropriately, however the ongoing costs could be minimal if designed correctly..

Then you have to be careful on scalability.. when your site becomes successful, is the platform going to scale? are there any costs associated with scaling that you have to be aware of.. will you need to deploy a new webserver, purchase new hardware? or can you just pay for an increased "instance" bandwidth?

Then the logistics of the matter.. are you hosting yourself? what about disaster recovery and CDN delivery systems to ensure rapid response times?

So you're just barely scratching the surface with those questions.. the server-side language choice will definitely push you in certain directions, however, you can host C# on Apache (mono), and you can host PHP on IIS..

you can plug in some NoSQL databases into just about any codebase, so that's going to be a preference.. is Reporting important?

the questions and implications go on and on.. I would say before going any further..

What are the requirements for your website?

-what's your budget now and ongoing?
-high traffic? 
-mostly reads or lots of updates?
-how important is data integrity (banking precise?)
-reporting?

...too many to list..

share|improve this answer
add comment

The question really depends on the type of site you are going to build, especialy on the complexity of the buisness logic and data (and the size of the data).

IMHO there are 3 major cases:

a) Small or Small->Medium

Interpreted language - Python using Django, PHP using Zend or Ruby using Rails.

Pro: This offers the best productivity, that is you can obtain a functional product very fast.

Con: The problem with this is the limited logic that can be applied on the data scalability and performance problems.

b) Medium

C# using .NET

Pro: Advantage in performance and security over the previous due to a compiled and typed language; also lots of advantages from Microsoft Visual Studio which automates very much, from deploying into cloud to object-relational mapping.

Con: Closed source, costs, Windows bounded;

c) Medium or Large - where middleware has a purpose of existence

Java using JSF, Struts or Spring MVC

Pro: Designed for scalability and platform independence; has many open source frameworks//APIs for many things (from Spring MVC as a web frameworks to Hadoop for distributed computing or JMS for middleware communication)

Con: Kind of complex

And now to argument my opinion why I believe Java is suitable for large applications while .NET is not. A large application is likely to be complex so it needs to be flexible and customizable; the technology for Java is mostly open source (and directly customizable) while most of the technology for .NET costs money and closed source. I also mentioned that .NET is good for the automizations that come with VS; but the problem with this automatizations is that it does not build flexible and elegant code. This kind of code is needed to be written by a real programmer; so the money paid for VS and other MS technologies are not worth to be paid for since the application is to be flexible and the code still needs to be written by real programmer. You can actually write complex applications using C#, it's just not profitable. And Java has also the advantage of platform independence.

Just a subjective opinion.

I sugest you choose something from the first category, since probably you are not speaking for a large enough organization so you have the money for Microsoft technology or for the manpower necesary for a complex Java application.

share|improve this answer
    
you can get visual studio express for free, and SQL express for free too.. –  hanzolo Jun 27 '12 at 20:01
    
@hanzolo Windows development tools can be free on your computer that came with Windows. But when it comes to deployment Windows Server, SQLSerer etc. cost money. –  pllee Jun 27 '12 at 20:23
    
@pilee - that's simply not true –  hanzolo Jun 27 '12 at 20:33
    
@hanzolo What do you mean? newegg.com/Product/Product.aspx?Item=N82E16832416430 ubuntu.com/download/server –  pllee Jun 27 '12 at 20:54
1  
@plee Still, I doubt the majority of .NET programmers use this free tools instead of the large tools provided by Microsoft. –  m3th0dman Jun 28 '12 at 7:42
show 1 more comment

For mature and active language + platform combinations, I'd recommend sticking with Java + Spring or GWT, .NET, Ruby on Rails, or Python + Django. You can also go client-heavy with e.g. JavaScript + Ext and have a potentially very thin REST over JSON back end; that's a very different architectural style. JavaScript + Node.js is a platform to watch and may be appropriate for smaller or bleeding-edge projects.

Beyond the language, for scalability you also may want to look at cloud platforms which can be orthogonal to the answers so far (including your answer in your question). Those influence the language (Scala?) but also application architecture, potentially in a massive way. Consider Google App Engine (Java, Python), Amazon EC2, Heroku (Ruby), Oracle cloud, Microsoft... Where do you want to host this thing, and how much IT do you want to do? These days you can outsource your whole development environment to somewhere like CloudBees or Cloud9.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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