La domanda dipende molto dal tipo di sito che si intende costruire, soprattutto dalla complessità della logica aziendale e dei dati (e dalla dimensione dei dati).
IMHO ci sono 3 casi principali:
a) Piccolo o Piccolo - > Medio
Linguaggio interpretato - Python con Django, PHP con Zend o Ruby con Rails.
Pro: offre la migliore produttività, ovvero è possibile ottenere un prodotto funzionale molto velocemente.
Con: il problema con questo è la logica limitata che può essere applicata alla scalabilità dei dati e ai problemi di prestazioni.
b) Medium
C # utilizzando .NET
Pro: vantaggio in termini di prestazioni e sicurezza rispetto al precedente a causa di un linguaggio compilato e tipizzato; anche molti vantaggi di Microsoft Visual Studio che automatizza moltissimo, dalla distribuzione in cloud al mapping relazionale di oggetti.
Contro: fonte chiusa, costi, Windows limitato;
c) Medio o Grande - dove il middleware ha uno scopo di esistenza
Java usando JSF, Struts o Spring MVC
Pro: progettato per scalabilità e indipendenza dalla piattaforma; ha molte API // framework open source per molte cose (da Spring MVC come framework web a Hadoop per calcolo distribuito o JMS per comunicazioni middleware)
Con: Tipo di complesso
E ora per discutere la mia opinione perché credo che Java sia adatto a grandi applicazioni mentre .NET non lo è. È probabile che un'applicazione di grandi dimensioni sia complessa, quindi deve essere flessibile e personalizzabile; la tecnologia per Java è principalmente open source (e direttamente personalizzabile) mentre la maggior parte della tecnologia per .NET costa denaro e closed source. Ho anche detto che .NET è buono per le automazioni che vengono con VS; ma il problema con questa automazione è che non crea codice flessibile ed elegante. Questo tipo di codice è necessario per essere scritto da un vero programmatore; quindi il denaro pagato per VS e altre tecnologie MS non vale la pena di essere pagato perché l'applicazione deve essere flessibile e il codice deve ancora essere scritto da un vero programmatore. È possibile scrivere applicazioni complesse utilizzando C #, ma non è redditizio. E Java ha anche il vantaggio dell'indipendenza dalla piattaforma.
Solo un'opinione soggettiva.
Mi piace che tu scelga qualcosa dalla prima categoria, dal momento che probabilmente non stai parlando per un'organizzazione abbastanza grande in modo da avere i soldi per la tecnologia Microsoft o per la forza lavoro necessaria per una complessa applicazione Java.