LCC 221 - Massacre à la tronçonneuse

Guillaume, Arnaud et Emmanuel descendent dans les profondeurs des garbage collectors, Java 14, GraalVM 19.3 (Java is back!) et bien sûr pleins d'autres choses !

Enregistré le 5 décembre 2019

Téléchargement de l'épisode LesCastCodeurs-Episode-221.mp3

News

Langages

GraalVM 19.3 with JDK 11 Support.
GraalVM se met aussi à WebAssembly

Microsoft ready to contribute to OpenJDK

Trois JEPs prévus pour être intégrés à Java 14 :

Stephen Colebourne râle sur le nouveau switch

Tricher le GC de Go avec du poids mort

  • le GC se déclenche tous les 2x de heap
  • si pas d'alloc, ca veut dire qu'il vide jusqu'à 1x mais déclenche des GC super fréquement
  • donc en allouant (virtuellement) un tableau de 10Go, on réduit le temps entre GC
  • le cout d'un concurrent mark sweep c'est de marquer les objets vivants (les morts ont peu de cout)
  • et les co-routines pendant une phase de mark-sweep doivent faire un travail de mark ce qui les ralenties
  • donc moins de GC veut dire plus rapide
  • c'est le cout a payer pour un GC avec 1 ou peu de parametres.

Shenandoah: éliminer les mots de pointeurs en avant

  • Shenandoah bouge les objets sans mettre à jour ses pointeurs
    • juste garde une copie dans l'objet même de ses references
    • puis met à jour les references de maniere concurrente en parallele de l'appli
    • et enfin peut virer les objets.
  • par défaut Shenandoah demande un word supplémentaire par objet
    • si le word == l'objet, on est normal, sinon il pointe vers la nouvelle copie de l'objet
    • 5 à 10% de mémoire supplémentaire en pratique
  • peut réutiliser le mark word mais comparaison chère surtout à faire à chaque read-barrier
    • uniquement pendant un GC et sur les objets dans des collections set => peu fréquents
    • dans les tests le code de décoding supplémentaire est pas visible dans les benchmarks
  • mais ils ont éliminé les read barrier en load-reference-barrier qui sont moins fréquentes en nombre d'objet
  • meilleure densité mémoire, moins de pression sur le CPU cache, plus de throughput

Librairies

Micronaut en Trial dans le tech radar de ThoughtWorks et Quarkus en assess

Middleware

Le Camel a trois bosses

  • un ensemble de projets (Camel, Camel K, Camel extensions pour Quarkus)
  • nouveau site web
  • Java 11 support et abandon de Java 8 durant 2020
  • Camel core modularisé et moins de classes à démarrer, réduire la reflection
  • support de GraalVM via Quarkus
  • DSL typesafe de définition de endpoint
  • Coeur réactif
  • Intégration avec microprofile
  • nouveaux composants ( - graphql - 4 more AWS components - Debezium components)

Infrastructure

Sonatype racheté
Annonce par Sonatype du rachat

  • par une boite de private equity...
  • il est temps de backuper central

Docker à la découpe. Docker Enterprise racheté par Mirantis
Les fondateurs de Google tournent la page

Cloud

AppEngine Java 11 Runtime FAQ.
Pas bien les Fat JAR dans les images de conteneur
Helm 3 est sorti

Web

.org est vendu, sauvons les .org ( Ils ont réussi à fâcher Kohsuke ).

Data

R2DBC 0.8
Exposer les entités persistées dans vos API ou pas

  • Plus simple, un seul objet
  • plus compliqué des détails d'implémentations (nouveau champ d'un cote ou de l'autre)
  • accumulation d'annotations pour abstraire ses modèles (JSON, JPA)
  • associations gérées en proxy dans JPA et en id ou null dans API
  • V2 de l'API
  • aggrégation des données dans l'API

Outillage

La matrice arrive dans Jenkins Pipelines.
Jenkins Health Advisor par CloudBees.
L'expérience zsh de Julien Ponge

Cédric explose le mythe du scripting vs déclaratif dans Gradle
Comment éviter l'enfer des dépendances avec Gradle 6

Méthodologies

L'humain est résiliant aux chocs de la vie mais pas tant que cela au chomage de longue durée

  • étude
  • Plus on est dans un pays développé, plus on est heureux
  • on est plus heureux maintenant qu'il y a quelques années (croissance)
  • plus on est riche, plus on est heureux

Loi, société et organisation

Save your code on Software Heritage Archive.

Conférences

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/