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.

On peut faire des heap dumps 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 leurs 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.
  • Key-based pagination pour éviter les trous de résultat en cas de modification d’entités en parallèle d’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 sûr.
  • 4 opérateurs CRUD et les requêtes save et upsert.
  • 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 Elasticsearch (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 optionnellement des APIs reactive.
  • Les gens pensaient à tors que les réactives imposaient le modèle de programmation.
  • Là 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 termes 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=WImtt07yTQMhhoNPN6lYEw

  • AI overview plus besoin d’aller sur les sites

Google I/O 2024

OpenAI lance son nouveau modèle : gpt-4o http://openai.com/index/hello-gpt-4o/

https://claude.ai/ est disponible en europe

  • Claude, le modèle est créé par Anthropic.
  • Claude est un assistant IA basé sur un grand modèle de langage entraîné selon des principes éthiques stricts. Il accorde une grande importance à l’honnêteté, l’impartialité et le respect de l’être humain.
  • Son raisonnement repose sur une compréhension profonde des concepts plutôt que sur de simples associations statistiques. Il cherche activement à corriger les éventuels biais ou erreurs.
  • Claude est polyvalent et peut s’adapter à différents styles de communication et niveaux de complexité selon le contexte. Il maîtrise de nombreux domaines académiques et scientifiques.
  • Il est capable d’introspection sur ses propres processus de pensée et ses limitations. La vie privée et la confidentialité sont des priorités pour lui.
  • Claude continue d’apprendre et de s’améliorer grâce aux interactions avec les humains. Son but est d’être un assistant fiable, éthique et bienveillant.
  • Quelqu’un sait comment ils font pour raisonner et pas juste LLM statistique ? Comment ils prouvent cela ? C’est du code à part ?

Grok le modèle de X/Twitter/Musk est aussi disponible en Europe https://x.com/x/status/1790917272355172401?s=46&t=GLj1NFxZoCFCjw2oYpiJpw

  • Un truc unique est qu’il utilise les tweets comme référence sur ce qu’il dit. Par exemple demande les meilleurs Java Champions
  • Et c’est sur les tweets récents, probablement une sorte de RAG ou une sorte de fine tuning sur les derniers tweets, je ne sais pas.

L’algorithme des modèles de diffusion expliqués https://x.com/emmanuelbernard/status/1787565568020619650

  • Deux articles, un general et lisible.
  • L’autre plus abscond mais avec certains details intéressants sur le downsizing.
  • Étapes ajout de bruit à des images (learning) pour après appliquer le process opposé le reverse diffusion process.
  • On prédit le bruit à enlever, on l’enlève et on repère le processus.
  • Et tout cela est influencé par le prompt.

Réindexation sans downtime des données de documentation de Quarkus, en quarkus bien sûr https://quarkus.io/blog/search-indexing-rollover/

  • Utilise Hibernate search.
  • Utilisé Elasticsearch / Opensearch.
  • Article qui explique une des approches pour ré-indexer sans downtime via index alias.

Outillage

Un article qui parle de l’outil de build bld, peu connu, qui permet d’écrire ses builds simplement dans une classe Java. https://sombriks.com/blog/0070-build-with-bld-and-why-it-matters/

IntelliJ 2024.1 est sorti https://blog.jetbrains.com/idea/2024/05/what-s-new-in-intellij-idea-ultimate-2024-1/

  • Complétion de ligne entière (deep learning).
  • Assistant AI amélioré
  • Spring Boot support amélioré sur bean completion et génération de diagramme.
  • Support des Dev Containers simplifié.
  • Amélioration support quarkus avec notamment icône dev ui et config des tests.
  • Support de OpenRewrite.
  • Server Wiremock.
  • Et plein d’autres choses.

En version beta public, Homebrew permet de vérifier la provenance des packages (bottles) https://blog.trailofbits.com/2024/05/14/a-peek-into-build-provenance-for-homebrew/

Mettez à jour git en version 2.45.1 pour fixer des failles de sécurité https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/

  • CVE-2024-32002 (Critique, Windows & macOS) : Les repos Git avec des sous-modules peuvent tromper Git pour lui faire exécuter un hook (élément de script) à partir du répertoire .git/ pendant une opération de clonage, permettant l’exécution de code à distance (Remote Code Execution).
  • CVE-2024-32004 (Important, machines multi-utilisateurs) : Un attaquant peut concevoir un repo local qui exécute du code arbitraire lors du clonage.
  • CVE-2024-32465 (Important, toutes les configurations) : Le clonage à partir de fichiers .zip contenant des repos Git peut contourner les protections, et potentiellement exécuter des hooks malveillants.
  • CVE-2024-32020 (Faible, machines multi-utilisateurs) : Les clones locaux sur le même disque peuvent permettre à des utilisateurs non approuvés de modifier des fichiers liés physiquement (hard link) dans la base de données des objets du repo cloné.
  • CVE-2024-32021 (Faible, machines multi-utilisateurs) : Le clonage d’un repo local avec des liens symboliques (symlinks) peut entraîner la création de liens physiques vers des fichiers arbitraires dans le répertoire objects/.

Architecture

Visualisation des algorithmes de rate limitation https://smudge.ai/blog/ratelimit-algorithms

Méthodologies

Le problème de l’implémentation alternative https://pointersgonewild.com/2024/04/20/the-alternative-implementation-problem/

  • Article par un développeur qui a développé des Just-in-Time compiler pour différents langages.
  • Remarqué que développer une implémentation alternative d’un langage (par exemple) n’a jamais vraiment rencontré le succès.
  • Les gens préfèrent l’original à une alternative qui est dépendante de / a peine à suivre l’implémentation d’origine.
  • Pour son cas, sur le JIT, il a travaillé sur un JIT intégré directement dans CRuby (plutôt que faire son implémentation alternative comme TruffleRuby), et sont JIT est intégré maintenant dedans directement.
  • Plus facile de rejoindre / s’intégrer au projet plutôt que d’être une alternative pour laquelle il faut convaincre les gens de l’adopter.

Le mode vigilant dans GitHub https://x.com/emmanuelbernard/status/1790026210619068435

Loi, société et organisation

Une perspective sur Redis et les changements de license par un DevRel AWS OpenSearch https://www.infoworld.com/article/3715247/the-end-of-vendor-backed-open-source.html

  • Les sociétés regardent l’impact légal des licenses source available pour elles même en usage interne.
  • Ça casse l’écosystème de spécialisations au-dessus du produit (logz.io au-dessus d’Elastic démarré avant le changement de license).
  • Redis top 10 contribs à AWS et Alibaba et Huawei et 3 redis. Donc ce n’est pas Redis qui contribue tout.
  • La plupart des ingénieurs de Redis Labs ne bossent pas sur Redis OSS, mais sur cloud et entreprise.
  • Peut-être la fin des single-vendor OSS.
  • Il n’y a que les cloud providers qui peuvent fournir de l’OSS sans affecter leur structure du coût.
  • C’est un ex-AWS en fait, maintenant indépendant.

Microsoft va investir 4 milliards en France (datacenters et IA) https://news.microsoft.com/fr-fr/2024/05/13/microsoft-announces-the-largest-investment-to-date-in-france-to-accelerate-the-adoption-of-ai-skilling-and-innovation/

Outils de l’épisode

ASDF un gestionnaire de version multi-runtime https://asdf-vm.com

  • Arnaud l’avait recommandé, mais je restais sur rvm
  • Apres des déboires, je suis passé à asdf, qui fonctionne.
  • Mais pour le JDK, j’utilise SDKMAN!.
  • Pour les javaistes, ça parait plus poussé.

Conférences

Les videos de Devoxx France sont en ligne https://www.youtube.com/playlist?list=PLTbQvx84FrARars1vXos7mlPdvYJmsEoK

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

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/