<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jmini Dev &#187; Xtend</title>
	<atom:link href="https://blog.developpez.com/jmini/pcategory/eclipse/xtend/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/jmini</link>
	<description></description>
	<lastBuildDate>Wed, 05 Nov 2014 05:00:21 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Xtend : sucre syntaxique et lisibilité</title>
		<link>https://blog.developpez.com/jmini/p11987/eclipse/xtend/xtend-sucre-syntaxique-et-lisibilite</link>
		<comments>https://blog.developpez.com/jmini/p11987/eclipse/xtend/xtend-sucre-syntaxique-et-lisibilite#comments</comments>
		<pubDate>Sat, 25 May 2013 11:38:21 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Xtend]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmini/?p=116</guid>
		<description><![CDATA[Cette expression de sucre syntaxique me laisse perplexe. Le fait est qu’améliorer la lisibilité du code est un des objectifs d’Xtend. Tout en conservant tous les concepts de Java, Xtend va en simplifier l’écriture et la lecture. Essayons d’analyser cet extrait de code&#8230; Les points virgules en fin de ligne sont facultatifs. Avant de faire [&#8230;]]]></description>
				<content:encoded><![CDATA[<div id="attachment_123" style="width: 510px" class="wp-caption aligncenter"><img src="http://blog.developpez.com/jmini/files/2013/05/sucre.jpg" alt="Morceau de sucre" width="500" height="336" class="size-full wp-image-123" /><p class="wp-caption-text">Photo: <a href="http://www.flickr.com/photos/zigazou76/4429599035/">Morceau de sucre</a> par zigazou76 (CC BY 2.0)</p></div>
<p>Cette expression de <a href="http://fr.wikipedia.org/wiki/Sucre_syntaxique" title="wikipedia: sucre syntaxique">sucre syntaxique</a> me laisse perplexe. Le fait est qu’améliorer la lisibilité du code est un des objectifs d’Xtend. Tout en conservant tous les concepts de Java, Xtend va en simplifier l’écriture et la lecture.<br />
<a href="http://blog.developpez.com/jmini/files/2013/05/Xtend_class_and_outline.png"><img src="http://blog.developpez.com/jmini/files/2013/05/Xtend_class_and_outline.png" alt="Une classe Xtend" width="600" height="438" class="size-full wp-image-125" /></a></p>
<p>Essayons d’analyser cet extrait de code&#8230;</p>
<p><span id="more-116"></span></p>
<p>Les points virgules en fin de ligne sont facultatifs. Avant de faire du Xtend, je ne les avais jamais vraiment considérés comme gênants. Maintenant, je me surprends à écrire du Java dans lequel ils manquent.</p>
<p>Également facultatif : les parenthèses pour les méthodes sans paramètres. C’est bien pratique pour instancier un objet dont le constructeur n’attend pas de paramètres. Il suffit d’écrire <span style="font-family:Courier New">new Actor</span>.</p>
<p>Xtend fait de l’inférence de type partout où c’est possible. Au final je peux presque toujours me passer de type lorsque je déclare mes variables avec le mot clé <span style="font-family:Courier New">val</span> (pour les variables non mutables, finale en Java) ou le mot clé <span style="font-family:Courier New">var</span> (pour les variables classiques de Java). C’est vrai aussi pour le type retourné par une méthode. Pas besoin de le définir, il est déduit du contenu de la fonction.</p>
<p>L’utilisation des getters et setter est simplifié : il est possible d’accéder à la valeur retournée par un getter directement. Typiquement <span style="font-family:Courier New">actor.lastName</span> correspond en Java à <span style="font-family:Courier New">actor.getLastName()</span>. De même <span style="font-family:Courier New">actor.firstName = &#034;Bob&#034;</span> utilisera le setter comme on s’y attend.</p>
<p>En fait cette invocation des méthodes avec l’opérateur égal marche avec toutes les méthodes d’une classe. C’est pour cela que je peux écrire <span style="font-family:Courier New">actors.add = actor</span> si <span style="font-family:Courier New">actors</span> est une liste de type <span style="font-family:Courier New">List</span> et actor un objet de type <span style="font-family:Courier New">Actor</span>.</p>
<p>Le mot clé <span style="font-family:Courier New">return</span> peut également être omis… La dernière expression évaluée est ainsi retournée. Au début je me disais que ce n’était certainement pas une bonne idée. Et puis je me suis surpris à l’utiliser dans les méthodes très courtes (celles qui retournent juste une valeur).</p>
<p>Je ne suis pas certain que ces différents exemples constituent une liste exhaustive de la simplification de syntaxe qu’apporte Xtend. En écrivant cet article, je me rends compte qu’il ne s’agit que de la surface visible de l’iceberg : je n’ai pas du tout évoqué d’autres aspects que j’adore dans Xtend (Extension Methods, Operator Overloading, With Operator, Template Expressions… Autant d’autres sujets possibles pour <a href="http://blog.developpez.com/jmini/pcategory/eclipse/xtend">ma série d’articles sur Xtend</a>).</p>
<p>De toutes ces possibilités, il y a certainement un certain nombre de bonnes pratiques à définir dans une équipe de développement. Il ne faudrait pas que les possibilités de simplification offerte par le langage aboutissent à l’écriture de code illisible.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xtend : à lire sur le web</title>
		<link>https://blog.developpez.com/jmini/p11959/eclipse/xtend/xtend-a-lire-sur-le-web</link>
		<comments>https://blog.developpez.com/jmini/p11959/eclipse/xtend/xtend-a-lire-sur-le-web#comments</comments>
		<pubDate>Thu, 09 May 2013 06:11:16 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Xtend]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmini/?p=96</guid>
		<description><![CDATA[Je suis en train d’utiliser Xtend sur un petit projet… Comme je souhaite toujours écrire une série d’articles sur Xtend, j’ai commencé à me documenter. Cet article liste les articles de blogs (présentation, introduction, comparatifs, annonce…) qu’il faut avoir lus.   20 Facts about Xtend Très simplement illustré les concepts importants de Xtend. Pour chaque [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je suis en train d’utiliser Xtend sur un petit projet… Comme je souhaite toujours écrire <a href="http://blog.developpez.com/jmini/pcategory/eclipse/xtend">une série d’articles sur Xtend</a>, j’ai commencé à me documenter.<br />
<img src="http://blog.developpez.com/jmini/files/2013/05/xtend-logo.png" alt="Xtend" width="400" height="114" class="aligncenter size-full wp-image-97" /><br />
Cet article liste les articles de blogs (présentation, introduction, comparatifs, annonce…) qu’il faut avoir lus.<br />
<span id="more-96"></span><br />
 <br />
<strong><a href="http://jnario.org/org/jnario/jnario/documentation/20FactsAboutXtendSpec.html">20 Facts about Xtend</a></strong><br />
Très simplement illustré les concepts importants de Xtend. Pour chaque point, c’est illustré avec un petit extrait de code. Franchement, ça donne un bel aperçu. Comparé à la <a href="http://www.eclipse.org/xtend/documentation.html">documentation officielle</a> (qui est également rédigée dans le même esprit), c’est plus rapide à lire.<br />
Cet exemple <a href="http://sebastianbenz.de/20-facts-about-xtend-creating-executable-documentation-with-jnario">sert également d’illustration</a> au projet <a href="http://jnario.org">Janario</a> (un outil qui permet d’écrire de la documentation exécutable sous forme de test unitaire).</p>
<p><strong><a href="http://sebastianbenz.de/5-Things-that-make-Xtend-a-great-Language-for-Java-developers">5 Things That Make Xtend a Great Language for Java Developers</a></strong><br />
Comme indiqué dans le titre, l’auteur liste 5 points d’Xtend qui en font un bon langage pour les développeurs Java :</p>
<ol>
<li>Compilation en java</li>
<li>L’inférence de type</li>
<li>Les méthodes extensions</li>
<li>Les lambdas</li>
<li>Le templating</li>
</ol>
<p>Chaque point est accompagné d’un texte de présentation et de petits exemples.</p>
<p><strong><a href="http://bartnaudts.blogspot.ch/2012/12/xtend-better-compromise.html">Xtend: the better compromise</a></strong><br />
Un article qui prend un peu de recul sur Xtend et ses concepts. C’est un article bien construit, qui explique le contexte et apporte un retour d’expérience. L’auteur a classé les différents points selon ce qu’il apprécie, ce qui est moyen, ce qu’il n’aime pas et ce qu’il aimerait voir. Un très bel aperçu des enjeux de ce langage.</p>
<p><strong><a href="http://duncan.mac-vicar.com/2012/09/30/a-better-java-scala-or-xtend/">A better Java: Scala or Xtend?</a></strong><br />
Comme Scala et Xtend revendiquent chacun le slogan « A better Java », cet article compare les deux langages. L’article détaille certaines constructions syntaxiques. Pour chacune d’entre elles, un comparatif est proposé ainsi que l’avis de l’auteur.</p>
<p><strong><a href="http://jaxenter.com/eclipse-xtend-java-s-equivalent-to-coffeescript-45680.html">Eclipse Xtend: Java’s equivalent to CoffeeScript</a></strong><br />
Une interview de Sebastian Zarnekow et de Sven Efftinge, les deux concepteurs du langage et des outils dans Eclipse à propos d’Xtend. Cette interview menée par jaxenter revient sur le projet, sa raison d’être, ses origines, ses perspectives.</p>
<p><strong><a href="http://zeroturnaround.com/labs/rebel-labs-interview-sven-efftinge-founder-of-xtend/">Rebel Labs interview: Sven Efftinge founder of Xtend</a></strong><br />
Cette interview est un bon complément à la précédente. Elle est plus récente et va plus en profondeur sur un certain nombre de sujets. Elle confirme selon moi que Sven est un développeur brillant et qu’il sait où il veut mener le projet Xtend.</p>
<p><em>Cet article est destiné à être mis à jour.</em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xtend</title>
		<link>https://blog.developpez.com/jmini/p11927/eclipse/xtend/xtend</link>
		<comments>https://blog.developpez.com/jmini/p11927/eclipse/xtend/xtend#comments</comments>
		<pubDate>Fri, 19 Apr 2013 06:02:31 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Xtend]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmini/?p=81</guid>
		<description><![CDATA[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&#8230;). Le code écrit en Xtend est compilé vers du Java. Ce code java est [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://xtend-lang.org/">Xtend</a> 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&#8230;). 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).</p>
<p>À travers <a href="http://blog.developpez.com/jmini/pcategory/eclipse/xtend">cette série d’articles sur Xtend</a>, j’aimerais montrer les possibilités du langage.<br />
<span id="more-81"></span></p>
<p><strong>Installation:</strong><br />
Je ne souhaite pas m’étendre sur les différentes possibilités d’installation. Cela fonctionne comme n’importe quel autre projet Eclipse. </p>
<p>Une version packagée existe également sur la page des <a href="http://www.eclipse.org/xtend/download.html">téléchargement d’Xtend</a> (choisir &laquo;&nbsp;Full Eclipse&nbsp;&raquo;). Elle contient la bonne version de chaque composant. C’est cette version qui est la plus simple pour débuter.</p>
<p><strong>Un premier exemple:</strong><br />
Xtend s’utilise d’un projet Java traditionnel. Il suffit de créer une nouvelle classe Xtend dans un package.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/04/xtend_new_class.png" alt="create a new Xtend class" width="634" height="614" class="aligncenter size-full wp-image-83" /></p>
<p>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.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/04/xtend_project.png" alt="xtend project organisation in eclipse" width="279" height="201" class="aligncenter size-full wp-image-84" /></p>
<p>Un Bean Java (des fields java privé avec des getters et setters associés) peut s’écrire en Xtend de la manière suivante:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package sakila.bean<br />
<br />
class Actor {<br />
&nbsp; &nbsp; @Property int actorId<br />
&nbsp; &nbsp; @Property String firstName<br />
&nbsp; &nbsp; @Property String lastName<br />
}</div></div>
<p>Le fichier java correspondant:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package sakila.bean;<br />
<br />
@SuppressWarnings(&quot;all&quot;)<br />
public class Actor {<br />
&nbsp; private int _actorId;<br />
&nbsp; <br />
&nbsp; public int getActorId() {<br />
&nbsp; &nbsp; return this._actorId;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; public void setActorId(final int actorId) {<br />
&nbsp; &nbsp; this._actorId = actorId;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; private String _firstName;<br />
&nbsp; <br />
&nbsp; public String getFirstName() {<br />
&nbsp; &nbsp; return this._firstName;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; public void setFirstName(final String firstName) {<br />
&nbsp; &nbsp; this._firstName = firstName;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; private String _lastName;<br />
&nbsp; <br />
&nbsp; public String getLastName() {<br />
&nbsp; &nbsp; return this._lastName;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; public void setLastName(final String lastName) {<br />
&nbsp; &nbsp; this._lastName = lastName;<br />
&nbsp; }<br />
}</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
