Quand l’oubli des fondamentaux du code finit par coûter cher

J’utilise MongoDB comme base de données principale et j’en suis globalement satisfait. Mais j’ai l’impression que depuis un certain temps la tendance consiste à le dénigrer. Souhaitant comprendre ce qu’on lui reproche réellement, je suis à l’affût de retours d’expériences. C’est ainsi que j’ai récemment lu cet article publié le 21 novembre 2017 : Why We Moved From NoSQL MongoDB to PostgreSQL.

Je n’ai malheureusement pas appris grand chose sur MongoDB en le lisant, mais je trouve que cet article est un cas d’école qui nous montre ce qu’il se passe quand on s’assoie sur les bonnes pratiques de développement. Je vous propose donc dans cet article d’étudier ça plus en profondeur. Continuer la lecture de Quand l’oubli des fondamentaux du code finit par coûter cher

Spring Boot, le couteau suisse du développeur Java

Ralenti et frustré par les problèmes de build rencontrés en utilisant Play Framework (que j’avais détaillés ici), j’ai finalement décidé de migrer vers Spring Boot.

Après quelques mois (ou années pour certains morceaux) de développement et d’exploitation d’applications Spring Boot en production, je pense avoir pu prendre le recul nécessaire pour me livrer à l’exercice du retour d’expérience. Continuer la lecture de Spring Boot, le couteau suisse du développeur Java

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