Xtend

Xtend
Logo.
Fecha de la primera versión 2011
Paradigma Orientado a objetos , imperativo , funcional
Autor Sven Efftinge y Sebastian Zarnekow
Desarrollador typefox
Última versión 2.12.0
Mecanografía Estático , fuerte , inferencia
Influenciado por Java , Scala , Groovy , Smalltalk , Xpand
Sistema de explotación Multiplataforma
Licencia Licencia pública de Eclipse
Sitio web http://www.xtend-lang.org

Xtend es un general de alto nivel de lenguaje de programación para la Java Virtual Machine . 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 características 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 conocidas de la programación funcional , por ejemplo, expresiones lambda. Xtend tiene un tipo estático y utiliza el sistema de tipos Java sin modificaciones. Está compilado en código Java y, por lo tanto, se integra perfectamente con todas las bibliotecas Java existentes.

El lenguaje Xtend y su IDE se desarrolla como un proyecto en Eclipse.org y participa en el tren de lanzamiento anual de Eclipse . El código es de código abierto bajo la licencia pública de Eclipse . Aún así, el lenguaje se puede compilar y ejecutar independientemente de la plataforma Eclipse.

Histórico

Xtend proviene 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 Eclipse Indigo enjunio 2011. Desde el lanzamiento de Eclipse Juno (junio 2012, Xtend versión 2.3), Xtend se ha convertido en un proyecto independiente.

El lenguaje Xtend que se describe aquí no debe confundirse con el lenguaje antiguo con el mismo nombre en el proyecto Xpand. Inicialmente, Xtend se llamó Xtend2 para una mejor distinción. El '2' pronto se abandonó por simplicidad. Con sus expresiones de modelo, Xtend pretende ser un reemplazo para toda la tecnología Xpand.

Filosofía

Java es uno de los lenguajes de programación más populares de todos los tiempos y ha desarrollado un enorme ecosistema de bibliotecas y herramientas a lo largo de los años. Sin embargo, su sintaxis es bastante detallada, y faltan algunos conceptos y solo se agregan muy lentamente. Xtend intenta obtener lo mejor de Java, pero elimina el ruido sintáctico y agrega nuevas funciones esenciales para permitir una mejor legibilidad y un código más potente.

Para facilitar el aprendizaje de los desarrolladores de Java, la sintaxis de Xtend es similar a la de Java. Xtend mantiene la máxima compatibilidad con Java compilando código Java y utilizando el sistema de tipos de Java. El código Java y el código Xtend se pueden mezclar dentro del mismo proyecto a voluntad. Al utilizar una combinación de expresiones lambda y métodos de extensión, el lenguaje se puede extender por medio de bibliotecas, es decir, sin cambiar el lenguaje en sí. Una pequeña biblioteca estándar hace que sea de uso intensivo.

Xtend siempre se ha diseñado con buenas herramientas en mente. El EDI Xtend proporciona cosas basadas en Eclipse como el resaltado de sintaxis, completado de código, la refactorización , la navegación y la depuración. También se integra estrechamente con Eclipse Java Development Toolkit.

Semántica

Xtend es similar a Java en muchos aspectos. A continuación, se muestra un ejemplo de un archivo Xtend:

package sample import java.util.List class Greeter { def greetThem(List<String> names) { for(name: names) { println(name.sayHello) } } def sayHello(String name) { 'Hello ' + name + '!' } }

Xtend proporciona inferencia de tipos, es decir, el tipo de nombre y los tipos de métodos devueltos se pueden inferir del contexto. Las clases y métodos son campos privados públicos por defecto. Los puntos y comas son opcionales.

El ejemplo también muestra el método sayHello llamado 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 imperativo for-loop, se podría usar una expresión lambda de estilo funcional entre corchetes y llamar a la función de orden superior forEach en la sintaxis de extensión de la lista:

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

Tenga en cuenta que el parámetro lambda, si no se especifica, se llama lambda, que se puede omitir de esta manera en Java. Su tipo se deduce en forma de cadena de caracteres. Las expresiones Lambda también se fuerzan automáticamente a interfaces de método único, por lo que se pueden pasar, por ejemplo, como un archivo java.lang.Comparable.

Las expresiones de plantilla son cadenas de caracteres de varias líneas entre comillas triples con valores interpolados entre comillas en francés. En el ejemplo anterior, podríamos escribir

def sayHello(String name) ''' Hello «name» ! '''

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

Otras características del lenguaje incluyen múltiples métodos, una poderosa expresión de conmutación y una sobrecarga de operadores que utilizan métodos de biblioteca.

Notas y referencias

  1. Sven Efftinge, "  Página de inicio oficial de Xtend en  ", Eclipse.org ,14 de octubre de 2013( leer en línea )
  2. "  Lanzamiento de Eclipse Indigo  " , Wiki.eclipse.org ,30 de marzo de 2011(consultado el 14 de septiembre de 2013 )

enlaces externos

  • Sven Efftinge, Sebastian Zarnekow, Ampliación de Java , Pragmatic Programmer Magazine,diciembre 2011.
  • Alex Blewitt: Xtend extiende Java , entrevista con Sven Efftinge, InfoQ, junio de 2012.