В первые дни Интернета, в основном, это был Perl, а иногда храбрые люди не любили Perl или хотели повысить производительность, используя C ++. Затем Sun разработала JDBC и сервлеты для Java, а затем и другие части J2EE, и Java стала альтернативой Perl с более высокой производительностью и проще, чем C ++. С J2EE появилось много продуктов для серверов приложений от крупных компаний, и теперь у вас есть большое сообщество веб-серверов и серверов приложений Java.
Затем Microsoft, проиграв войну J ++ / Java с Sun, пришла к созданию аналогичной инфраструктуры веб-приложений с .NET. С .NET у вас есть меньше вариантов, со всеми преимуществами и недостатками, которые приносит.
Итак, я думаю, что ответом является сочетание достойной производительности, безопасности и корпоративных функций, а также крупной корпоративной поддержки. C ++ слишком сложен и опасен для большинства людей. У Perl, PHP, Python и Ruby есть свои поклонники, но нет корпоративной поддержки. Я не думаю, что тот факт, что Java / .NET находятся на виртуальных машинах, важен для серверной части. Java изначально использовала виртуальную машину для клиента. Sun пришлось приложить немало усилий, чтобы быстро разорвать виртуальную машину. Я думаю, что Microsoft использовала виртуальную машину, чтобы конкурировать с Sun и упростить поддержку нескольких языков. Будет интересно посмотреть, выйдет ли язык Google Go, который может превзойти Java и C # по безопасности и мощности, но без виртуальной машины.