Wydajność - nawet
Obie platformy działają wyjątkowo dobrze dla praktycznie wszystkich aplikacji.
Nie bardzo ich rozróżniam, chociaż moje subiektywne doświadczenie jest takie, że Java ma niewielką przewagę w przypadku długo działających aplikacji, podczas gdy .Net jest szybszy w czasie uruchamiania aplikacji.
Dostępne narzędzia (nawet narzędzia innych firm) - dyskusyjne
Zależy od tego, jakich narzędzi potrzebujesz i co znasz.
.Net z pewnością ma świetne narzędzia dostarczone przez Microsoft. Z drugiej strony w świecie Java są równie dobre narzędzia, np. W środowiskach Eclipse, Netbeans i IntelliJ.
Kompatybilność między platformami - wygrana Java
.Net jest zasadniczo związany z platformami Microsoft (Windows, Xbox itp.). Kompletne wdrożenia nie są dostępne dla platform innych niż Microsoft .
Mono jest fajne, ale w rzeczywistości nie daje pełnej możliwości działania na różnych platformach, ponieważ nie obsługuje wszystkich bibliotek .Net (na przykład nie można oczekiwać, że wszystkie elementy GUI systemu Windows będą działały poprawnie, więc dopóki nie przełączy się na wieloplatformowy zestaw narzędzi, taki jak GTK #, nie będzie można uruchomić aplikacji na różnych platformach)
Java jest naprawdę przenośna. Nie tylko język, ale co ważniejsze, wszystkie biblioteki Java są przenośne. Pod warunkiem, że trzymasz się czystych bibliotek Java (np. Swing for GUI), Twój kod będzie działał wszędzie tam, gdzie masz środowisko wykonawcze Java.
Biblioteki (zwłaszcza biblioteki stron trzecich) - wygrana Java
Prawdopodobnie najlepszą siłą platformy Java jest rozległy ekosystem bibliotek, zwłaszcza bibliotek open source. Kilka przykładów:
- Wszystkie biblioteki i narzędzia Apache
- Wszystkie biblioteki w rozległym ekosystemie Eclipse
- Wszystkie biblioteki wnoszone / obsługiwane przez Google
- JBoss i wszystkie powiązane narzędzia korporacyjne obsługiwane przez Red Hat
Koszt (Oracle wydaje się próbować zarabiać na Javie) - Java wygrywa, jeśli przejdziesz na open source, w przeciwnym razie nawet.
Możesz mieć w 100% stos Java open source, który jest bezpłatny i nie wiąże Cię z żadną konkretną zastrzeżoną platformą. To jest w 100% darmowe.
Alternatywnie możesz kupić IntelliJ IDEA, uruchomić Javę w systemie Windows i użyć zastrzeżonej bazy danych, w którym to przypadku jest to prawie tak samo opłacalne jak typowy stos Microsoft .NET.
Proces programowania (najłatwiejszy / najszybszy) - dyskusyjny
Prawdopodobnie zależy to bardziej od doświadczenia deweloperów z każdą platformą niż od konkretnego przypisania platformy.
.Net z pewnością ma kilka świetnych narzędzi, które mogą sprawić, że będziesz bardzo produktywny dla prostych aplikacji GUI w Windows. Nic dziwnego, ponieważ jest to „najsłodszy punkt” dla rozwoju .Net.
Z drugiej strony wolę stos Java do programowania po stronie serwera. Za pomocą narzędzi takich jak Maven i wszystkich możliwości ciągłego wdrażania / integracji możesz ustanowić bardzo efektywny proces programowania dla solidnych aplikacji po stronie serwera.
Pod względem językowym język C # ma pewne zalety w zakresie wydajności w porównaniu z Javą. Ale z drugiej strony, jeśli obecnie rozwijasz się na platformie Java, trendem nie jest używanie samej Javy, ale użycie jednego z nowych języków JVM, takich jak Scala, Groovy lub Clojure - jeśli to zrobisz, będziesz o wiele bardziej produktywny niż C # lub Java.