Fin de crise d’ado en vue pour Play Framework

play_full_color J’avais écrit un retour d’expérience à propos de Play Framework il y a un peu plus d’un an. J’y exprimais ma frustration quant au fait qu’il ne manquait pas grand chose à Play Framework pour être un super outil de développement.

J’étais assez peu optimiste sur le fait que ces points puissent s’estomper rapidement parce que c’étaient ceux que Typesafe mettait en avant pour se différencier des autres. Il semblerait cependant que le vent a tourné récemment et il souffle maintenant de mon point de vue dans la bonne direction ! Continuer la lecture de Fin de crise d’ado en vue pour Play Framework

Passage en HTTPS grâce à Let’s Encrypt

Le blog utilise depuis quelques jours HTTPS. J’ai pu mettre en place HTTPS gratuitement grâce à Let’s Encrypt, une initiative supportée par différents acteurs du web visant à sécuriser le web à grande échelle.

Let’s Encrypt

letsencryptLet’s Encrypt résout les deux plus gros freins à l’adoption de HTTPS :

  • Il propose des certificats gratuits reconnus par une autorité de certification et donc considérés comme étant de confiance par la très grande majorité des navigateurs.
  • Il propose également un outil open-source qui prend en charge de manière automatique la configuration du serveur web. Il était jusqu’alors difficile de configurer correctement un serveur web en HTTPS quand on ne connaît pas grand chose au fonctionnement du protocole. L’outil met en place la configuration nécessaire pour le certificat, mais aussi la configuration optimale pour avoir le maximum de sécurité tout en excluant le minimum de clients.

Continuer la lecture de Passage en HTTPS grâce à Let’s Encrypt

Générer les structures de données avec AutoValue

En Java comme dans d’autres langages, nous écrivons souvent des classes qui représentent des structures de données (appelées parfois objets métier, DTO, value objects, ou encore value types). Nous appliquons très souvent le principe d’encapsulation en exposant les valeurs à travers des getters et des setters quand la structure de données est mutable.

Mais implémentez-vous systématiquement la méthode equals de votre classe ? Et la méthode hashcode ? Si c’est le cas, equals et hashcode sont-elles cohérentes ? Et quand vous ajoutez un champ, pensez-vous à mettre à jour ces deux méthodes ? Il est pourtant important que ces méthodes soient correctement implémentées, faute de quoi on peut avoir des surprises en les insérant dans une HashMap ou un HashSet par exemple. Continuer la lecture de Générer les structures de données avec AutoValue

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

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

Java 8 est arrivé

Le 18 mars dernier est sortie la version 8 du langage Java. Il s’agit d’une évolution majeure du langage. Même si elle s’est faite attendre, elle est la preuve que le développement de Java s’est vraiment remis en route après une longue période de stagnation avec notamment le rachat de Sun Microsystems par Oracle.

Continuer la lecture de Java 8 est arrivé

Python, un langage en demi teinte

J’ai depuis plusieurs mois l’occasion de coder régulièrement en Python. Je commence à être familier avec ce langage, ce qui m’a conduit à mener une réflexion à son sujet.

D’une manière générale, je pense que Python est un langage moderne et bien conçu. Continuer la lecture de Python, un langage en demi teinte