sábado, 14 de noviembre de 2009

Sobre Java II (o ¿Esta muerto java?)

En el anterior post intentaba explicar porque no se me había ocurrido escribir sobre java. Al hacerlo realizaba una critica sobre el aduciendo que era lenguaje obsoleto e incapaz de adaptarse a los cambios debido su exito. Se podría deducir mis palabras que me adhiero al creciente numero de los que se apuntan al lema "java is dead" (213.000 resultados en google). Algunos van mas allá y se cuestionan no solo java sino la misma jvm y dando un paso el mismo paradigma de la programación orientada a objetos cuyos lenguajes estrellas han sido precisamente java y c++.

En este tema soy mas bien pragmático, sobre todo cuando hablamos de hacer negocios con un lenguaje de programación. Como comentaba en el post anterior java es muy utilizado en la empresa y no puede haber tanta gente cuyo objetivo principal es ganar dinero equivocada. Ha sido así hasta ahora y lo sera durante mucho tiempo así que no temáis los javahispanicos que tenemos java para rato, nos guste o no.

Sin embargo tampoco se puede ignorar los cambios que se están sucediendo que han hecho que se empiecen a elegir otros lenguajes en algunos campos de la empresa debido a que se ajustan mejor a su problemática especifica. Por ejemplo twitter ya se hizo en su día en ruby, y no hace mucho cambio la parte "backend" a scala, manteniendo ruby para la parte web. En el mundo de la jvm, claramente influido por la pionera en este sentido plataforma .net, se esta afianzando la idea del paradigma del multilenguaje, por el que los lenguajes se convierten, como las librerías, en herramientas disponibles para poder elegir la mas adecuada en función del problema a resolver. También es verdad que añades otras fuentes de problemas entre ellas la interoperatibilidad entre los diferentes lenguajes. En ese sentido java podría convertirse con el tiempo en el lenguaje de bajo nivel básico de la jvm, primitivo rápido y lo mas cercano al bytecode. O sea lo que seria c para las plataformas unix/linux y windows lo sería java para la plataforma jvm. La verdad es que no me imagino un servidor j2ee programado en groovy o en jython (mm tal vez si en scala). Stuart Halloway escribió una serie de posts sobre el tema que no se pueden pasar por alto respecto a este tema.

La jvm no es igual a java y tiene ventajas que han hecho por ejemplo que Rick Hickey y otros la hayan usado como plataforma destino de su lenguaje en lugar de ponerse a a hacer compiladores en c para cada uno de los sistemas operativos mas usados. Es independiente del hardware, esta muy optimizada a nivel de compilador y probada en ámbitos donde un fallo puede costar mucho dinero (aunque siempre queden flecos) y tienes miles de lineas de código y librerías disponibles para hacer casi cualquier cosa en casi cualquier ámbito de la programación. Cierto es que se creo ligada a java (y por tanto la tradición imperativa de c y c++) y eso ha hecho por ejemplo que algunos desconfíen del carácter innovador de scala y clojure ya que por debajo siempre arrastraran los limites y defectos de la misma jvm. Sin embargo hay que ser demasiado puro para ignorar las ventajas de escribir en un lenguaje compatible con todo el codigo disponible en java o en c#.


No hay comentarios:

Publicar un comentario