Продуктивність - Рівна
Обидві платформи працюють надзвичайно добре практично для всіх застосувань.
Насправді їх не дуже багато, хоча мій суб'єктивний досвід полягає в тому, що у Java є невелика перевага для тривалого запуску програм, тоді як .Net швидше час запуску програми.
Доступні інструменти (навіть інструменти сторонніх виробників) - дискусійні
Залежить від того, які інструменти вам потрібні та які ви знайомі.
.Net, безумовно, має чудові інструменти, які надає Microsoft. З іншого боку, в світі Java є однаково хороші інструменти, наприклад, у середовищах Eclipse, Netbeans IntelliJ.
Сумісність з платформою - Java win
.Net принципово прив’язаний до платформ Microsoft (Windows, Xbox тощо). Повна реалізація недоступна для будь-яких платформ, що не належать Microsoft .
Моно є приємним, але насправді він не дає вам повних можливостей між платформи, оскільки він не підтримує всі бібліотеки .Net (наприклад, ви не можете очікувати, що всі графічні інтерфейси Windows працюватимуть коректно, тому якщо ви не перейдете на міжплатформний інструментарій, такий як GTK #, ви не зможете запускати додаток на різних платформах)
Java справді портативний. Не тільки мова, але набагато важливіше, що всі бібліотеки Java є портативними. Якщо ви будете дотримуватися чистих бібліотек Java (наприклад, Swing для GUI), ваш код буде працювати в будь-якому місці, де у вас є середовище виконання Java.
Бібліотеки (особливо сторонні бібліотеки) - Java win
Напевно, найкраща сила платформи Java - це величезна екосистема бібліотек, особливо бібліотеки з відкритим кодом. Деякі приклади:
- Всі бібліотеки та інструменти Apache
- Усі бібліотеки у величезній екосистемі Eclipse
- Усі бібліотеки, надані та підтримувані Google
- JBoss та всі пов'язані з цим інструменти для підприємств, що підтримуються Red Hat
Вартість (Oracle, схоже, намагається і монетизує Java) - виграє Java, якщо ви перейдете з відкритим кодом, інакше Навіть.
Ви можете мати 100% стек з відкритим кодом Java, який безкоштовний і не прив'язує вас до будь-якої конкретної фірмової платформи. Це на 100% безкоштовно.
Крім того, ви можете придбати IntelliJ IDEA, запустити Java в Windows та використовувати власну базу даних, і в цьому випадку це майже так само, як і у типового стеку Microsoft .NET.
Процес розробки (найпростіший / найшвидший) - дискусійний
Це, мабуть, більше залежить від досвіду ваших розробників з кожною платформою, а не від конкретного припису платформи.
.Net, безумовно, має кілька чудових інструментів, які можуть зробити вас дуже продуктивним для простих програм GUI в Windows. Не дивно, адже це "солодке місце" для розвитку .Net.
З іншого боку, я віддаю перевагу стеку Java для розробки на сервері. За допомогою таких інструментів як Maven та всіх можливостей безперервного розгортання / інтеграції ви можете встановити дуже ефективний процес розробки надійних додатків на сервері.
Мовний C # має деякі переваги продуктивності порівняно з Java. Але з іншого боку, якщо ви зараз розвиваєтеся на платформі Java, тенденція полягає не в тому, щоб використовувати саму Java, а натомість використовувати одну з нових мов JVM, таких як Scala, Groovy або Clojure - якщо ви це зробите, ви будете набагато продуктивнішими ніж C # або Java.