У джавы были сверхудобные фичи по сравнению с .net:
1. джарка независима от архитектуры x32/x64, очень простой билд/деплой/дистрибуция.
2. в любом классе можно было прописать main и он сразу становился запускаемым, нет различия exe/lib
3. в джаве единица загрузки — это класс, можно состряпать и загрузить класс динамически в рантайме и полетели, соотвественно скриптинг во всех позах. В .net единица загрузки — сборка, и долгое время был баг, что загрузка/выгрузка сборки оставляла мемори лик.
4. в джавовском мире цвёл и пах опенсорс, в частности Томкат был доступен аж с java 1.4 и быстро набрал популярность, контраст по сравнению с IIS был разительный.
Так что уже сначала, несмотря на доминирование M$, как только некто становился джавистом, его туда засасывало со страшной силой и в .net люди возвращались неохотно, если возвращались.
1. Таргет AnyCPU. Указывать платформу специально есть смысл разве что для правильного маршаллинга в нативный код и разных параметров билд-скриптов для разных платформ
2. Нет, нужно писать java.exe yourjar.jar, тогда как .net запускается тупо кликом по exe-файлу
3. Да стряпай экспрешены в рантайме и делай хоть классы хоть методы и заменяй их на лету.
4. Изначальная идея была в том, что .net-компоненты будут продавать, и у мс был коммунити сайт под публикацию бинарников в начале 2000. Уже не помню название
И такой возвращаешься в джаву году в 2010-11 например...
Где свойства?
Где замыкания?
Где лямбды?
Где LINQ?
Где partial-классы?
Где делегаты/события?
Где полноценное ООП, без цирка с примитивными типами?
Где перегрузка операторов?
Где вывод типов?
Где TCO?
Где async/await?
Охуенно БЛЯ!