У меня более 10 лет опыта работы с Java (начиная с версии 1.1!) И 7 лет опыта работы с .NET (в основном C #).
У вас есть очень правильное решение, но в основном вы должны попытаться разбить его на несколько сценариев:
Настольное приложение
Если вы разрабатываете настольное приложение, вы должны использовать основную платформу, с которой будете работать. Если платформа Microsoft использует .NET, то нет лучшего решения, чем платформа, разработанная самой компанией. Если это Linux или мультиплатформенный сценарий, рассмотрите Java или переходите на веб-решение.
Веб-приложение
Это очень трудное решение, потому что у каждого есть свои сильные и слабые стороны. Вот несколько из них:
C #
Сила: в настоящее время имеет больше возможностей для создания новых функций в язык и платформу / структуру. Все идет от одного поставщика, и, безусловно, это преимущество. Вы также можете использовать некоторые очень мощные компоненты, такие как DevExpress, например (Java не подходит даже для того, чтобы иметь что-то наподобие того, что команда DX собрала за эти годы, и это представляет собой огромный прирост производительности).
Слабость: для корпоративных приложений .NET не так развита, как Java. У вас не так много поставщиков, создающих корпоративное программное обеспечение в .NET, как у вас для Java.
Джава
Сила: более зрелая (уже объясненная) и имеющая большое сообщество с несколькими отличными проектами с открытым исходным кодом, которые могут помочь. Несколько так называемых проектов с открытым исходным кодом .NET на самом деле являются просто копией проектов из Java.
Слабость: Oracle владеет Java (я знаю, а не JCP), и это определенно риск, который следует учитывать. Их намерения не очень ясны, и мне лично не нравится, где сейчас движется язык (я знаю, что многие разработчики Java имеют схожие проблемы).
Приложение на стороне сервера
Это в основном те же аргументы, что и для веб-приложений, но, поскольку вам не нужно слишком беспокоиться о пользовательском интерфейсе, Java в этом случае становится сильнее. Но опять же, если платформа в основном Windows .NET может быть лучшим выбором.
Общие соображения
В целом, на мой взгляд, .NET имеет преимущество главным образом из-за тесной интеграции Visual Studio 2010 (предоставляет лучшую IDE), MS SQL, Entity Framework, IIS и так далее. Все это представляет собой огромный рост производительности, и у меня есть огромный опыт, подтверждающий это. Кроме того, я работаю в основном с разработчиками Java, которые обратились к .NET, и они придерживаются того же мнения.
Я думаю, что это также хороший момент, что Microsoft сильнее, чем когда-либо, что означает, что .NET будет там некоторое время. Поэтому, глядя в будущее на 10-15 лет, я чувствую себя более защищенным с .NET, чем с Java.