Articulo de referencia

Xtend

{{cite web\n | url = https://www.eclipse.org/xtend/releasenotes.html\n | title = Xtend - Release Notes\n | website = eclipse.org\n | access-date = 2021-04-05\n}} "},"influenced_...

Xtend es un lenguaje de programación de alto nivel y propósito general para la Máquina Virtual de Java . Sintáctica y semánticamente, Xtend tiene sus raíces en el lenguaje de programación Java , pero se centra en una sintaxis más concisa y algunas funcionalidades adicionales, como la inferencia de tipos , los métodos de extensión y la sobrecarga de operadores . Al ser principalmente un lenguaje orientado a objetos , también integra características propias de la programación funcional , como las expresiones lambda . Xtend es de tipado estático y utiliza el sistema de tipos de Java sin modificaciones. Se compila a código Java y, por lo tanto, se integra perfectamente con todas las bibliotecas Java existentes.

El lenguaje Xtend y su IDE se desarrollan como un proyecto en Eclipse.org [ 2 ] y participan en el ciclo anual de lanzamientos de Eclipse. El código es de código abierto bajo la Licencia Pública de Eclipse . Sin embargo, el lenguaje se puede compilar y ejecutar independientemente de la plataforma Eclipse .

Historia

Xtend se originó a partir de Xtext , que es la tecnología utilizada para definir el lenguaje y el editor. Xtend se lanzó por primera vez como parte de Xtext en la versión Indigo de Eclipse [ 3 ] en junio de 2011. Desde la versión Juno de Eclipse [ 4 ] (junio de 2012, versión 2.3 de Xtend), Xtend se ha convertido en un proyecto independiente.

El lenguaje Xtend que se describe aquí no debe confundirse con el lenguaje anterior del mismo nombre del proyecto Xpand [ 5 ] . Inicialmente, Xtend se denominó Xtend2 para una mejor distinción. El '2' se eliminó poco después por simplicidad. Con sus expresiones de plantilla, Xtend pretende reemplazar toda la tecnología Xpand.

Filosofía

Java es uno de los lenguajes de programación más populares de la historia, con un amplio ecosistema de bibliotecas y herramientas. Sin embargo, algunos consideran que su sintaxis es verbosa y que le faltan algunos conceptos, que se incorporan gradualmente. Xtend busca aprovechar las ventajas de Java , reduciendo la complejidad sintáctica y añadiendo nuevas funcionalidades para lograr un código más conciso y legible.

Para facilitar el aprendizaje a los desarrolladores de Java , la sintaxis de Xtend es similar a la de Java . Xtend mantiene la máxima compatibilidad con Java mediante la compilación a código Java y el uso del sistema de tipos de Java . El código Java y el código Xtend pueden combinarse libremente en un mismo proyecto.

Mediante una combinación de expresiones lambda y métodos de extensión , el lenguaje puede ampliarse a través de bibliotecas, es decir, sin modificar el lenguaje en sí. Una pequeña biblioteca estándar hace un uso intensivo de esta técnica.

El IDE Xtend, basado en Eclipse, ofrece resaltado de sintaxis, autocompletado de código, refactorización, navegación y depuración. Se integra con el Java Development Toolkit de Eclipse. [ 6 ]

Semántica

Xtend se asemeja a Java en muchos aspectos. Aquí hay un ejemplo de archivo Xtend:

muestra del paqueteimport java.util.Listclase Greeter { def greetThem ( List < String > names ) { for ( name: names ) { println ( name . sayHello ) } }def sayHello ( String name ) { 'Hola ' + name + '!' } }

Xtend proporciona inferencia de tipos , es decir, el tipo namey los tipos de retorno de los métodos se pueden inferir a partir del contexto. Las clases y los métodos son publiccampos por defecto private. Los puntos y comas son opcionales.

El ejemplo también muestra el método sayHellollamado como un método de extensión , es decir, como una característica de su primer argumento. Los métodos de extensión también pueden ser proporcionados por otras clases o instancias.

En lugar de usar el bucle for imperativo, se podría usar una expresión lambda de estilo funcional entre corchetes y llamar a la función de orden superiorforEach en sintaxis de extensión en la lista:

def greetThem ( List < String > names ) { names . forEach [ println ( sayHello ) ] }

Tenga en cuenta que el parámetro de la lambda, si no se especifica, se llama it, que se puede omitir como thisen Java. Su tipo se infiere como cadena. Las expresiones lambda también se convierten automáticamente a interfaces de método único, de modo que se pueden pasar, por ejemplo, como un java.lang.Comparable.

Las expresiones de plantilla son cadenas de varias líneas entre comillas triples con valores interpolados entre comillas francesas . En el ejemplo anterior se podría escribir:

def sayHello ( String name ) ''' ¡  Hola « name » ! '''

Xtend ofrece una gestión inteligente de los espacios en blanco: el texto anterior no se sangrará en la salida, cumpliendo así con los requisitos de la generación de código.

Otras características del lenguaje incluyen multimétodos , una potente expresión switch y sobrecarga de operadores mediante métodos de biblioteca.

Referencias

  1. "Xtend - Notas de la versión" . eclipse.org . Consultado el 5 de abril de 2021 .
  2. Sven Efftinge. "Página web oficial de Xtend en" . Eclipse.org . Consultado el 14 de septiembre de 2013 .
  3. "Lanzamiento de Eclipse Indigo" . Wiki.eclipse.org. 30 de marzo de 2011. Consultado el 14 de septiembre de 2013 .
  4. "Lanzamiento de Eclipse Juno" . Wiki.eclipse.org. 17 de marzo de 2012. Consultado el 14 de septiembre de 2013 .
  5. "Xpand" . Wiki.eclipse.org. 4 de junio de 2013. Consultado el 14 de septiembre de 2013 .
  6. "JDT" . Eclipse.org . Consultado el 14 de septiembre de 2013 .

Bibliografía

  • Bettini, Lorenzo (2016). Implementación de lenguajes específicos de dominio con Xtext y Xtend (2.ª  ed.). Packt Publishing. ISBN 978-1-78646-496-5.
  • Sven Efftinge, Sebastian Zarnekow, Extending Java (Archivado el 3 de agosto de 2018 en Wayback Machine) , Pragmatic Programmer Magazine, diciembre de 2011.
  • Alex Blewitt: Xtend amplía Java , entrevista con Sven Efftinge, InfoQ, junio de 2012.