Pewnie zostanę spalony na stosie ale zaryzykuję
Pewnie nie każdy zgodzi się z moim opisem. Dlatego od razu powiem że to moje prywatne spostrzeżenia.
Czemu Java?
Nie wiem czemu. Mi jest dobrze z Javą bo zaczynałem z nią zabawę w 2001 roku. Długo jej nie rozumiałem i miałem z nią problemy.
Ale w końcu polubiłem.
Wtedy php byl pseudo-obiektowy, kontrola typów praktycznie nie występowała. A Java wydawała się dobrym rozwiązaniem do większych aplikacji - "kultura" pisania kodu a co za tym idzie maintance byly o wiele prostsze i są tam gdzie jezyk silnie obiektowy.
Zebrała wiele udogodnień z innych jezyków programowania jednocześnie eliminując wady jak chociazby dynamiczne zwiększanie rozmiaru tablic czy wielodziedziczenie. Oczywiscie wprowadziła równiez swoje wady, ale nie ma rzeczy idealnych.
No i generowanie javadoc'a - nie wolno o tym zapomnieć
JSP natomiast nie przyniosło specjalnej rewelacji przynajmniej w specyfikacji 1.1. Potem troszkę lepiej było gdy wprowadzono do specyfikacji EL
Dopiero strutsy dokonały znaczacej popularyzacji, chodz rewelacji nie odkryły bo chociażby smarty były dużo wcześniej. no i ANT czyli make na wszystkie platformy przy pomocy którego wiekszosc progrmistów nie wyobraża sobie zycia. Potem nastąpił gwałtowny wzorst wydajności maszyn i pojawiły się serwery aplikacyjne (tu głownie projekty komercyjne się kłaniają - duże firmy chcą miec maintance i chcą za niego płacic).
Powstały wielkie komercyjne projekty oparte o javę a co za tym idzie one trwają długo i stabilnośc technologii była duża, nie trzeba było zamazywać kodu bo sie miało kod skompilowany, implementować logowanie zastanawiając się nad jego bezpieczeństwem bo wystarczyło się poslużyć java.security.* itepe itede.
Ale wrocmy do tych projektów chocby peoplesoft - jak armia developerów klepie kod 3 lata + rok poprawia go (tyle wynosi średni czas uzywania systemów w danej wersji - upgrade co ~4 lata) to nie tak prosto zmienić technologię i przepisać coś na nowy język. Tym bardziej że jest to język "wystarczający"
Poźniej poszło jak z płatka JSF, HIbernate, ibatis, maven i inne aż się zrobił trochę syf i wielki kipisz. W tym momencie przyszedł SPRING czyli framework frameworków bez ktorego większosc programistów nie wyobraża już sobie pracy

Oczywiscie są i wady jak SWING ktory jest dość cięzki - odciążono go uruchamiając SWT. Ale jakoś nie słyszałem o masowym używaniu SWT. Pewnie dlatego że moc maszyn poszła tak do przodu.
Hibernate - idea bardzo fajna, ale głownie idea. Wiele głosów i "za" i "przeciw". Krotko mowiac dość kontrowersyjny framework.
Do wad chodz i zalet

należy tez mnogość bibliotek. A własciwie sztuka poslugiwania się nimi - zabierzcie programista dostęp do java.sun.com a zrozumiecie
Nie wolno tez zapomnieć o popularyzacji inżynierii oprogramowania, której java bardzo "leżala"
Co do .Net'a to mam z nim niewielkie doświadczenie ale wg mnie troche sie spoznil, a wiele projektów było już w javie klepanych. Był/jest płatny a na IT nie chetnie się wydaje pieniadze. no i ograniczenia co do platformy sprzętowej.
Dobre miejsce i czas, a także silny sojusznik w postaci SUN'a spowodowaly że język się przyjął.