LCC 315 - les températures ne sont pas déterministes

Épisode de Les Cast Codeurs Podcast par Emmanuel Bernard, Guillaume, Antonio, Arnaud, Katia · 17 septembre 2024 · 1 h 50 min

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 (qui sont copies sur le serveur froid)

sur .net activer ready to run qui aide le JIT compiler

instances azure avec plus de CPU et memoire sont plus cher amis baissent le cold start

dedicated azure instances pour vos fonctions (pas aprtage avec les autres tenants)

ensuite montre des exemples concrets

Web

Sortie de Vue.js 3.5 https://blog.vuejs.org/posts/vue–3–5

Vue.JS 3.5: Nouveautés clés

Optimisations de performance et de mémoire:

Réduction significative de la consommation de mémoire (–56%).

Amélioration des performances pour les tableaux réactifs de grande taille.

Résolution des problèmes de valeurs calculées obsolètes et de fuites de mémoire.

Nouvelles fonctionnalités:

Reactive Props Destructure: Simplification de la déclaration des props avec des valeurs par défaut.

Lazy Hydration: Contrôle de l'hydratation des composants asynchrones.

useId(): Génération d'ID uniques stables pour les applications SSR.

data-allow-mismatch: Suppression des avertissements de désynchronisation d'hydratation.

Améliorations des éléments personnalisés: Prise en charge de configurations d'application, d'API pour accéder à l'hôte et au shadow root, de montage sans Shadow DOM, et de nonce pour les balises.

useTemplateRef(): Obtention de références de modèle via l'API useTemplateRef().

Teleport différé: Téléportation de contenu vers des éléments rendus après le montage du composant.

onWatcherCleanup(): Enregistrement de callbacks de nettoyage dans les watchers.

Data et Intelligence Artificielle

On entend souvent parler de Large Language Model quantisés, c'est à dire qu'on utilise par exemple des entiers sur 8 bits plutôt que des floatants sur 32 bits, pour réduire les besoins mémoire des GPU tout en gardant une précision proche de l'original. Cet article explique très visuellement et intuitivement ce processus de quantisation : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization

Guillaume continue de partager ses aventures avec le framework LangChain4j. Comment effectuer de la classification de texte : https://glaforge.dev/posts/2024/07/11/text-classification-with-gemini-and-langchain4j/

en utilisant la classe TextClassification de LangChain4j, qui utilise une approche basée sur les vector embeddings pour comparer des textes similaires

en utilisant du few-shot prompting, sous différentes variantes, dans cet autre article : https://glaforge.dev/posts/2024/07/30/sentiment-analysis-with-few-shots-prompting/

et aussi comment faire du multimodal avec LangChain4j (avec le modèle Gemini) pour analyser des textes, des images, mais également des vidéos, du contenu audio, ou bien des fichiers PDFs : https://glaforge.dev/posts/2024/07/25/analyzing-videos-audios-and-pdfs-with-gemini-in-langchain4j/

Autres épisodes de « Les Cast Codeurs Podcast »

À propos du podcast

Les Cast Codeurs : le podcast en français de, par et pour les développeurs. Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview. Supportez les radotages de vos hôtes : Emmanuel Bernard (ex Red Hat,…

Les Cast Codeurs Podcast

Épisodes similaires

Tous les épisodes de Les Cast Codeurs Podcast · Plus de podcasts Actualités