Retour d’expérience sur Java 8 après un an d’utilisation

JavaAlors que Java vient de fêter ses 20 ans, Java 8 a soufflé il y a peu sa première bougie. J’avais suivi de loin l’évolution de Java 8 lors de son développement sans vraiment chercher à l’utiliser en pratique. Mais le hasard fait bien les choses, et Devoxx France 2014 suivait de près sa sortie. Je me suis dit que c’était l’endroit idéal pour se familiariser avec cette toute nouvelle version. Et je n’ai pas été déçu, j’ai suivi deux universités consacrées à Java 8. La première était proposée par Rémi Forax et expliquait l’histoire des lamba et comment elles ont été implémentées, la suivante était celle de José Paumard qui nous montrait toute la puissance de l’API stream. Ainsi, de retour de Devoxx je n’ai pas mis longtemps à me familiariser avec cette nouvelle version que j’utilise maintenant quotidiennement depuis un an. Il est donc temps pour moi d’en dresser un premier bilan. Continuer la lecture de Retour d’expérience sur Java 8 après un an d’utilisation

La face cachée d’AngularJS

Logo AngularJSAngularJS est une technologie très en vogue actuellement qui bénéficie depuis sa sortie d’une grande popularité dans le monde du développement web. Cette popularité est d’autant plus remarquable que l’écosystème dans lequel s’inscrit AngularJS est un des plus actifs en termes de nouveaux outils, évolutions, révolutions. Le tweet suivant tourne d’ailleurs cela à la dérision et nous propose quelques explications :

Sa popularité est d’ailleurs telle aujourd’hui qu’il est courant de rencontrer des développeurs web qui ne jurent plus que par AngularJS.
Continuer la lecture de La face cachée d’AngularJS

Reprise après quelques mois de pause

Vous l’aurez remarqué, je n’ai pas été actif sur le blog depuis l’automne dernier. Pourtant, ce ne sont pas les idées qui me manquent, je complète régulièrement ma boite à idées mais j’ai du mal à les concrétiser sous forme d’un article de blog, principalement par manque de temps.

J’ai en effet consacré beaucoup de temps en octobre et novembre dernier à préparer ma présentation Vos tests ont besoin d’amour à l’agile tour d’Aix Marseille. Comme je l’ai déjà expliqué, ce fût pour moi une très bonne expérience qui valait largement le temps que j’ai pu y consacrer. Continuer la lecture de Reprise après quelques mois de pause

Vos tests ont besoin d’amour

Vos tests ont besoin d'amourC’est le titre de la présentation que j’ai faite aujourd’hui à l’Agile Tour Aix Marseille.

Les slides de ma présentation sont disponibles ici. Pendant la présentation, j’ai cité plusieurs liens qui sont référencés sur ce slide.

La présentation est faite en HTML 5 avec Reveal.js. Son code source est disponible sur GitHub. Pour visualiser la présentation en plein écran, appuyez sur la touche f de votre clavier, tandis que la touche s vous permettra d’avoir accès à mes notes, ce qui vous donnera un peu plus d’informations à propos de ce que j’ai pu dire à l’oral pendant la présentation sur chaque diapo (les slides contiennent très peu de texte).

C’était ma première présentation dans une conférence et de mon côté l’expérience est concluante. Je la renouvellerai très certainement. J’ai eu de très bons retours (meilleurs que ce à quoi je m’attendais) qui m’ont confirmé que le sujet intéressait le public et que l’approche que j’ai choisie semble être assez bonne (plus pratique que théorique). N’hésitez pas à me faire d’autres retours au sujet de cette présentation en utilisant par exemple les commentaires de cet article.

Merci en tout cas à tous ceux qui y ont assisté. Je suis ravi si j’ai pu vous apprendre quelque chose ! Si vous avez des questions que vous n’avez pas pu me poser pendant la présentation ou qui vous sont venues depuis, n’hésitez pas à les poser en laissant un commentaire à cet article. Merci également aux organisateurs et partenaires qui ont œuvré pour que cette journée ait lieu.

L’image d’en-tête provient de Flickr.

XML ou pourquoi faire simple quand on peut faire compliqué

L’humain, et le développeur en particulier, a  une fâcheuse tendance à vouloir construire des choses compliquées qui supportent tous les cas d’utilisation possibles et imaginables. En fin de compte, cela conduit très souvent à des usines à gaz avec lesquelles même le plus simple des cas d’utilisation est difficile à mettre en œuvre. Le format de balisage XML en est une parfaite illustration.

XML est un langage de balisage qui permet d’écrire sous forme de texte des données structurées. XML est extensible – comme le rappelle son acronyme eXtensible Markup Language – dans l’objectif de repousser au maximum les limites de son domaine d’utilisation. C’est un langage très connu des développeurs. Il est énormément utilisé, même si sa popularité tend peu à peu à diminuer au profit d’autres langages de balisage plus simples. Continuer la lecture de XML ou pourquoi faire simple quand on peut faire compliqué

Ceylon la route vers le langage idéal

L’informatique est une science jeune et en perpétuelle évolution. Même si ses fondamentaux n’ont pas changé depuis ses balbutiements, des concepts nouveaux, des langages, des technologies et bien d’autres concepts apparaissent et disparaissent au fil du temps.

Yet another language

Un des principaux axes dans lesquels l’informatique évolue au fil du temps est sans conteste les langages de programmation.

Des principes fondamentaux

Les principaux paradigmes de programmation existent depuis très longtemps (1957 pour le procédural avec Fortran, 1969 pour l’orienté objet avec Smalltalk, 1958 pour le fonctionnel avec Lisp d’après Wikipédia).

Les langages se distinguent également par la façon dont le code qu’ils produisent est exécuté. Certains sont des langages compilés directement en code machine, d’autres nécessitent un interpréteur. Là encore, les concepts principaux existent depuis longtemps. Par exemple, la première machine virtuelle avec compilation à la volée (Just In Time) a été créée en 1980 pour exécuter du Smalltalk.

Les langages sont aussi caractérisés par d’autres critères. On peut évoquer le typage qui peut être statique, dynamique ou inféré mais aussi plus ou moins fort. La syntaxe est également un critère qui compte énormément dans la mesure où elle représente sa partie visible.

L’ensemble de ces axes permet d’envisager des possibilités absolument infinies en terme de diversité. Les langages modernes sont nettement différents de leurs ancêtres même si ils reposent sur des principes identiques. Ils ne sont ni plus ni moins que des assemblages de ces différents concepts de base qui ont gagné en maturité depuis leur création. Ils sont généralement conçus en capitalisant sur leurs grands frères. Continuer la lecture de Ceylon la route vers le langage idéal

Retour d’expérience sur Play Framework

Après un peu plus d’un an d’utilisation quotidienne de Play Framework dans sa version 2, il est temps pour moi de me livrer à l’exercice du retour d’expérience. Je précise que j’utilise Play en Java et pas en Scala.

Un concept très séduisant

Play FrameworkPlay est un des frameworks web les plus connus dans le monde Java. Lancé en 2009 dans sa première version, une deuxième version avec des changements majeurs a été publiée en 2012, le principal changement étant sa réécriture en Scala. L’idée qui est à l’origine de Play est de créer un outil simple et léger pour faire du développement web en Java. A une époque où tous les langages fréquemment utilisés dans le monde du web proposaient des outils modernes pour créer des sites web (Django pour Python, Rails pour Ruby, Symfony pour PHP, Grails pour Groovy, et bien d’autres), Java en était encore aux servlets et autres conteneurs d’application Java Enterprise Edition et toute la lourdeur qui va avec, aussi bien en terme de développement que de déploiement. Play a vocation à apporter à l’écosystème Java les avantages de ces outils qui existent dans d’autres langages. Continuer la lecture de Retour d’expérience sur Play Framework

L’héritage, un concept usé et abusé

Un outil puissant

L’héritage est un concept du célèbre et populaire paradigme de programmation dénommé orienté objet. Ce concept est le moyen qui permet en orienté objet de supporter le polymorphisme, principe qui consiste simplement à faire en sorte d’avoir plusieurs comportements (implémentations) différents derrière un même objet (contrat).

Le polymorphisme est un outil redoutablement efficace en orienté objet. C’est d’ailleurs lorsqu’on travaille dans des langages qui ne disposent pas de ce concept qu’on se rend compte à quel point il est pratique.

Dans la suite de cet article, la notion d’héritage qui est utilisée est celle qui correspond à l’héritage d’état (donc au mot-clé extends sur des classes en Java). La notion d’héritage de comportement (implémentation d’une interface en Java) ne rentre donc pas dans le terme héritage. Certains langages ne distinguent pas ces deux notions mais dans les faits ces deux types d’héritage apparaissent aussi. Continuer la lecture de L’héritage, un concept usé et abusé

La dette technique, l’épée de Damoclès de l’éditeur logiciel

Le terme de dette technique est devenu monnaie courante dans le jargon de l’informatique. Et pour cause, c’est un enjeu important dans la vie de tout logiciel car c’est une menace omniprésente qui peut à tout moment mettre en péril un projet.

La notion de dette est une métaphore basée sur un parallèle avec la dette financière. Je trouve personnellement que ce parallèle avec le monde de la finance est particulièrement pertinent et cet article devrait permettre de le montrer. Continuer la lecture de La dette technique, l’épée de Damoclès de l’éditeur logiciel

La maturité face aux tests

En tant que discipline assez récente, le développement logiciel est un domaine qui se cherche encore en termes de technologies et de processus. Malgré tout, il y a un certain nombre de pratiques qui commencent à avoir fait leurs preuves et faire de plus en plus l’unanimité.

Pour ce qui concerne la maîtrise de la qualité des logiciels, il existe différentes techniques. La revue de code en fait partie, mais l’écriture de tests automatiques reste aujourd’hui la solution qui semble être la plus efficace et adaptée dans le cas général.

Pourtant, à mon goût, il y a bien trop peu de développeurs aujourd’hui qui écrivent des tests. J’ai essayé de classer les développeurs en quatre niveaux qui représentent leur maturité face aux tests. Comme toute analyse qui consiste à classer des individus dans des catégories, cette approche est forcément caricaturale. Continuer la lecture de La maturité face aux tests