lunes, 16 de mayo de 2011

Alineando Conceptos

El otro día me tocó justificar y defender a la factibilidad de instalar una aplicación desarrollada en Java en convivencia con aplicaciones desarrolladas con otras tecnologías (C++ y C# de Microsoft®). Esto, obviamente, en una máquina con sistema operativo Windows®.

Como parte de esto, escuché muchos argumentos erróneos para intentar justificar la posición de no instalar la aplicación en Java en el ambiente indicado. Aún cuando hay una consideración importante respecto a las características del Hardware, desde el punto de vista del Software, en términos generales, todos los argumentos sólo reflejan errores conceptuales respecto a las componentes que participan en la decisión, como describo a continuación.

Afirmación 1 - Java ocupa muchos recursos
Casi todos los lenguajes modernos requieren de un “run-time” para ejecutarse. Un run-time ó ambiente de ejecución es básicamente un programa que provee un entorno para la ejecución de programas compilados en un determinado lenguaje. Hay múltiples ejemplos de run-times disponibles. Algunos de los más conocidos son Java, C# y otros menos evidentes, como Visual Basic 6.0 de Microsoft.

Un run-time es capaz de ejecutar un programa “compilado” para un lenguaje determinado a diferencia de lo que sucede con los lenguajes interpretados (php, asp, perl, etc.) que, también requieren un run-time pero que no pueden ser compilados previamente.

El problema con esta afirmación es, básicamente, considerar que el run-time ocupa recursos por sí mismo. Obviamente, el run-time ocupa espacio en disco, sin embargo, para que realmente ocupe recursos debe ejecutar un programa y, en este contexto, el uso de recursos depende única y exclusivamente del programa a ejecutar – no es una característica del run-time por si mismo.

Aunque una prueba de rendimiento siempre será posible de cargar hacia un lado u otro, en el siguiente link hay un benchmark que permite realizar la comparación entre diversos lenguajes de programación. Al hacer la comparación entre Java y C#, Java obtiene mejores resultados.

Afirmación 2 - Instalé Java y lo eché a andar
Siguiendo con la idea anterior, el run-time no se puede ejecutar por si solo. En este contexto, se puede instalar el run-time de java y/o .net en un computador en cualquier momento, sin embargo, si no se tiene un programa que haga uso del run-time, sencillamente no se puede ejecutar.

El problema con esta afirmación es considerar que el run-time se puede ejecutar. El run-time se utiliza para ejecutar otros programas y no se puede ejecutar por si solo.

Afirmación 3 – Microsoft ya no soporta Java
Efectivamente, el 30 de Junio de 2009, Microsoft terminó el soporte de su versión de Java. Esto no es un problema en sí mismo, sin embargo, si se convierte en un problema al considerar que el soporte de Microsoft® para Java es extensible a aplicaciones desarrolladas en otra versión de Java, por ejemplo, la de Sun (Oracle ahora).

Históricamente, Microsoft siempre estuvo en contra de Java como lenguaje de desarrollo y, obviamente, nunca iba a privilegiar esta tecnología en desmedro de sus propios ambientes de desarrollo. Menos aún cuando Java provee, desde sus inicios, el postulado de “write once run everywhere” (programa una vez ejecuta donde quieras) que, peor aún, potencia otros sistemas operativos en desmedro de Windows.

El problema con esta afirmación es considerar que se requiere soporte de Microsoft para ejecutar aplicaciones Java, lo cual, sólo aplica para aplicaciones desarrolladas para la máquina virtual de java de Microsoft (MSJVM).

Considerando todos los argumentos anteriores, la única manera de realmente resolver un dilema de este tipo es mediante la realización de una prueba de concepto, en particular, para descartar la primera afirmación. Las otras dos, en realidad, no son relevantes para tomar una decisión adecuada.

No hay comentarios.: