LCC 319 - le ramasse-miettes-charognes
Description
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://spring.io/blog/2024/12/05/spring-ai-audio-modality
- permet de voir les evolutions des APIs de Spring AI
- s'appluie sur les derniers modeles d'open ai
- des examples comme par exemple un chatbot voix et donc comment enregistrer la voix et la passer a OpenAI
Comment activer le support experimental HTTP/3 dans Spring Boot https://spring.io/blog/2024/11/26/http3-in-reactor-2024
- c'ets Netty qui fait le boulot
- puis Spring Netty
- l'article décrit les etapes pour l'utiliser dans vos applis Spring Boot ou Spring Cloud Gateway
- l'article explique aussi le cote client (app cliente) ce qui est sympa
Infrastructure
Un survol des offres d'observabilité http://blog.ippon.fr/2024/11/18/observabilite-informatique-comprendre-les-bases-2eme-partie/
- un survol des principales offres d'observabilité
- Open source ou SaaS
- et certains outsiders
- Pas mal pour commencer à défricher ce qui vous conviendrait
- blog de ippon
Web
Sortie de Angular 19 https://blog.ninja-squad.com/2024/11/19/what-is-new-angular-19.0/
- stabilité des APIs Signal APIs
- migration automatique vers signals
- composants standalone par défaut
- nouvelles APIs linkedSignal et resource
- de grosses améliorations de SSR et HMR
- un article également de Sfeir sur Angular 19 https://www.sfeir.dev/front/angular-19-tout-ce-quil-faut-savoir-sur-les-innovations-majeures-du-framework/
- composant standalone par default (limiter les problemes de dependances), peut le mettre en strict pour le l'imposer (ou planter)
- signalement des imports inutilisés
- @let pour les variables locales dans les templates
- linkedSignal (experimental) pour lier des signaux entre eux (cascade de changement suite a un evenement
- hydratation incrementale (contenu progressivement interactif avec le chargement - sur les parties de la page visible ou necessaires
- et event replay, routing et modes de rendu en rendy hybride, Hot module replacement etc
The State of Frontend — dernière compilation des préférences des développeurs en terme de front https://tsh.io/state-of-frontend/
- React en tête, suivi de Vue et Svelte. Angular seulement 4ème
- Côté rendering framework, Next.js a la majorité absolue, ensuite viennent Nuxt et Astro
- Zod est la solution de validation préférée
- Pour la gestion de date, date-fns est en tête, suiv




