Rendimiento - Incluso
Ambas plataformas funcionan extremadamente bien para prácticamente todas las aplicaciones.
No es mucho para diferenciarlos, aunque mi experiencia subjetiva es que Java tiene una ligera ventaja para las aplicaciones de larga ejecución, mientras que .Net es más rápido para el tiempo de inicio de la aplicación.
Herramientas disponibles (incluso herramientas de terceros) - Debatible
Depende de qué herramientas necesita y con qué está familiarizado.
.Net ciertamente tiene algunas excelentes herramientas proporcionadas por Microsoft. Por otro lado, existen herramientas igualmente buenas en el mundo Java, por ejemplo, en los entornos Eclipse, Netbeans of IntelliJ.
Compatibilidad multiplataforma : Java win
.Net está fundamentalmente vinculado a las plataformas de Microsoft (Windows, Xbox, etc.). Las implementaciones completas no están disponibles para ninguna plataforma que no sea de Microsoft .
Mono es agradable, pero en realidad no le brinda una capacidad multiplataforma completa porque no admite todas las bibliotecas .Net (por ejemplo, no puede esperar que todas las cosas de la GUI de Windows funcionen correctamente, así que a menos que cambie a un kit 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 Java son portátiles. Siempre que se limite a las bibliotecas Java puras (por ejemplo, Swing para GUI), su código se ejecutará en cualquier lugar donde tenga un entorno de ejecución Java.
Bibliotecas (especialmente bibliotecas de terceros) - Java gana
Probablemente, la mejor fortaleza de la plataforma Java es el vasto ecosistema de bibliotecas, especialmente las 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 monetizar Java) : Java gana si va a código abierto, de lo contrario, incluso.
Puede tener una pila Java 100% de código abierto que es gratuita y no lo vincula a ninguna plataforma patentada 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 más o menos el mismo costo que una pila típica de Microsoft .NET.
Proceso de desarrollo (más fácil / más rápido) : debatible
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 excelentes herramientas que pueden hacerlo muy productivo para aplicaciones 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 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 efectivo para aplicaciones robustas del lado del servidor.
Language-wise C # tiene algunas ventajas de productividad sobre Java. Pero, por otro lado, si está desarrollando en la plataforma Java hoy en día, la tendencia no es 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.