# Le désenchantement du logiciel [Opinion]

par Jean-Philippe Thevenoux

Les logiciels et les sites internet sont de plus en plus gros, les applications demandent de plus en plus de ressources, les développements “modernes” demandent des stacks de plus en plus complexes. L’excellence, la simplicité et l’efficacité font partie des critères soutenus par Atol CD et cet article résume bien notre pensée. https://blog.romainfallet.fr/desenchantement-logiciel/

# Sortie de Firefox Monitor [Sécurité]

par Xavier Calland

Mozilla lance “Firefox Monitor en partenariat avec Troy Hunt (à l’origine du site Have I Been Pwned) un outil en ligne pour vérifier si vos adresses mails et mots de passe ont fuité sur internet.

Plus d’explications sur le blog de Mozilla https://blog.mozilla.org/press-fr/2018/09/25/lancement-de-firefox-monitor-se-proteger-apres-une-fuite-de-donnees/

# Java 11 est là, et ça change la donne ! [Java, Licenses]

par Thomas Broyer

Java 11 est sorti à la date prévue, mais au delà du contenu (client HTTP, TLS 1.3 et autres améliorations cryptographiques, suppression des modules Java EE et Corba), c’est de la license dont on a le plus parlé !

Java 11 ayant été annoncée comme version avec support à long terme (LTS), nombreux étaient ceux qui n’avaient regardé que de loin les précédentes versions 9 et 10 et attendaient celle-ci de pied ferme, et avec de sérieux doutes sur cette notion de LTS.

Les choses sont désormais (presque) claires :

  • soit vous payez Oracle et vous pouvez utiliser Java 11 pendant 3 ans sans vous poser de question (la prochaine version LTS étant Java 17)
  • soit vous utilisez le JDK Oracle (ou OpenJDK) gratuitement, mais il vous faudra mettre à jour tous les 6 mois
  • soit enfin vous trouvez un autre fournisseur qui s’engage sur un support à long terme d’OpenJDK. Azul, IBM et Red Hat se sont d’ores et déjà positionnés, ainsi qu’AdoptOpenJDK. La plupart des distributions Linux semblent vouloir également proposer Java 11 comme version à long terme. Le point qui reste à éclaircir, d’ici Java 12, sera justement la façon dont le support à long terme va être géré, et par qui (ce ne sera pas Oracle, qui a cependant annoncé vouloir travailler avec la communauté)

D’après un sondage de Snyk, 70% des utilisateurs déploient Oracle JDK en production, contre 21% d’OpenJDK, et 87% utilisent une version supérieure à 8 (dont 79% de Java 8) ; il y a fort à parier qu’une grande partie de ces utilisations reposent sur une version gratuite d’Oracle JDK, qui n’existera plus à compter du mois de janvier ! (fin du support public d’Oracle JDK 8) Ces utilisateurs devront alors faire un choix : payer un support Oracle, basculer sur OpenJDK (8 ou 11), ou utiliser une version non supportée ?

https://blog.jetbrains.com/idea/2018/09/using-java-11-in-production-important-things-to-know/

# Comprendre le fonctionnement de l’opérateur de «bind» en javascript [JS, Frontend, Backend, ECMAProposal]

par Guillaume Poittevin

La gestion du this en Javascript est très souvent compliquée à comprendre pour les néophytes, de plus certains comportements peuvent paraître incohérents. Il existe une méthode .bind() permettant de résoudre certaines de ces «incohérences».

Une proposition a été faite pour l’ECMAScript 2016 (ES7) pour simplifier ce binding via l’opérateur ::, cet article vous explique tout sur son fonctionnement.

# Les Web Components, c’est maintenant ! [Frontend, Web Components]

par Thomas Broyer

Julien Renaux, freelancer Toulousain (cocorico !), a fait un comparatif des tailles d’une application Todo dans plusieurs technos et met en avant l’avantage que les Web Components, en délégant le plus possible au navigateur, permettent de réduire drastiquement la taille des scripts, comparé à React, Angular ou Vue. L’application utilisée étant très petite, le coût des frameworks serait amorti sur des applications de plus grande importance, mais il s’agit tout de même d’un coût initial avant de pouvoir utiliser l’application, même si l’on découpe l’application pour la charger en différé (lazy loading).

Le support natif des Web Components (sans polyfill) est déjà présent dans Chrome et Safari depuis plus de 2 ans maintenant, et vient d’arriver dans Firefox 63 (et donc dans la prochaine version ESR l’été prochain avec Firefox 68). Microsoft a de son côté commencé les développements, et on peut espérer voir un support natif arriver dans Edge dans la mise à jour d’avril prochain. D’ici là, des polyfills sont disponibles, et assez légers (5Ko environ), pour apporter un support émulé dans ces navigateurs, ainsi qu’Internet Explorer.

Il me semble donc qu’il est temps de commencer les nouveaux développements avec les Web Components, et ainsi prévoir la suppression du polyfill dans les premiers mois d’utilisation, voire avant même la mise en production.

# KotlinConf 2018 [Kotlin]

par Thomas Broyer

Du 3 au 5 octobre avait lieu à Amsterdam la KotlinConf 2018 dédiée au langage de développement Kotlin.

Outre des présentations toutes plus intéressantes les unes que les autres, on retiendra quelques grandes annonces faites lors de la keynote :

  • JetBrains (créateur du langage) et Google s’associent et créent la Kotlin Foundation (ça avait déjà été annoncé lors de la Google I/O, c’est désormais chose faite). On rappellera que Kotlin est un langage de premier ordre pour le développement d’applications Android, au même titre que Java.
  • Kotlin/Native, permettant de développer des applications natives, et notamment pour iOS, est désormais en Beta.
  • Kotlin 1.3 est en Release Candidate, avec de nouvelles fonctionnalités, telles que les contrats (qu’on verra vraisemblablement arriver également dans Go 2)
  • les coroutines, qui rappellent furieusement les goroutines et channels de Go (encore !) pour la gestion des traitements parallèles, ne sont plus expérimentales.
  • le support des projets multi-plateforme a été revu en profondeur. Un projet multi-plateforme permet, dans un même projet, de cibler à la fois la JVM (par exemple, des applications serveur), Android, iOS ou des systèmes embarqués (entre autres) avec Kotlin/Native, et NodeJS ou des applications web avec kotlin2js ; en partageant un maximum de code.

Kotlin est plus que jamais un langage à suivre, voire à adopter…

# Nouvelle version pour create-react-app [JS, React, Frontend]

par Xavier Calland

La mise en place d’un projet React (comme pour beaucoup d’autres framework JS) peut s’avérer assez fastidieuse, notamment dans la configuration des outils de build (Webpack, Babel, …).

create-react-app vous permet de créer rapidement un projet React pré-configuré.

Cela s’avère très pratique pour démarrer une application SPA rapidement, notamment pour permettre un premier contact avec React (sans être découragé par la mise en place du build).

⚠️ Cela dit create-react-app ne doit pas éviter de comprendre la configuration définie ni de l’adapter. Ca peut être très intéressant de configurer son application from scratch 🙂

La version 2.0 de create-react-app vient de sortir et apporte son lot de nouveautés et d’amélioration.

On peut noter entre autres :

  • la mise à jour de nombreux composants (Webpack 4, Babel 7, Jest 23)
  • plus d’options pour la gestion des styles (Sass et CSS Modules sont disponibles ainsi que PostCSS)
  • le mode Plug’n’Play de Yarn qui supprime « node_modules » (attention cela reste expérimental)
  • la possibilité d’utiliser son propre reverse proxy en dev (pratique pour gérer les appels aux API)
  • des options pour utiliser Apollo, Relay Modern, MDX.

Plus d’informations dans l’article d’origine : https://reactjs.org/blog/2018/10/01/create-react-app-v2.html

# Sortie de PostgreSQL 11 [PostgreSQL, SGBD, SQL]

par Aurélien Morlé

Le PostgreSQL Global Development Group a annoncé le 18 octobre 2018 la sortie de PostgreSQL 11, la dernière version du SGBD open source le plus avancé au monde. 

PostgreSQL 11 propose des améliorations de performance ainsi que des avancées spécifiques pour les bases de données à très gros volume et/ou trafic. De plus, PostgreSQL 11 a amélioré de manière importante le système de partitionnement, a ajouté la possibilité de gérer les transactions au sein des procédures stockées et étend les possibilités autour du parallélisme. La compilation Just-in-Time (JIT) a été introduite pour optimiser l’exécution de code et d’autres opérations. Utilisant des composants du projet LLVM, l’introduction de JIT dans PostgreSQL accélère les requêtes utilisant des expressions, listes, agrégats, projections, ainsi que certaines opérations internes.

Plus d’informations sur notre blog sur les différentes nouveautés : https://blog.atolcd.com/sortie-de-postgresql-11/

# Fin du support de PHP 5 [PHP, Backend]

par Alexis Venner

Toutes les bonnes (et moins bonnes) choses ont une fin ! Malgré son report, le moment fatidique arrive désormais à grands pas :

Le support de la très populaire version de PHP 5 arrive bientôt à son terme, avec l’arrêt de la maintenance de la version 5.6 au 31 décembre 2018 : http://php.net/supported-versions.php.

D’après le site W3Techs, 61.5% des sites webs utilisent pourtant encore une version de PHP 5.

Developpez.com explique cela par le fait que des frameworks massivement utilisés autorisent toujours PHP 5.x en version minimale et n’ont donc pas « poussés » à la migration. Aussi, PHP 7 a introduit nombre de nouveautés par rapport à PHP 5 (PHP 6 n’ayant jamais vu le jour), tout en s’efforçant de conserver une certaine rétrocompatibilité. Reste qu’en pratique, cette migration peut s’avérer fastidieuse.

Mais au delà de ces problématiques, ce blocage peut aussi s’expliquer en partie par le fait que des frameworks tels que Symfony 1 ne supportent pas officiellement PHP 7. Cela oblige donc à migrer la version du framework, impliquant une réécriture bien plus profonde.

Malgré ces contraintes, nous vous recommandons de migrer vos applications afin de supporter au minimum PHP 7.2.

Surtout que PHP 7 apporte son lot d’avantages non négligeables, notamment l’amélioration significative des performances.

PHP propose un guide pour aider à cette migration.