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#.


miércoles, 11 de noviembre de 2009

Sobre java (o por qué no sobre java)

Pensando justificaciones iniciales sobre las razones que tiene uno al escribir sobre un determinado tema se me ocurrió que tal vez debería detenerme en explicar porque no elegí java o un tema especializado que tenga que ver con java al decidir el tema central de mi blog.

Y en principio habría razones de peso para hacerlo: es el lenguaje con el que aprendía a programar en serio y el que me da de comer y dentro de mis limitaciones es el lenguaje sobre el que mas conocimientos tengo. Por tanto sería el tema sobre el mas podra compartir con los lectores y ademas le tengo cariño, el mismo que se tiene a tu primer amor aunque haga tiempo que no lo sea.

Sin embargo ya no es la herramienta con la que mas a gusto estoy por mucho cariño que le tenga. Tal vez, el que sea mi herramienta de trabajo diaria y la que tengo que sufrir ha influido en ello. Por otro lado al ser un lenguaje maduro (casi diría ya que un poco decrépito) hay miles de blogs y fuentes de información y no creo que pudiera aportar nada nuevo sobre él, ni siquiera en aquellos aspectos mas especializados de la J2EE.

Dejando aparte las razones personales y mis circunstancias el haberme juntado ultimamente con malas compañias funcionales ha hecho que vea mucho mas claramente sus limitaciones y rigidices y que palidezca comparandolo con cualquiera de los lenguajes o dialectos mas modernos desde python hasta clojure pasando por groovy o scala.

Parte del cambio de mi punto de vista se ha debido a esta mala compañia y sus ensayos sobre la historia y futuro de los lenguajes de programación y en concreto sobre java. En ellas compara a java con cobol, no tecnicamente, sino funcionalmente en el sentido de su función "social". Java es el actual lenguaje de programacion estrella del mundo de los negocios y se mueve mucho dinero a su alrededor. A medida que un lenguaje gana en popularidad es mas dificil realizar cambios sobre el y estos cada vez son mas leves (como le esta pasando a python). Si encima los "protectores" del lenguaje son Oracle e Ibm es totalmente explicable que java ya apenas pueda variar y adaptarse a los nuevos tiempos recogiendo los nuevos avances en el campo de los lenguajes de programación.


PD: Hace unos días y ante el clamor popular se ha anunciado oficialmente que finalmente java 7 tendra closures, contradiciendo mis argumentos en parte, cosa de la que me alegro muy sinceramente. El unico problema es que en mi trabajo diario todavia estoy peleandome con el 1.4 pero todo llegara...