Justo cuando uno podría pensar que más lenguajes de programación no puede haber, surgen propuestas como Go, Dart, Kotlin, Ceylon, CoffeeScript, Clojure, Scala, etc. Y la fundación Eclipse tampoco ha pensado quedarse atrás. Ha creado Xtend, un lenguaje como Java, pero que de acuerdo a la publicidad del mismo, no pretende desplazar a este último lenguaje, sino mejorarlo.
A primera vista, parece ser como Java pero con algunas cosas extras. De hecho, compila a código de Java… Sí, leyó bien: produce código en Java, que puede ser leído por seres humanos y no es código hexadecimal o bytecode. Se supone que con ello y el conocimiento de Java del programador, se podría modificar el código generado por el “compilador” de Xtend. ¿Será esto una buena idea? Es claro que tratar de modificar código compilado es lo más parecido a una buena pesadilla, por lo que quizás con Xtend, modificar algunas partes “compiladas” a código Java, podría no ser tan mala idea. Xtend ha sido implementado usando el sistema Xtext, una herramienta que permite la creación de lenguajes de dominio específico. En ese sentido, Xtend es una demostración impresionante de lo poderoso de usar Xtext.
Los detalles del lenguaje indican que empieza en Java, con sintaxis similar y un sistema de tipos estáticos idéntico. Además, usa el JDK como su biblioteca. Una diferencia importante es que solamente usa clases, No hay interfaces, no enums, no otras cosas. Pero además de comportarse como Java, incluye inferencias de tipo automáticas, lo cual significa que aunque el lenguaje usa tipos estáticos, no hay que especificarlos. Por ejemplo, esto es aceptable en el lenguaje.:
val word=”Hello” y val String word=”Hello”
Otro añadido a Java es la automatización de “getters” y “setters” (obtención de información y definición de parámetros, para decirlo ampliamente). Por ejemplo:
person.name es lo mismo que person.getName
y
person.name=”mike” es lo mismo que person.setName(“mike”)
Hay un par de variaciones sintácticas pero no parecen ser importantes. La pregunta básica es si Xtend realmente extiende Java. Tiene esta nueva idea una colección de nuevas características, que podrían ser añadidas a Java en la siguiente versión. Las dos más importantes son los métodos de extensión y cerradura. Una cerradura en este caso significa una función anónima, así como una función que captura el entorno actual. Los métodos de extensión que se usan sirven para añadir métodos para construir o cerrar clases cerradas y asumo, aunque no sé cómo, esto puede ser útil.
Hay otras mejoras: mejores maneras de expresar los “switch“, así como algunas facilidades para construir cadenas de caracteres en un formato complejo con expresiones en templates (o machotes, pues).
¿Es Xtend mejor que Java? La respuesta tiende a inclinarse por “sí”, ya que quita mucho “ruido” presente aún en Java y añade otras características que parecen ser buenas para el programador. Pero Java sigue evolucionando y probablemente lo que ahora vemos en Xtend lo tenga Java en el futuro.
Quizás habría que ser cauto con estas propuestas. Este tipo de lenguajes puede ser que sobreviva si encuentra masa crítica de programadores que empiecen a usarlo, porque sino, se morirá de inanición. Tal vez podría desaparecer la semana siguiente.
Fuente: i-programmer