DiscoverLes Cast Codeurs PodcastLCC 325 - Trier le hachis des concurrents
LCC 325 - Trier le hachis des concurrents

LCC 325 - Trier le hachis des concurrents

Update: 2025-05-09
Share

Description

Gros épisode qui couvre un large spectre de sujets : Java, Scala, Micronaut, NodeJS, l'IA et la compétence des développeurs, le sampling dans les LLMs, les DTO, le vibe coding, les changements chez Broadcom et Red Hat ainsi que plusieurs nouvelles sur les licences open source.

Enregistré le 7 mai 2025

Téléchargement de l'épisode LesCastCodeurs-Episode-325.mp3 ou en vidéo sur YouTube.

News

Langages

A l'occasion de JavaOne et du lancement de Java 24, Oracle lance un nouveau site avec des ressources vidéo pour apprendre le langage https://learn.java/

  • site plutôt à destination des débutants et des enseignants
  • couvre la syntaxe aussi, y compris les ajouts plus récents comme les records ou le pattern matching
  • c'est pas le site le plus trendy du monde.

Martin Odersky partage un long article sur l'état de l'écosystème Scala et les évolutions du language https://www.scala-lang.org/blog/2025/03/24/evolving-scala.html

  • Stabilité et besoin d'évolution : Scala maintient sa position (~14ème mondial) avec des bases techniques solides, mais doit évoluer face à la concurrence pour rester pertinent.
  • Axes prioritaires : L'évolution se concentre sur l'amélioration du duo sécurité/convivialité, le polissage du langage (suppression des "rugosités") et la simplification pour les débutants.
  • Innovation continue : Geler les fonctionnalités est exclu ; l'innovation est clé pour la valeur de Scala. Le langage doit rester généraliste et ne pas se lier à un framework spécifique.
  • Défis et progrès : L'outillage (IDE, outils de build comme sbt, scala-cli, Mill) et la facilité d'apprentissage de l'écosystème sont des points d'attention, avec des améliorations en cours (partenariat pédagogique, plateformes simples).

Des strings encore plus rapides ! https://inside.java/2025/05/01/strings-just-got-faster/

  • Dans JDK 25, la performance de la fonction String::hashCode a été améliorée pour être principalement constant foldable.
  • Cela signifie que si les chaînes de caractères sont utilisées comme clés dans une Map statique et immuable, des gains de performance significatifs sont probables.
  • L'amélioration repose sur l'annotation interne @Stable appliquée au champ privé String.hash.
  • Cette annotation permet à la machine virtuelle de lire la valeur du hash une seule fois et de la considérer comme constante si elle n'est pas la valeur par défaut (zéro).
  • Par conséquent, l'opération String::hashCode peut être remplacée par la valeur de hash connue, optimisant ainsi les lookups dans les Map immuables.
  • Un cas limite est celui où le code de hachage de la chaîne est zéro, auquel cas l'optimisation ne fonctionne pas (par exemple, pour la chaîne vide "").
  • Bien que l'annotation @Stable soit interne au JDK, un nouveau JEP (JEP 502: Stable Values (Preview)) est en cours de développement pour permettre aux utilisateurs de bénéficier indirectement de fonctionnalités similaires.

AtomicHash, une implémentation Java d'une HashMap qui est thread-safe, atomique et non-bloquante https://github.com/arxila/atomichash

  • implémenté sous forme de version immutable de Concurrent Hash Trie

Librairies

Sortie de Micronaut 4.8.0 https://micronaut.io/2025/04/01/micronaut-framework-4-8-0-released/

  • Mise à jour de la BOM (Bill of Materials) : La version 4.8.0 met à jour la BOM de la plateforme Micronaut.
  • Améliorations de Micronaut Core : Intégration de Micronaut SourceGen pour la génération interne de métadonnées et d'expressions bytecode.
  • Nombreuses améliorations dans Micronaut SourceGen.
  • Ajout du traçage de l'injection de dépendances pour faciliter le débogage au démarrage et à la création des beans.
  • Nouveau membre definitionType dans l'annotation @Client pour faciliter le partage d'interfaces entre client et serveur.
  • Support de la fusion dans les Bean Mappers via l'annotation @Mapping.
  • Nouvelle liveness probe détectant les threads bloqués (deadlocked) via ThreadMXBean.
  • Intégration Kubernetes améliorée : Mise à jour du client Java Kubernetes vers la version 22.0.1.
  • Ajout du module Micronaut Kubernetes Client OpenAPI, offrant une alternative au client officiel avec moins de dépendances, une configuration unifiée, le support des filtres et la compatibilité Native Image.
  • Introduction d'un nouveau runtime serveur basé sur le serveur HTTP intégré de Java, permettant de créer des applications sans dépendances serveur externes.
  • Ajout dans Micronaut Micrometer d'un module pour instrumenter les sources de données (traces et métriques).
  • Ajout de la condition condition dans l'annotation @MetricOptions pour contrôler l'activation des métriques via une expression.
  • Support des Consul watches dans Micronaut Discovery Client pour détecter les changements de configuration distribuée.
  • Possibilité de générer du code source à partir d'un schéma JSON via les plugins de build (Gradle et Maven).

Web

Node v24.0.0 passe en version Current: https://nodejs.org/en/blog/release/v24.0.0

  • Mise à jour du moteur V8 vers la version 13.6 : intégration de nouvelles fonctionnalités JavaScript telles que Float16Array, la gestion explicite des ressources (using), RegExp.escape, WebAssembly Memory64 et Error.isError.
  • npm 11 inclus : améliorations en termes de performance, de sécurité et de compatibilité avec les packages JavaScript modernes.
  • Changement de compilateur pour Windows : abandon de MSVC au profit de ClangCL pour la compilation de Node.js sur Windows.
  • AsyncLocalStorage utilise désormais AsyncContextFrame par défaut : offrant une gestion plus efficace du contexte asynchrone.
  • URLPattern disponible globalement : plus besoin d'importer explicitement cette API pour effectuer des correspondances d'URL.
  • Améliorations du modèle de permissions : le flag expérimental --experimental-permission devient --permission, signalant une stabilité accrue de cette fonctionnalité.
  • Améliorations du test runner : les sous-tests sont désormais attendus automatiquement, simplifiant l'écriture des tests et réduisant les erreurs liées aux promesses non gérées.
  • Intégration d'Undici 7 : amélioration des capacités du client HTTP avec de meilleures performances et un support étendu des fonctionnalités HTTP modernes.
  • Dépréciations et suppressions :
    • Dépréciation de url.parse() au profit de l'API WHATWG URL.
    • Suppression de tls.createSecurePair.
    • Dépréciation de SlowBuffer.
    • Dépréciation de l'instanciation de REPL sans new.
    • Dépréciation de l'utilisation des classes Zlib sans new.
    • Dépréciation du passage de args à spawn et execFile dans child_process.
  • Node.js 24 est actuellement la version "Current" et deviendra une version LTS en octobre 2025. Il est recommandé de tester cette version pour évaluer son impact sur vos applications.

Data et Intelligence Artificielle

Apprendre à coder reste crucial et l'IA est là pour venir en aide : https://kyrylo.org/software/2025/03/27/learn-to-code-ignore-ai-then-use-ai-to-code-even-better.html

  • Apprendre à coder reste essentiel malgré l'IA.
  • L'IA peut assister la programmation.
  • Une solide base est cruciale pour comprendre et contrôler le code.
  • Cela permet d'éviter la dépendance à l'IA.
  • Cela réduit le risque de remplacement par des outils d'IA accessibles à tous.
  • L'IA est un outil, pas un substitut à la maîtrise des fondamentaux.

Super article de Anthropic qui essaie de comprendre comment fonctionne la "pensée" des LLMs https://www.anthropic.com/research/tracing-thoughts-language-model

  • Effet boîte noire : Stratégies i
Comments 
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

LCC 325 - Trier le hachis des concurrents

LCC 325 - Trier le hachis des concurrents