Innovar no significa siempre crear algo nuevo, significa hacer algo distinto, o sea cambiar.

No se exactamente cuantos, pero deben ser más de 10 años ya con Java y la sopa de letras J2EE en los servidores de producción de los clientes.

Java es buen lenguaje, tiene una comunidad gigante (y por tanto un soporte envidiable), y la JVM está muy madura, y muestra los mejores graficos de performance, estabilidad y portabilidad en comparación con las demás (un ejemplo es el modelo de Thread que Java mejoró con respecto al lenguaje C, hay varios blogs y papers que hablan al respecto). Considero entonces que la falencia no está en Java. La falencia está en los modelos encima de Java, como el  J2EE, y no voy a repetir lo que todos ya conocen.

En otro mundo, lenguajes como Ruby, Python, Scala, y frameworks como Rails, Django, Pylons, o Lift están ganandole en popularidad a Java y J2EE por el pragmatismo y la proactividad que imponen a los desarrollos. Por ejemplo en nuestro caso es muy común ya crear prototipos semi-funcionales usando RoR, y luego re-escribir la lógica de parte del server en Java.

Y finalmente, proyectos como JRuby, Groovy, Grails, Jython, Scala, (y más), todos salidos de las comunidades Java llegaron para suplir dichas falencias, reusando lo mejor del mundo Java y J2EE y agregandole agilidad, pragmatismo y porque no, entretensión al desarrollo en Java.

No obstante la pregunta es: “Como convencer a los clientes que ya es hora de innovar en este tema ?”.