Xtend
Xtend est un langage de programmation général de haut niveau pour la machine virtuelle Java.

Syntaxiquement et sémantiquement, Xtend a ses racines dans le langage de programmation Java mais se concentre sur une syntaxe plus concise et quelques fonctionnalités supplémentaires telles que l'inférence de types, les méthodes d'extension et la surcharge de l'opérateur. Étant principalement un langage orienté objet, il intègre également des fonctionnalités connues de la programmation fonctionnelle, par exemple des expressions lambda. Xtend est typé statiquement et utilise le système de type Java sans modifications. Il est compilé en code Java et s'intègre ainsi de manière transparente avec toutes les bibliothèques Java existantes.

Le langage Xtend et son EDI est développé en tant que projet sur Eclipse.org et participe au train annuel de publication Eclipse. Le code est open source sous licence Eclipse Public License. Pourtant, le langage peut être compilé et exécuté indépendamment de la plate-forme Eclipse.

Historique 
Xtend provient de Xtext, qui est la technologie utilisée pour définir la langue et l'éditeur. Xtend a été publié pour la première fois dans le cadre de Xtext dans la version Eclipse Indigo en . Depuis la sortie d'Eclipse Juno (, Xtend version 2.3), Xtend est devenu un projet autonome.

Le langage Xtend décrit ici ne doit pas être confondu avec l'ancien langage portant le même nom dans le projet Xpand. Au départ, Xtend a été nommé Xtend2 pour une meilleure distinction. Le '2' a été bientôt abandonné pour des raisons de simplicité. Avec ses expressions de modèle, Xtend se veut un remplacement de toute la technologie Xpand.

Philosophie 
Java est l'un des langages de programmation les plus populaires de tous les temps, et il a développé un énorme écosystème de bibliothèques et d'outils au fil des ans. Pourtant, sa syntaxe est assez verbeuse, et certains concepts manquent et ne s'ajoutent que très lentement. Xtend essaie d'obtenir le meilleur de Java, mais tue le bruit syntactique et ajoute de nouvelles fonctionnalités essentielles pour permettre une meilleure lisibilité et un code plus puissant.

Pour faciliter l'apprentissage des développeurs Java, la syntaxe de Xtend est proche de celle de Java. Xtend maintient une compatibilité maximale avec Java en compilant le code Java et en utilisant le système de type Java. Le code Java et le code Xtend peuvent être mélangés à l'intérieur d'un même projet à volonté.

En utilisant une combinaison d'expressions lambda et de méthodes d'extension, le langage peut être étendu au moyen de bibliothèques, c'est-à-dire sans changer le langage lui-même. Une petite bibliothèque standard en fait un usage intensif.

Xtend a toujours été conçu avec un bon outillage en tête. L'EDI Xtend basé sur Eclipse offre des choses comme la coloration syntaxique, la complétion de code, le refactoring, la navigation et le débogage. Il s'intègre également étroitement avec le Java Development Toolkit d'Eclipse.

Sémantique 

Xtend ressemble à Java à bien des égards. Voici un exemple de fichier 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 fournit une inférence de type, c'est-à-dire que le type de nom et les types de retour des méthodes peuvent être déduits du contexte. Les classes et les méthodes sont publiques par défaut, les champs privés. Les points-virgules sont facultatifs.

L'exemple montre aussi la méthode sayHello appelée comme méthode d'extension, c'est-à-dire comme une caractéristique de son premier argument. Les méthodes d'extension peuvent également être fournies par d'autres classes ou instances.

Au lieu d'utiliser l'impératif for-loop, on pourrait utiliser une expression lambda de style fonctionnel entre crochets et appeler la fonction d'ordre supérieur forEach in extension syntaxe sur la liste :
def greetThem(List<String> names) {
  names.forEach [ println(sayHello) ]
} 

Notez que le paramètre lambda, s'il n'est pas spécifié, est appelé lambda, qui peut être sauté comme ceci en Java. Son type est déduit sous forme de chaîne de caractères. Les expressions Lambda sont également automatiquement forcées vers des interfaces de méthode unique, de sorte qu'elles peuvent être passées par exemple sous la forme d'un fichier java.lang.Comparable.

Les expressions de modèle sont des chaînes de caractères à plusieurs lignes à l'intérieur de guillemets triples avec des valeurs interpolées entre guillemets français. Dans l'exemple ci-dessus, on pourrait écrire

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

Xtend offre une gestion intelligente de l'espace blanc - le texte ci-dessus ne sera pas indenté dans la sortie - répondant ainsi aux exigences de la génération de code.

D'autres caractéristiques du langage comprennent des méthodes multiples, une expression de commutation puissante et une surcharge de l'opérateur au moyen de méthodes de bibliothèque.

Notes et références

Liens externes 

 Sven Efftinge, Sebastian Zarnekow, Extending Java, Pragmatic Programmer Magazine, .
 Alex Blewitt, Xtend Extends Java, interview avec Sven Efftinge, InfoQ, juin 2012.

Eclipse
Langage pour la machine virtuelle Java
Logiciel libre sous licence EPL
Xtend est un langage de programmation général de haut niveau pour la machine virtuelle Java . Syntaxiquement et sémantiquement , Xtend a ses racines dans le langage de programmation Java mais se concentre sur une syntaxe plus concise et quelques fonctionnalités supplémentaires telles que l' inférence de types , les méthodes d' extension et la surcharge de l' opérateur . Étant principalement un langage orienté objet , il intègre également de les fonctionnalités connues de la programmation fonctionnelle , par exemple de les expressions lambda . Xtend est typé statiquement et utilise le système de type Java sans modifications . Il est compilé en code Java et s' intègre ainsi de manière transparente avec toutes les bibliothèques Java existantes . Le langage Xtend et son EDI est développé en tant que projet sur Eclipse.org et participe à le train annuel de publication Eclipse . Le code est open source sous licence Eclipse Public License . Pourtant , le langage peut être compilé et exécuté indépendamment de la plate-forme Eclipse . Historique Xtend provient de Xtext , qui est la technologie utilisée pour définir la langue et l' éditeur . Xtend a été publié pour la première fois dans le cadre de Xtext dans la version Eclipse Indigo en \ . Depuis la sortie d' Eclipse Juno ( , Xtend version3 ) , Xtend est devenu un projet autonome . Le langage Xtend décrit ici ne doit pas être confondu avec l' ancien langage portant le même nom dans le projet Xpand . À le départ , Xtend a été nommé Xtend2 pour une meilleure distinction . Le ' 2' a été bientôt abandonné pour de les raisons de simplicité . Avec ses expressions de modèle , Xtend se veut un remplacement de toute la technologie Xpand . Philosophie Java est l' un de les langages de programmation les plus populaires de tous les temps , et il a développé un énorme écosystème de bibliothèques et d' outils à le fil de les ans . Pourtant , sa syntaxe est assez verbeuse , et certains concepts manquent et ne s' ajoutent que très lentement . Xtend essaie d' obtenir le meilleur de Java , mais tue le bruit syntactique et ajoute de nouvelles fonctionnalités essentielles pour permettre une meilleure lisibilité et un code plus puissant . Pour faciliter l' apprentissage de les développeurs Java , la syntaxe de Xtend est proche de celle de Java . Xtend maintient une compatibilité maximale avec Java en compilant le code Java et en utilisant le système de type Java . Le code Java et le code Xtend peuvent être mélangés à l' intérieur d' un même projet à volonté . En utilisant une combinaison d' expressions lambda et de méthodes d' extension , le langage peut être étendu à le moyen de bibliothèques , c'est-à-dire sans changer le langage lui-même . Une petite bibliothèque standard en fait un usage intensif . Xtend a toujours été conçu avec un bon outillage en tête . L' EDI Xtend basé sur Eclipse offre de les choses comme la coloration syntaxique , la complétion de code , le refactoring , la navigation et le débogage . Il s' intègre également étroitement avec le Java Development Toolkit d' Eclipse . Sémantique Xtend ressemble à Java à bien de les égards . Voici un exemple de fichier 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 fournit une inférence de type , c'est-à-dire que le type de nom et les types de retour de les méthodes peuvent être déduits de le contexte . Les classes et les méthodes sont publiques par défaut , les champs privés . Les points-virgules sont facultatifs . L' exemple montre aussi la méthode sayHello appelée comme méthode d' extension , c'est-à-dire comme une caractéristique de son premier argument . Les méthodes d' extension peuvent également être fournies par d' autres classes ou instances . À le lieu d' utiliser l' impératif for-loop , on pourrait utiliser une expression lambda de style fonctionnel entre crochets et appeler la fonction d' ordre supérieur forEach in extension syntaxe sur la liste \ : def greetThem( List<String> names ) { names.forEach [ println( sayHello ) ] } Notez que le paramètre lambda , s' il n' est pas spécifié , est appelé lambda , qui peut être sauté comme ceci en Java . Son type est déduit sous forme de chaîne de caractères . Les expressions Lambda sont également automatiquement forcées vers de les interfaces de méthode unique , de sorte qu' elles peuvent être passées par exemple sous la forme d' un fichier java.lang.Comparable . Les expressions de modèle sont de les chaînes de caractères à plusieurs lignes à l' intérieur de guillemets triples avec de les valeurs interpolées entre guillemets français . Dans l' exemple ci-dessus , on pourrait écrire def sayHello( String name ) ' ' ' Hello « name » ! ' ' ' Xtend offre une gestion intelligente de l' espace blanc - le texte ci-dessus ne sera pas indenté dans la sortie - répondant ainsi à les exigences de la génération de code . D' autres caractéristiques de le langage comprennent de les méthodes multiples , une expression de commutation puissante et une surcharge de l' opérateur à le moyen de méthodes de bibliothèque . Notes et références Liens externes Sven Efftinge , Sebastian Zarnekow , Extending Java , Pragmatic Programmer Magazine , \ . Alex Blewitt , Xtend Extends Java , interview avec Sven Efftinge , InfoQ , juin Eclipse Langage pour la machine virtuelle Java Logiciel libre sous licence EPL