Xtend

Xtend est un projet de la fondation Eclipse qui propose un langage de programation s’inspirant de Java, mais proposant une syntaxe simplifiée et des concepts n’existant pas (ou pas encore) en Java (les lambda, l’inférence de type, les extensions de méthodes…). Le code écrit en Xtend est compilé vers du Java. Ce code java est accéssible et lisible (même si ce n’est pas forcément le but).

À travers cette série d’articles sur Xtend, j’aimerais montrer les possibilités du langage.

Installation:
Je ne souhaite pas m’étendre sur les différentes possibilités d’installation. Cela fonctionne comme n’importe quel autre projet Eclipse.

Une version packagée existe également sur la page des téléchargement d’Xtend (choisir « Full Eclipse »). Elle contient la bonne version de chaque composant. C’est cette version qui est la plus simple pour débuter.

Un premier exemple:
Xtend s’utilise d’un projet Java traditionnel. Il suffit de créer une nouvelle classe Xtend dans un package.

create a new Xtend class

Eclipse se charge alors de compiler ce code en fichier java (code source java), qui se trouve placé dans le dossier xtend-gen à côté du dossier src.

xtend project organisation in eclipse

Un Bean Java (des fields java privé avec des getters et setters associés) peut s’écrire en Xtend de la manière suivante:

package sakila.bean

class Actor {
    @Property int actorId
    @Property String firstName
    @Property String lastName
}

Le fichier java correspondant:

package sakila.bean;

@SuppressWarnings("all")
public class Actor {
  private int _actorId;
 
  public int getActorId() {
    return this._actorId;
  }
 
  public void setActorId(final int actorId) {
    this._actorId = actorId;
  }
 
  private String _firstName;
 
  public String getFirstName() {
    return this._firstName;
  }
 
  public void setFirstName(final String firstName) {
    this._firstName = firstName;
  }
 
  private String _lastName;
 
  public String getLastName() {
    return this._lastName;
  }
 
  public void setLastName(final String lastName) {
    this._lastName = lastName;
  }
}

Laisser un commentaire