sábado, 20 de septiembre de 2008

Java vs .Net, ¿dónde acaba el mito y empieza la realidad?

Para empezar con la sección de tecnología vamos a dar un pequeño repaso a los dos grandes mundos en lo que se refiere al desarrollo en la actualidad, Java y .Net.

En estudios como los efectuados por François Labelle de Berkeley (http://www.cs.berkeley.edu/%7Eflab/languages.html) se muestra la evolución del uso de los diferentes lenguajes de programación en proyectos Open Source desde el año 2000 al 2006. A continuación se replica el gráfico:


En él se puede apreciar el incremento significativo en el uso de los lenguajes Java y PHP y la disminución de C y C++.

Es fácil deducir la importancia que ha ido adquiriendo Java y por tanto su merecida cuota de mercado. Uniendo esto a que además de desarrollo Web permite desarrollo de proyectos de escritorio multiplataforma, hacen de él una de las alternativas más valorada.

Por otro lado Microsoft ha seguido su batalla a Java lanzando al mercado, hace unos años ya, una evolución de sus entornos de desarrollo a Visual Studio .Net, que además de unificar la interfaz crea un marco común de ejecución de todos los lenguajes que la componen.

A este salto significativo se le unió el lanzamiento de un nuevo lenguaje denominado C# con una sintaxis intermedia entre Java y C++, intentando coger de cada uno de ellos lo mejor y consiguiendo un lenguaje potente, robusto y sencillo de desarrollar.

Existe una gran división entre los partidarios del Open Source, con Java como representante, y los partidarios de los sistemas propietarios, con Microsoft y .Net como el suyo, muchas veces basada en ideas y teorías contrastadas empíricamente, pero otras muchas basadas en mitos creados a partir de bulos y falacias no fundamentadas.

Es indiscutible que existen partidarios de uno y otro bando, así como también es indiscutible que razones no faltan para elegir uno de ambos, pero hay que antender a criterios objetivos más que puramente filosóficos.

Así pues se puede ver un análisis de rendimiento de varios lenguajes realizando diferentes operaciones en la siguiente web:

Nine Language Performance Round up: Benchmarking Math and File IO

Que se puede resumir con el siguiente gráfico (obtenido de la citada Web):




Claramente se aprecia que la mayoría de lenguajes .Net son superiores en rendimiento global de este benchmark frente a Java, pero si por el contrario se eliminan las operaciones intensivas en cálculo trigonométrico Java obtiene tasas superiores a prácticamente todos ellos.

¿Entonces, cuál es mejor? Pues dependerá de nuestro objetivo. Si vamos a efectuar un conversor entre proyecciones geométricas deberíamos replantearnos el uso de Java, del mismo modo que si requerimos un sistema que necesite distribuirse en diferentes plataformas deberíamos replantearnos el uso de .Net. Esto nos da un toque de atención: ¿por qué nos basamos en comentarios de partidarios de unos y otros modelos y no principalmente en nuestras necesidades particulares y cómo se adaptan a ellas?

Por lo tanto, partiendo de un gran conjunto de mitos tecnológicos, como gestores de proyectos de este tipo, debemos buscar nuestra propia realidad, para lo cuál viene muy bien el mayor avance de la tecnología en la gestión de proyectos, el lápiz y el papel.


Aquí van algunas de las preguntas que debemos hacernos:

  • Qué necesidades técnicas tengo: ¿necesito multiplataforma, será una aplicación intensiva en determinadas operaciones aritmetico-lógicas...?

  • Cuál es mi entorno comercial: ¿Trabajo con bancos, PYMES, AAPP, entornos industriales...?

  • Qué oferta de profesionales hay: ¿qué formación tienen los profesionales de mi compañía, qué distribución del mercado de profesionales cumple requisitos en cada posible sistema, en qué se forman los futuros profesionales en universidades y escuelas técnicas...?

  • Qué garantía necesito y qué costes puedo soportar: ¿la plataforma elegida tiene una comunidad o empresa estable que me de respaldo en el tiempo, los costes de la plataforma son limitativos o compensables, el coste de las licencias me rebaja el coste de personal o alrevés...?

  • Otras cuestiones: tiempos de desarrollo, dificultad en la transferencia tecnológica, facilidad de mantenimiento, robustez de la solución...


Por lo tanto, Java vs. .Net, ¿dónde acaba el mito y empieza la realidad? Pues el mito acaba cuando empieza la realidad, y la realidad empieza cuando asumimos que el objetivo último de nuestra empresa es crear valor, y la creación de valor sólo se da con la utilización efectiva y eficiente de los activos y pasivos, y por lo tanto, como parte de ello, con la utilización eficiente y efectiva de la tecnología. Es obligación del gestor de proyectos tecnológicos decidir qué es mito y qué es realidad, y aprovécharlo para crear valor en la empresa.

3 comentarios:

  1. ¡CLARO! SEGUN LAS CARACTERISTICAS
    DEL PROYECTO NO HAY UNO TOTALMENTE
    PERFECTO PARA TODOS LOS CASOS , NO TENEMOS QUE CAER EN LA
    UTOPIA DEL BLANCO O NEGRO A VECES
    SERÁ NECESARIO EL BLANCO Y OTRAS
    NO !!!!
    RTE VISU

    ResponderEliminar
  2. Aquí va mi opinión sobre Java versus C#: http://goo.gl/fb/y11HV.

    ResponderEliminar
  3. Estimado Santiago, este es un post que escribí hace muuucho tiempo y que más que una comparativa pretendía ser una reflexión.

    Creo que tu artículo es excelente y desde aquí animo a los lectores a seguirlo.

    Y sólo me gustaría añadir una cosa como corolario a lo que tú ya concluyes, y es que no politicemos la informática en colores azul y rojo, sepamos aprovechar lo mejor de cada cosa y aportemos valor a nuestros clientes y a nuestra sociedad.

    Gracias por tu aportación!

    ResponderEliminar