Java Performance (AYUDA)

Actualmente la empresa donde laboro esta decidiendo que tecnología usar para el desarrollo de un producto enterprise el debate esta entre dos viejos conocidos .Net vs Java, yo sin conocer tan a fondo java expongo los siguientes argumentos

Portabilidad, Mayor cantidad de frameworks de desarrollo, Open source en el y sus utilerías, poder usar j2ME para diversos dispositivos moviles a diferencia de .net solo funcion en su phone, como les comento no soy el experto ni tengo tanta experiencia como la gente que vive en esta comunidad, un netero argumenta que la productividad de los desarrolladores java es muy baja, que java como tal no tiene el mismo performance que .net, que construir una aplicación java es mucho tiempo y el tiempo es dinero que net con silverligth es mas poderoso que java por eso recurro a ustedes a pedir ayuda con sus opiniones y encontrar si esto que el señor netero argumenta es vdd cosa que yo dudo mucho, la aplicacion a construir en un erp.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

plataforma

Una ventaja en Java es que corre en varias plataformas. Puedes desarrollar en Windows o Mac, y hacer deployment en Linux por ejemplo. Desarrollar en .NET es casarte con Windows y con Microsoft en general: el IDE que van a usar seguramente será Visual Studio. Si usan una versión express pues es gratis pero si quieren una versión Pro no son baratas y hay que comprar una licencia por desarrollador. Y de ahí pues es el caminito 100% Microsoft: usar su propio control de versiones y manejador de bugs y todo eso: el Team Foundation Server. Y hay una manera de hacer las cosas. Aplicaciones web? ASP.NET, punto. Escritorio? Winforms, punto. Base de datos? ya ni me acuerdo cómo se llama el ORM que integraron con C# pero pues es ese y ya, obvio hay otras opciones pero ninguna tiene la bendición de Microsoft, especialmente si dichas opciones (como NHibernate) son open source porque eso es un cáncer comunista hecho por hippies mugrosos anticorporativos.

Con Java tienes un montón de elecciones: primero, plataforma: cada programador puede usar la plataforma que guste, sea Windows, Linux o Mac. Segundo, IDE: Tienen para elegir Eclipse, NetBeans, IntelliJ IDEA, JDeveloper, etc. Tercero, otras herramientas: tienes ant/ivy/maven/gradle para construir los proyectos, Jenkins para integración contínua, git/mercurial/subversion para control de versiones; JBoss/Glassfish/Tomcat/Weblogic/Websphere/etc para contenedor JEE; un montonal de frameworks web, varias opciones para acceso a base de datos, para manejar MVC, inyección de dependencias, etc etc, muchísimos componentes de infraestructura, bibliotecas orientadas a resolver problemas de distintos tipos, etc etc.

Y no una, sino varias comunidades de desarrolladores, de todos tipos y tamaños.

Para lo de móvil, te ayudaría un poco eliminar el término j2me, eso ya no existe. La plataforma de desarrollo móvil para "feature phones" es JavaME, y para smartphones pues es Android. j2me viene de cuando teníamos Java 2, pero ya estamos en Java 7 y le quitaron el numerito a las distintas ediciones, ahora son JavaME, JSE y JEE.

El .netero por supuesto que va a tratar de convencer a la empresa de que usen .NET porque así él será el mero mero; si se van por Java, tendrá que aprender un montón de cosas.

Si lo que van a construir es un ERP, un muy buen argumento a favor de la plataforma que sea es que se encuentren un ERP ya hecho en dicha plataforma. Dudo mucho que encuentren un ERP open source hecho en .NET, pero es muy probable que encuentren varios en Java y que los puedan modificar para adaptarlos a sus necesidades. O si no encuentran un ERP ya hecho, encontrarán los componentes necesarios para armar uno sin tener que escribirlo desde cero.

y en cuanto a Performance

Gracias ezamudio, en cuanto a las opciones de framework es una maravilla ademas de todas las herramientas que puedes encontrar en open source es algo magnifico, como formar un continuos integration con diferentes herramientas y no como con microsoft con su TFS, que cuesta un ojo de la cara , como podria debatir u objetar que java es lento

el señor argumenta que java tiene menor performance que Net, que la curva de aprendizaje es mayor (y como no si con net, no te restringue nada mas que tu moralidad para evitar no crear un codigo que hasta ganas de llorar te dan cuando lo vez) a mi me queda muy claro que un codigo malo y sucio lo puedes realizar en cualquier plataforma, como objetamos que java no es lento como podriamos demostrar esto ? alguna idea señores.

Imagen de ezamudio

benchmarks

Si quieres una comparación objetiva, un benchmark es la única opción. Pero más que comprobar que si .NET es más lento o Java es más lento, el resultado será que uno de los dos es un poquito más lento que el otro, y al final lo que tienen que considerar es que no importa cuál sea más rápido para correr su software, porque un ERP no es algo que haga muchos cálculos muy intensivos. Es mejor enfocarse en determinar cuál herramienta les da mayor productividad, para lo cual hay que evaluar todos los criterios que ya hemos mencionado antes: diversidad de plataforma, IDE, frameworks, etc.

Incluso yo diría que evalúen además de Java puro, usar Groovy, y también métanlo al benchmark. Groovy va a ser más lento que Java, pero también evalúen el código resultante: qué tan legible es, la cantidad de código, el tiempo que se tardaron en escribirlo, etc.