Я три года пишу на .NET и всем несказанно доволен. Опыт и знание технологии позволяют развивать околокосмическую скорость разработки. Но не всё так сладко: нелёгкая заставила вплотную столкнуться с Java. В такие моменты начинаешь переосмыслять философию мира: самые привычные вещи переворачиваются с ног на голову, ибо «кофейный» подход воспринимается с колокольни .NET как безграничный набор костылей. Давно уже ходят холиворы вида «Java vs .NET», но общественность не пришла к окончательному решению. Вероятно, мое нехитрое субъективное сравнение поможет склониться некоторым адептам тех или иных технологий к определенному решению.
.NET: «Нам нужен робот. Отлично. Голова, туловище, конечности — руки и ноги по две штуки, зеркально отражённые. Собираем».
Java: «Нам нужно нечто такое, чтобы работало. Типа робота. Так. У нас есть голова, но там надо покопаться в конфигах, допилить правое ухо и нос. Есть опенсорсная прошивка, но она не позволяет анализировать изображение с глаз. Ладно, разбёремся.
Туловище. В общем, есть несколько реализаций туловища: одно без коннекторов для рук, другое без коннекторов для ног. Третье вообще без коннекторов. Ладно, возьмём третье и допилим коннекторы от рук и ног из второго.
Руки и ноги. Есть левая рука и левая нога. Чтобы их развернуть, нужно скачать исходники, посмотреть, как писалась левая рука и аналогично написать правую, только наоборот. С ногой аналогично. Но аппаратная реализация коннекторов из туловища позволяет подключать большой палец от правой ноги только к пятке. Надо сделать дырку в нужном месте и прикрутить туда палец. А на пятке... ладно, пусть будет. Скажем в документации, что так получилось».