Rendimiento - Incluso
Ambas plataformas funcionan extremadamente bien para prácticamente todas las aplicaciones.
Realmente no hay mucho para diferenciarlos, aunque mi experiencia subjetiva es que Java tiene una ligera ventaja para aplicaciones de ejecución prolongada, mientras que .Net es más rápido para el tiempo de inicio de la aplicación.
Herramientas disponibles (incluso herramientas de terceros) - Debatable
Depende de las herramientas que necesite y con las que esté familiarizado.
.Net ciertamente tiene algunas herramientas excelentes proporcionadas por Microsoft. Por otro lado, hay herramientas igualmente buenas en el mundo Java, por ejemplo, En el Eclipse, Netbeans de IntelliJ.
Compatibilidad entre plataformas - Java win
.Net está vinculado fundamentalmente a las plataformas de Microsoft (Windows, Xbox, etc.). Las implementaciones completas no están disponibles para ninguna plataforma que no sea Microsoft .
Mono es bueno, pero en realidad no te brinda la capacidad multiplataforma completa porque no admite todas las bibliotecas .Net (por ejemplo, no puedes esperar que todas las cosas de la GUI de Windows funcionen correctamente, a menos que si cambia a un conjunto de herramientas multiplataforma como GTK #, no podrá ejecutar su aplicación en diferentes plataformas)
Java es realmente portátil. No solo el lenguaje, sino mucho más importante, todas las bibliotecas de Java son portátiles. Siempre que se adhiera a bibliotecas Java puras (por ejemplo, Swing para GUI), su código se ejecutará en cualquier lugar donde tenga un entorno de tiempo de ejecución Java.
Bibliotecas (especialmente bibliotecas de terceros) - Java win
Probablemente, la mejor fortaleza de la plataforma Java es el vasto ecosistema de bibliotecas, especialmente bibliotecas de código abierto. Algunos ejemplos:
- Todas las bibliotecas y herramientas de Apache
- Todas las bibliotecas en el vasto ecosistema de Eclipse
- Todas las bibliotecas contribuidas / mantenidas por Google
- JBoss y todas las herramientas empresariales relacionadas mantenidas por Red Hat
Costo (Oracle parece intentar y monetizar Java) : Java gana si vas de código abierto, de lo contrario, incluso.
Puede tener una pila Java de código abierto al 100%, que es gratuita y no lo vincula a ninguna plataforma propietaria en particular. Esto es 100% gratis.
Alternativamente, puede comprar IntelliJ IDEA, ejecutar Java en Windows y usar una base de datos propietaria, en cuyo caso es prácticamente el mismo costo que una pila típica de Microsoft .NET.
Proceso de desarrollo (más fácil / más rápido) - Debatable
Esto probablemente depende más de la experiencia de sus desarrolladores con cada plataforma en lugar del atributo particular de la plataforma.
.Net ciertamente tiene algunas herramientas excelentes que pueden hacerte muy productivo para aplicaciones de GUI simples en Windows. No es sorprendente ya que este es el "punto óptimo" para el desarrollo de .Net.
Por otro lado, prefiero la pila de Java para el desarrollo del lado del servidor. Con herramientas como Maven y todas las capacidades de implementación / integración continua, puede establecer un proceso de desarrollo muy eficaz para aplicaciones robustas del lado del servidor.
El lenguaje # C # tiene algunas ventajas de productividad sobre Java. Pero, por otro lado, si actualmente se está desarrollando en la plataforma Java, la tendencia es no usar Java en sí, sino usar uno de los nuevos lenguajes JVM como Scala, Groovy o Clojure. Si lo hace, será mucho más productivo. que C # o Java.