Ripeto: tendenzialmente, con tutti i linguaggi puoi fare tutto. Probabilmente riusciresti a fare un sito web anche usando bash. Il punto è che ci sono delle convenienze, degli standard, o semplicemente delle capacità personali del programmatore che lo portano a scegliere un linguaggio piuttosto che un altro. Personalmente, linguaggi non OO o a tipizzazione debole come PHP rendono difficoltoso lo sviluppo di applicazioni in cui problematiche e soluzioni tecniche richiedono un elevata e approfondita conoscenza di programmazione OO e di analisi, ma non per questo non possono essere utilizzati. Ora, prendiamo ad esempio Facebook: se non erro, il frontend è gestito dal php (ricordo anche che gli ingegneri di facebook si sono pure fatti il loro compilatore per ottimizzare l'esecuzione di codice php), sapevo poi che la parte di backend sia in java, non so però se parti di facebook riservate ai dipendenti e al controllo della piattaforma o anche applicazioni lato server richiamate dal frontend per eseguire determinate azioni. Cmq, si dimostra che con PHP puoi fare un sito da centinaia di milioni di contatti unici al giorno, quindi è inutile chiedere "per un'applicazione medio grande useresti A piuttosto che B". Intanto, bisognerebbe chiederti se conosci A e B come le tue tasche, in secondo luogo bisogna considerare tempi e costi di sviluppo, reali obbiettivi nel brevo e medio periodo, fattibilità etc prima di poterti dire A o B. Ad esempio, il sitarello per il macellaio sotto casa puoi farlo, diciamo, o in PHP o in JSP: facciamo finta che i tempi di sviluppo siano gli stessi, nonchè gli strumenti utilizzati per lo sviluppo paragonabili in quanto robustezza, banalmente il problema sarebbe che un hosting PHP + dominio ti viene a costare 40 euro l'anno, mentre uno JSP 120 al mese (oddio, ora non so se sia ancora così, una volta erano questi i prezzi), portandoti quindi a scegliere PHP rispetto JSP. Poi perchè non prendere in considerazione Ruby? Perchè no nodejs? Ci sono talmente tanti linguaggi, che sta al singolo programmatore studiarli, valutarli e se è utilizzarli. Progetti di medie dimensioni generalmente coinvolgono diversi linguaggi, tanto per fare un esempio: bash/perl per la gestione di operazioni sui server/client, php per pagine web statiche/dinamiche, java per integrazione ws tra due parti dell'applicativo, nodejs per la comunicazione client/server.

In tutto ciò hanno un ruolo fondamentale i tools da utilizzare nello sviluppo dell'applicativo. Parlandoci chiaro, probabilmente l'unico IDE paragonabile per tools a quelli per Java, è Zend Studio o come si chiama, nonchè Zend server per il deploy e il debug dell'applicativo. I framework, poi, chi piu chi meno hanno difetti e limitazioni, anche per copa del linguaggio in se. Allo stato dell'arte, non esiste e non esisterà mai per PHP nulla di paragonabile a SpringFramework per Java, framework che ti permette di gestire e sviluppare il tuo progetto in una figata pazzesca e in cui ritrovi qualsiasi concetto di OO che hai studiato nei libri. Le "moderne" applicazioni enterprise java-based usano tutte tools come spring, anche perchè abbatte significativamente i tempi di sviluppo, e quindi i costi, di un'applicazione. Ovviamente, se limitiamo il discorso a curve di apprendimento, partendo da 0 non c'è paragone: PHP è molto più semplice, quasi ovvio, nel suo aspetto procedurale. Per usare Java, cmq, devi conoscere la base dell'OOP, quindi per apprendere ci vuole parecchio di piu.

Cmq, per fare il sito web, ti posso concedere la scelta tra PHP e Ruby, anche perchè altrimenti se uno di Ruby mi legge, mi mena a mani basse.