Xtend

Xtend
Información sobre la plantilla
Parte de la familia Lenguaje de programación.
Xtend.jpg

Xtend: Es un lenguaje de tipado estático para la plataforma Java. Integra Closures, la noción de properties y características para reducir el ruido al escribir, como evitar paréntesis, punto y coma y returns. También se puede hacer sobrecarga de operadores. El objetivo de Xtend no es remplazar a Java, algo bastante complicado, sino ser una alternativa en algunas situaciones en las que Java no es lo suficientemente útil.

Carcaterísticas Destacadas

Java es una gran plataforma y un lenguaje muy consolidado. Xtend no intenta reemplazar a Java, sino que aspira a convertirse en una alternativa conveniente en algunas situaciones en las que Java no es tan brillante. Ahí está Xtend, reduciendo el ruido de Java, reduciendo el código a lo mínimo, lo que no sólo nos ayuda a escribir menos, sino que más importante hace el código más legible y sencillo de mantener, pero además añade unas cuantas importantes características que se echan en falta en Java.

Uno de los puntos más destacables de Xtend es que reduce la cantidad de código necesario que debemos escribir: elimina toda la parte redundante como tener que declarar algunas variables intermedias, los bucles o la definición de las variables de retorno en los métodos. También se hace opcional el uso de getter y setter para acceder a los atributos o no tener que poner paréntesis en la invocación de métodos que no reciben parámetros.

Además de esa eliminación de ruido se ha implementado el uso de clousures (una de las características más demandadas de Java), el uso de templates expressions con lo que podemos concatenar strings de forma más potente o extender tipos usando métodos de extensión que permiten añadir nuevos métodos.

Xtend compila a código java legible. Es decir, en lugar de generar bytecode directamente: xtend pasa nuestro código .xtend a otro fichero .java con la sintaxis habitual de java. Xtend está desarrollada y diseñado para Eclipse así que dentro del IDE disponemos de una serie de plugin para facilitar la implementación usando el lenguaje. Cuenta también con soporte del IDE de Eclipse, que permite ver un archivo fuente .xtend en su versión Xtend o su versión Java a la par.

Ventajas

A primera vista, parece ser como Java pero con algunas cosas extras. De hecho, compila a código de Java, 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. Es claro que tratar de modificar código compilado es muy difícil, 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. Xtend también cuenta con características como inferencia de tipos, como en Scala, y Extension Methods (de aquí sacaron el nombre Xtend) que sirve para agregar nuevos métodos a clases existentes y multiple dispatch, como metaprogramación en Groovy pero de una manera un poco particular, los métodos se implementan en la clase donde se usan.

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.

Sintaxis

Por ejemplo dos sintaxis validas serían:

val palabra=”Hello”
val String palabra=”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)

persona.nombre es lo mismo que persona.getnombre
persona.nombre =”mike” es lo mismo que persona.setnombre (“mike”)

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.

Hay otras ventajas: por ejemplo mejores maneras de expresar los “switch“, así como algunas facilidades para construir cadenas de caracteres en un formato complejo con expresiones en templates.

Referencias