
Les Cast Codeurs Podcast
340 episodes — Page 1 of 7
LCC 340 - Episode on l'voit on l'voit pas
LCC 339 - Clotûre de Devoxx France 2026 par les cast codeurs
LCC 338 - Le soulèvement des bots de skills
Gros zoom sur les skills et leurs usages dans les coding agents, sur les benchmarks de stacks techniques MCP, mais aussi du Java 26-27, du HttpClient, du NodeJS, des scenarios nucléaires pilotés par l'IA, de la méthodologie, bref on ne s'ennuie pas ! Enregistré le 15 mars 2026 Téléchargement de l'épisode LesCastCodeurs-Episode-338.mp3 ou en vidéo sur YouTube. News Langages Bruno Borges a créé un site, inspiré d'un site récent qui montrait comment CSS avait évolué, qui illustre justement comment Java a bien évolué au fil du temps, et est devenu un langage encore plus élégant https://javaevolved.github.io/ Code simplifié: main() allégé, var, blocs de texte, API String enrichie. Pattern Matching: switch sur types, instanceof amélioré, record patterns. Données: Records, collections immuables faciles à créer, méthodes de listes. Concurrence: Threads virtuels, CompletableFuture, StructuredTaskScope, ScopedValue. Erreurs & Sécurité: NPE précis, catch multiples, Optional amélioré, filtres de désérialisation. I/O & Réseau: HttpClient moderne, E/S fichiers/console simplifiées, transferTo. Dates & Heures: API modernisée, précise, immutables et thread-safe. Langage: Interfaces sealed/private, import de modules, Math.clamp Streams: Nouveaux opérateurs (takeWhile, mapMulti, Gatherers, teeing). Outils & Perf: jshell, exécution simplifiée, jwebserver, AOT, JFR, optimisation mémoire. 10+ raisons de ne pas utiliser le HttpClient du JDK, avec un article très détaillé de Brice Dutheil https://blog.arkey.fr/2026/02/08/ten-reasons-to-not-use-jdk-httpclient/ JDK HttpClient: intégré, non-upgradable. OkHttp: plus lourd (dépendance Kotlin). TLS/SSL: JDK: SSLContext limité, vérif hôte globale, épinglage manuel, SSLParameters rigides. OkHttp: contrôle fin (SSLSocketFactory/TrustManager), vérif hôte/épinglage dédiés, ConnectionSpec structuré. Connexions: JDK: pas de repli, fabrique socket custom impossible (pas UDS/Named Pipes direct), pool limité (propriétés système, contrôle pauvre avant JDK 20/21). OkHttp: repli automatique, fabrique custom, pool granulaire. Réseau: JDK: résolveur DNS par défaut, Authenticator unique. OkHttp: résolveur DNS custom, authentificateurs séparés (proxy/serveur). Cycle Requêtes: JDK: pas d'intercepteurs ni API événements intégrés. OkHttp: addInterceptor, EventListener pour événements granulaires. Ressources: JDK: pas d'arrêt propre avant JDK 21. OkHttp: arrêt granulaire (pool, exécuteur, cache). Timeout: JDK: désactivé après en-têtes; le transfert du corps peut dépasser le timeout initial. JDK 26 et JDK 27 : ce qui nous attend — https://www.infoq.com/news/2026/02/java-26-so-far/ JDK 26 est une version non-LTS prévue le 17 mars 2026, avec 10 nouvelles fonctionnalités réparties en 5 catégories Le support HTTP/3 arrive enfin dans l'API HTTP Client standard de Java (JEP 517) La Structured Concurrency (projet Loom) en est à sa 6e preview, avec l'ajout d'une méthode onTimeout() sur StructuredTaskScope.Joiner Les Lazy Constants passent en 2e preview : des constantes initialisées à la demande, utiles pour optimiser le démarrage Le G1 GC gagne en performance via une réduction des synchronisations entre threads applicatifs et threads GC (JEP 522) Le cache d'objets AOT (JEP 516) est étendu pour fonctionner avec n'importe quel GC, y compris ZGC L'API Applet est définitivement supprimée (JEP 504), fermant une page historique de Java L'encodage PEM des objets cryptographiques continue sa preview avec support de chiffrement/déchiffrement de KeyPair Pour JDK 27 (septembre 2026), l'échange de clés post-quantique hybride pour TLS 1.3 est déjà ciblé (JEP 527) Project Valhalla progresse avec une preview des Value Classes : objets sans identité, à champs final uniquement Librairies Une étude de performance montre que Java est un super choix pour développer des serveurs MCP https://www.tmdevlab.com/mcp-server-performance-benchmark.html Comparaison de performances de serveurs MCP (Model Context Protocol) en Java, Go, Node.js, Python. Méthodologie: 3,9 millions requêtes, environnement Docker (1 cœur CPU, 1 Go RAM/serveur). Fiabilité: 0% d'erreurs pour toutes les implémentations. Tiers de performance: 1 (Haute): Go & Java (latence ▪︎ Go: Efficacité mémoire exceptionnelle (18 Mo vs 220 Mo pour Java). ▪︎ Java: Latence marginalement meilleure, mais 12x plus de mémoire. 2 (Moyenne): Node.js (latence ~10,7 ms, ~560 requêtes/s). Surcharge par instanciation. 3 (Faible): Python (latence ~26,5 ms, ~290 requêtes/s). Limité par GIL. Recommandations production: Go: Optimal forte charge, cloud-native, optimisation coûts. Java: Latence très basse critique, infrastructure Java existante. Node.js & Python: Adaptés charges modérées/faibles, développement/test. Node.js et Python peuvent être optimisés pour améliorer leurs performances en production. Et encore, en Java, le benchmark n'a pas utilisé GraalVM pour une compilation native, ce qui aurait donné des chiffres côté mémoire qui aurait concurrencé Go Qui a la meilleure perf entre Quarkus et Spr
LCC 337 - Datacenters Carrier Class dans l'espace
Emmanuel et Guillaume discutent de divers sujets liés à la programmation, notamment les systèmes de fichiers en Java, le Data Oriented Programming, les défis de JPA avec Kotlin, et les nouvelles fonctionnalités de Quarkus. Ils explorent également des sujets un peu fous comme la création de datacenters dans l'espace. Pas mal d'architecture aussi. Enregistré le 13 février 2026 Téléchargement de l'épisode LesCastCodeurs-Episode-337.mp3 ou en vidéo sur YouTube. News Langages Comment implémenter un file system en Java https://foojay.io/today/bootstrapping-a-java-file-system/ Créer un système de fichiers Java personnalisé avec NIO.2 pour des usages variés (VCS, archives, systèmes distants). Évolution Java: java.io.File (1.0) -> NIO (1.4) -> NIO.2 (1.7) pour personnalisation via FileSystem. Recommander conception préalable; API Java est orientée POSIX. Composants clés à considérer: Conception URI (scheme unique, chemin). Gestion de l'arborescence (BD, métadonnées, efficacité). Stockage binaire (emplacement, chiffrement, versions). Minimum pour démarrer (4 composants): Implémenter Path (représente fichier/répertoire). Étendre FileSystem (instance du système). Étendre FileSystemProvider (moteur, enregistré par scheme). Enregistrer FileSystemProvider via META-INF/services. Étapes suivantes: Couche BD (arborescence), opérations répertoire/fichier de base, stockage, tests. Processus long et exigeant, mais gratifiant. Un article de brian goetz sur le futur du data oriented programming en Java https://openjdk.org/projects/amber/design-notes/beyond-records Le projet Amber de Java introduit les "carrier classes", une évolution des records qui permet plus de flexibilité tout en gardant les avantages du pattern matching et de la reconstruction Les records imposent des contraintes strictes (immutabilité, représentation exacte de l'état) qui limitent leur usage pour des classes avec état muable ou dérivé Les carrier classes permettent de déclarer une state description complète et canonique sans imposer que la représentation interne corresponde exactement à l'API publique Le modificateur "component" sur les champs permet au compilateur de dériver automatiquement les accesseurs pour les composants alignés avec la state description Les compact constructors sont généralisés aux carrier classes, générant automatiquement l'initialisation des component fields Les carrier classes supportent la déconstruction via pattern matching comme les records, rendant possible leur usage dans les instanceof et switch Les carrier interfaces permettent de définir une state description sur une interface, obligeant les implémentations à fournir les accesseurs correspondants L'extension entre carrier classes est possible, avec dérivation automatique des appels super() quand les composants parent sont subsumés par l'enfant Les records deviennent un cas particulier de carrier classes avec des contraintes supplémentaires (final, extends Record, component fields privés et finaux obligatoires) L'évolution compatible des records est améliorée en permettant l'ajout de composants en fin de liste et la déconstruction partielle par préfixe Comment éviter les pièges courants avec JPA et Kotlin - https://blog.jetbrains.com/idea/2026/01/how-to-avoid-common-pitfalls-with-jpa-and-kotlin/ JPA est une spécification Java pour la persistance objet-relationnel, mais son utilisation avec Kotlin présente des incompatibilités dues aux différences de conception des deux langages Les classes Kotlin sont finales par défaut, ce qui empêche la création de proxies par JPA pour le lazy loading et les opérations transactionnelles Le plugin kotlin-jpa génère automatiquement des constructeurs sans argument et rend les classes open, résolvant les problèmes de compatibilité Les data classes Kotlin ne sont pas adaptées aux entités JPA car elles génèrent equals/hashCode basés sur tous les champs, causant des problèmes avec les relations lazy L'utilisation de lateinit var pour les relations peut provoquer des exceptions si on accède aux propriétés avant leur initialisation par JPA Les types non-nullables Kotlin peuvent entrer en conflit avec le comportement de JPA qui initialise les entités avec des valeurs null temporaires Le backing field direct dans les getters/setters personnalisés peut contourner la logique de JPA et casser le lazy loading IntelliJ IDEA 2024.3 introduit des inspections pour détecter automatiquement ces problèmes et propose des quick-fixes L'IDE détecte les entités finales, les data classes inappropriées, les problèmes de constructeurs et l'usage incorrect de lateinit Ces nouvelles fonctionnalités aident les développeurs à éviter les bugs subtils liés à l'utilisation de JPA avec Kotlin Librairies Guide sur MapStruct @IterableMapping - https://www.baeldung.com/java-mapstruct-iterablemapping MapStruct est une bibliothèque Java pour générer automatiquement des mappers entre beans, l'annotation @IterableMapping permet de configurer finement le mapping de collections L'attr
LCC 336 - Interview Kotlin avec Arnaud Giuliani
Dans cet épisode, Emmanuel interview Arnaud Giuliani. Arnaud est dans l'écosystème Kotlin et est le créateur de Koin, la solution de Dependency Injection. On discute de la genèse de Kotlin, de son alignement avec Android puis de son évolution multiplateforme. On discute coroutine, impact de K2, de développement mobile. On finit en discutant de Kotzilla et de l'entrepreneuriat sur un projet Open Source. Enregistré le 7 janvier 2026 Téléchargement de l'épisode LesCastCodeurs-Episode-336.mp3 ou en vidéo sur YouTube. Interview Ta vie ton oeuvre (présentation de l'interviewé) ton historique de développeur Koin d'où est venu l'idée, pourquoi difference vs Dagger, Hilt, CDI? fondateur de Kotzilla Introduction à la techno (5 à 10 mins max) Kotlin en 4 phrases nombre de développeurs usages (front, mobile, backend) Compose, K2 en une phrase La techno en concepts Kotlin le langage Quel sont ses particularités et spécificités pourquoi il a pris sur Android ? Kotlin multiplateform comment ça marche concretement WASM en beta, tu as eu des retours? pour les devs de framework, c'est transparent? Co-routines et concurrence structurée fais nous un point de ce que c'est son usage dans l'ecosystème vs loom, des ponts ? Kotlin et le backend connu pour le support Android, quid du back end? travaux avec Spring Ktor les autres plateformes Java genre Quarkus et micronaut, utilisées ? La competition de Kotlin c'est quoi ? Comment on l'utilise en pratique pour un dev je me lance, je faisais du Java et du Spring, je pars comment pour faire un projet Kotlin moderne IDE, outil de build, frameworks migrationd e code Java? des anti patterns des choses qui "ressemblent à du code Java" des comportement de perf ou de memoire differents du monde Java? c'est quoi ta feature préférée? Et l'IA, Kotlin as Koog notamment, tu vois quoi emerger ? Sous le capot K2 est le nouveau compilateur Qu'est-ce qui a changé des cassages de compatiblitiés ca change des choses pour les utilisateurs ? Et pour les editeurs de framework comme Koin ? Koin ne fait pas de generation de code à la compil Dagger, Arc (le moteur CDI de Quarkus) et Micronaut sont passé au pre travail à la compil quels ont été les critères de choix un mot sur Kotlin Symbol Processing les coroutines, c'est implémenté comment, vous avez 3 heures machine a etat continuation apssing style etc Kotlin multi platforme que fait le compilo code commun / code specifique interop avec les platformes cibles (object structure etc) La communauté, le futur comment va la commuanuté aujourd'hui grossis ? et les francais là dedans? La gouvernance de Kotlin travaux dominés par JetBrains comment cela a évolué (ecoute, autres acteurs etc) Kotlin foundation futurs fonctionalités de Kotlin qui t'interesse de Koin? autre ? Monter une boite Tu as fondé Kotzilla. Peux-tu nous expliquer ce que Kotzilla apporte à l'écosystème Kotlin ? Quels problèmes tu cherches à résoudre pour les entreprises qui adoptent Kotlin ? ton experience de fonder une boite d'editeur quelle mouche t'as piqué votre business model, comment vous en etes arrivé là de maniere generale discussion sur le lancement de boites techs Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 335 - 200 terminaux en prod vendredi
De retour à cinq dans l'épisode, les cast codeurs démarrent cette année avec un gros épisode pleins de news et d'articles de fond. IA bien sûr, son impact sur les pratiques, Mockito qui tourne un page, du CSS (et oui), sur le (non) mapping d'APIs REST en MCP et d'une palanquée d'outils pour vous. Enregistré le 9 janvier 2026 Téléchargement de l'épisode LesCastCodeurs-Episode-335.mp3 ou en vidéo sur YouTube. News Langages 2026 sera-t'elle l'année de Java dans le terminal ? (j'ai ouïe dire que ça se pourrait bien…) https://xam.dk/blog/lets-make-2026-the-year-of-java-in-the-terminal/ 2026: Année de Java dans le terminal, pour rattraper son retard sur Python, Rust, Go et Node.js. Java est sous-estimé pour les applications CLI et les TUIs (interfaces utilisateur terminales) malgré ses capacités. Les anciennes excuses (démarrage lent, outillage lourd, verbosité, distribution complexe) sont obsolètes grâce aux avancées récentes : GraalVM Native Image pour un démarrage en millisecondes. JBang pour l'exécution simplifiée de scripts Java (fichiers uniques, dépendances) et de JARs. JReleaser pour l'automatisation de la distribution multi-plateforme (Homebrew, SDKMAN, Docker, images natives). Project Loom pour la concurrence facile avec les threads virtuels. PicoCLI pour la gestion des arguments. Le potentiel va au-delà des scripts : création de TUIs complètes et esthétiques (ex: dashboards, gestionnaires de fichiers, assistants IA). Excuses caduques : démarrage rapide (GraalVM), légèreté (JBang), distribution simple (JReleaser), concurrence (Loom). Potentiel : créer des applications TUI riches et esthétiques. Sortie de Ruby 4.0.0 https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/ Ruby Box (expérimental) : Une nouvelle fonctionnalité permettant d'isoler les définitions (classes, modules, monkey patches) dans des boîtes séparées pour éviter les conflits globaux. ZJIT : Un nouveau compilateur JIT de nouvelle génération développé en Rust, visant à surpasser YJIT à terme (actuellement en phase expérimentale). Améliorations de Ractor : Introduction de Ractor::Port pour une meilleure communication entre Ractors et optimisation des structures internes pour réduire les contentions de verrou global. Changements syntaxiques : Les opérateurs logiques (||, &&, and, or) en début de ligne permettent désormais de continuer la ligne précédente, facilitant le style "fluent". Classes Core : Set et Pathname deviennent des classes intégrées (Core) au lieu d'être dans la bibliothèque standard. Diagnostics améliorés : Les erreurs d'arguments (ArgumentError) affichent désormais des extraits de code pour l'appelant ET la définition de la méthode. Performances : Optimisation de Class#new, accès plus rapide aux variables d'instance et améliorations significatives du ramasse-miettes (GC). Nettoyage : Suppression de comportements obsolètes (comme la création de processus via IO.open avec |) et mise à jour vers Unicode 17.0. Librairies Introduction pour créer une appli multi-tenant avec Quarkus et http://nip.io|nip.io https://www.the-main-thread.com/p/quarkus-multi-tenant-api-nipio-tutorial Construction d'une API REST multi-tenant en Quarkus avec isolation par sous-domaine Utilisation de http://nip.io|nip.io pour la résolution DNS automatique sans configuration locale Extraction du tenant depuis l'en-tête HTTP Host via un filtre JAX-RS Contexte tenant géré avec CDI en scope Request pour l'isolation des données Service applicatif gérant des données spécifiques par tenant avec Map concurrent Interface web HTML/JS pour visualiser et ajouter des données par tenant Configuration CORS nécessaire pour le développement local Pattern acme.127-0-0-1.nip.io résolu automatiquement vers localhost Code complet disponible sur GitHub avec exemples curl et tests navigateur Base idéale pour prototypage SaaS, tests multi-tenants Hibernate 7.2 avec quelques améliorations intéressantes https://docs.hibernate.org/orm/7.2/whats-new/%7Bhtml-meta-canonical-link%7D read only replica (experimental), crée deux session factories et swap au niveau jdbc si le driver le supporte et custom sinon. On ouvre une session en read only child statelesssession (partage le contexte transactionnel) hibernate vector module ajouter binary, float16 and sparse vectors Le SchemaManager peut resynchroniser les séquences par rapport aux données des tables Regexp dans HQL avec like Nouvelle version de Hibernate with Panache pour Quarkus https://quarkus.io/blog/hibernate-panache-next/ Nouvelle extension expérimentale qui unifie Hibernate ORM with Panache et Hibernate Reactive with Panache Les entités peuvent désormais fonctionner en mode bloquant ou réactif sans changer de type de base Support des sessions sans état (StatelessSession) en plus des entités gérées traditionnelles Intégration de Jakarta Data pour des requêtes type-safe vérifiées à la compilation Les opérations sont définies dans des repositories imbriqués plutôt que des méthodes statiques Possibilité de définir p
LCC 334 - Interview de Muriel Ekovich sur les biais cognitifs
Dans cet épisode, Emmanuel, Katia invitent Muriel Ekovich pour explorer les biais cognitifs, leur définition, leur impact sur notre quotidien et leur développement. Bien que "non technique", ces biais existent dans notre travail et notre vie du quotidien. Nous discutons notamment leur impact sur l'usage numérique et sur les équipes techniques. Les discussions incluent également l'importance de la pensée critique face à l'autorité et aux croyances, ainsi que les biais spécifiques rencontrés dans le milieu professionnel. Enregistré le 1 septembre 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-999.mp3 ou en vidéo sur YouTube. Interview Ta vie ton oeuvre (présentation de l'interviewé) Muriel, tu es docteure en neurosciences cognitives. Tu travailles sur le fonctionnement du cerveau humain, notamment les biais cognitifs qui influencent nos décisions et nos interactions au quotidien. Tu t'appuies aussi sur des pratiques comme l'improvisation pour explorer ces mécanismes de manière concrète, et tu t'intéresses à la façon dont tout cela se manifeste dans le travail et la collaboration. Le linkedIn de Muriel La société Kenober La troupe Smoking Sofa Introduction Quand on parle de biais cognitifs, de quoi parle-t-on exactement ? Pourquoi existent-ils et pourquoi touchent-ils tout le monde, y compris les experts ? Biais cognitifs du quotidien Quels sont les biais cognitifs les plus présents dans la vie quotidienne ? Peux-tu donner un exemple simple que la majorité des gens ont déjà vécu ? Est-ce que l'environnement numérique renforce certains biais ? Biais cognitifs en entreprise tech Dans les entreprises d'informatique, qu'est-ce qui te frappe le plus dans la manière dont les équipes raisonnent ou prennent des décisions ? Observes-tu des biais typiques chez les développeurs ? Chez les managers ? Le biais de confirmation ou le biais du conformisme, est-il particulièrement présent dans les choix techniques ? Décision technique et illusion de rationalité Les métiers techniques ont la réputation d'être très rationnels. Est-ce que cela protège réellement des biais cognitifs ? Les estimations de charge, de délais ou de complexité sont-elles un terrain favorable aux biais ? Les revues de code permettent-elles de réduire certains biais ou en créent-elles d'autres ? Les méthodes agiles aident-elles à mieux gérer les biais ou en génèrent-elles de nouveaux ? Recrutement et évaluation Le recrutement dans la tech est-il particulièrement exposé aux biais cognitifs ? Les entretiens techniques favorisent-ils certains profils au détriment d'autres ? Comment limiter les biais sans déshumaniser le processus ? Prise de conscience Pourquoi est-il si difficile d'admettre que l'on est soi-même biaisé, surtout quand on est compétent ? Peut-on réellement corriger ses biais cognitifs ou seulement apprendre à les contourner ? Quel rôle joue l'humilité dans cette prise de conscience ? Agir concrètement Si une équipe souhaite commencer sans accompagnement externe, que peut-elle faire dès demain ? Y a-t-il un réflexe simple à adopter avant une décision importante ? Un rituel d'équipe utile et réaliste ? Projection À quoi ressemble une équipe qui travaille en tenant compte du fonctionnement réel du cerveau humain ? Qu'est-ce qui change dans les décisions ? Dans la communication ? Dans la gestion des désaccords ? Quels sont les recherches actuelles sur les biais ? Conclusion Si tu devais faire passer un seul message aux équipes tech à propos des biais cognitifs, lequel serait-ce ? Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 333 - A vendre OSS primitif TBE
Dans cet épisode de fin d'année plus relax que d'accoutumée, Arnaud, Guillaume, Antonio et Emmanuel distutent le bout de gras sur tout un tas de sujets. L'acquisition de Confluent, Kotlin 2.2, Spring Boot 4 et JSpecify, la fin de MinIO, les chutes de CloudFlare, un survol des dernieres nouveauté de modèles fondamentaux (Google, Mistral, Anthropic, ChatGPT) et de leurs outils de code, quelques sujets d'architecture comme CQRS et quelques petits outils bien utiles qu'on vous recommande. Et bien sûr d'autres choses encore. Enregistré le 12 décembre 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-333.mp3 ou en vidéo sur YouTube. News Langages Un petit tutoriel par nos amis Sfeiriens montrant comment récupérer le son du micro, en Java, faire une transformée de Fourier, et afficher le résultat graphiquement en Swing https://www.sfeir.dev/back/tutoriel-java-sound-transformer-le-son-du-microphone-en-images-temps-reel/ Création d'un visualiseur de spectre audio en temps réel avec Java Swing. Étapes principales : Capture du son du microphone. Analyse des fréquences via la Transformée de Fourier Rapide (FFT). Dessin du spectre avec Swing. API Java Sound (javax.sound.sampled) : AudioSystem : point d'entrée principal pour l'accès aux périphériques audio. TargetDataLine : ligne d'entrée utilisée pour capturer les données du microphone. AudioFormat : définit les paramètres du son (taux d'échantillonnage, taille, canaux). La capture se fait dans un Thread séparé pour ne pas bloquer l'interface. Transformée de Fourier Rapide (FFT) : Algorithme clé pour convertir les données audio brutes (domaine temporel) en intensités de fréquences (domaine fréquentiel). Permet d'identifier les basses, médiums et aigus. Visualisation avec Swing : Les intensités de fréquences sont dessinées sous forme de barres dynamiques. Utilisation d'une échelle logarithmique pour l'axe des fréquences (X) pour correspondre à la perception humaine. Couleurs dynamiques des barres (vert → jaune → rouge) en fonction de l'intensité. Lissage exponentiel des valeurs pour une animation plus fluide. Un article de Sfeir sur Kotlin 2.2 et ses nouveautés - https://www.sfeir.dev/back/kotlin-2-2-toutes-les-nouveautes-du-langage/ Les guard conditions permettent d'ajouter plusieurs conditions dans les expressions when avec le mot-clé if Exemple de guard condition: is Truck if vehicule.hasATrailer permet de combiner vérification de type et condition booléenne La multi-dollar string interpolation résout le problème d'affichage du symbole dollar dans les strings multi-lignes En utilisant $$ au début d'un string, on définit qu'il faut deux dollars consécutifs pour déclencher l'interpolation Les non-local break et continue fonctionnent maintenant dans les lambdas pour interagir avec les boucles englobantes Cette fonctionnalité s'applique uniquement aux inline functions dont le corps est remplacé lors de la compilation Permet d'écrire du code plus idiomatique avec takeIf et let sans erreur de compilation L'API Base64 passe en version stable après avoir été en preview depuis Kotlin 1.8.20 L'encodage et décodage Base64 sont disponibles via kotlin.io.encoding.Base64 Migration vers Kotlin 2.2 simple en changeant la version dans build.gradle.kts ou pom.xml Les typealias imbriqués dans des classes sont disponibles en preview La context-sensitive resolution est également en preview Les guard conditions préparent le terrain pour les RichError annoncées à KotlinConf 2025 Le mot-clé when en Kotlin équivaut au switch-case de Java mais sans break nécessaire Kotlin 2.2.0 corrige les incohérences dans l'utilisation de break et continue dans les lambdas Librairies Sprint Boot 4 est sorti ! https://spring.io/blog/2025/11/20/spring-boot-4-0-0-available-now Une nouvelle génération : Spring Boot 4.0 marque le début d'une nouvelle génération pour le framework, construite sur les fondations de Spring Framework 7. Modularisation du code : La base de code de Spring Boot a été entièrement modularisée. Cela se traduit par des fichiers JAR plus petits et plus ciblés, permettant des applications plus légères. Sécurité contre les nuls (Null Safety) : D'importantes améliorations ont été apportées pour la "null safety" (sécurité contre les valeurs nulles) à travers tout l'écosystème Spring grâce à l'intégration de JSpecify. Support de Java 25 : Spring Boot 4.0 offre un support de premier ordre pour Java 25, tout en conservant une compatibilité avec Java 17. Améliorations pour les API REST : De nouvelles fonctionnalités sont introduites pour faciliter le versioning d'API et améliorer les clients de services HTTP pour les applications basées sur REST. Migration à prévoir : S'agissant d'une version majeure, la mise à niveau depuis une version antérieure peut demander plus de travail que d'habitude. Un guide de migration dédié est disponible pour accompagner les développeurs. Chat memory management dans Langchain4j et Quarkus https://bill.burkecentral.com/2025/11/25/managing-chat-memory-in-quarkus-lan
LCC 332 - Groquik revient, Emmanuel s'en va
Dans cet épisode, Emmanuel, Katia et Guillaume discutent de Spring 7, Quarkus, d'Infinispan et Keycloak. On discute aussi de projets sympas comme Javelit, de comment démarre une JVM, du besoin d'argent de NTP. Et puis on discute du changement de carrière d'Emmanuel. Enregistré le 14 novembre 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-332.mp3 ou en vidéo sur YouTube. News Emmanuel quitte Red Hat après 20 ans https://emmanuelbernard.com/blog/2025/11/13/leaving-redhat/ Langages Support HTTP/3 dans le HttpClient de JDK 26 - https://inside.java/2025/10/22/http3-support/ JDK 26 introduit le support de HTTP/3 dans l'API HttpClient existante depuis Java 11 HTTP/3 utilise le protocole QUIC sur UDP au lieu de TCP utilisé par HTTP/2 Par défaut HttpClient préfère HTTP/2, il faut explicitement configurer HTTP/3 avec Version.HTTP_3 Le client effectue automatiquement un downgrade vers HTTP/2 puis HTTP/1.1 si le serveur ne supporte pas HTTP/3 On peut forcer l'utilisation exclusive de HTTP/3 avec l'option H3_DISCOVERY en mode HTTP_3_URI_ONLY HttpClient apprend qu'un serveur supporte HTTP/3 via le header alt-svc (RFC 7838) et utilise cette info pour les requêtes suivantes La première requête peut utiliser HTTP/2 même avec HTTP/3 préféré, mais la seconde utilisera HTTP/3 si le serveur l'annonce L'équipe OpenJDK encourage les tests et retours d'expérience sur les builds early access de JDK 26 Librairies Eclispe Jetty et CometD changent leurs stratégie de support https://webtide.com/end-of-life-changes-to-eclipse-jetty-and-cometd/ À partir du 1er janvier 2026, Webtide ne publiera plus Jetty 9/10/11 et CometD 5/6/7 sur Maven Central Pendant 20 ans, Webtide a financé les projets Jetty et CometD via services et support, publiant gratuitement les mises à jour EOL Le comportement des entreprises a changé : beaucoup cherchent juste du gratuit plutôt que du véritable support Des sociétés utilisent des versions de plus de 10 ans sans migrer tant que les correctifs CVE sont gratuits Cette politique gratuite a involontairement encouragé la complaisance et retardé les migrations vers versions récentes MITRE développe des changements au système CVE pour mieux gérer les concepts d'EOL Webtide lance un programme de partenariat avec TuxCare et HeroDevs pour distribuer les résolutions CVE des versions EOL Les binaires EOL seront désormais distribués uniquement aux clients commerciaux et via le réseau de partenaires Webtide continue le support standard open-source : quand Jetty 13 sortira, Jetty 12.1 recevra des mises à jour pendant 6 mois à un an Ce changement vise à clarifier la politique EOL avec une terminologie industrielle établie Améliorations cloud du SDK A2A Java https://quarkus.io/blog/quarkus-a2a-cloud-enhancements/ Version 0.3.0.Final du SDK A2A Java apporte des améliorations pour les environnements cloud et distribués Composants en mémoire remplacés par des implémentations persistantes et répliquées pour environnements multi-instances JpaDatabaseTaskStore et JpaDatabasePushNotificationConfigStore permettent la persistance des tâches et configurations en base PostgreSQL ReplicatedQueueManager assure la réplication des événements entre instances A2A Agent via Kafka et MicroProfile Reactive Messaging Exemple complet de déploiement Kubernetes avec Kind incluant PostgreSQL, Kafka via Strimzi, et load balancing entre pods Démonstration pratique montrant que les messages peuvent être traités par différents pods tout en maintenant la cohérence des tâches Architecture inspirée du SDK Python A2A, permettant la gestion de tâches asynchrones longues durée en environnement distribué Quarkus 3.29 sort avec des backends de cache multiples et support du débogueur Qute https://quarkus.io/blog/quarkus-3-29-released/ Possibilité d'utiliser plusieurs backends de cache simultanément dans une même application Chaque cache peut être associé à un backend spécifique (par exemple Caffeine et Redis ou Infinispan) Support du Debug Adapter Protocol (DAP) pour déboguer les templates Qute directement dans l'IDE et dans la version 3.28 Configuration programmatique de la protection CSRF via une API fluent Possibilité de restreindre les filtres OIDC à des flux d'authentification spécifiques avec annotations Support des dashboards Grafana personnalisés via fichiers JSON dans META-INF/grafana/ Extension Liquibase MongoDB supporte désormais plusieurs clients simultanés Amélioration significative des performances de build avec réduction des allocations mémoire Parallélisation de tâches comme la génération de proxies Hibernate ORM et la construction des Jar Et l'utilisation des fichiers .proto est plus simple dans Quarkus avbec Quarkus gRPC Zero https://quarkus.io/blog/grpc-zero/ c'est toujours galere des fichiers .proto car les generateurs demandent des executables natifs maintenant ils sont bundlés dans la JVM et vous n'avez rien a configurer cela utilise Caffeine pour faire tourner cela en WASM dans la JVM Spring AI 1.1 est presque là https://spring.io/b
LCC 331 - Le retour des jackson 5
Dans cet épisode, Arnaud et Guillaume discutent des dernières évolutions dans le monde de la programmation, notamment les nouveautés de Java 25, JUnit 6, et Jackson 3. Ils abordent également les récents développements en IA, les problèmes rencontrés dans le cloud, et l'état actuel de React et du web. Dans cette conversation, les intervenants abordent divers sujets liés à la technologie, notamment les spécifications de Wasteme, l'utilisation des UUID dans les bases de données, l'approche RAG en intelligence artificielle, les outils MCP, et la création d'images avec Nano Banana. Ils discutent également des complexités du format YAML, des récents dramas dans la communauté Ruby, de l'importance d'une bonne documentation, des politiques de retour au bureau, et des avancées de Cloud Code. Enfin, ils évoquent l'initiative de cafés IA pour démystifier l'intelligence artificielle. Enregistré le 24 octobre 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-331.mp3 ou en vidéo sur YouTube. News Langages GraalVM se détache du release train de Java https://blogs.oracle.com/java/post/detaching-graalvm-from-the-java-ecosystem-train Un article de Loic Mathieu sur Java 25 et ses nouvelles fonctionalités https://www.loicmathieu.fr/wordpress/informatique/java-25-whats-new/ Sortie de Groovy 5.0 ! https://groovy-lang.org/releasenotes/groovy-5.0.html Groovy 5: Évolution des versions précédentes, nouvelles fonctionnalités et simplification du code. Compatibilité JDK étendue: Full support JDK 11-25, fonctionnalités JDK 17-25 disponibles sur les JDK plus anciens. Extension majeure des méthodes: Plus de 350 méthodes améliorées, opérations sur tableaux jusqu'à 10x plus rapides, itérateurs paresseux. Améliorations des transformations AST: Nouveau @OperatorRename, génération automatique de @NamedParam pour @MapConstructor et copyWith. REPL (groovysh) modernisé: Basé sur JLine 3, support multi-plateforme, coloration syntaxique, historique et complétion. Meilleure interopérabilité Java: Pattern Matching pour instanceof, support JEP-512 (fichiers source compacts et méthodes main d'instance). Standards web modernes: Support Jakarta EE (par défaut) et Javax EE (héritage) pour la création de contenu web. Vérification de type améliorée: Contrôle des chaînes de format plus robuste que Java. Additions au langage: Génération d'itérateurs infinis, variables d'index dans les boucles, opérateur d'implication logique ==>. Améliorations diverses: Import automatique de java.time.**, var avec multi-assignation, groupes de capture nommés pour regex (=~), méthodes utilitaires de graphiques à barres ASCII. Changements impactants: Plusieurs modifications peuvent nécessiter une adaptation du code existant (visibilité, gestion des imports, comportement de certaines méthodes). **Exigences JDK*: Construction avec JDK17+, exécution avec JDK11+. Librairies Intégration de LangChain4j dans ADK pour Java, permettant aux développeurs d'utiliser n'importe quel LLM avec leurs agents ADK https://developers.googleblog.com/en/adk-for-java-opening-up-to-third-party-language-models-via-langchain4j-integration/ ADK pour Java 0.2.0 : Nouvelle version du kit de développement d'agents de Google. Intégration LangChain4j : Ouvre ADK à des modèles de langage tiers. Plus de choix de LLM : En plus de Gemini et Claude, accès aux modèles d'OpenAI, Anthropic, Mistral, etc. Modèles locaux supportés : Utilisation possible de modèles via Ollama ou Docker Model Runner. Améliorations des outils : Création d'outils à partir d'instances d'objets, meilleur support asynchrone et contrôle des boucles d'exécution. Logique et mémoire avancées : Ajout de callbacks en chaîne et de nouvelles options pour la gestion de la mémoire et le RAG (Retrieval-Augmented Generation). Build simplifié : Introduction d'un POM parent et du Maven Wrapper pour un processus de construction cohérent. JUnit 6 est sorti https://docs.junit.org/6.0.0/release-notes/ :sparkles: Java 17 and Kotlin 2.2 baseline :sunrise_over_mountains: JSpecify nullability annotations :airplane_departure: Integrated JFR support :suspension_railway: Kotlin suspend function support :octagonal_sign: Support for cancelling test execution :broom: Removal of deprecated APIs JGraphlet, une librairie Java sans dépendances pour créer des graphes de tâches à exécuter https://shaaf.dev/post/2025-08-25-think-in-graphs-not-just-chains-jgraphlet-for-taskpipelines/ JGraphlet: Bibliothèque Java légère (zéro-dépendance) pour construire des pipelines de tâches. Principes clés: Simplicité, basée sur un modèle d'exécution de graphe. Tâches: Chaque tâche a une entrée/sortie, peut être asynchrone (Task) ou synchrone (SyncTask). Pipeline: Un TaskPipeline construit et exécute le graphe, gère les I/O. Modèle Graph-First: Le flux de travail est un Graphe Orienté Acyclique (DAG). Définition des tâches comme des nœuds, des connexions comme des arêtes. Support naturel des motifs fan-out et fan-in. API simple: addTask("id", task), connect("fromId", "toId"). Fan-in: Un
LCC 330 - Nano banana l'AI de Julia
Katia, Emmanuel et Guillaume discutent Java, Kotlin, Quarkus, Hibernate, Spring Boot 4, intelligence artificielle (modèles Nano Banana, VO3, frameworks agentiques, embedding). On discute les vulnerabilités OWASP pour les LLMs, les personalités de codage des différents modèles, Podman vs Docker, comment moderniser des projets legacy. Mais surtout on a passé du temps sur les présentations de Luc Julia et les différents contre points qui ont fait le buzz sur les réseaux. Enregistré le 12 septembre 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-330.mp3 ou en vidéo sur YouTube. News Langages Dans cette vidéo, José détaille les nouveautés de Java entre Java 21 et 25 https://inside.java/2025/08/31/roadto25-java-language/ Aperçu des nouveautés du JDK 25 : Introduction des nouvelles fonctionnalités du langage Java et des changements à venir [00:02]. Programmation orientée données et Pattern Matching [00:43] : Évolution du "pattern matching" pour la déconstruction des "records" [01:22]. Utilisation des "sealed types" dans les expressions switch pour améliorer la lisibilité et la robustesse du code [01:47]. Introduction des "unnamed patterns" (_) pour indiquer qu'une variable n'est pas utilisée [04:47]. Support des types primitifs dans instanceof et switch (en preview) [14:02]. Conception d'applications Java [00:52] : Simplification de la méthode main [21:31]. Exécution directe des fichiers .java sans compilation explicite [22:46]. Amélioration des mécanismes d'importation [23:41]. Utilisation de la syntaxe Markdown dans la Javadoc [27:46]. Immuabilité et valeurs nulles [01:08] : Problème d'observation de champs final à null pendant la construction d'un objet [28:44]. JEP 513 pour contrôler l'appel à super() et restreindre l'usage de this dans les constructeurs [33:29]. JDK 25 sort le 16 septembre https://openjdk.org/projects/jdk/25/ Scoped Values (JEP 505) - alternative plus efficace aux ThreadLocal pour partager des données immutables entre threads Structured Concurrency (JEP 506) - traiter des groupes de tâches concurrentes comme une seule unité de travail, simplifiant la gestion des threads Compact Object Headers (JEP 519) - Fonctionnalité finale qui réduit de 50% la taille des en-têtes d'objets (de 128 à 64 bits), économisant jusqu'à 22% de mémoire heap Flexible Constructor Bodies (JEP 513) - Relaxation des restrictions sur les constructeurs, permettant du code avant l'appel super() ou this() Module Import Declarations (JEP 511) - Import simplifié permettant d'importer tous les éléments publics d'un module en une seule déclaration Compact Source Files (JEP 512) - Simplification des programmes Java basiques avec des méthodes main d'instance sans classe wrapper obligatoire Primitive Types in Patterns (JEP 455) - Troisième preview étendant le pattern matching et instanceof aux types primitifs dans switch et instanceof Generational Shenandoah (JEP 521) - Le garbage collector Shenandoah passe en mode générationnel pour de meilleures performances JFR Method Timing & Tracing (JEP 520) - Nouvel outillage de profilage pour mesurer le temps d'exécution et tracer les appels de méthodes Key Derivation API (JEP 510) - API finale pour les fonctions de dérivation de clés cryptographiques, remplaçant les implémentations tierces Améliorations du traitement des annotations dans Kotlin 2.2 https://blog.jetbrains.com/idea/2025/09/improved-annotation-handling-in-kotlin-2-2-less-boilerplate-fewer-surprises/ Avant Kotlin 2.2, les annotations sur les paramètres de constructeur n'étaient appliquées qu'au paramètre, pas à la propriété ou au champ Cela causait des bugs subtils avec Spring et JPA où la validation ne fonctionnait qu'à la création d'objet, pas lors des mises à jour La solution précédente nécessitait d'utiliser explicitement @field: pour chaque annotation, créant du code verbeux Kotlin 2.2 introduit un nouveau comportement par défaut qui applique les annotations aux paramètres ET aux propriétés/champs automatiquement Le code devient plus propre sans avoir besoin de syntaxe @field: répétitive Pour l'activer, ajouter -Xannotation-default-target=param-property dans les options du compilateur Gradle IntelliJ IDEA propose un quick-fix pour activer ce comportement à l'échelle du projet Cette amélioration rend l'intégration Kotlin plus fluide avec les frameworks majeurs comme Spring et JPA Le comportement peut être configuré pour garder l'ancien mode ou activer un mode transitoire avec avertissements Cette mise à jour fait partie d'une initiative plus large pour améliorer l'expérience Kotlin + Spring Librairies Sortie de Quarkus 3.26 avec mises à jour d'Hibernate et autres fonctionnalités - https://quarkus.io/blog/quarkus-3-26-released/ mettez à jour vers la 3.26.x car il y a eu une regression vert.x Jalon important vers la version LTS 3.27 prévue fin septembre, basée sur cette version Mise à jour vers Hibernate ORM 7.1, Hibernate Search 8.1 et Hibernate Reactive 3.1 Support des unités de persistance nommées et sources de do
LCC 329 - L'IA, ce super stagiaire qui nous fait travailler plus
Arnaud et Guillaume explore l'évolution de l'écosystème Java avec Java 25, Spring Boot et Quarkus, ainsi que les dernières tendances en intelligence artificielle avec les nouveaux modèles comme Grok 4 et Claude Code. Les animateurs font également le point sur l'infrastructure cloud, les défis MCP et CLI, tout en discutant de l'impact de l'IA sur la productivité des développeurs et la gestion de la dette technique. Enregistré le 8 août 2025 Téléchargement de l'épisode LesCastCodeurs-Episode–329.mp3 ou en vidéo sur YouTube. News Langages Java 25: JEP 515 : Profilage de méthode en avance (Ahead-of-Time) https://openjdk.org/jeps/515 Le JEP 515 a pour but d'améliorer le temps de démarrage et de chauffe des applications Java. L'idée est de collecter les profils d'exécution des méthodes lors d'une exécution antérieure, puis de les rendre immédiatement disponibles au démarrage de la machine virtuelle. Cela permet au compilateur JIT de générer du code natif dès le début, sans avoir à attendre que l'application soit en cours d'exécution. Ce changement ne nécessite aucune modification du code des applications, des bibliothèques ou des frameworks. L'intégration se fait via les commandes de création de cache AOT existantes. Voir aussi https://openjdk.org/jeps/483 et https://openjdk.org/jeps/514 Java 25: JEP 518 : Échantillonnage coopératif JFR https://openjdk.org/jeps/518 Le JEP 518 a pour objectif d'améliorer la stabilité et l'évolutivité de la fonction JDK Flight Recorder (JFR) pour le profilage d'exécution. Le mécanisme d'échantillonnage des piles d'appels de threads Java est retravaillé pour s'exécuter uniquement à des safepoints, ce qui réduit les risques d'instabilité. Le nouveau modèle permet un parcours de pile plus sûr, notamment avec le garbage collector ZGC, et un échantillonnage plus efficace qui prend en charge le parcours de pile concurrent. Le JEP ajoute un nouvel événement, SafepointLatency, qui enregistre le temps nécessaire à un thread pour atteindre un safepoint. L'approche rend le processus d'échantillonnage plus léger et plus rapide, car le travail de création de traces de pile est délégué au thread cible lui-même. Librairies Spring Boot 4 M1 https://spring.io/blog/2025/07/24/spring-boot–4–0–0-M1-available-now Spring Boot 4.0.0-M1 met à jour de nombreuses dépendances internes et externes pour améliorer la stabilité et la compatibilité. Les types annotés avec @ConfigurationProperties peuvent maintenant référencer des types situés dans des modules externes grâce à @ConfigurationPropertiesSource. Le support de l'information sur la validité des certificats SSL a été simplifié, supprimant l'état WILL_EXPIRE_SOON au profit de VALID. L'auto-configuration des métriques Micrometer supporte désormais l'annotation @MeterTag sur les méthodes annotées @Counted et @Timed, avec évaluation via SpEL. Le support de @ServiceConnection pour MongoDB inclut désormais l'intégration avec MongoDBAtlasLocalContainer de Testcontainers. Certaines fonctionnalités et API ont été dépréciées, avec des recommandations pour migrer les points de terminaison personnalisés vers les versions Spring Boot 2. Les versions milestones et release candidates sont maintenant publiées sur Maven Central, en plus du repository Spring traditionnel. Un guide de migration a été publié pour faciliter la transition depuis Spring Boot 3.5 vers la version 4.0.0-M1. Passage de Spring Boot à Quarkus : retour d'expérience https://blog.stackademic.com/we-switched-from-spring-boot-to-quarkus-heres-the-ugly-truth-c8a91c2b8c53 Une équipe a migré une application Java de Spring Boot vers Quarkus pour gagner en performances et réduire la consommation mémoire. L'objectif était aussi d'optimiser l'application pour le cloud natif. La migration a été plus complexe que prévu, notamment à cause de l'incompatibilité avec certaines bibliothèques et d'un écosystème Quarkus moins mature. Il a fallu revoir du code et abandonner certaines fonctionnalités spécifiques à Spring Boot. Les gains en performances et en mémoire sont réels, mais la migration demande un vrai effort d'adaptation. La communauté Quarkus progresse, mais le support reste limité comparé à Spring Boot. Conclusion : Quarkus est intéressant pour les nouveaux projets ou ceux prêts à être réécrits, mais la migration d'un projet existant est un vrai défi. LangChain4j 1.2.0 : Nouvelles fonctionnalités et améliorations https://github.com/langchain4j/langchain4j/releases/tag/1.2.0 Modules stables : Les modules langchain4j-anthropic, langchain4j-azure-open-ai, langchain4j-bedrock, langchain4j-google-ai-gemini, langchain4j-mistral-ai et langchain4j-ollama sont désormais en version stable 1.2.0. Modules expérimentaux : La plupart des autres modules de LangChain4j sont en version 1.2.0-beta8 et restent expérimentaux/instables. BOM mis à jour : Le langchain4j-bom a été mis à jour en version 1.2.0, incluant les dernières versions de tous les modules. Principales améliorations : Support du raisonnement/pensée dans les modèl
LCC 328 - Expert généraliste cherche Virtual Thread
Dans cet épisode, Emmanuel et Antonio discutent de divers sujets liés au développement: Applets (et oui), app iOS développées sous Linux, le protocole A2A, l'accessibilité, les assistants de code AI en ligne de commande (vous n'y échapperez pas)… Mais aussi des approches méthodologiques et architecturales comme l'architecture hexagonale, les tech radars, l'expert généraliste et bien d'autres choses encore. Enregistré le 11 juillet 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-328.mp3 ou en vidéo sur YouTube. News Langages Les Applets Java c'est terminé pour de bon… enfin, bientot: https://openjdk.org/jeps/504 Les navigateurs web ne supportent plus les applets. L'API Applet et l'outil appletviewer ont été dépréciés dans JDK 9 (2017). L'outil appletviewer a été supprimé dans JDK 11 (2018). Depuis, impossible d'exécuter des applets avec le JDK. L'API Applet a été marquée pour suppression dans JDK 17 (2021). Le Security Manager, essentiel pour exécuter des applets de façon sécurisée, a été désactivé définitivement dans JDK 24 (2025). Librairies Quarkus 3.24 avec la notion d'extensions qui peuvent fournir des capacités à des assistants https://quarkus.io/blog/quarkus-3-24-released/ les assistants typiquement IA, ont accès a des capacités des extensions Par exemple générer un client à partir d'openAPI Offrir un accès à la,base de données en dev via le schéma. L'intégration d'Hibernate 7 dans Quarkus https://quarkus.io/blog/hibernate7-on-quarkus/ Jakarta data api restriction nouvelle Injection du SchemaManager Sortie de Micronaut 4.9 https://micronaut.io/2025/06/30/micronaut-framework-4-9-0-released/ Core : Mise à jour vers Netty 4.2.2 (attention, peut affecter les perfs). Nouveau mode expérimental "Event loop Carrier" pour exécuter des virtual threads sur l'event loop Netty. Nouvelle annotation @ClassImport pour traiter des classes déjà compilées. Arrivée des @Mixin (Java uniquement) pour modifier les métadonnées d'annotations Micronaut sans altérer les classes originales. HTTP/3 : Changement de dépendance pour le support expérimental. Graceful Shutdown : Nouvelle API pour un arrêt en douceur des applications. Cache Control : API fluente pour construire facilement l'en-tête HTTP Cache-Control. KSP 2 : Support de KSP 2 (à partir de 2.0.2) et testé avec Kotlin 2. Jakarta Data : Implémentation de la spécification Jakarta Data 1.0. gRPC : Support du JSON pour envoyer des messages sérialisés via un POST HTTP. ProjectGen : Nouveau module expérimental pour générer des projets JVM (Gradle ou Maven) via une API. Un super article sur experimenter avec les event loops reactives dans les virtualthreads https://micronaut.io/2025/06/30/transitioning-to-virtual-threads-using-the-micronaut-loom-carrier/ Malheureusement cela demander le hacker le JDK C'est un article de micronaut mais le travail a ete collaboratif avec les equipes de Red Hat OpenJDK, Red Hat perf et de Quarkus et Vert.x Pour les curieux c'est un bon article Ubuntu offre un outil de creation de container pour Spring notamment https://canonical.com/blog/spring-boot-containers-made-easy creer des images OCI pour les applications Spring Boot basées sur Ubuntu base images bien sur utilise jlink pour reduire la taille pas sur de voir le gros avantage vs d'autres solutions plus portables d'ailleurs Canonical entre dans la danse des builds d'openjdk Le SDK Java de A2A contribué par Red Hat est sorti https://quarkus.io/blog/a2a-project-launches-java-sdk/ A2A est un protocole initié par Google et donne à la fondation Linux Il permet à des agents de se décrire et d'interagir entre eux Agent cards, skills, tâche, contexte A2A complémente MCP Red hat a implémenté le SDK Java avec le conseil des équipes Google En quelques annotations et classes on a un agent card, un client A2A et un serveur avec l'échange de messages via le protocole A2A Comment configurer mockito sans warning après java 21 https://rieckpil.de/how-to-configure-mockito-agent-for-java-21-without-warning/ les agents chargés dynamiquement sont déconseillés et seront interdis bientôt Un des usages est mockito via bytebuddy L'avantage est que la,configuration était transparente Mais bon sécurité oblige c'est fini. Donc l'article décrit comment configurer maven gradle pour mettre l'agent au démarrage des tests Et aussi comment configurer cela dans IntelliJ idea. Moins simple malheureusement Web Des raisons "égoïstes" de rendre les UIs plus accessibles https://nolanlawson.com/2025/06/16/selfish-reasons-for-building-accessible-uis/ Raisons égoïstes : Des avantages personnels pour les développeurs de créer des interfaces utilisateurs (UI) accessibles, au-delà des arguments moraux. Débogage facilité : Une interface accessible, avec une structure sémantique claire, est plus facile à déboguer qu'un code désordonné (la « soupe de div »). Noms standardisés : L'accessibilité fournit un vocabulaire standard (par exemple, les directives WAI-ARIA) pour nommer les composants d'interface, ce qui aide à la clarté et à la
LCC 327 - Mon ami de 30 ans
Dans cet épisode, c'est le retour de Katia et d'Antonio. Les Cast Codeurs explorent WebAssembly 2.0, les 30 ans de Java, l'interopérabilité Swift-Java et les dernières nouveautés Kotlin. Ils plongent dans l'évolution de l'IA avec Claude 4 et GPT-4.1, débattent de la conscience artificielle et partagent leurs retours d'expérience sur l'intégration de l'IA dans le développement. Entre virtualisation, défis d'infrastructure et enjeux de sécurité open source, une discussion riche en insights techniques et pratiques. Enregistré le 13 juin 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-327.mp3 ou en vidéo sur YouTube. News Langages Wasm 2.0 enfin officialisé ! https://webassembly.org/news/2025-03-20-wasm-2.0/ La spécification Wasm 2.0 est officiellement sortie en décembre dernier. Le consensus sur la spécification avait été atteint plus tôt, en 2022. Les implémentations majeures supportent Wasm 2.0 depuis un certain temps. Le processus W3C a pris du temps pour atteindre le statut de "Recommandation Candidate" pour des raisons non techniques. Les futures versions de Wasm adopteront un modèle "evergreen" où la "Recommandation Candidate" sera mise à jour en place. La dernière version de la spécification est considérée comme le standard actuel (Candidate Recommendation Draft). La version la plus à jour est disponible sur la page GitHub (GitHub page). Wasm 2.0 inclut les nouveautés suivantes : Instructions vectorielles pour le SIMD 128-bit. Instructions de manipulation de mémoire en bloc pour des copies et initialisations plus rapides. Résultats multiples pour les instructions, blocs et fonctions. Types références pour les références à des fonctions ou objets externes. Conversions non-piégeantes de flottant à entier. Instructions d'extension de signe pour les entiers signés. Wasm 2.0 est entièrement rétrocompatible avec Wasm 1.0. Paul Sandoz annonce que le JDK intègrera bientôt une API minimaliste pour lire et écrire du JSON https://mail.openjdk.org/pipermail/core-libs-dev/2025-May/145905.html Java a 30 ans, c'était quoi les points bluffants au début ? https://blog.jetbrains.com/idea/2025/05/do-you-really-know-java/ nom de code Oak Mais le trademark était pris Write Once Run Anywhere Garbage Collector Automatique multi threading au coeur de la palteforme meme si Java est passé par les green threads pendant un temps modèle de sécurité: sandbox applets, security manager, bytecode verifier, classloader Des progrès dans l'interopérabilité Swift / Java mentionnés à la conférence Apple WWDC 2025 https://www.youtube.com/watch?v=QSHO-GUGidA Interopérabilité Swift-Java : Utiliser Swift dans des apps Java et vice-versa. Historique : L'interopérabilité Swift existait déjà avec C et C++. Méthodes : Deux directions d'interopérabilité : Java depuis Swift et Swift depuis Java. JNI : JNI est l'API Java pour le code natif, mais elle est verbeuse. Swift-Java : Un projet pour une interaction Swift-Java plus flexible, sûre et performante. Exemples pratiques : Utiliser des bibliothèques Java depuis Swift et rendre des bibliothèques Swift disponibles pour Java. Gestion mémoire : Swift-Java utilise la nouvelle API FFM de Java pour gérer la mémoire des objets Swift. Open Source : Le projet Swift-Java est open source et invite aux contributions. KotlinConf le retour https://www.sfeir.dev/tendances/kotlinconf25-quelles-sont-les-annonces-a-retenir/ par Adelin de Sfeir "1 developeur sur 10" utilise Kotlin Kotlin 2.2 en RC $$ multi dollar interpolation pour eviter les sur interpolations non local break / continue (changement dans la conssitance de Kotlin guards sur le pattern matching D'autres features annoncées alignement des versions de l'ecosysteme sur kotlin jvm par defaut un nouvel outil de build Amper beaucoup d'annonces autour de l'IA Koog, framework agentique de maniere declarative nouvelle version du LLM de JetBrains: Mellum (focalisé sur le code) Kotlin et Compose multiplateforme (stable en iOS) Hot Reload dans compose en alpha partenariat strategque avec Spring pour bien integrer kotlin dans spring Librairies Sortie d'une version Java de ADK, le framework d'agents IA lancé par Google https://glaforge.dev/posts/2025/05/20/writing-java-ai-agents-with-adk-for-java-getting-started/ Guillaume a travaillé sur le lancement de ce framework ! (améliorations de l'API, code d'exemple, doc…) Comment déployer un serveur MCP en Java, grâce à Quarkus, et le déployer sur Google Cloud Run https://glaforge.dev/posts/2025/06/09/building-an-mcp-server-with-quarkus-and-deploying-on-google-cloud-run/ Même Guillaume se met à faire du Quarkus ! Utilisation du support MCP développé par l'équipe Quarkus. C'est facile, suffit d'annoter une méthode avec @Tool et ses arguments avec @ToolArg et c'est parti ! L'outil MCP inspector est très pratique pour inspecter manuellement le fonctionnement de ses serveurs MCP Déployer sur Cloud Run est facile grâce aux Dockerfiles fournis par Quarkus En bonus, Guillaume montre comment configuré un serveur MCP comme un o
LCC 326 - Interview assistants de code IA avec Philippe Charrière et Kevin Aubry
Dans cet épisode, nous explorons l'univers des assistants de code AI. Comment ces outils transforment-ils notre façon de coder ? Quels sont leurs atouts et leurs limites ? Nos invités Philippe Charrière et Kevin Aubry nous éclairent sur ces technologies qui bouleversent les pratiques des développeurs. Enregistré le 8 avril 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-326.mp3 ou en vidéo sur YouTube. Interview Ta vie ton oeuvre Peux-tu te présenter brièvement à nos auditeurs? Quelle est ton expérience personnelle avec ces outils? Tu l'utilises chez ton employeur ou juste pour tes projets personnels? Qu'est-ce qui t'a attiré dans ce domaine en particulier? Introduction à la techno Qu'est-ce qu'un assistant de code AI exactement? Comment le définirais-tu? Quels sont les principaux assistants de code disponibles aujourd'hui sur le marché? Quand et pourquoi ces outils ont-ils commencé à émerger? Quelle est la différence entre un assistant de code AI et un simple outil de complétion de code? La techno en concepts Quels sont les fondements technologiques des assistants de code actuels? Quels sont les différences de flow entre un outil dédié genre CursorAI, GitHub Copilot, un chat LLM générique de type Claude ou un outil à la Devoxx Genie? Il y a aussi des outils de terminal, en ligne de commande ou en desktop dédié genre Goose de Block - comment ceux-ci se positionnent-ils? Quelles sont les différentes approches d'intégration dans les environnements de développement? Comment se positionnent les assistants par rapport à d'autres outils d'aide au développement? Quels sont les modèles économiques actuels (open source vs propriétaire, SaaS vs on-premise)? Qu'en est-il de la confidentialité du code analysé par ces outils? Comment on l'utilise en pratique pour un dev Comment un développeur Java typique intègre-t-il un assistant de code dans son workflow quotidien? Quels sont les assistants les plus adaptés à l'écosystème Java spécifiquement? Vous utilisez plutôt VSCode? Ça marche bien dans IntelliJ IDEA? Quelles sont les bonnes pratiques pour formuler des requêtes efficaces à un assistant? Quelles tâches répétitives ou complexes sont particulièrement bien gérées par ces assistants? Quels sont les tâches aujourd'hui où l'assistant de code excelle: squelette de code initial, ajout de fonctionnalité, écrire les tests, corriger un bug, la sécurité, grosse migration de version ou de framework? Comment évaluer la qualité du code généré? Quelles vérifications faire systématiquement? Quelle est ton expérience des hallucinations? Des trucs rigolos à raconter? Comment évoluent les pratiques de pair programming avec ces outils? C'est quoi ton budget code assistance / LLM? Sous le capot Pas sûr de pouvoir faire cette partie sous le capot si on a des interview orienté utilisateur. Comment ces assistants sont-ils entraînés spécifiquement pour comprendre le code? Quelle est la différence entre le fine-tuning pour le code et pour le langage naturel? Comment fonctionnent les techniques de retrieval augmentation pour le contexte du projet? Comment les assistants gèrent-ils les dépendances et la structure des projets complexes? Quels sont les défis techniques majeurs pour analyser du code Java avec ses spécificités? Comment les modèles réussissent-ils (ou échouent-ils) à comprendre la sémantique du code? Quelles sont les limites actuelles des modèles de langage pour la génération de code? Qu'en est-il de la consommation de ressources et de l'impact environnemental? La communauté, le futur Comment la communauté Java a-t-elle accueilli ces outils? C'est pour quel type de développeur? Junior, intermédiaire, expert? Quels avantages pour chaque? Quel impact ces assistants ont-ils sur l'apprentissage de la programmation? Comment voyez-vous l'évolution des compétences requises pour les développeurs? Quelles sont les prochaines frontières pour les assistants de code? Quelles fonctionnalités manquent encore à l'appel? Comment les assistants vont-ils évoluer dans les 2-3 prochaines années? Ces outils vont-ils transformer radicalement la profession de développeur? Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 325 - Trier le hachis des concurrents
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 gest
LCC 324 - Devoxx France 2025 en live
Arnaud, Antonio, Guillaume et Emmanuel font la clôture de Devoxx France dans la fumée et la bonne humeur avec l'aide des organisateurs de Devoxx et surtout les inimitables polos rouges ! Enregistré le 25 avril 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-324.mp3 ou en vidéo sur YouTube. News Les news c'est Devoxx France bien sûr. Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 323 - L'accessibilité des messageries chiffrées
Dans cet épisode, Emmanuel et Arnaud discutent des dernières nouvelles du dev, en mettant l'accent sur Java, l'intelligence artificielle, et les nouvelles fonctionnalités des versions JDK 24 et 25. Ils abordent également des sujets comme Quarkus, l'accessibilité des sites web, et l'impact de l'IA sur le trafic web. Cette conversation aborde les approches pour les devs en matière d'intelligence artificielle et de développement logiciel. On y discute notamment des défis et des bénéfices de l'utilisation de l'IA. Enfin, ils partagent leurs réflexions sur l'importance des conférences pour le développement professionnel. Enregistré le 14 mars 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-323.mp3 ou en vidéo sur YouTube. News Langages Java Metal https://www.youtube.com/watch?v=yup8gIXxWDU Peut-être qu'on la déjà partagé ? Article d'opinion Java coming for AI https://thenewstack.io/2025-is-the-last-year-of-python-dominance-in-ai-java-comin/ 2025 pourrait être la dernière année où Python domine l'IA. Java devient un concurrent sérieux dans le domaine. En 2024, Python était toujours en tête, Java restait fort en entreprise, et Rust gagnait en popularité. Java est de plus en plus utilisé pour l'AI remettant en cause la suprématie de Python. article vient de javaistes la domination de python est cluturelle et plus technique (enfin pour les ML lib c'est encore technique) projets paname et babylon changent la donne JavaML est populaire L'almanach java sur les versions https://javaalmanac.io/ montre kes APIs et les diff entre versions puis les notes ou la spec java Les nouvelles de JDK 24 et du futur 25 https://www.infoq.com/news/2025/02/java-24-so-far/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global JDK 24 a atteint sa première phase de release candidate et sera officiellement publié le 18 mars 2025. 24 nouvelles fonctionnalités (JEPs) réparties en 5 catégories : Core Java Library (7), Java Language Specification (4), Security Library (4), HotSpot (8) et Java Tools (1). Project Amber : JEP 495 "Simple Source Files and Instance Main Methods" en quatrième preview, visant à simplifier l'écriture des premiers programmes Java pour les débutants. Project Loom : JEP 487 "Scoped Values" en quatrième preview, permettant le partage de données immuables entre threads, particulièrement utile avec les virtual threads. Project Panama : JEP 489 "Vector API" en neuvième incubation, continuera d'incuber jusqu'à ce que les fonctionnalités nécessaires de Project Valhalla soient disponibles. Project Leyden : JEP 483 "Ahead-of-Time Class Loading & Linking" pour améliorer le temps de démarrage en rendant les classes d'une application instantanément disponibles au démarrage de la JVM. Sécurité quantique : Deux JEPs (496 et 497) introduisant des algorithmes résistants aux ordinateurs quantiques pour la cryptographie, basés sur les réseaux modulaires. Sécurité renforcée : JEP 486 propose de désactiver définitivement le Security Manager, tandis que JEP 478 introduit une API de dérivation de clés. Optimisations HotSpot : JEP 450 "Compact Object Headers" (expérimental) pour réduire la taille des en-têtes d'objets de 96-128 bits à 64 bits sur les architectures 64 bits. (a ne aps utiliser en prod!) Améliorations GC : JEP 404 "Generational Shenandoah" (expérimental) introduit un mode générationnel pour le Garbage Collector Shenandoah, tout en gardant le non generationel. Évolution des ports : Windows 32-bit x86 ca sent le sapin JEP 502 dans JDK 25 : Introduction des "Stable Values" (preview), anciennement "Computed Constants", offrant les avantages des champs final avec plus de flexibilité pour l'initialisation. Points Supplémentaires sur JDK 25 Date de sortie : JDK 25 est prévu pour septembre 2025 et représentera la prochaine version LTS (Long-Term Support) après JDK 21. Finalisation de l'on-ramp : Gavin Bierman a annoncé son intention de finaliser la fonction "Simple Source Files" dans JDK 25, après quatre previews successives. CDS Object Streaming : Le JEP Draft 8326035 propose d'ajouter un mécanisme d'archivage d'objets pour Class-Data Sharing (CDS) dans ZGC, avec un format d'archivage et un chargeur unifiés. HTTP/3 supporté dans HttpClient Un article sur l'approche de Go pour éviter les attaques par chemin de fichier https://go.dev/blog/osroot Librairies Quarkus 3.19 es sorti https://quarkus.io/blog/quarkus-3-19-1-released/ UBI 9 par defaut pour les containers En plus de AppCDS, support tu cache AOT (JEP 483) pour demarrer encore plus rapidement Preuve de possession dans OAuth tokers 2 Mario Fusco sur les patterns d'agents en Quarkus https://quarkus.io/blog/agentic-ai-with-quarkus/ et https://quarkus.io/blog/agentic-ai-with-quarkus-p2/ premier article sur les patterns de workflow chainer, paralleliser ou router avec des exemples de code qui tournent les agents a proprement parler (le LLM qui decide du workflow) les agents ont des toolbox que le LLM peut decided d'invoquer Le code va dans les details et perme
LCC 322 - Maaaaveeeeen 4 !
Arnaud et Emmanuel discutent des nouvelles de ce mois. On y parle intégrité de JVM, fetch size de JDBC, MCP, de prompt engineering, de DeepSeek bien sûr mais aussi de Maven 4 et des proxy de répository Maven. Et d'autres choses encore, bonne lecture. Enregistré le 7 février 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-322.mp3 ou en vidéo sur YouTube. News Langages Les evolutions de la JVM pour augmenter l'intégrité https://inside.java/2025/01/03/evolving-default-integrity/ un article sur les raisons pour lesquelles les editeurs de frameworks et les utilisateurs s'arrachent les cheveux et vont continuer garantir l'integrite du code et des données en enlevant des APIs existantes historiquemnt agents dynamiques, setAccessible, Unsafe, JNI Article expliques les risques percus par les mainteneurs de la JVM Franchement c'est un peu leg sur les causes l'article, auto propagande JavaScript Temporal, enfin une API propre et moderne pour gérer les dates en JS https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/ JavaScript Temporal est un nouvel objet conçu pour remplacer l'objet Date, qui présente des défauts. Il résout des problèmes tels que le manque de prise en charge des fuseaux horaires et la mutabilité. Temporal introduit des concepts tels que les instants, les heures civiles et les durées. Il fournit des classes pour gérer diverses représentations de date/heure, y compris celles qui tiennent compte du fuseau horaire et celles qui n'en tiennent pas compte. Temporal simplifie l'utilisation de différents calendriers (par exemple, chinois, hébreu). Il comprend des méthodes pour les comparaisons, les conversions et le formatage des dates et des heures. La prise en charge par les navigateurs est expérimentale, Firefox Nightly ayant l'implémentation la plus aboutie. Un polyfill est disponible pour essayer Temporal dans n'importe quel navigateur. Librairies Un article sur les fetch size du JDBC et les impacts sur vos applications https://in.relation.to/2025/01/24/jdbc-fetch-size/ qui connait la valeur fetch size par default de son driver? en fonction de vos use cases, ca peut etre devastateur exemple d'une appli qui retourne 12 lignes et un fetch size de oracle a 10, 2 a/r pour rien et si c'est 50 lignres retournées la base de donnée est le facteur limitant, pas Java donc monter sont fetch size est avantageux, on utilise la memoire de Java pour eviter la latence Quarkus annouce les MCP servers project pour collecter les servier MCP en Java https://quarkus.io/blog/introducing-mcp-servers/ MCP d'Anthropic introspecteur de bases JDBC lecteur de filke system Dessine en Java FX demarrables facilement avec jbang et testes avec claude desktop, goose et mcp-cli permet d'utliser le pouvoir des librarires Java de votre IA d'ailleurs Spring a la version 0.6 de leur support MCP https://spring.io/blog/2025/01/23/spring-ai-mcp-0 Infrastructure Apache Flink sur Kibernetes https://www.decodable.co/blog/get-running-with-apache-flink-on-kubernetes-2 un article tres complet ejn deux parties sur l'installation de Flink sur Kubernetes installation, setup mais aussi le checkpointing, la HA, l'observablité Data et Intelligence Artificielle 10 techniques de prompt engineering https://medium.com/google-cloud/10-prompt-engineering-techniques-every-beginner-should-know-bf6c195916c7 Si vous voulez aller plus loin, l'article référence un très bon livre blanc sur le prompt engineering https://www.kaggle.com/whitepaper-prompt-engineering Les techniques évoquées : Zero-Shot Prompting: On demande directement à l'IA de répondre à une question sans lui fournir d'exemple préalable. C'est comme si on posait une question à une personne sans lui donner de contexte. Few-Shot Prompting: On donne à l'IA un ou plusieurs exemples de la tâche qu'on souhaite qu'elle accomplisse. C'est comme montrer à quelqu'un comment faire quelque chose avant de lui demander de le faire. System Prompting: On définit le contexte général et le but de la tâche pour l'IA. C'est comme donner à l'IA des instructions générales sur ce qu'elle doit faire. Role Prompting: On attribue un rôle spécifique à l'IA (enseignant, journaliste, etc.). C'est comme demander à quelqu'un de jouer un rôle spécifique. Contextual Prompting: On fournit des informations supplémentaires ou un contexte pour la tâche. C'est comme donner à quelqu'un toutes les informations nécessaires pour répondre à une question. Step-Back Prompting: On pose d'abord une question générale, puis on utilise la réponse pour poser une question plus spécifique. C'est comme poser une question ouverte avant de poser une question plus fermée. Chain-of-Thought Prompting: On demande à l'IA de montrer étape par étape comment elle arrive à sa conclusion. C'est comme demander à quelqu'un d'expliquer son raisonnement. Self-Consistency Prompting: On pose plusieurs fois la même question à l'IA et on compare les réponses pour trouver la plus cohérente. C'est comme vérifier une réponse en la posant sous différentes
LCC 321 - Les évènements écran large
Arnaud et Emmanuel discutent des versions Java, font un résumé de l'ecosystème WebAssembly, discutent du nouveau Model Context Protocol, parlent d'observabilité avec notamment les Wide Events et de pleins d'autres choses encore. Enregistré le 17 janvier 2025 Téléchargement de l'épisode LesCastCodeurs-Episode–321.mp3 ou en vidéo sur YouTube. News Langages java trend par InfoQ https://www.infoq.com/articles/java-trends-report–2024/ Java 17 finalement depasse 11 et 8 ~30/33% Java 21 est à 1.4% commonhaus apparait GraalVM en early majority Spring AI et langchain4j en innovateurs SB 3 voit son adoption augmenter Un bon résumé sur WebAssembly, les différentes specs comme WASM GC, WASI, WIT, etc https://2ality.com/2025/01/webassembly-language-ecosystem.html WebAssembly (Wasm) est un format d'instructions binaires pour une machine virtuelle basée sur une pile, permettant la portabilité et l'efficacité du code. Wasm a évolué à partir d'asm.js, un sous-ensemble de JavaScript qui pouvait fonctionner à des vitesses proches de celles natives. WASI (WebAssembly System Interface) permet à Wasm de fonctionner en dehors des navigateurs Web, fournissant des API pour le système de fichiers, CLI, HTTP, etc. Le modèle de composant WebAssembly permet l'interopérabilité entre les langages Wasm à l'aide de WIT (Wasm Interface Type) et d'ABI canonique. Les composants Wasm se composent d'un module central et d'interfaces WIT pour les importations/exportations, facilitant l'interaction indépendante du langage. Les interfaces WIT décrivent les types et les fonctions, tandis que les mondes WIT définissent les capacités et les besoins d'un composant (importations/exportations). La gestion des packages Wasm est assurée par Warg, un protocole pour les registres de packages Wasm. Une enquête a montré que Rust est le langage Wasm le plus utilisé, suivi de Kotlin et de C++; de nombreux autres langages sont également en train d'émerger. Un algorithme de comptage a taille limitée ne mémoire a été inventé https://www.quantamagazine.org/computer-scientists-invent-an-efficient-new-way-to-count–20240516/ élimine un mot de manière aléatoire mais avec une probabilité connue quand il y a besoin de récupérer de l'espace cela se fait par round et on augmente la probabilité de suppression à chaque round donc au final, ne nombre de mots / la probabilité d'avoir été éliminé donne une mesure approximative mais plutot précise Librairies Les contributions Spring passent du CLA au DCO https://spring.io/blog/2025/01/06/hello-dco-goodbye-cla-simplifying-contributions-to-spring d'abord manuel amis meme automatisé le CLA est une document legal complexe qui peut limiter les contribuitions le DCO vient le Linux je crois et est super simple accord que la licence de la conmtrib est celle du projet accord que le code est public et distribué en perpetuité s'appuie sur les -s de git pour le sign off Ecrire un serveur MCP en Quarkus https://quarkus.io/blog/mcp-server/ MCP est un protocol proposé paor Antropic pour integrer des outils orchestrables par les LLMs MCP est frais et va plus loin que les outils offre la notion de resource (file), de functions (tools), et de proimpts pre-built pour appeler l'outil de la meilleure façon On en reparlera a pres avec les agent dans un article suivant il y a une extension Quarkus pour simplifier le codage un article plus detaillé sur l'integration Quarkus https://quarkus.io/blog/quarkus-langchain4j-mcp/ GreenMail un mini mail server en java https://greenmail-mail-test.github.io/greenmail/#features-api Utile pour les tests d'integration Supporte SMTP, POP3 et IMAP avec TLS/SSL Propose des integrations JUnit, Spring Une mini UI et des APIs REST permettent d'interagir avec le serveur si par exemple vous le partagé dans un container (il n'y a pas d'integration TestContainer existante mais elle n'est pas compliquée à écrire) Infrastructure Docker Bake in a visual way https://dev.to/aurelievache/understanding-docker-part–47-docker-bake–4p05 docker back propose d'utiliser des fichiers de configuration (format HCL) pour lancer ses builds d'images et docker compose en gros voyez ce DSL comme un Makefile très simplifié pour les commandes docker qui souvent peuvent avoir un peu trop de paramètres Datadog continue de s'etendre avec l'acquisition de Quickwit https://www.datadoghq.com/blog/datadog-acquires-quickwit/ Solution open-source de recherche des logs qui peut être déployée on-premise et dans le cloud https://quickwit.io/ Les logs ne quittent plus votre environment ce qui permet de répondre à des besoins de sécurité, privacy et réglementaire Web 33 concepts en javascript https://github.com/leonardomso/33-js-concepts Call Stack, Primitive Types, Value Types and Reference Types, Implicit, Explicit, Nominal, Structuring and Duck Typing, == vs === vs typeof, Function Scope, Block Scope and Lexical Scope, Expression vs Statement, IIFE, Modules and Namespaces, Message Queue and Event Loop, setTimeout, setInterval and requestAnimationFrame, JavaSc
LCC 320 - Diataxis, la méthode de documentation
Emmanuel, Guillaume et Arnaud se rejoignent pour discuter de Diátaxis une approche pour structurer sa documentation. Ils offrent leur perspective sur leur usage et leur compréhension. Le sujet s'ouvre ensuite pour discuter des plateformes de documentation et comment l'IA impacte la documentation. Cet épisode est aussi sorti en vidéo, n'hésitez pas nous dire ce que vous en pensez des retours et souscrivez au channel YouTube 🤗. Enregistré le 19 décembre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-320.mp3 ou en vidéo sur YouTube. Interview Diátaxis The Good Docs Project Le retour d'expérience d'Emmanuel sur Diataxis Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 319 - le ramasse-miettes-charognes
Dans cet épisde en audio et en vidéo (youtube.com/lescastcodeurs), Guillaume et Emmanuel discutent des 15 ans de Go, d'une nouvelle approche de garbage collecting, de LLMs dans les applications Java, dobservabilité, d'une attaque de chaine d'approvisionnement via javac et d'autres choses. Enregistré le 13 décembre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-319.mp3 News Langages Go fête son 15ème anniversaire ! https://go.dev/blog/15years discute les 15 ans la corrections de gotchas dans les for loops (notamment les variables étaient loop scoped) le fait que la compile echoue si on attend une version de go superieure seulement depuis go 1.21 en parallele de la gestion de la chaine d'outil (c'est en 2023 seulement!) opt-in telemetrie aussi recent Construire OpenJDK à partir des sources sur macOS https://www.morling.dev/blog/building-openjdk-from-source-on-macos/ de maniere surprenante ce n'est pas tres compliqué Papier sur l'aproche Mark-scavenge pour un ramasse miette https://inside.java/2024/11/22/mark-scavenge-gc/ papier de recherche utiliser l'accessibilité pour preuve de vie n'est pas idéal: un objet peut etre atteignable mais ne sera jamais accedé par le programme les regions les plus pauvres en objets vivant voient leurs objets bouger dans uen autre region et la regio libéré, c'est le comportement classique des GC deux methodes: mark evaguate qui le fait en deux temps et la liveness peut evoluer ; et scavenge qui bouge l'objet vivant des sa decouverte ont fait tourner via ZGC des experience pour voir les objects consideres vivants et bougés inutilement. resultats montrent un gros taux d'objets bougés de maniere inutile proposent un algo different ils marquent les objets vivants mais ne les bougent pas avant le prochain GC pour leur donner une change de devenir unreachable elimine beaucoup de deplacement inutiles vu que les objets deviennent non accessible en un cycle de GC jusquà 91% de reduction ! Particulierement notable dans les machines chargées en CPU. Les tokens d'accès court ou longs https://grayduck.mn/2023/04/17/refresh-vs-long-lived-access-tokens/ pourquoi des long access tokens (gnre refresh token) sont utilises pour des short lived dans oauth 2.0 refresh token simplifient la revocation: vu que seul le auth serveur a a verifier la révocation et les clients vérifient l'expiration et la validité de la signature refresh token ne sont envoyés que entre endpoints alors que les access tokens se baladent pas mal: les frontières de confiance ne sont pas traversées refresh token comme utilise infréquement, et donc peut etre protegee dans une enclave les changements de grants sont plus simple tout en restant distribuable histoire des access refresh token et access token permet de mieux tracer les abus / attaques les inconvenients: c'est plus compliqué en flow, the auth serveur est un SPOF amis mitigeable Java Advent est de retour https://www.javaadvent.com/calendar backstage Java integrite par defaut (et ses consequences sur l'ecosysteme) timefold (sovler) Les extensions JUNit 5 OpenTelemetry via Java Agent vs Micrometer analyse statique de code CQRS et les fonctionalités modernes de Java java simple (sans compilatrion, sans objet fullstack dev with quarkus as backend José Paumard introduit et explique les Gatherers dans Java 24 dans cette vidéo https://inside.java/2024/11/26/jepcafe23/ Librairies Micronaut 4.7, avec l'intégration de LangChain4j https://micronaut.io/2024/11/14/micronaut-framework-4-7-0-released/ Combiner le framework de test Spock et Cucumber https://www.sfeir.dev/back/spock-framework-revolutionnez-vos-tests-unitaires-avec-la-puissance-du-bdd-et-de-cucumber/ les experts peuvent écrire leurs tests au format Gherkin (de Cucumber) et les développeurs peuvent implémenter les assertions correspondantes avec l'intégration dans Spock, pour des tests très lisibles Spring 6.2 https://spring.io/blog/2024/11/14/spring-framework-6-2-0-available-now beans @Fallback améliorations sur SpELet sur le support de tests support de l'echape des property placeholders une initioalisation des beans en tache de fond nouvelle et pleins d'autres choses encore Comment créer une application Java LLM tournant 100% en Java avec Jlama https://quarkus.io/blog/quarkus-jlama/ blog de Mario Fusco, Mr API et Java et Drools utilise jlama + quarkus + langchain Explique les avantage de l'approche pure Java comme le cycle de vie unique, tester les modeles rapidement, securite (tout est in process), monolithe ahahah, observabilité simplifiée, distribution simplifiée (genre appli embarquée) etc Vert.x 5 en seconde incubation https://vertx.io/blog/eclipse-vert-x-5-candidate-2-released/ Support des Java modules (mais beacoup des modules vert.x eux-même ne le supportent pas support io_uring dans vert.x core le load balancing côté client le modele des callbacks n'est plus supporté, vive les Futur beaucoup d'améliorations autour de gRPC et d'autres choses Un article sur Spring AI et la multi modalite audio https://spri
LCC 318 - La faille sous la faille sous la faille
Cet épisode est relativement pauvre en IA, ouaissssssss ! Mais il nous reste plein de Spring, plein de failles, plein d'OpenTelemetry, un peu de versionnage sémantique, une astuce Git et bien d'autres choses encore. Enregistré le 8 novembre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode–318.mp3 News Langages Le createur de Fernflower in decompilateur qui a relancé l'outillage autour de Java 8 est mort, un hommage d'IntelliJ IDEA https://blog.jetbrains.com/idea/2024/11/in-memory-of-stiver/ les decompilateurs s'appuyaient sur des patterns reconnus et étaient fragiles et incomplets surtout quand Java 8 a changé le pattern try catch et ajouté des concepts comme les annotations le champ était moribond quand Stiver s'est lancé dommage l'article n'explique pas comment le control-flow graph est genere a partir du bytecode pour ameliorer la decompilation Librairies On peut maintenant utiliser Jakarta Data Repository dans Quarkus https://in.relation.to/2024/11/04/data-in-quarkus/ petit article avec un projet example aussi un lien sur la presentation de Jakarta Data par Gavin à Devoxx Belgique Quarkus 3.16 https://quarkus.io/guides/opentelemetry-logging logs distribués avec OpenTelemetry (preview) deserialiseurs Jackson sans reflection des améliorations dans la stack de sécurité TLS registry a ratjouté graphql client et keycloak admin client LEs logs des container devservice et des access http sont visible dans la DevUI Les extensions peuvent maintenant ecrire leur doc en markdown (c'etait juste asciidoc avant) Un artcile sur comment débuter en Spring Batch https://www.sfeir.dev/back/planifier-des-taches-avec-spring-batch/ Le support OAuth2 pour RestClient arrive dans Security 6.4 / Boot 3.4. Plus de hack de WebClient dans vos applications Spring-Web ! https://spring.io/blog/2024/10/28/restclient-support-for-oauth2-in-spring-security–6–4 RestClient a été ajouté dans Spring Framework 6.1 API Fluide Spring Security 6.4 simplifie la configuration OAuth2 avec le nouveau client HTTP synchrone RestClient. RestClient permet des requêtes de ressources sans dépendances réactives, alignant la configuration entre applications servlet et réactives. La mise à jour facilite la migration depuis RestTemplate et ouvre la voie à des scénarios avancés. Marre des microservices ? Revenez au monoliths avec Spring Modulith 1.3RC1, 1.2.5 et 1.1.10 https://spring.io/blog/2024/10/28/spring-modulith–1–3-rc1–1–2–5-and–1–1–10-released Spring Modulith 1.3 RC1, 1.2.5, and 1.1.10 sont disponibles. La version 1.3 RC1 inclut des nouvelles fonctionnalités : archiving event publication completion mode compatibilité avec MariaDB et Oracle avec JDBC-based event publication registry Possibilité d'externaliser des événements dans des MessageChannels de Spring. Expressions SpEL dans @Externalized validation d'architecture technique jMolecules. Les versions 1.2.5 et 1.1.10 apportent des correctifs et mises à jour de dépendances. Spring gRPC 0.1 est sorti https://github.com/spring-projects-experimental/spring-grpc c'est tout nouveau et explorationel si c'est un probleme qui vous gratte, ca vaut le coup de jeter un coup d'oeil et participer. Spring Boot 3.3 Integrer Spring avec Open Telemetry (OTLP protocole) https://spring.io/blog/2024/10/28/lets-use-opentelemetry-with-spring rappel de la valeur de ce standard Open Telemetry comment l'utiliser dans vos projets Spring Comment utiliser ollama avec Spring AI https://spring.io/blog/2024/10/22/leverage-the-power-of–45k-free-hugging-face-models-with-spring-ai-and-ollama permet d'acceter aux 45k modeles de Hugging faces qui supportent le deploiement sur ollama il y a un spring boot starter c'est vraiment pour debuter Cloud Google Cloud Frankfort a subit 12h d'interruption https://t.co/VueiQjhCA3 Google Cloud a subi une panne de 12 heures dans la région europe-west3 (Francfort) le 24 octobre 2024. La panne, causée par une défaillance d'alimentation et de refroidissement, a affecté plusieurs services, y compris Compute Engine et Kubernetes Engine. Les utilisateurs ont rencontré des problèmes de création de VM, des échecs d'opérations et des retards de traitement. Google a conseillé de migrer les charges de travail vers d'autres zones. il y a eu une autre zone Europeenne pas mal affectée l'année dernière et des clients ont perdu des données :sweat: Web La fin de la World Wild Web Foundation https://www.theregister.com/2024/09/30/world_wide_web_foundation_closes/ la Fondation World Wide Web ferme ses portes. Les cofondateurs estiment que les problèmes auxquels est confronté le Web ont changé et que d'autres groupes de défense peuvent désormais prendre le relais. Ils estiment également que la priorité absolue doit être donnée à la passion de Tim Berners-Lee pour redonner aux individus le pouvoir et le contrôle de leurs données et pour construire activement des systèmes de collaboration puissants (Solid Protocol - https://solidproject.org/). Release du https://www.patternfly.org/ 6 Fw opensource pour faire de UI,
LCC 317 - les nouvelles paramétriques
De Java 23 à WebAssembly, en passant par l'IA et les design patterns, on a tout passé au crible #java #swift #webassembly #wordpress #webcomponents #llm #mongodb #keycloak #fairsource Enregistré le 18 octobre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode–317.mp3 News Langages Java 23 est sorti ! InfoQ liste toutes les JEPs intégrées à la nouvelle version https://www.infoq.com/news/2024/09/java23-released/ Et FooJay plonge dans le détail https://foojay.io/today/java–23-has-arrived-and-it-brings-a-truckload-of-changes/ JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview) JEP 466: Class-File API (Second Preview) JEP 467: Markdown Documentation Comments JEP 469: Vector API (Eighth Incubator) JEP 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal JEP 473: Stream Gatherers (Second Preview) JEP 474: ZGC: Generational Mode by Default JEP 476: Module Import Declarations (Preview) JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) JEP 480: Structured Concurrency (Third Preview) JEP 481: Scoped Values (Third Preview) JEP 482: Flexible Constructor Bodies (Second Preview) StringTemplate s'en va Un article sur l'API ClassFile qui sera un standard dans le JDK pour manipuler des classes (ala ASM) https://www.unlogged.io/post/class-file-api-not-your-everyday-java-api article long mais qui revient sur les raisons notamment parce que ASM est dans le JDK et qu'ils sont un problème de poule et d'oeuf et sur la forme de l'API a des exemples d'usage tout cela reste en preview dans le JDK des optimisation comme le lazy parsing et le constant pool sharing (en gros faire de la reference sur ce qui n'a pas changé Tip and Tail is back: cette fois une JEP https://openjdk.org/jeps/14 plus qu'une keynote provocative au language summit maintenant une JEP dite informative le language est un pu flou sur l'objectif entre regarder tip and tail pour vos librairies c'est bien et adoptons tous le meme tip du JDK jusqu'aux stack applicatives Apple annonce la sortie de son language Swift en version 6 https://www.swift.org/blog/announcing-swift–6/ Nouvelles plateformes : Swift 6 s'étend à de nouvelles plateformes (tous les grands OS déjà supportés), y compris les systèmes embarqués (sous ARM et Risc V). Swift Testing : Swift 6 introduit Swift Testing, une nouvelle bibliothèque de tests conçue pour Swift. Concurrence : Détection de data race en tant qu'erreur de compilation. Apple annonce travailler sur l'interopérabilité Swift / Java https://github.com/swiftlang/swift-java comme jextract mais dans l'autre sens The news Java https://www.infoq.com/news/2024/10/java-news-roundup-oct07–2024/ JDK 24 : Un calendrier pour la sortie de JDK 24 a été proposé. La première phase de réduction des fonctionnalités commencera le 5 décembre 2024. La version finale sera disponible le 18 mars 2025. JDK 24 introduira des mises à jour avec deux nouvelles API. La Vector API (JEP 489) facilitera les opérations sur des vecteurs, tandis que la Class-File API (JEP 484) permettra une manipulation plus efficace des fichiers de classes Java. Un changement de sécurité important est proposé avec JEP 486. Il prévoit de désactiver définitivement le Security Manager, qui a été déprécié. Cette décision signifie que cette fonctionnalité ne sera plus disponible dans les futures versions, car elle est considérée comme obsolète. Apache Tomcat et Cassandra : Les nouvelles versions de Tomcat (11.0.0) et de Cassandra (5.0.0) sont sorties. Elles incluent des améliorations et des corrections de bogues. Spring Framework : Des mises à jour pour Spring Framework (versions 3.4.0-M2, 3.3.3 et 3.2.8) ont été publiées. Elles intègrent le support d'une nouvelle API qui aide à la gestion de la mémoire. Quarkus : Red Hat a sorti la version 3.15 de Quarkus, qui apporte des corrections et des améliorations. Une nouvelle version, la 3.16, est prévue pour la fin octobre. Commonhaus Foundation : Une nouvelle organisation, la Commonhaus Foundation, a été créée pour aider les projets open source à être durables. Quarkus a rejoint cette fondation. Cassandra, Camel, Lamgchain, Micronaut, OpenLibery, JHipster, Ktor etc. Design patterns revisited: https://www.youtube.com/watch?v=kE5M6bwruhw Design and design patterns. Optional: patterns and anti-patterns. Iterator pattern. Lightweight Strategy. Factory Method using default methods. Laziness using Lambda Expressions. Decorator using Lambda Expressions. Creating Fluent interfaces. Execute Around Method Pattern. Creating a Closed Hierarchy with sealed classes. Popularité des langages de programmation https://www.techspot.com/news/105157-python-most-popular-coding-language-but-challengers-gaining.html Python reste le langage de programmation le plus populaire, surtout dans des domaines comme la science des données et le développement web. Il est apprécié pour sa simplicité et le grand nombre de bibliothèques disponibles, ce qui le rend facile à apprendre et à utiliser. De nombreuses entrepr
LCC 316 - Devoxx Belgique 2024 - On rase gratis
Cet épisode est une série de mini interviews et de mini moments capturés tout au long de Devoxx Belgique 2024. Enregistré le 11 octobre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-316.mp3 Interview Présentation JBang Devoxx4kids Livre langchain4j par Antonio aussi disponible sur Amazon. Toutes les présentations langchain4j Keynote Brian Goetz sur la complexité et les fonctionalités de Java Keynote sur les plateformes Presentation sur Jakarta Data and Jakarta Persistence par Gavin King Presentation sur Gradle 9 par Louis Jacomet JEP 14 Presentation sur DevoxxGenie NotebookLM Presentation sur 1BRC (one billion rows challenge Deep dive sur 1BRC Presentation code review Presentation sur Developer Productivity Engineering Presentation sur Developer Productivity Engineering de Trisha Presentation IntelliJ en tant que moteur de jeu Microcks Presentation Intelligent GitHub bots Presentation Quarkus et Langchain4j Presentation Guillaume sur RAG Deep Dive sur Langchain4j et sur Quarkus + Langchain4J Presentatio Agentic application avec langchain4j et Quarkus Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 315 - les températures ne sont pas déterministes
JVM summit, virtual threads, stacks applicatives, licences, déterminisme et LLMs, quantification, deux outils de l'épisode et bien plus encore. Enregistré le 13 septembre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode–315.mp3 News Langages Netflix utilise énormément Java et a rencontré un problème avec les Virtual Thread dans Java 21. Les ingénieurs de Netflix analysent ce problème dans cet article : https://netflixtechblog.com/java–21-virtual-threads-dude-wheres-my-lock–3052540e231d Les threads virtuels peuvent améliorer les performances mais posent des défis. Un problème de locking a été identifié : les threads virtuels se bloquent mutuellement. Cela entraîne des performances dégradées et des instabilités. Netflix travaille à résoudre ces problèmes et à tirer pleinement parti des threads virtuels. Une syntax pour indiquer qu'un type est nullable ou null-restricted arriverait dans Java https://bugs.openjdk.org/browse/JDK–8303099 Foo! interdirait null Foo? indiquerait que null est accepté Foo?[]! serait un tableau non-null de valeur nullable Il y a aussi des idées de syntaxe pour initialiser les tableaux null-restricted JEP: https://openjdk.org/jeps/8303099 Les vidéos du JVM Language Summit 2024 sont en ligne https://www.youtube.com/watch?v=OOPSU4LnKg0&list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1 Project Leyden Update Project Babylon - Code Reflection Valhalla - Where Are We? An Opinionated Overview on Static Analysis for Java Rethinking Java String Concatenation Code Reflection in Action - Translating Java to SPIR-V Java in 2024 Type Specialization of Java Generics - What If Casts Have Teeth ? (avec notre Rémi Forax national !) aussi tip or tail pour tout l'ecosysteme quelques liens sur Babylon: Code reflection pour exprimer des langages etranger (SQL) dans Java: https://openjdk.org/projects/babylon/ et sont example en emulation de LINQ https://openjdk.org/projects/babylon/articles/linq Librairies Micronaut sort sa version 4.6 https://micronaut.io/2024/08/26/micronaut-framework–4–6–0-released/ essentiellement une grosse mise à jour de tonnes de modules avec les dernières versions des dépendances Microprofile 7 faire quelques changements et evolution incompatibles https://microprofile.io/2024/08/22/microprofile–7–0-release/#general enleve Metrics et remplace avec Telemetry (metrics, log et tracing) Metrics reste une spec mais standalone Microprofile 7 depende de Jakarta Core profile et ne le package plus Microprofile OpenAPI 4 et Telemetry 2 amenent des changements incompatibles Quarkus 3.14 avec LetsEncrypt et des serialiseurs JAckson sans reflection https://quarkus.io/blog/quarkus–3–14–1-released/ Hibernate ORM 6.6 Serialisateurs JAckson sans reflection installer des certificats letsencrypt simplement (notamment avec la ligne de commande qui aide sympa notamment avec ngrok pour faire un tunnel vers son localhost retropedalage sur @QuarkusTestResource vs @WithTestResource suite aux retour de OOME et lenteur des tests mieux isolés Les logs structurées dans Spring Boot 3.4 https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot–3–4 Les logs structurées (souvent en JSON) vous permettent de les envoyer facilement vers des backends comme Elastic, AWS CloudWatch… Vous pouvez les lier à du reporting et de l'alerting. Spring Boot 3.4 prend en charge la journalisation structurée par défaut. Il prend en charge les formats Elastic Common Schema (ECS) et Logstash, mais il est également possible de l'étendre avec vos propres formats. Vous pouvez également activer la journalisation structurée dans un fichier. Cela peut être utilisé, par exemple, pour imprimer des journaux lisibles par l'homme sur la console et écrire des journaux structurés dans un fichier pour l'ingestion par machine. Infrastructure CockroachDB qui avait une approche Business Software License (source available puis ALS 3 ans apres), passe maintenant en license proprietaire avec source available https://www.cockroachlabs.com/blog/enterprise-license-announcement/ Polyform project offre des licences standardisees selon les besoins de gratuit vs payant https://polyformproject.org/ Cloud Azure fonctions, comment le demarrage a froid est optimisé https://www.infoq.com/articles/azure-functions-cold-starts/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=Cloud fonctions ont une latence naturelle forte toutes les lantences longues ne sont aps impactantes pour le business les demarrages a froid peuvent etre mesures avec les outils du cloud provider donc faites en usage faites des decentilers de latences experience 381 ms cold et 10ms apres tracing pour end to end latence les strategies keep alive pings: reveiller la fonctione a intervalles reguliers pour rester "warm" dans le code de la fonction: initialiser les connections et le chargement des assemblies dans l'initialization configurer dans host.json le batching, desactiver file system logging etc deployer les fonctions as zips reduire al taille du code et des fichiers (q
LCC 314 - 1000 fois 1000 dépendances
Emmanuel, Guillaume et Arnaud discutent des nouvelles de l'été. JEPs, transactional outbox pattern avec Spring, LLM dans Chrome, faille polyfill.io, TOTP, congés illimités et IDE payant ou pas payant ? Enregistré le 12 juillet 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-314.mp3 News Langages Les fonctionnalités de JDK 23 ont été figées début Juin (release prévue en septembre) https://openjdk.org/projects/jdk/23/ https://www.youtube.com/watch?v=kzjGp7LmW0I JEPs finales: 467: Markdown Documentation Comments 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 474: ZGC: Generational Mode by Default JEPs en incubation / preview 455: Primitive Types in Patterns, instanceof, and switch (Preview) 466: Class-File API (Second Preview) 469: Vector API (Eighth Incubator) 473: Stream Gatherers (Second Preview) 476: Module Import Declarations (Preview) 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) 480: Structured Concurrency (Third Preview) 481: Scoped Values (Third Preview) 482: Flexible Constructor Bodies (Second Preview) Librairies Le transactional outbox pattern avec Spring Boot https://www.wimdeblauwe.com/blog/2024/06/25/transactional-outbox-pattern-with-spring-boot/ transactional outbox permet d'éviter des 2PC ou des désynchronisations de resources: typiquement un commit dans une base et un envoie de message dans un bus on ecrit le message dans une table de la base de données, et un process séparé récupère les messages et les envoient dans le bus implémentation utilise Spring Integration dans l'article, la seconde resource est l'envoie d'email montre une approche de tests le flow descrit pas psring integration est pas super trivial a lire quand on est pas familier mais cela poll la table toutes les secondes et envoie email et si succes de l'appel de service, vide le message de la table Deuxieme exemple avec Spring modulith qui a un event bus interne qui peut être persisté décrit les differences avec spring integration et les limites de l'approche modulith (message order, retry etc) Comment tester des valeurs de propriétés différentes dans un test Quarkus https://quarkus.io/blog/overriding-configuration-from-test-code/ on a tendance a ne pas tester les propriétés de config ce blog montre 5 (enfin 4 utiles) façons de le faire avec Quarkus. les profils de test, mocker l'objet de config, les test components (experimental), l'injection dans les constructeurs Quarkus 3.12 https://quarkus.io/blog/quarkus-3-12-0-released/ centralisation des configs TLS support pour le load shedding (reject requests on service overload) événements JFR specific a Quarkus native image agent support Spring Boot 3 (compat layer) Support Kotlin 2 etc Cloud On vous parlait dans un épisode précédent de ce problème de coûts S3 sur des requêtes non autorisées. C'est Graphana Loki qui a mis ce problème sous les projecteurs https://grafana.com/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/ le problème venait des valeurs par défaut des buckets déclarés dans le chart helm de Loki, en particulier celui nommé 'chunks' Data et Intelligence Artificielle Guillaume avait partagé l'information sur la disponibilité prochaine d'un mini modele LLM dans chrome. C'est maintenant une réalité et vous pouvez le tester. https://ai-sdk-chrome-ai.vercel.app/ Nécessite Chrome 127 (version stable à partir de mi-juillet) Utilise le SDK Vercel AI Guillaume nous parle de toutes les nouveautés liées au modèle Gemini de Google dans la dernière release de LangChain4j https://glaforge.dev/posts/2024/07/05/latest-gemini-features-support-in-langchain4j/ Outillage 1% des utilisateurs de Maven Central utilisent 83% de sa bande passante. Installez un repository manager qui fait proxy (et cela pour tous les types de dépendances)!!! https://www.sonatype.com/blog/maven-central-and-the-tragedy-of-the-commons rien n'est réellement gratuit et l'abus d'une minorité peut nuire à l'ensemble. Cela fait maintenant plus de 20 ans que les communautés le répète: installer un gestionnaire de dépendances dans votre infrastructure (nexus, artifactory, CodeArtifact, …). En plus de protéger le bien commun cela vous permet de raffiner le filtrage des dépendances, d'assurer la reproductibilité de vos builds, d'optimiser les performances (et réduire les coûts) en ne téléchargeant que depuis votre propre infrastructure, etc … Maven Central est un commun qui ne coute rien à l'utilisteur mais qui est indispensable à tous 1000 milliards de téléchargements l'année dernière 83% de la bande passante consommé par 1% des IPs Beaucoup des ces IP viennent des companies les plus larges proxy pour réduire charge sur central, réduire couts ingress/egress ils vont implementer un mécanisme de throttling question est-ce que la concentration des IPs veut juste dire que c'est le dernier noeud mais que cacher n'est pas effectif pour eux et qu'il y a des milliers de clients derrière une IP? le trotting fe
LCC 313 - 313 CCL
Katia, Guillaume, Emmanuel et Antonio discutent Kotlin, Micronaut, Spring Boot, Quarkus, Langchain4j, LLMs en Java, builds reproductible et la question AMA du jour, comment fait-on carrière de dev à 40 ans ? Enregistré le 14 juin 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-313.mp3 News Langages Android avec Kotlin Multiplatform our Flutter avec Dart ? https://developers.googleblog.com/en/making-development-across-platforms-easier-for-developers/ Des licenciements ont continué chez Google et l'équipe Flutter/Dart comme plein d'autres ont été touchées, mais sur les réseaux sociaux les gens ont pensé que Google désinvestissait dans Flutter et Dart. Par ailleurs, côté Android, ils poussent plutôt du côté de Kotlin et KMP, mais naturellement aussi les gens se sont demandé si Google avait pris parti pour pousser plus Kotlin/KMP plutôt que Flutter/Dart. Pour essayer de mieux faire comprendre aux développeurs l'intérêt des deux plateformes, et leurs avantages et inconvénients, les directeurs des deux plateformes ont rédigé un article commun. Si l'on souhaite une expérience plus proche du hardware et des dernières nouveautés d'Android, et d'avoir aussi une UI/UX vraiment native Android, mieux vaut aller du côté de Kotlin/KMP. Si l'on souhaite par contre une expérience multiplateforme Web, mobile, desktop avec une UX commune cross-plateforme, avec également le partage de business logic à partir d'une même base de code, Flutter et Dart sont plus adaptés. Recap de KotlinConf https://x.com/gz_k/status/1793887581433971083?s=46&t=C18cckWlfukmsB_Fx0FfxQ RPC multiplatform la pres Grow with the flow montrant la reecriture en kotlin plus simple que des solutions complexes ailleurs power-assert pour ecrire des tests Kotlin 2.0 et les evolutions majeures Kotlin multiplatforme mainteant stable Kotlin Compose Multiplatform continue a amturer Retour d'experience de la migration d'android jetpack vers Kotlin Multiplatform use cases de coroutines et scope Librairies Quarkus veut aller dans une fondation https://quarkus.io/blog/quarkus-in-a-foundation/ ameliorer l'adoption (encore plus), ameliorer la transparence, et la collaboration, encourager la participatiopn multi vendeur Premiere etape : une gouvernance plus overte Deuxieme etape: bouger dans uen foundation Echange avec la communaute sur la proposition et les fondations cibles Des criteres pour al foudnation (notamment la rapidite de delivery Quarkus 3.11 https://quarkus.io/blog/quarkus-3-11-0-released/ Websocket.next en cours Dev services pour observabilite (grafana, jaegel, open telemetry extension infinispan cache #38448 - Observability extensions - Dev Services, Dev Resources, LGTM #39836 - Infinispan Cache Extension #40309 - WebSockets Next: client endpoints #40534 - WebSockets Next: initial version of security integration #40273 - Allow quarkus:run to launch Dev Services #40539 - Support for OIDC session expired page #40600 - Introduce OidcRedirectFilter LangChain4j 0.31 est sorti https://github.com/langchain4j/langchain4j/releases/tag/0.31.0 Recherche Web pour le RAG avec Google et Tavily RAG avec les bases de données SQL (expérimental) Récupération des resources remontées par le RAG lorsque AiServices retourne un Result Observabilité LLM pour OpenAI pour être notifié des requêtes, réponses et erreurs Intégration de Cohere (embedding), Jina (embedding et re-ranking scoring), Azuere CosmosDB comme embedding store Mise à jour de Gemini avec le parallel function calling et les instructions système Spring Boot 3.3.0 est sorti https://spring.io/blog/2024/05/23/spring-boot-3-3-0-available-now support Class Data Sharing Micrometer sipport de spantag etc Amelioration Spring Security comme JwtAuthenticationCovnerter support docker compose pour les images container bitnami Virtual thread pour les websockets Support sBOM via an actuator SNI for embedded web servers une nouvelle doc via antora Micronaut 4.5 est sortie https://github.com/micronaut-projects/micronaut-platform/releases/tag/v4.5.0 Le serveur basé sur Netty inclus la détection d'opération bloquante et les modules l'utilisant indiqueront à l'utilisateur quand certaines opérations peuvent être redirigée plutôt sur un virtual thread ou dans le thread pool IO Micronaut Data inclus le support de la multitenance avec partitionnement par discriminateur pour JDBC et R2DBC Micronaut Data rajoute le pagination par curseur pour JDBC et R2DBC (important aussi pour Jakarta Data) Support des annotations Jakarta Servlet pour configurer par exemple les servelet filters Support virtual thread et HTTP/2 Un nouveau module JSON Schema pour générer des JSON Schemas pour les records Java Un nouveau module Source Gen pour faire de la génération de source pour Java et Kotlin cross-language Un nouveau module Guice pour importer des modules Guice existants Web Angular 18 est sorti https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe Support expérimental pour la détection de changement sans zone Angular.dev est désormais
LCC 312 - Dans la ferme de Mathurin IA IA IO !
Dans ce long…. épisode, Emmanuel, Guillaume et Arnaud discutent de l'actualité avec Chicori (un runtime WASM en Java), Jakarta Data, Quarkus 3.10, Spring AI, Hibernate 6.5, mais aussi quelques retours aux basiques (timezones, rate limiting, …). Gros focus sur les nouveautés annoncées à Google I/O 2024 et dans l'écosystème IA en général avec les annonces d'OpenAI, Claude, Grok et d'autres. Différents outils sont aussi couverts comme Git, IntelliJ, ASDF, BLD, S3. Et enfin des sujets sur la haute disponibilité de Keycloak, la ré-indexation sans downtime, les challenges des implémentations alternatives, le mode vigilant dans GitHub, Redis et les changements de license, et les investissements de Microsoft et AWS en France dans le cadre du programme #ChooseFrance. N'hésitez pas à nous soumettre vos questions sur https://lescastcodeurs.com/ama nous y répondrons dans les prochains épisodes. Enregistré le 17 mai 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-312.mp3 News Langages Un runtime WASM en Java https://github.com/dylibso/chicory Projet tout nouveau, encore loin de la maturité Mais intéressant à suivre pour exécuter du code WebAssembly dans une application Java le projet n'a pas 15 jours non plus quand même :) Faire tourner des plugins WASM dans la JVM (e.g. plugins) On peut faire des heap dump en cas de OutOfMemoryException en compilation native https://quarkus.io/blog/heapdump-oome-native/ depuis JDK 21 Un exemple avec Quarkus Et le GC epsilon 100 exercices pour se mettre à Rust https://rust-exercises.com/ Librairies Hibernate 6.5 est sorti https://in.relation.to/2024/04/25/orm-650/ cache full pour les entités et leur collections (le défaut est shallow) Java record pour les @IdClass Les filtres peuvent être auto activés par défaut (vs à faire sur chaque session). Les filtres sont pas mal pour gérer par exemple des soft delete Keybased pagination pour éviter les trous de résultant en cas de modification d'entités en parallèle de.une recherche paginée. S.appuie sur une clé unique et ordonnée genre ISBN Une tech preview de Jakarta Data En parlant de Jakarta Data, deux articles sur le sujet https://in.relation.to/2024/04/01/jakarta-data-1/ https://in.relation.to/2024/04/18/jakarta-data-1/ concept de repository pas lié à une entité mais à une relation logique entre les recherches interagit via stateless session et est un bean CDI Code généré bien sur 4 opérateur crud et les requêtes save est up sert Type sage au sens ou le nom des méthodes n'est pas la logique de recherche Annotation et nom des paramètres et c'est type safe via un annotation processor ou string dans @Query qui est type safe aussi via le processeur discute plus de type safety et pagination Quarkus 3.10 avec quelques nouveautés https://quarkus.io/blog/quarkus-3-10-0-released/ flyway 10 arrive avec support natif Hibernate search supporte le standalone POJO mapper notamment pour elastic search (pas que ORM) Modification des propriétés Quarkus.package automatiquement remplacées par quarkus update et Quarkus 3.9 a fait son grand renommage réactif https://quarkus.io/blog/quarkus-3-9-1-released/ Clarifier que les extensions réactive n'imposent pas des apis réactives et seulement leur cœur implémenté en réactif ou offre optionellement des apis reacrive Les gens pensaient à tors que les réactives imposaient le modèle de programmation la encore quarkus update à la rescousse Un article sur l'api structured output pour Spring AI https://spring.io/blog/2024/05/09/spring-ai-structured-output un article descriptif sur quand cette api est utilisée Et les détails de son usage Comment passer une TimeZone dans spring boot et ce que cela impacte en terme de composants https://www.baeldung.com/spring-boot-set-default-timezone du basique mais toujours utile Task ou app Programmatiquement Sur certains lifecycles de Spring Infrastructure Un article et la vidéo de Devoxx France sur la haute disponibilité de Keycloak, comment c'est implémenté https://www.keycloak.org/2024/05/keycloak-at-devoxx-france-2024-recap l'infra d'identité est une infra clé Donc gérer la haute disponibilité est critique C'est un article qui pointe sur une vidéo de Devoxx France et la doc de keycloak sur comment tout cela est implémenté Cloud Comment se ruiner avec des buckets S3 https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1 Amazon fait payer pour les requêtes non autorisées Il suffit de connaître le nom d'un bucket pour faire payer son propriétaire Amazon travaille pour fournir une solution / un fix. il est tombé par hasard sur un nom de bucket utilisé « pour de faux » par un outil open source populaire Bien rajouter un suffixe à ses buckets peut réduire le risque Mais pas l'éliminer un fix a été livré par amazon https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/ Data et Intelligence Artificielle Guillaume résume GoogleIO https://x.com/techcrunch/status/1790504691945898300?s=61&t=WImtt07yTQMhhoN
LCC 311 - Tu changes ta licence et tu vends
Cet épisode news revient sur le rachat de Hashicorp par IBM, sur le changement de license Redis, sur le bug macos 14.4 et Java, sur la faille de de chaine d'approvisionnement sur XZ. Et nous débutons notre subrique Ask Me Anything. N'hésitez pas à nous soumettre vos question sur https://lescastcodeurs.com/ama. Enregistré le 26 avril 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-311.mp3 News Langages Attendez peut-être avant d'upgrader macOS à la version 14.4, si vous faites du Java ! Attention le crash ! https://blogs.oracle.com/java/post/java-on-macos-14-4 Bug à suivre https://bugs.java.com/bugdatabase/view_bug?bug_id=8327860 À été fixé en 14.4.1 https://blogs.oracle.com/java/post/java-on-macos-14-4 c'était lié à un changement de comportement dans l'execution de code dynamique (compilé après le lancement du process) Au lieu de recevoir signal, SIGBUS or SIGSEGV et de le gérer SIGKILL était lancé et forcément ça marchait moins bien Apple a corrigé le comportement Article de Gunnar Morling sur la nouvelle API de "gatherer" de Java 22, pour améliorer les streams, ici en montrant une implémentation d'un "zipper" qui assemble les éléments de 2 streams 2 à 2 https://www.morling.dev/blog/zipping-gatherer/ on a parlé des gatherers déjà qui permet de faire de faire des opérateurs intermediaries custom par rapport à ce que je JDK offre ici Gunnar montrer un zipper qui n'est pas présent par défaut Julien Ponge est Java champion, félicitations ! JFR 9 est sorti https://hirt.se/blog/?p=1477 peut tourner dans Eclispe Support de arm64 pour Linux et macOS Dark mode ! Des améliorations de performance Support graalvm native image Nouveau afficheur de flame graph G1 pause target compliance Librairies Nouvelle version de Jilt, l'annotation processor qui implémente les builders https://www.endoflineblog.com/jilt-1_5-released Evite les hacks à la Lombok Une nouvelle méthode toBuilder() pour obtenir un builder d'un bean déjà configuré Support des méta-annotations, histoire de pas répéter sur chaque type comment on souhaite définir ses builders Possibilité de mettre l'annotation @Builder sur les constructeurs privés Support agnostique de @Nullable quel que soit l'origine de cette annotation Infrastructure IBM pourrait racheter Hashicorp https://www.reuters.com/markets/deals/ibm-nearing-buyout-deal-hashicorp-wsj-reports-2024-04-23/ rien n'est fait Hashicorp qui a été dans la tourmente après le passage de Terraform en closed source mais les revenus sont là. C'est fait https://www.hashicorp.com/blog/hashicorp-joins-ibm Web Google intègre son framework interne Wiz dans Angular https://blog.angular.io/angular-and-wiz-are-better-together-91e633d8cd5a Wiz est un framework interne à Google utilisé dans des produits comme Google Search ou Photos, très axé sur la performance Wiz va amener plus de performance à Angular, tout en gardant la super interactivité d'Angular Wiz historiquement sur la perf et peu d'interactions utilisateur, angular sur interactions riches et super experience developer Wiz server side rendering first et streamé, ce qui élimine le javascript dans le chemin de charge initial des fonctions comme deferred views sont venu vers angular et signals sont venu a wiz vont merger au fur et a mesure des prochaines années via Angular comme receptacle open Data et Intelligence Artificielle Redis aussi se met à changer sa licence pour une licence pas tout à fait open source. Un fork nommé Valkey, animé par des mainteneurs de Redis, rejoint la fondation Linux https://www.linuxfoundation.org/press/linux-foundation-launches-open-source-valkey-community AWS, Google, Oracle, Ericsson et Snap sont nommés dans l'effort Open Source fight back mais via des grands acteurs qui ont un interet dans la version "gratuite" pour le cloud les infos de Redis https://redis.com/blog/redis-adopts-dual-source-available-licensing/ En gros releasé sous SSPL (comme MongoDB) ou une license spécifique Redis RSAL est source available license (dont pas open source) et SSPL est pas reconnu comme open source par l'OSI car elle impose des restrictions à l'usage du coup certaines fonctions closed sources deviennent source available Met les cloud provider en cause du problème, ils font de l'argent et commodetize Redis sans redonner du revenu aux développeurs de Redis est-ce que les gens seront ok de continuer a coder pour du code pas open, juste disponible et évidemment ca casse l'écosystème redis ou open source qui voulait utiliser redis en tant qu'open pas autorisé de faire du support sur un produit qui derive de redis sans payer une license si c'est "compétitif" Elon Musk tient sa promesse et ouvre son Large Language Model, Grok https://x.ai/blog/grok-os Modèle de 314 milliards de paramètres (Pi !) Architecture MoE (Mixture of Experts) qui fait qu'il n'y a que 25% des neurones actifs à l'inférence (efficace et rapide) C'est un modèle "pre-trained", de base, non-finetuné, donc pas très utilisable en l'état (il faut le finetuner en mode "instruct" et/ou "
LCC 310 - Les Cast Codeurs à Devoxx France 2024 : sous-titre édition
La clôture de Devoxx France 2024 avec les cast codeurs. L'année où le sous-titrage était un personnage à part entière de Devoxx France. Vous aurez beaucoup plus de plaisir et de contexte en regardant la vidéo qu'en écoutant cet épisode. Les sous titres jouent un rôle important. Donc pour une fois ne nous écoutez pas, regardez nous :o) Enregistré le 19 avril 2024 Téléchargement de l'épisode LesCastCodeurs-Episode–310.mp3 News L'enregistrement en direct de Devoxx France 2024. Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 309 - React a 10 ans
React a 10 ans. 10 Ans de Révolution dans le Développement Web avec Amélie Benoît (@AmelieBenoit33) et Manuel Cartier (@neolectron). Enregistré le 04 mars 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-309.mp3 React a 10 ans, longue vie à React ! Dans cet épisode, nous avons comme invités Amelie Benoît et Manuel Cartier. Les deux explorent l'évolution de React au cours de la dernière décennie, mettant en lumière ses principaux principes et son impact sur le développement web. Amélie et Manuel discutent des caractéristiques fondamentales de React, comme la composition des composants et l'utilisation de la virtual DOM, ainsi que des tendances émergentes telles que l'adoption de React Hooks, et les React Server Components. Enfin, nous avons ses conclusions sur l'avenir de React et son rôle continu dans le paysage du développement web. Amélie Benoît Amélie Benoit est une développeuse web avec une expérience d'environ 10 ans dans le domaine. Son expertise se concentre principalement sur React et React Native, qu'elle maîtrise tant en JavaScript qu'en TypeScript. En plus de son travail de développement, Amélie est une entrepreneuse communautaire active. Elle a fondé deux Meetups, dont l'un est dédié à React & React Native, démontrant ainsi son engagement envers la diffusion des connaissances et le développement de la communauté. Elle a également organisé des conférences, notamment lors de l'événement BDX I/O. Elle a aussi été oratrice a Devoxx France parmi d'autres conférences. Actuellement, Amélie occupe le poste de tech lead manager chez Busbud, une scale-up canadienne spécialisée dans la comparaison et la vente de billets de bus inter-cités en ligne. Son rôle en tant que leader technique et manager la place au cœur des opérations de développement et de gestion de projet au sein de l'entreprise. Grâce à son expertise technique, son engagement communautaire et son leadership, Amélie Benoit apporte une contribution significative au monde du développement web et de la technologie. Manuel Cartier Manuel est un développeur passionné, initié à l'art du code dès l'âge de 13 ans. Animé par cette passion précoce, il entreprend des études en développement de logiciels et gestion de projets, couronnées par l'obtention d'un BTS. Son parcours exceptionnel le conduit à se distinguer dès 2015 à l'école "42" de Paris, où il se classe premier parmi tous les candidats. Avec une solide expertise en C++, Manuel s'investit dans l'encodage vidéo et audio chez Ateme, contribuant ainsi à un transcodeur utilisant des bibliothèques faites maison, équivalentes à x264. Passionné par la diffusion en direct, il partage régulièrement ses connaissances en informatique et donne des cours de développement web sur Twitch et YouTube. Toujours avide d'apprendre et de repousser ses limites, Manuel se lance actuellement dans l'exploration de Rust, encouragé par la migration des projets C++ vers Rust chez Facebook. Parallèlement, il explore le développement d'applications mobiles avec Ionic Framework et AngularJS, expérience acquise lors de la création d'une start-up en 2015. Son dernier rôle en tant que développeur Fullstack chez SigFox lui permet d'approfondir sa compréhension des mécanismes de l'IoT. Aujourd'hui, son attention se porte sur l'écosystème JavaScript et l'amélioration de l'expérience utilisateur, ainsi que sur le rendu 3D sur le web avec des technologies innovantes telles que Three.js et React-Three-Fiber. Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 308 - Après c'est avant
Cet épisode discute du retour d'experience Java de Netflix, de jQuery, de gouvernance open source, d'Elon Musk, de Kubernetes, de Mistral (gagnant?), d'attaque des LLMs, de developpement de carrière et de Trouble du Déficit de l'Attention avec ou sans Hyperactivité. Enregistré le 15 mars 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-308.mp3 News Les cast codeurs veulent essayer quelque chose de nouveau et le sondage montre que vous aussi. On lance donc une section Ask Me Anything, posez nous une question sur https://lescastcodeurs.com/ama et nous prendrons certaines questions pour donner notre réponse. Lancez-vous, on pense que cette section pourra être sympa :) Langages Retour d'experience de Netflix sur ZGC https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b moins de tail latency ce qui veut dire moins de charge sur le systeme (moins de retry) aussi plus facile de trouver les vrais probleme de latence (plus cachés dans les latences de GC) et sans consommation superieure de CPU pour les memes perfs malgré les barrieres differentes de ZGC pas de tuning explicit de leur part (enfin presque) meme si les pointeurs ne sont pas compresses, l'efficacite du GC compense Librairies Sortie de Spock 2.4-M2 https://spockframework.org/spock/docs/2.4-M2/release_notes.html Support de plusieurs librairies de mocking Meilleur support dans les IDEs Et plein d'autres petites améliorations jQuery 4 est sorti ! jQuery est de retour ! https://www.infoq.com/news/2024/03/jquery-4-beta-release-note/ On parle régulièrement du dernier framework JavaScript à la mode, mais jQuery est toujours là Première release majeure depuis 8 ans Suppression de plein de features qui étaient deprecated et maintenant fournie souvent par défaut par les moteurs JavaScript des navigateurs jQuery continue d'être téléchargé de plus en plus au fil du temps, mais peut-être parce qu'il bénéficie du succès des projets qui l'utilisent comme Cypress, WordPress ou Drupal) Quarkus sort sa deuxieme LTS https://quarkus.io/blog/quarkus-3-8-released/ explique les changements importants depuis la LTS 3.2 Infrastructure Linkerd ou plutôt la boîte derrière va faire payer pour accéder aux builds stable du projet. Cela crée des conversations au sein de la CNCF https://www.techtarget.com/searchitoperations/news/366571035/Linkerd-paywall-prompts-online-debate-CNCF-TOC-review deploy envoy, c'est plus dur Buyoant est le principal contributeur derriere Linkerd et ils ont edcider de mettre les distributions stables derriere un paywall pour les societes de plus de 50 employés ($2000 par cluster) les gens se trouve floués par aider au succces et ensuite de trouver piégé La license reste ASL mais la version stable est derriere un paywall, comme red hat enterprise linuix recemment un autre exemple de projet open source qui vire commercial questionne la gouvernance open source, la CNCF va inestiguer et peut etre durcir ces criteres de graduiation Weavework (FLux) a fermé ces dernieres semaines aussi Cloudflare a reecrit un proxy HTTP en rust https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/ ils ont utilise NGinx pendant longtemps mais le single worker modele ne permetait pas ceratins optims et ils ont des besolins specifiques bref ils ont reecrit en rust, multi threaded et avec work stealing et ils sont content Le guide du "hater" sur Kubernetes https://paulbutler.org/2024/the-haters-guide-to-kubernetes/ L'auteur se plaint régulièrement de Kubernetes pour sa grande complexité mais reconnait que c'est quand même un grand morceau de technologie A utiliser surtout quand on a besoin de : Exécuter plusieurs processus/serveurs/tâches planifiées. Les exécuter de manière redondante et répartir la charge entre eux. Les configurer, ainsi que les relations entre eux, sous forme de code. L'auteur liste ensuite les fonctionnalités qu'il utilise, qu'il fait attention quand il les utilise, et celles qu'il préfère éviter Utilise : deployments, services, cron jobs, config maps et secrets Attention : stateful set, persistent volume et RBAC Evite : le YAML à la main, les opérateurs et resources customs, Helm, tout ce qui est mesh, les resources ingress, essayer de répliquer la stack K8S complète localement sur sa machine Data et Intelligence Artificielle Mistral AI et Microsoft font un accord sur le modele le plus puissant de Mistral et certains ne sont pas content https://www.latribune.fr/technos-medias/informatique/l-alliance-entre-mistral-et-micr[…]usion-de-l-independance-technologique-europeenne-991558.html Mistral avancait son approche open source mais son modele le plus puissant ne l'est pas ils ont un partenariat exclusif avec Microsoft pour le distribuer Et MS rentre dans le capital Au revoir l'independance de l'IA européenne Au revoir les modeles open source larges cela va a l'encontre du loby et de son positinnement aupres de la commission europeenne ca fait grincer des dents a bruxelles q
LCC 307 - Interview sur la passion, la créativité et le fun sur le long terme avec Holly Cummins et Mark Jane
Enregistré le 27 février 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-307.mp3 Interview Les Cast Codeurs accueillent deux invités spéciaux pour explorer un aspect crucial de la carrière informatique : comment conserver la passion, la créativité et le plaisir au fil du temps. Holly Cummins et Mark Jane Holly Cummins Mark Jane Holly Cummins est dans l'open-source depuis 20 ans. Elle est Java Champion et JavaOne Rock Star. Elle a co-écrit le livre 'Enterprise OSGi in Action' chez Manning et a présenté des conférences dans divers événements renommés tels que JavaOne, Devoxx, et JAX London. Elle travaille chez Red Hat en 2024, et contribue principalement sur Quarkus. Mark Jane, est un acteur accompli et improvisateur chevronné depuis 1994. Il rejoint la troupe Eux en 2016, jouant dans le spectacle Bio à Paris, et Pilote et Chaos en 2024. Il a écrit le livre "Jeux et enjeux: La boîte à outils de l'improvisation théatrale". Les deux naviguent leur carrière avec passion, créativité et fun depuis +20 ans. Naviguer sa carrière professionnelle avec passion, créativité et fun sur le long terme Dans ce podcast, Holly et Mark partagent leurs conseils et expériences uniques, découvrant de nombreux points communs malgré l'apparente disparité entre leurs deux professions. Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 306 - Alors tu squash ou tu pointes ?
Dans cet épisode, Katia, Emmanuel et Arnaud explorent de nouvelles approches du Builder pattern en Java, l'introduction du Pattern Matching Primitives dans Java, et les déboires de l'intelligence artificielle avec des attaques de la chaîne d'approvisionnement sur Pytorch. Ils abordent aussi les licenciements dans diverses entreprises technologiques, l'évolution du trafic de Stackoverflow et donnent de conseils pratiques pour les développeurs, notamment sur les commits conventionnels, la mise à jour de dépendances avec Dependabot, Renovate et le déboggage des programmes Java. Ils terminent avec leur retour d'expérience sur la relecture des sujets de Devoxx France 2024. Enregistré le 9 février 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-306.mp3 Votre avis compte énormément pour nous ! 🎧 Nous voulons rendre Les Cast Codeurs encore plus genial, et c'est là que vous intervenez. 🌟 Aidez-nous en partageant vos idées, suggestions et souhaits pour 2024, dans notre tout nouveau formulaire de retour. C'est rapide, facile et ça ne prend que 2 minutes. News Langages Une approche différente du Builder pattern en Java, inspirée par ce qui se fait dans la communauté Golang https://glaforge.dev/posts/2024/01/16/java-functional-builder-approach/ Les builders, surtout quand ils sont imbriqués les uns dans les autres, peuvent devenir un peu verbeux à lire Est-ce qu'on peut prendre une nouvelle approche ? Oui, en tirant parti des lambdas, avec des méthodes de mutation qui retournent des lambda qui effectuent la mutation On retrouve le plaisir de pouvoir construire une instance à l'aide d'un constructeur, plutôt qu'un builder En recherchant le sujet, Guillaume est aussi tombé sur une approche type safe du builder classique https://www.endoflineblog.com/type-safe-builder-pattern-in-java-and-the-jilt-library (qui est implémentée sous forme d'annotation processor dans le petit projet open source Jilt) Pattern Matching Primitives (JEP 455) https://openjdk.org/jeps/455 Uniformité autorisant le pattern de type pour tous les types, qu'ils soient primitifs ou de référence et sécurité dans la conversion de types et éviter les erreurs runtime pour les conversions de type. Plus de robustesse Ca l'explique bien ici. Les deux https://www.infoq.com/news/2024/02/java-enhances-pattern-matching/ Exemple: Avant if (i >= -128 && i 127) { byte b = (byte)i; ... b ... } Maintenant if (i instanceof byte b) { ... b ... } byte b = 42; b instanceof int; // true (unconditionally exact) int i = 42; i instanceof byte; // true (exact) int i = 1000; i instanceof byte; // false (not exact) News Java, le tour https://www.infoq.com/news/2024/02/java-news-roundup-jan29-2024/ Open JDK avec preview de Classe File API JDK 22 et 23 Glassfish, GraalVM, Spring, Quarkus, Infinispan, Hibernate, Grails, Vert.x… plein d'outils Keycloak Langchain Lire les détails dans l'article d'InfoQ etc. Data et Intelligence Artificielle Une attaque de supply chain sur Pytorch et l'IA https://johnstawinski.com/2024/01/11/playing-with-fire-how-we-executed-a-critical-supply-chain-attack-on-pytorch/ Soumettre une PR avec une correction de typo ca leur a approuvé de faire tourner la CI automatiquement quand ils poussent la PR soumis une PR qui curl fetch un gist qui tournait sur un runner self-hosté et ils ont choppé les tokens pour plus tard publier les binaires dans les repos officiels et personne n'a rien vu Support du modèle de génération d'image Imagen dans LangChain4j rajouté dans la dernière version du project https://glaforge.dev/posts/2024/02/01/image-generation-with-imagen-and-langchain4j/ contribué par Guillaume on peut générer des images, mais aussi les éditer Collab entre Google et Hugging Face https://www.infoq.com/news/2024/01/hugging-face-gcp-ai/ intégration avec Vertex.ai et d'autres services Google Facilite deploy dans le cloud google et l'intégration avec Kubernetes Guillaume a écrit un article et développé une application pour visualiser les tokens générés par les large language models dérivés du modèle PaLM https://glaforge.dev/posts/2024/02/05/visualize-palm-based-llm-tokens/ Outillage Stackoverflow voit son traffic diminuer doucement depuis quelques années, mais depuis l'avènement de ChatGPT et consort, la chute s'accélère https://twitter.com/swyx/status/1753122780709871834 mais apparemment, ce graphique ne serait pas correct selon StackOverflow, qui n'aurait perdu que 5% par rapport à l'année dernière https://stackoverflow.blog/2023/08/08/insights-into-stack-overflows-traffic/ StackOverflow ont changé l'utilisation de Google Analytics, ce qui expliquerait en grande partie la tendance de ce graphe qui porte à confusoin Amélie Benoit - Dependant Bot Visual way https://twitter.com/AmelieBenoit33/status/1754397434812203455 Un outil visuel pour dependant bot! tout est dans l'image! Différences entre les bots Renovate et Dependabot https://docs.renovatebot.com/bot-comparison/ Tableau comparatif intéressant Méthodologies Le pouvoir des "conventional commits" pa
LCC 305 - Dia critique
Cet épisode news discute de langages, de bibliothèques, d'intelligence artificielle bien sûr et même de Web. Et puis de challenge Java et même de Père Noël ! Enregistré le 12 janvier 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-305.mp3 News RIP Niklaus Wirth https://en.wikipedia.org/wiki/Niklaus_Wirth Informaticien Suisse Conception des langages ALGOL, Modula-2 et… Pascal Plusieurs distinctions: Turing 1984, John Von Neumann 1994. Depuis 1987 un prix créé à son honneur Plusieurs livres dont Algorithms + Data Structures = Programs 1976 La Loi de Wirth: La beauté d'un programme réside dans la clarté de sa structure. Niklaus Wirth a toujours prôné la simplicité, la lisibilité et la compréhensibilité. Approche pragmatique https://recording.zencastr.com/lescastcodeurs/news-305 Langages L'enfer sur terre: equals and hashCode pour les entitées JPA. Tout le monde a un avis, faire le sien est compliqué - https://vladmihalcea.com/hibernate-facts-equals-and-hashcode/ - https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/ - https://vladmihalcea.com/the-best-way-to-implement-equals-hashcode-and-tostring-with-jpa-and-hibernate/ - https://jpa-buddy.com/blog/hopefully-the-final-article-about-equals-and-hashcode-for-jpa-entities-with-db-generated-ids/ Kotlin va t'il décliné en 2025, faute d'innovation et avec les nouvelles features de Java ? https://shiftmag.dev/kotlin-vs-java-2392/ Selon l'auteur, d'autres langages alternatifs pour la JVM ont décliné, comme Groovy et Scala L'auteur pense qu'il y aura de moins en moins de différenciants par rapport à Java, et Kotlin n'a pas rajouté de fonctionnalités significatives depuis un an ou deux Comment enlever des accents et autres marques diacritiques dans des chaines de caractères en Java https://glaforge.dev/posts/2024/01/url-slug-or-how-to-remove-accents-in-java/ Pour les URLs d'un blog post, par exemple, on souhaite avoir le titre dans l'URL, mais de manière URL-friendly, donc sans accents, en remplaçant les espaces par des tirets, etc Guillaume propose une approche basée sur la normalisation de chaine unicode et les expressions régulières Mais il évoque également la librairie Slugify qui est en plus capable de faire de la translitération (pour transformer aussi des idéogrammes et autre caractères non-ASCII) Les "gatherers" de JDK 22 https://blog.soebes.io/posts/2024/01/2024-01-07-jdk-gatherer/ Nous avons mentionné récemment le JEP 461 pour Java 22 : Stream Gatherers, qui sera en preview Permet de faire des choses qui étaient un peu compliquées à faire avec l'API stream avant, comme par exemple implémenter des fenêtres glissantes sur les données du stream L'article parle des différentes capacités des gatherers, avec un Integrator, un Initializer et un Finisher, et enfin un Combiner, avec différents exemples de code pour les illustrer Librairies Le fonds tech souverain d'origine allemande sponsorise le développement de Log4J https://www.sovereigntechfund.de/news/log4j-investment 3 contributeurs pourront bosser dessus à temps plein permet de sécuriser le développement du projet réaction à l'impact de la CVE Log4shell qui avait bien marqué les esprits et fait bosser plein de gens le weekend pour tout patcher ! Cloud Le glossaire de la Cloud Native Foundation a été traduit en Français https://glossary.cncf.io/fr/ Web Sortie de Vue.JS 3.4 https://blog.vuejs.org/posts/vue-3-4 le parseur de composants (SFC) est 2x plus rapide amélioration du système de réactivité en particulier pour les propriétés "computed" (recalculées) le namespace JSX deprecated a été supprimé Cédric Exbrayat de NinjaSquad couvre également les nouveautés dans cet article https://blog.ninja-squad.com/2023/12/29/what-is-new-vue-3.4/ Astro JS 4.1 https://astro.build/blog/astro-410/ Découverte de ce FW grâce à Petipois https://medium.com/front-end-weekly/create-a-website-using-astro-in-2024-f5963003c19c Astro est le framework web pour la construction de sites web axés sur le contenu tels que les blogs, le marketing et le commerce électronique. Astro est surtout connu pour être le pionnier d'une nouvelle architecture frontend afin de réduire la surcharge et la complexité de JavaScript par rapport aux autres frameworks Architecture en "Astrot Islands" (interface en composants isolés) SSG et SSR (Static Site Generator ey Server Side Rendering) 0 Javascript si tu veux Tu utilises React, Angular ou Vue pour tes composants Lis plus ici : https://kinsta.com/fr/blog/astro-js/ React à 10 ans… et là ma découverte de React Server Components https://www.joshwcomeau.com/react/server-components/#introduction-to-react-server-components-3 "At a high level, React Server Components is the name for a brand-new paradigm. In this new world, we can create components that run exclusively on the server." L'idée est de n'est pas faire des composants entiers en react dans le backend, et de n'est pas déléguer aux rendering client pour ces composants Prédictions 2024 https://thenewstack.io/202
LCC 304 - Dark punk
Dans cet épisode, Katia, Arnaud et Emmanuel discutent les nouvelles de cette fin 2023. Le gatherer dans les stream Java, les exceptions, JavaScript dans la JVM, recherche vectorielle, coût du cloud, Gemini, Llama et autres animaux fantastiques et pleins d'outils sympathiques pour fêter la fin de l'année. Enregistré le 15 décembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-304.mp3 News Aide Les Cast Codeurs et remplis un petit formulaire pour nous guider l'année prochaine https://lescastcodeurs.com/sondage Langages Avec JEP 461, arrivée dans en preview dans Java 22 de la notion de "gatherer" pour les streams https://groovy.apache.org/blog/groovy-gatherers dans cet article de Paul King, de l'équipe Groovy, il montre et contraste ce que l'on pouvait faire en Groovy depuis des années, comme des sliding windows, par exemple explique l'approche des gatherers avec ses opérations intermédiaires gatherer sont des operations intermediaires custom qui prennent un etat et le prochain element pour decided quoi faire, et meme changer le stream d'elements suivants (en publier) (via la fonction integrate certains peuvent permettre de combiner les resultats intermediaires (pour paralleliser) Examples : fenetres de taille fixe, fenettres glissantes Joe Duffy, qui est CEO de Pulumi, mais qui avait travaillé chez Microsoft sur le project Midori (un futur OS repensé) parle du design des exceptions, des erreurs, des codes de retour https://joeduffyblog.com/2016/02/07/the-error-model/ Il compare les codes d'erreurs, les exceptions, checked et non-checked il separe les bugs des erreurs attendues (bugs doivent arreter le process) il raconte l'histoire des unchecked exception et leurs problemes et des checked exceptopns et poourquoi les developeurs java les detestent (selon lui) long article maisn interessant dans ses retours mais lon je ne suis pas allé au bout :smile: Après la disparition de Nashorn dans le JDK, on peut se tourner vers le projet Javet https://www.caoccao.com/Javet/index.html Javet permet d'intégrer JavaScript avec le moteur V8 Mais aussi carrément Node.js c'est super comme capacité car on a les deux mielleurs moteurs, par contre le support hors x86 est plus limité (genre arm sous windows c'est non) Librairies Une partie de l'équipe Spring se fait lourder après le rachat effectif de Broadcom https://x.com/odrotbohm/status/1729231722498425092?s=20 peu d'info en vrai à part ce tweet mais l'acquisition Broadcome n'a pas l'air de se faire dans le monde des bisounours Marc Wrobel annonce la sortie de JBanking 4.2.0 https://www.marcwrobel.fr/sortie-de-jbanking-4-2-0 support de Java 21 possibilité de générer aléatoirement des BIC amélioration de la génération d'IBAN jbanking est une bibliotheque pour manipuler des structures typiques des banques comme les IBAN les BIC, les monnaies, les SEPA etc. Hibernate Search 7 est sorti https://in.relation.to/2023/12/05/hibernate-search-7-0-0-Final/ Support ElasticSearch 8.10-11 et openSearch 2.10-11 Rebasé sur Lucerne 9.8 support sur Amazon OpenSearch Serverless (experimental) attention sous ensemble de fonctionnalités sur Serverless, c'est un API first search cluster vendu a la lambda En lien aussi sur la version 7.1 alpha1 Hibernate ORM 6.4 est sorti https://in.relation.to/2023/11/23/orm-640-final/ support pour SoftDelete (colonne marquant la suppression) support pour les operations vectorielles (support postgreSQL initialement) les fonctions vectorielles sont particulièrement utilisées par l'IA/ML événement spécifiques JFR Intégration de citrus et Quarkus pour les tests d'intégrations de pleins de protocoles et formats de message https://quarkus.io/blog/testing-quarkus-with-citrus/ permet de tester les entrees / sorties attendues de systèmes de messages (HTTP, Kafka, serveur mail etc) top pour tester les application Event Driven pas de rapport mais Quarkus 3.7 ciblera Java 17 (~8% des gens utilisaient Java 11 dans les builds qui ont activé les notifications) Hibernate Search 7.1 (dev 7.1.0.Alpha1) avec dernière version de Lucene (9.8), Infinispan rajoute le support pour la recherche vectorielle. https://hibernate.org/search/releases/7.1/ https://infinispan.org/blog/2023/12/13/infinispan-vector-search Hibernate Search permet maintenant la recherche vectorielle La dernière version est intégrée en Infinispan 15 (dev) qui sortira La recherche vectoriolle et stockage de vecteurs, permettent convertir Infinispan en Embedding Store (langchain) Cloud Comment choisir sa region cloud https://blog.scottlogic.com/2023/11/23/conscientious-cloud-pick-your-cloud-region-deliberately.html pas si simple le coût la securité légale de vos données la consommation carbone de la région choisie (la France est top, la Pologne moins) la latence vs où sont vos clients les services supportés Web Vers une standardisation des Webhooks ? https://www.standardwebhooks.com/ Des gens de Zapier, Twilio, Ngrok, Kong, Supabase et autres, se rejoignent pour essayer de standardiser l'approche des Webhooks
LCC 303 - Interview sur Vert.x 4.5 avec Julien Viet
Ce qui a commencé comme un crowdcast a fini en interview de Julien Viet sur Vert.x 4.5. Enregistré le 23 novembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-303.mp3 Interview Ta vie ton oeuvre (présentation de l'interviewé) Le site de Julien Viet X (ancien twitter) Vert.x 4.5 Vert.X 4.5 est sorti https://vertx.io/blog/whats-new-in-vert-x-4-5/ support des thread virtuels qui permet d'écrire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des événements le code put faire des future await qui ne bloqueront pas le thread principal connection SQL dynamique: quand le host change dynamiquement dans l'application support des proxies de niveau 7 pour les clients SQL rotation certificats a chaud des builders (HTTP, SQL connection) extensions pour utiliser les coroutines kotlin Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 302 - Amour, Gloire et OpenAI
Dans cet épisode, Emmanuel, Guillaume et Katia abordent les nouveautés Java, le lancement du langage Misty par Douglas Crockford, l'arrivée de WasmGC dans Chrome, la sortie de Spring Framework 6.1, des évolutions dans les bibliothèques comme Vert.x 4.5, et des conseils sur la création de langages de programmation. L'épisode couvre également des actualités dans les domaines de l'infrastructure avec le premier ordinateur cloud commercial par Oxide, des annonces sur les frameworks web comme Angular v17, des réflexions sur les architectures monolithiques versus microservices, et sans oublier le soap Opéra du moins de novembre avec OpenAI en vedette. Enregistré le 23 novembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-302.mp3 News Langages Recap Javaiste https://www.infoq.com/news/2023/10/java-news-roundup-oct09-2023 la JEP 454 sur l'appel a la memoire et les API dites natives passera en target pour JDK 22 avec une façon d'ajouter les appels de méthodes restreintes sans le flag --enable-native-access (via un manifeste dans le JAR) JDK 22 prévu pour mars 2024 Spring Framework 6.1 est sorti (RC2) Tomcat a quelques CVE donc mettez à jour Douglas Crockford, le papa de JSON, sort un nouveau langage dénommé Misty https://www.crockford.com/misty/ Utilise des caractères unicodes pour définir des chaînes de caractères avec des chevrons, ou pour les opérateurs de base (comparison, and/or) Support de programmation concurrente avec les actors WasmGC arrive dans Chrome, par l'intermédiaire de v8 https://v8.dev/blog/wasm-gc-porting historiquement il fallait compiler le port du langage lui meme (et donc son GC) Maintenant on peut compiler le code (java) dans des primitives Wasm et WasmGC Java python et co ont des VM qui sont compilées pour toutes les architecture cibles (ARM, x86 etc) y compris le JIT, AOT donc on peut définir comme backend WASM lui meme, c'est l'approche classique WasmGC définit des structs et des array avec des champs dans lesquels on peut créer des instances, lire/écrire les champs, caster dans d'autres types et ces objects sont managés par WasmGC lui meme. on a un système de type du coup et des relations entre ces types Donc on représenterait les objets Java en objets Wasm avantage et inconvenient des deux approches tous les codes de management d'objets ne sont plus nécessaires (y compris malloc) -> gain memoire en mode GC dans le langage les liens object langage objets Wasm sont inefficaces car le lien langage -> wasm définissent l'instance entière Wasm, donc des gros cycles d'objets ne sont pas GCed Wasm sandbox empêche d'inspecter la stack et d'éliminer des objets plus efficacement, et il n'y a pas d'API pour aider donc seul WasmGC peut utiliser cet avantage. un seul GC a des avantages: meilleure gestion de la pression memoire mais on réutilise le GC du web (genre V8) vs celui de Java. (c'est moins un problème pour les autres langages avec des gc moins sophistiqués) fragmentation memoire, est plus proéminent quand on a des modules de type C qui peur garder des gros blocs memoire "quasi vide" (opaque). c'est managé plus finement en WasmGC Sémantiques de langage est plus dur a achevé vu qu'on map en concepts WasmGC, il y a de la transformation. sémantiques chaine de caractère, nombres, etc peuvent être un peu ajusté un port utilisant WasmGC n'est pas une réécriture de tout mais un gros morceau de la VM du langage cible est a réécrire WasmGC peut optimiser comme les patterns en JVM mais en WasmMVP c'est la toolchain avant qui fait le travail d'optimisation (e.g. LLVM) donc avec WasmGC, la toolchain fera les optimisations de langage et WasmGC fera les optimisations low level (inlining, constant propagation, dead code elimination) puis d'autres optimisation specific a WasmGC comme les escape analysis, et ils parlent d'optimisations dans V8 pour approcher les appels dynamique a la Java (pas défini a la compilation) Ecrire un langage de programmation… ça prend du temps… beaucoup de temps https://yorickpeterse.com/articles/a-decade-of-developing-a-programming-language/ Évitez le gradual typing Évitez le boostrapping de votre compilateur Évitez d'écrire votre propre générateur de code, linker, etc Évitez de tergiverser trop longtemps sur la syntaxe La prise en charge multiplateforme est un défi Les livres sur les compilateurs compilateurs ne valent pas l'argent que vous dépenserez dessus Faire grandir et évoluer un langage de programmation est difficile La meilleure suite de tests est une application réelle Ne privilégiez pas les performances sur les fonctionnalités. Librairies Spring Boot rajoute le hot reload des certificats SSL pour embedded Netty et Tomcat https://spring.io/blog/2023/11/07/ssl-hot-reload-in-spring-boot-3-2-0 utilisez reload-on-update: true et écoute les changements de fichiers pas mal dans les déploiements non immuables (pas comme kubernetes) VertX 4.5 est sorti https://vertx.io/blog/whats-new-in-vert-x-4-5/ support des thread virtuels qui permet d'écrire le code synchrone pour
LCC 301 - Minoritaire ou majoritaire, là est la question!
Dans cet épisode, Emmanuel et Guillaume reviennent sur les nouveautés de l'écosystème Java (Java 21, SDKman, Temurin, JBang, Quarkus, LangChain4J, …) mais aussi sur des sujets plus généraux comme Unicode, WebAssembly, les bases de données vectorielles, et bien d'autres sujets orientés IA (LLM, ChatGPT, Anthropic, …). Enregistré le 20 octobre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-301.mp3 News Langages Gérer facilement des versions multiples de Java grâce à SDKman https://foojay.io/today/easily-manage-different-java-versions-on-your-machine-with-sdkman/ sdkman support java mais aussi graalVM, jbang, Quarkus, Micronaut etc (les CLIs) la CLI UI est toujours un peu chelou donc cet article est utile pour un rappel Tous les changements de Java 8 à Java 21 https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-21/ Nous avons déjà partagé ce lien par le passé, mais l'article est mis à jour à chaque release majeure de Java pour couvrir les dernières nouveautés. Et en particulier, Java 21 qui vient de sortir. Eclipse Temurin ne va pas sortir son Java 21 tout de suite https://adoptium.net/en-GB/blog/2023/09/temurin21-delay/ Apparemment, une nouvelle licence pour le TCK (qui valide la compliance) doit être approuvée Oracle semble avoir sorti de nouveaux termes, à quelques jours de la sortie officielle de Java 21 la mise a jour du TCK est arrivée le 9 octobre. comment Microsoft a pu sortir le sien avant? Le Financial Times propose un bel article avec des animations graphiques expliquant le fonctionnement de l'architecture de réseau de neurones de type transformers, utilisé dans les large language model https://ig.ft.com/generative-ai/ LLM via relation entre les mots notion de transformer qui parse les "phrases" entières ce qui capture le contexte discute le beam search vs greedy search pour avoir pas le prochain mot mais l'ensemble de prochains mots parle d'hallucination l'article parle de texte/vector embeddings pour représenter les tokens et leurs relations aux autres il décrit le processus d'attention qui permet aux LLM de comprendre les associations fréquentes entre tokens le sujet des hallucinations est couvert et pour éviter des hallucinations, utilisation du "grounding" The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 https://tonsky.me/blog/unicode/ Un bel article qui explique Unicode, les encodings comme UTF-8 ou UTF-16, les code points, les graphèmes, les problèmes pour mesurer une chaîne de caractères, les normalisation de graphèmes pour la comparaison de chaîne Si vous voulez mieux comprendre Unicode, c'est l'article à lire ! unicode c'est un mapping chiffre - caractère en gros 1,1 millions disponibles dont 15% définis et 11% pour usage privé, il reste de la place. Et non les meojis ne prennent pas beaucoup de place. usage prive est par exemple utilise par apple pour délivrer le logo apple dans les fonts du mac (mais pas ailleurs) UTF est l'encoding du chiffre de l'unicode UTF-32: 4 bytes tout le temps, UTF-8, encodage variable de 1 a 4 bytes (compatible avec ASCII) ; il a aussi un peu de détection d'erreurs (prefix des bytes différents), optimise pour le latin et les textes techniques genre HTML problème principal, on peut pas déterminer la taille en contant les bytes ni aller au milieu d'une chaine directement (variable) UTF-16 utilise 2 ou plus de bytes et est plus sympa pour les caractères asiatiques un caractère c'est en fait un graphème qui peut être fait de plusieurs codepoints : é = e U+0065 + ´ U+0301 ; ☹️ (smiley qui pleure) is U+2639 + U+FE0F D'ailleurs selon le langage ":man-facepalming::skin-tone-3:".length = 5, 7 (java) ou 17 (rust) ou 1 (swift). Ça dépend de l'encodage de la chaine (UTF-?). ""I know, I'll use a library to do strlen()!" — nobody, ever." En java utiliser ICU https://github.com/unicode-org/icu Attention java.text.BreakIterator supporte une vieille version d'unicode donc c'est pas bon. Les règles de graphème change a chaque version majeure d'unicode (tous les ans) certains caractères comme Å ont plusieurs représentations d'encodage, donc il ya de la normalisation: NFD qui éclate en pleins de codepoints ou NDC qui regroupe au max normaliser avant de chercher dans les chaines certains unicode sont représentés différemment selon le LOCALE (c'est la life) et ça continue dans l'article JBang permet d'appeler Java depuis Python via un pypi https://jbang.dev/learn/python-with-jbang/ c'est particulièrement interessant pour appeler Java de son Jupyter notebook ça fait un appel a un autre process (mais installe jbang et java au besoin) Librairies Quarkus 3.4 est sorti https://quarkus.io/blog/quarkus-3-4-1-released/ un CVE donc mettez a jour vos Quarkus support de Redis 7.2 plus de granularité sur la desactivation de flyway globalement ou par data source. Depuis l'activation transparente et automatique en 3.3 quarkus update est l'approche recommandée pour mettre à jour. Comment tester si un thread virtuel "pin" https
LCC 300 - Interview de Jean-Michel Doudoux sur Java 21 par Charles Sabourdin
Dans cet épisode Charles Sabourdin interview Jean-Michel Doudoux sur la sortie de la nouvelle version LTS de Java en 2023: Java 21. Enregistré le 5 septembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-300.mp3 Java 21 The art of long-term support and what LTS means for the Java ecosystem JDK 21 444: Virtual Threads 453: Structured Concurrency (Preview) 446: Scoped Values (Preview) 440: Record Patterns 441: Pattern Matching for switch 430: String Templates (Preview) 443: Unnamed Patterns and Variables (Preview) 445: Unnamed Classes and Instance Main Methods (Preview) 431: Sequenced Collections 439: Generational ZGC 451: Prepare to Disallow the Dynamic Loading of Agents 452: Key Encapsulation Mechanism API 442: Foreign Function & Memory API (Third Preview) 448: Vector API (Sixth Incubator) 449: Deprecate the Windows 32-bit x86 Port for Removal À propos de Jean-Michel Doudoux Développons en Java https://www.jmdoudoux.fr http://blog.sciam.fr/. À propos de ParisJug https://www.parisjug.org/ https://www.jchateau.org/ https://javaday.parisjug.org/ Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 299 - Katia est dans la place !
Dans cet épisode de rentrée, Antonio et Arnaud ont le plaisir d'accueillir Katia Aresti dans l'équipe. Ils passent en revue les dernières nouveautés et sujets chauds de cette rentrée, notamment la sortie de Java 21, les nouvelles versions de Quarkus, Micronaut, Hibernate, NodeJS, Redis, et bien d'autres encore. Ils discutent de sujets plus généraux tels que l'observabilité, la nouvelle tendance "Platform Engineering", et la productivité des développeurs. Ils abordent aussi les sujets sur la sécurité, tels que les failles sur les CPUs Intel et AMD, ainsi que la vie privée, avec les Tracking APIs de Chrome, Firefox et le projet de loi SREN. Le tout est agrémenté de sa dose d'IA, avec des librairies telles que Semantic Kernel, ainsi que des sujets plus haut niveau tels que Google Gemini, Meta GPT, LLama 2, et les biais et la consommation énergétique de l'IA. Enregistré le 8 septembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–299.mp3 News Langages Apache Groovy a 20 ans! https://twitter.com/ApacheGroovy/status/1695388098950217909 L'annonce du lancement du projet par James Strachan https://web.archive.org/web/20030901064404/http://radio.weblogs.com/0112098/2003/08/29.html Le projet a depuis énormément évolué et après plusieurs vies a été adopté par la fondation Apache en 2015 Java 21 arrive le 19 septembre https://www.infoworld.com/article/3689880/jdk–21-the-new-features-in-java–21.html. C'est la nouvelle LTS Pas mal de nouvelles fonctionnalités comme les virtual threads, le pattern matching sur les switch, sequenced collections … Retrouvez le 19 septembre une interview de Jean-Michel Doudoux par Charles Sabourdin pour l'épisode 300 des castcodeurs! Librairies Semantic Kernel pour Java est (en train de) sorti: https://devblogs.microsoft.com/semantic-kernel/introducing-semantic-kernel-for-java/ Framework OSS pour faire de l'IA .Net et Python Java 0.2.7 Alpha est publié Kernel car il est tout petit Se connecte à plusieurs fournisseurs (aujourd'hui OpenAI, Azure AI, Hugging Face), plusieurs DB vectorielles, plusieurs template de prompt (suit la specification de OpenAI) OpenSSL qui committe https://www.openssl.org/blog/blog/2023/07/17/who-writes-openssl/ en majorité des OSS payés puis des gens payés par leur boite et enfi des contributeurs non payés c'est ne passant rapide mais ca montre que depuis heartbleed, ca a changé Micronaut 4.1.0 https://micronaut.io/2023/09/01/micronaut-framework–4–1–0-released/ Bean Mappers pour créer automatiquement une correspondance entre un type et un autre un Introspection Builder l'annotation @Introspected pour générer un builder dynamique si un type ne peut être construit que via un modèle builder améliorations pour les développeurs utilisant Kotlin Symbol Processing (KSP) Quarkus 3.3.1 / 3.3.2 https://quarkus.io/blog/quarkus–3–3–1-released/ https://quarkus.io/blog/quarkus–3–3–2-released/ Pas mal de fixes https://github.com/quarkusio/quarkus/releases/tag/3.3.1 https://github.com/quarkusio/quarkus/releases/tag/3.3.2 Il est important de noter qu'un problème de dégradation des performances et de la mémoire a été introduit dans Quarkus 3.3. Ce problème est corrigé dans Quarkus 3.3.2. Hibernate ORM 6.3.0 et 6.2.8 https://hibernate.org/orm/ et Hibernate Reactive 2.0.5 un support initial de la spécification Jakarta Persistence 3.2 Un nouveau guide d'introduction Hibernate 6, un nouveau guide de syntaxe et de fonctionnalités pour le langage de requête Hibernate (Hibernate Query Language) Annotation @Find sur des méthodes -> créer des méthodes de recherche similaires aux méthodes de requête Reactive compatible avec Hibernate ORM 6.2.8.Final, certains changements d'api Infrastructure Une série d'articles sur l'observabilité par Mathieu Corbin Observability: tout ce que vous avez toujours voulu savoir sur les métriques: https://www.mcorbin.fr/posts/2023–07–04-metriques/ Tracing avec Opentelemetry: pourquoi c'est le futur (et pourquoi ça remplacera les logs): https://www.mcorbin.fr/posts/2023–08–20-traces/ L'auteur reprend les bases sur l'observabilité. Qu'est ce qu'une métrique ? Les labels, les cardinalités Les types de métriques (Compteurs, jauges, quantiles et histogrammes) C'est quoi le tracing ? Traces, Spans, Resources, Scopes qu'est ce que c'est? Les Events pour remplacer les logs? Web NodeJS 20.6.0 est disponible et ajoute le support des fichiers .env https://philna.sh/blog/2023/09/05/nodejs-supports-dotenv/ Configurable avec l'option --env-file Le fichier .env peut contenir des variables d'environnement et commentaires # Attention par contre: pas de lignes multiples ni d'extension de variables Vous pouvez par exemple configurer NODE_OPTIONS avec ce système Data Redis 7.2 est sorti ! https://redis.com/blog/introducing-redis–7–2/ Auto-tiering : cette nouvelle fonctionnalité permet de stocker les données sur des supports de stockage différents, en fonction de leur importance et de leur fréquence d'accès. Cela permet d'améliorer les performances et la scalabilité de Redis. R
LCC 298 - De l'IA à toutes les sauces
Dans cet épisode estival Guillaume, Emmanuel et Arnaud parcourent les nouvelles du début d'été. Du Java, du Rust, du Go du coté des langages, du Micronaut, du Quarkus pour les frameworks, mais aussi du WebGPU, de l'agilité, du DDD, des sondages, de nombreux outils et surtout de l'intelligence artificielle à toutes les sauces (dans les bases de données, dans les voitures…). Enregistré le 21 juillet 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-298.mp3 News Langages La release candidate de Go 1.21 supporte WASM et WASI nativement https://go.dev/blog/go1.21rc StringBuilder ou contatenation de String https://reneschwietzke.de/java/the-stringbuilder-advise-is-dead-or-isnt-it.html StringBuilder était la recommendation ca cela créait moins d'objects notamment. Mais la JVM a évolué et le compilateur ou JIT remplace cela par du code efficace Quelques petites exceptions le code froid (e.g. startup time) qui est encore interprété peut beneficier de StringBuilder autre cas, la concatenation dans des boucles où le JIT ne pourrait peut etre pas optimiser le StringBuilder "fluid" est plus efficace (inliné?) ces regles ne changement pas si des objects sont stringifié pour etre concaténés GPT 4 pas une revolution https://thealgorithmicbridge.substack.com/p/gpt-4s-secret-has-been-revealed rumeur ca beaucou de secret pas u modele a 1 trillion de parametres maus 8 a 220 Milliards combinés intelligeament les chercheurs attendaient un breakthrough amis c'est une envolution et pas particulierement nouveau methode deja implem,entee par des cherchers chez google (maintenant chez ooenai ils ont retarde la competition avec ces rumeurs de breakthrough amis 8 LLaMA peut peut etre rivaliser avec GPT4 Le blog Open Source de Google propose un article sur 5 mythes ou non sur l'apprentissage et l'utilisation de Rust https://opensource.googleblog.com/2023/06/rust-fact-vs-fiction-5-insights-from-googles-rust-journey-2022.html Il faut plus de 6 mois pour apprendre Rust : plutôt faux; quelques semaines à 3-4 mois max Le compilateur Rust est pas aussi rapide qu'on le souhaiterait — vrai ! Le code unsafe et l'interop sont les plus gros challanges — faux, c'est plutôt les macros, l'owernship/borrowing, et la programmation asynchrone Rust fournit des messages d'erreur de compilation géniaux — vrai Le code Rust est de haute qualité — vrai InfoQ sort un nouveau guide sur le Pattern Matching pour le switch de Java https://www.infoq.com/articles/pattern-matching-for-switch/ Le pattern matching supporte tous les types de référence L'article parle du cas de la valeur null L'utilisation des patterns "guarded" avec le mot clé when L'importance de l'ordre des cases Le pattern matching peut être utilisé aussi avec le default des switchs Le scope des variables du pattern Un seul pattern par case label Un seul case match-all dans un bloc switch L'exhaustivité de la couverture des types L'utilisation des generics La gestion d'erreur avec MatchException Librairies Sortie de Micronaut 4 https://micronaut.io/2023/07/14/micronaut-framework-4-0-0-released/ Langage minimal : Java 17, Groovy 4 et Kotlin 1.8 Support de la dernière version de GraalVM Utilisation des GraalVM Reachability Metadata Repository pour faciliter l'utilisation de Native Image Gradle 8 Nouveau Expression Language, à la compilation, pas possible au runtime (pour des raisons de sécurité et de support de pré-compilation) Support des Virtual Threads Nouvelle couche HTTP, éliminant les stack frames réactives quand on n'utilise pas le mode réactif Support expérimental de IO Uring et HTTP/3 Des filtres basés sur les annotations Le HTTP Client utilise maintenant le Java HTTP Client Génération de client et de serveur en Micronaut à partir de fichier OpenAPI L'utilisation YAML n'utilise plus la dépendance SnakeYAML (qui avait des problèmes de sécurité) Transition vers Jackarta terminé Et plein d'autres mises à jour de modules Couverture par InfoQ https://www.infoq.com/news/2023/07/micronaut-brings-virtual-thread/ Quarkus 3.2 et LTS https://quarkus.io/blog/quarkus-3-2-0-final-released/ https://quarkus.io/blog/quarkus-3-1-0-final-released/ https://quarkus.io/blog/lts-releases/ Infrastructure Red Hat partage les sources de sa distribution au travers de son Customer Portal, et impacte la communauté qui se base dessus https://almalinux.org/blog/impact-of-rhel-changes/ RedHat a annoncé un autre changement massif qui affecte tous les rebuilds et forks de Red Hat Enterprise Linux. À l'avenir, Red Hat publiera uniquement le code source pour les RHEL RPMs derrière leur portail client. Comme tous les clones de RHEL dépendent des sources publiées, cela perturbe encore une fois l'ensemble de l'écosystème Red Hat. Une analyse du choix de red hat sur la distribution du code source de rhel https://dissociatedpress.net/2023/06/24/red-hat-and-the-clone-wars/ Une reponse de red hat aux feux démarrés par l'annonce de la non distribution des sources de RHEL en public https://www.redhat.com/en/blog/red-hats-commitment
LCC 297 - Lockless design
Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d'open source et bien sûr les large language models. On répond aussi à la question fondamentale: mais pourquoi Maven n'a pas de fichier .lock ? Enregistré le 9 juin 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-297.mp3 News Langages Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente présentation de Large Language Models, des GPT https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2 Il parle du fonctionnement des LLM, comment/pourquoi ils arrivent à générer ce qu'ils génèrent Le fine-tuning, l'apprentissage renforcé avec feedback humain, l'art du prompting Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act) Leaning Technologies annonce l'arrivée prochaine de CheerpJ 3 : le retour de Java dans la navigateur, grâce à WebAssembly https://leaningtech.com/announcing-cheerpj-3-0-a-jvm-replacement-in-html5-and-webassembly-to-run-java-applications-and-applets-on-modern-browsers/ Avant la version 3.0, CheerpJ utilisait une approche AOT (ahead of time compilation) qui nécessitait aussi une étape d'intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus à l'approche de Java lui même Plus besoin non plus de version custom d'OpenJDK Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly :smile: Communauté RUST: Il y a de l'eau dans le gaz https://www.jntrnr.com/why-i-left-rust/ Plus d'infos https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849 lié au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l'exterieur en gros ils ont un process interne pour prendre des decisions avec ce process ils ont invité une personne pas super pro Rust a faire la keynote a RustConf d'autres du commité ont vu ca et on discuté en backchannel pour revenir en arriere de la decision (sans suivre le process) il y a eu une semaine de pause avant action mais pas annoncé le speaker a ete dé keynoté et a donc refusé de venir a la conf et paf, ca enerve des gens decisionaire et ils demissionnent Bref des gens qui veulent faire le bien mais en cercle un peu trop ferné et paf Les gens de Wasmer étendent WASI avec WASIX, on rajoutant le support POSIX, les threads… permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL ou autre https://wasmer.io/posts/announcing-wasix ca frotte un oeu entre innovation et standardisation dans la communaite WASM WASMER sont un peu les cowboys startuper par exemple ils ont essayé de deposer la marque WebAssemble au nez et à la barbe de la communauté donc la reaction du coeur de la communauté a cette annonce est plutôt calme WASI c'est standard mais ca prend du temps a maturer WASIX c'est cool et dispo maintenant mais c'est un produit d'une société spécifique, donc pas de portabilité Librairies Guava 32 est sorti et beaucoup de choses annotées en @Beta ne le sont plus https://www.reddit.com/r/java/comments/13w2l8w/guava_320_released_today_and_the_beta_annotation/ ont eu des API en @Beta pendant longtemps pour proteger des risques de changements en pratique quasi personne ne se limitait au non beta, et elles n'ont pas bougé ces API ou peu donc ils ont enlevé @Beta de la plupart beaucoup de parties de Guava sont dans le JDK, le cache est dans Caffeine des bons echanges dans les commentaires entre les utilisateurs et Kevin un des mainteneurs chez Google Comment démarrer avec l'API PaLM de Google, mais en Java! https://glaforge.dev/posts/2023/05/30/getting-started-with-the-palm-api-in-the-java-ecosystem/ Guillaume a écrit une petite application qui génère des histoires pour enfants avec un Large Language Model (l'API PaLM) https://bed-time-stories.web.app/ Le code est dispo sur Github https://github.com/glaforge/bedtimestories Il explique également le processus incrémentale des prompts qui aident à générer aussi le contenu de l'application https://glaforge.dev/posts/2023/06/08/creating-kids-stories-with-generative-ai/ Infrastructure Debezium 2.2 https://debezium.io/blog/2023/04/20/debezium-2-2-final-released/ Experimental, opt-in Parallel Snapshots Incremental snapshots with surrogate keys Quarkus 3 support Ingestion of Oracle changes from logical standby instances Google Spanner improvementsNew Debezium Server sinks for Infinispan, RabbitMQ, and RocketMQ New Storage APIs for Amazon S3 and RocketMQ Many MongoDB improvements Cassandra connector for Cassandra Enterprise Un article sur l'utilisation de Kafka par CloudFlare https://www.infoq.com/articles/kafka-clusters-cloudflare/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=architecture-design c'est du "classique" mais bon de se le faire rappeler beaucoup d'evenements CloudFlare pass

LCC 296 - Interview Google IA IA I/O 2023
Dans cet épisode, Antonio, Emmanuel et Guillaume reviennent sur les nouveautés et annonces faites à Google I/O 2023 : de nouveaux téléphones Pixel qui se plient ou pas, et surtout de l'intelligence artificielle du sol au plafond ! Que ce soit dans Android, dans Google Workspace, dans Google Cloud, une tonne de produits passe en mode survitaminé à l'IA. Guillaume, Antonio et Emmanuel discutent aussi de l'impact qu'ils voient sur l'AI, et de comment les Large Language Models sont raffinés et pourquoi on les fait halluciner, de subtilités du langage des signes. Enregistré le 23 mai 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-296.mp3 Google I/O 2023 Site web : https://io.google/2023/ Keynote principale : https://io.google/2023/program/396cd2d5-9fe1-4725-a3dc-c01bb2e2f38a/ Keynote développeur : https://io.google/2023/program/9fe491dd-cadc-4e03-b084-f75e695993ea/ Vidéo résumée en 10 minutes de toutes les annonces : https://www.youtube.com/watch?v=QpBTM0GO6xI&list=TLGGCy91ScdjTPYxNjA1MjAyMw Vidéo de toutes les sessions techniques : https://io.google/2023/program/?q=technical-session Google I/O s'est tenu il y a 10 jours en Californie, dans l'amphithéâtre de Shoreline, près du campus de Google. Seulement 2000 personnes sur place, un chat et un jeu en ligne pour assister à distance. Jeu en ligne I/O Flip créé avec Flutter, Dart, Firebase, et Cloud Run, et tous les assets graphiques générés par Generative AI https://blog.google/technology/ai/google-card-game-io-flip-ai/ Des Pixels plein les yeux ! Des détails sur le design des nouveaux appareils : https://blog.google/products/pixel/google-pixel-fold-tablet-7a-design/ Pixel Fold Article : https://blog.google/products/pixel/google-pixel-fold/ Premier téléphone foldable de Google (après Samsung et Oppo) Un écran sur le dessus, et un grand écran pliable à l'intérieur Pratique pour la traduction où peut voir une discussion traduire en deux langues d'un côté sur un écran et dans l'autre langue sur l'autre Utilisation créative de la pliure : mode "laptop", pour les selfies, pour poser l'appareil pour des photos de nuit Par contre… pas disponible en France, et tout de même presque 1900€ ! Pixel Tablet Article : https://blog.google/products/pixel/google-pixel-tablet/ Une belle tablette de 11 pouces, avec un dock de recharge avec enceinte intégrée Processeur Tensor G2, Chromecast intégré C'est un peu comme le Google Nest Hub Max mais avec un écran détachable Une coque pratique avec un trépied intégré et qui n'empêche pas de recharger la tablette sur le dock En mode dock, c'est comme l'écran du Google Home App, et dès qu'on la décroche, on est en mode multi-utilisateur, chacun avec son profil Pixel 7a Article : https://blog.google/products/pixel/pixel-7a-io-2023/ Écran de 6 pouces Triple appareil photo (grand angle, principal, et photo avant pour les selfies) 509 euros Magic Eraser pour effacer les trucs qu'on veut pas dans la photo, Magic Unblur pour rendre une photo floue plus nette, Real Tone pour rendre les peaux foncées plus naturelles Android Article quoi de neuf dans Android : https://blog.google/products/android/android-updates-io-2023/ Dans Messages, Magic Compose dans les conversations, l'IA nous aide à concevoir nos messages, dans différents styles (plus pro, plus fun, dans le style de Shakespeare) Android 14 devrait arriver un peu plus tard dans l'année, avec plus de possibilités de customisation (fond d'écran généré par Gen AI, fond d'écran Emojis, couleurs associées, fond d'écran 3D issus de ses photos) https://blog.google/products/android/new-android-features-generative-ai/ StudioBot : un chatbot intégré à Android Studio pour aider au développement d'applis Android https://io.google/2023/program/d94e89c5-1efa-4ab2-a13a-d61c5eb4e49c/ 800 millions d'utilisateurs sont passés à RCS pour le messaging Adaptation de 50 applications Android pour s'adapter aux foldables https://blog.google/products/android/android-app-redesign-tablet-foldable/ Wear OS 4 va rajouter le backup restore quand on change de montre et autres nouveautés https://blog.google/products/wear-os/wear-os-update-google-io-2023/ 800 chaînes TV gratuites dans Google TV sur Android et dans la voiture Android Auto va être disponible de 200 millions de voitures https://blog.google/products/android/android-auto-new-features-google-io-2023/ Waze disponible globalement sur le playstore dans toutes les voitures avec Android Auto Google Maps Article : https://blog.google/products/maps/google-maps-updates-io-2023/ Maps propose 20 milliards de km de direction tous les jours Immersive View for Routes 15 villes : Amsterdam, Berlin, Dublin, Florence, Las Vegas, London, Los Angeles, Miami, New York, Paris, San Francisco, San Jose, Seattle, Tokyo et Venice Possibilité pour les développeurs de s'intégrer et rajouter des augmentations 3D, des marqueurs Google Photos Article Magic Editor : https://blog.google/products/photos/google-photos-magic-editor-pixel-io-2023/ Magic Editor survitaminé à l'IA pour améliorer
LCC 295 - La librairie rentre dans le cadre
Dans cet épisode, Arnaud, Antonio et Emmanuel décortiquent les nouvelles d'avril et mai. On y discute Java 20, ecrire un profiler de zéro, Quarkus 3 (encore !), Micronaut 4, Podman, JReleaser, GitHub, CloudEvent, GraphQL, licenciements (encore !), et de la question a 1000 francs: librarie vs framework, quelle différence? Mais pas que. Enregistré le 12 mai 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–295.mp3 News Langages Un descriptif du changement de paiement d'Oracle JDK https://horstmann.com/unblog/2023–02–23/ Cay Horstmann Explique OpenJDK avec plusieurs distributeurs Prefère Adoptium dont celle par défaut est Eclipse Temurin Pour Oracle, beaucoup d'options de licenses (no-fee, binary code, OTM license) Oracle depense beaucoup pour Java La license en discussion est Java SE Universal Subscription Licensing passage de license par CPU (Java SE advanced) vers license par employé (et une assiete large) Bref si vous êtes concernés, passer sur OpenJDK: Adoptium, ou d'autres vendeurs Java 20 est sorti : qu'y a t'il de nouveau dans Java 20 par rapport à Java 19 ? https://foojay.io/today/its-java–20-release-day-heres-whats-new/ L'article fait le point sur ce qu'il y a de nouveau par rapport à la précédente release : 4ème preview du pattern matching pour switch 2nde preview des record patterns 2nde preview des virtual threads incubation des scoped values (similaire au thread locals mais pour les virtual threads) 2nde incubation de la structured concurrency 2nd preview de foreign function et memory API 5ème incubation de la vector API (pour utiliser les instructions vectorielles des processeurs) La liste des JEPs : https://openjdk.org/projects/jdk/20/ Les release notes : https://jdk.java.net/20/release-notes dans le pattern matching switch: guarde when Record pattern: utilisation de var. utilisable dans les for aussi maintenant for (Delay(var timeInMS) : delays) quelques changements autour de l'API Thread est non preview (main API) Les ScopedValue sont comme les threadlocal par (virtual) thread mais elles sont immuables une fois écrites. use cases: copie d'etat pour des données non changeantes pour le virtual thread Serait interessant d'avoir des details dessus PDF 2.0 maintenant un vrai format ISO ouvert et gratuit https://www.pdfa.org/sponsored-standards/ standard dispo sans cout versions precedentes étaient payantes clarifications et corrections de beaucoup de corner cases Librairies Écrire un Profiler en 240 lignes de Java https://mostlynerdless.de/blog/2023/03/27/writing-a-profiler-in–240-lines-of-pure-java/ Ce n'est peut-être pas si compliqué d'écrire soi même un Java Profiler ! Et justement cet article nous montre comment le faire, en créant un Java Agent, en analysant les stacks d'appel, et à la fin en créant même un flame-graph en HTML Très didactique ! fondamentallement: appeler Threads:getAlStackStrace reguilerement et faire une liste des methodes visibles et créer un flamegraph a partir de ces données L'équipe de Flutter partage les grands thèmes de sa roadmap https://flutter.dev/go/strategy–2023 Performance, interopérabilité, portabilité, écosystème, sécurité, fondamentaux (comme la documentation, la fidélité des UI natives, adresser les issues publiques) Quarkus 3 est sorti https://quarkus.io/quarkus3/ on a deja couvert Hibernate ORM 6.2 nouvelle DevUI et admin sur un port different Support for Pact quarkus deply et extensibilite de la CLI avec des nouveaux verbes dev services for Kubernetes simule un Kube pour tester les calls vers l'API Kube Java 11 et 17 (recommendé) Jakarta EE Eclipse MicroProfile 6 Une librairie en Java spécialement pour l'astronomie par Cédric Champeau https://melix.github.io/blog//2023/04–22-introducing-astro4j.html différentes librairies et applications pour traiter les images issues de sol'ex qui permet de prendre des photos du soleil Micronaut 4 milestone 2 est sorti. Les nouveautés de Micronaut 4 https://docs.micronaut.io/4.0.0-M2/guide/index.html#whatsNew Kotlin 1.8.0 Experimental Support for Kotlin Symbol Processing (KSP) Apache Groovy 4.0 Core Changes Java 17 Baseline Improved Modularity GraalVM Metadata Repository and Runtime Initialization Completed javax to jakarta Migration Expression Language Injection of Maps Arbitrary Nesting of Configuration Properties Improved Error Messages for Missing Configuration Improved Error Messages for Missing Beans Tracking of Disabled Beans HTTP Changes Initial Support for Virtual Threads (Loom) Rewritten HTTP layer Annotation-Based HTTP Filters JDK HTTP Client Infrastructure 5 choses à savoir sur Podman Desktop pour un utilisateur Docker https://podman-desktop.io/blog/5-things-to-know-for-a-docker-user Une UI unique pour travailler avec différents moteur de conteneurs, et pas uniquement Docker Compatible avec Docker avec un mode adapté pour fonctionner aussi avec la docker CLI ou docker.sock pour les sockets Support de Compose Support de Kubernetes Securité : on peut utilisé rootless sans avoir les privilèges root socket e
LCC 294 - A Devoxx France 2023 en chair en os et en béret
Les Cast Codeurs font la clôture de Devoxx France 2022 en chair, en os et en béret. Enregistré le 14 avril 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–294.mp3 Interview La vidéo du direct Devoxx France qui est plus facile à suivre se trouvera sur YouTube. 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/
LCC 293 - Interview Maven et builds reproductibles avec Hervé Boutemy
Dans le cocon de jchateau, Hervé Boutemy se fait interviewer par Charles Sabourdin sur Maven 3, 4, 5 et sur les builds reproductibles. Un grand merci à Charles pour son passage derrière le micro. Enregistré le 18 mars 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–293.mp3 Interview Twitter Hervé Boutemy JChateau JavaDay Maven et son histoire Les builds reproductibles Les builds reproductibles sur la JVM Les builds reproductibles avec Maven Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
LCC 292 - Enterprise Go Beans
Cet épisode nouvelles discute d'améliorations dans le JDK, d'Hibernate 6, de Service Weaver, de la fin d'options dans DockerHub pour certains projets open source, de Gradle, de cURL et pleins d'autres choses encore. Enregistré le 17 mars 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–292.mp3 News Langages Quelle version de JDK utiliser en fonction des fonctionnalités que l'on souhaite utiliser mais aussi du long time support https://whichjdk.com/ JetBrains propose une formation Rust intégrée aux IDEs https://blog.jetbrains.com/rust/2023/02/21/learn-rust-with-jetbrains-ides/ Un apprentissage directement intégré à l'IDE Avec un plugin "Academy" dédié, qui rajoute un troisième panneau avec les instructions, les explications, et on fait des exercices dans la partie IDE Une chouette manière d'apprendre intégrée directement à son IDE Chacun doit pouvoir créer ses propres ressources d'apprentissage, et on pourrait appliquer ça à des frameworks, des outils, ou pourquoi pas son propre projet informatique ! Retravail de classes du JDK Bits / ByteArray vers un usage via VarHandle pour le swapping de bits dans Java 21 https://minborgsjavapot.blogspot.com/2023/01/java–21-performance-improvements.html petit changement mais utilisé par beaucoup de classes comme ObjectInputStream RandomAccessFile etc améliore la serialization en java Rajout de la notion de "sequenced collection" dans la hiérarchie des collections, planifié pour JDK 21 https://www.infoq.com/news/2023/03/collections-framework-makeover/ va permettre de codifier les collections qui ont un ordre donné (pas forcément trié) rajouter aussi des méthodes pour traverser des collections séquentielles à l'envers, ou pour récupérer ou ajouter un élément au début ou à la fin d'une collection ordonnée aujourd'hui ces methodes sont eparpillées dans les implémentaions et n'avaient aps de contrat commun Le guide ultime des virtual threads https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/ un très long article qui couvre le sujet des nouveaux virtual threads comment en créer comment ils fonctionnent le scheduler et le scheduling coopératif les "pinned" virtual threads (lorsqu'un thread virtuel est bloqué dans un vrai thread, par exemple dans un bloc synchronized ou lors d'appel de méthondes natives) les thread local et thread pools Librairies Quarkus 3 alpha 5 avec Hibernate ORM 6 et une nouvelle DevUI https://quarkus.io/blog/quarkus–3–0–0-alpha5-released/ passage d'Hibernate 5 a 6 (donc testez! switch de compatibilité supérieur pour aider la transition https://github.com/quarkusio/quarkus/wiki/Migration-Guide–3.0:-Hibernate-ORM–5-to–6-migration#database-orm-compatibility (DB interaction esp schema StatelessSession injectable Gradle 8 nouvelle DEvUI (nouveau look and feel, plus extensible pour els extensions et pplus facile a utiliser, va au dela des integrations d'extension (config etc) quarkus deploy dans la CLI, gradle et maven: deploie dans Kube, knative, OpenShift La route vers Quarkus 3, article sure infoq https://www.infoq.com/news/2023/03/road-quarkus–3/ Jakarta EE, ORM 6, Microprofile 6, virtual threads, io_uring, ReactiveStreams=> Flow io_uring reduit les copie de buffer entre userspace et kernel space pas de support JPMS en vue mais Red Hat contribue a project Leyden Camel extensions, attendez Camel 4 (passage Jakarta EE) Interview de Geert Bevin, l'auteur du framework Java RIFE2 https://devm.io/java/rife2-java-framework Google annouce Service Weaver https://opensource.googleblog.com/2023/03/introducing-service-weaver-framework-for-writing-distributed-applications.html EJB is back (Enterprise Go Beans :D) ecrire en tant que modular monolith permet au deploiement décider ce qui est distribué basé sur leur experience du surtout de maintance des microservices (contrats plus difficiles a casser - dbesoin de coordination de rollout etc) dans la communauté des entousiastes et des gens concernés par les 10 falaccies of distributed computing et le fait de cacher les appels distants EJB et corba avant cela ont été des échecs de ce point de vue la ils n'expliquement pas comment le binding de nouveax contrats et de deploiement se fait de maniere transparente des deployeurs implementables (go et GKE initialement) Etude d'opinion de certains utilisateurs de Jakarta EE (OmniFaces community) https://omnifish.ee/2023/03/10/jakarta-ee-survey–2022–2023-results/ biaisée donc attention Java EE 8 suivi par Jakarta EE 8 et derriere Jakarta EE 10 etc WildFly puis Payara puis glassfish ensuite tomee et JBoss EAP gens contents de leurs serverus d'app sand Weblogic et Websphere les api utilisées le plus JPA, CDI, REST, Faces, Servlet, Bean Validation, JTA, EJB, EL etc Produit microprofile: Quarkus puis WildFlky puis Open Liberty puis Payara et Helidon Dans microprofile: Config, rest client, open api, health et metric sont les plus utilisés Comment utiliser des records et Hibernate https://thorben-janssen.com/java-records-embeddables-hibernate/ pas en tant qu'entité
LCC 291 - ChatGPT licencie 15% des bisounours
Antonio, Guillaume et Emmanuel discutent de licence Oracle pour Oracle JDK, de JEPs, de Flutter, d'Hibernate, de Mokito, de Kafka, de (not so) Big Data, du parsing de YAML, de ChatGPT, de licenciements, de platform engineering, et de nombres flottants. Enregistré le 10 février 2023 Téléchargement de l'épisode LesCastCodeurs-Episode–291.mp3 News Langages Oracle a changé une des licences de Oracle Java https://redresscompliance.com/oracle-java-licensing-changes-explaned-free/ plus d'utilisateurs nommé mais basé sur tous les employés et même les employés de vos soustraitant Bref, ca va faire cher et si vous itulisez plus de 50k processeurs, vous payez en plus Un autre article d'IDC https://blogs.idc.com/2023/01/30/oracle-java-subscription-changes-what-is-the-impact-to-customers/ Message a caractère informatif: il y a d'autres distributions de OpenJDK supportées de différents vendeurs ; ou la version non supportée InfoQ fait un résumé des dernières nouvelles Java, les mises à jour sur les JEPs, les dernières releases https://www.infoq.com/news/2023/01/java-news-roundup-jan23–2023/ sur Java specificquement des mises à jour de drafts autour du projet amber (primitive types in patterns etc) Une JEP pour discuter du future process des JEP (evolutions) JDK 20 en rampdown phase avec en nouvelles features: scoped values, record patterms, pattern matching for switches, virtual threads, structured concurrency - toutes en incubation ou preview https://www.infoq.com/news/2023/02/java-news-roundup-jan30–2023/ Le framework RIFE fait son grand retour ! Sortie de Go 1.20 https://go.dev/doc/go1.20 mais pas de gros changements, juste des améliorations de la toolchain, des librairies… Recap de la conférence Flutter Forward 2023 https://medium.com/@flutterqueen/flutter-forward–2023-recap–8f6da4876e3 Annonces de Flutter 3.7 et Dart 2.19 Amélioration de la performance graphique (utilisation de Impeller au lieu de Skia) Layout adaptatif Barres et sous-barres de menu Validation de release iOS Support de Material 3 Nouveaux widgets Support de ses propres shaders Facilitation de l'intégration native avec FFIgen et JNIgen Support de la 3D Support de WebAssembly Support de RISC-V Possibilité d'intégrer une app Flutter comme un élément HTML dans un page HTML Un toolkit spécifique pour les applis de News Côté langage Dart, il devrait bientôt y avoir du pattern matching Librairies Les bonnes pratiques d'accessibilité pour les applications en Flutter https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d 4 grands thèmes dans l'article : l'accessibilité dans Flutter, les fonctionnalités intégrées à Flutter pour l'accessibilité, les meilleurs pratiques pour rendre les apps Flutter accessibles, et tester / débugguer l'accessibilité Flutter supporte le text contrast, les screen readers, les labels sémantiques, l'utilisation au clavier Comment logger les requetes Hibernate ORM https://www.adeliosys.fr/articles/hibernate-monitoring/ log brut via un logger les requetes lentes (plus lentes que n millisecondes) les metriques plus avancées (Statement, requetes, temps acquisition de connections, cache) Exposable via JMX le pool de connexion Sortie de Mockito 5, avec la possibilité de mocker des constructeurs, des méthodes statiques et des classes finales https://www.infoq.com/news/2023/01/mockito–5/ avant, c'était déjà possible de le faire avec mockito-inline mais maintenant c'est "out of the box" la version Java minimale passe de Java 8 à Java 11 Cloud Kubernetes Java client ajouté le support de kubernetes 1.25 https://www.infoq.com/news/2023/01/kubernetes-java-client/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=java ajout d'APIs dynamique pour faire du monitoring générique L'article montre l'API utilisée en alternative a certaines commandes kubectl fabric8 est une alternative Data Big data est mort https://motherduck.com/blog/big-data-is-dead/ fondateur de BigQuery Puis regardé comment les utiilsateurs utilisaent Big Query Et pas un probleme de big data Retour des moteurs classiques MySQL / PostgreSQL vs MongoDB etc la plupart des utilisaeur de big query etaient sous les 1Tb et 50% at 100GB ou moins doncle deluge de données n'est pas arrivé le shift moderne c'est de detacher le stockage du compute les données grossissent plus vite que les besoin en compute sur ces données la taille du workload est sur un petit sous ensemble de la taille des données entiéres (90% des requetes bigquery sont sur 100M de données) bases de données modernes sont force a travailler sur un sous ensemble des données pression pour scocker moins de données sur les equipes données sont requetees dans la journée, dans la semaine et ensuite rarement touchées donc big data = whatever doesn't fit on a single machine, est de moins en moins vrai map reduce en 2004 et machines de maintenant entre 2 et 4 ordre de grandeurs de RAM en plus avant on se foutait de supprimer des données mais GDPR et r