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/

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 entreprises, y compris des startups, utilisent Python pour diverses applications.
  • Malgré sa dominance, d’autres langages comme JavaScript, Java et Go gagnent en popularité et pourraient défier la position de leader de Python. (Java est monté du poste 4 au 3, en 1 an)
  • Les développeurs qui codent occasionnellement préfèrent Python, montrant ainsi son attrait au-delà des programmeurs professionnels.
  • L’émergence d’outils comme ChatGPT facilite l’accès à la programmation, ce qui pourrait influencer les tendances futures en matière de langages de programmation.
Librairies

Paramétrer ses tests JUnit 5 avec @CsvSource https://mikemybytes.com/2021/10/19/parameterize-like-a-pro-with-junit–5-csvsource/

  • l’annotation permet d’avoir ses données de test au plus près de la méthode
  • on écrit les données de test sous forme de CSV (éventuellement avec des délimiteurs de son choix pour plus de lisibilité, pour bien séparer les valeurs)
  • par exemple -> ou maps to
  • les valeurs peut être les paramètres de la method mai aussi les valeur de description du test
Infrastructure

Turbocharged Development: The Speed and Efficiency of WebAssembly par Danielle Lancashire https://devsummit.infoq.com/presentation/munich2024/turbocharged-development-speed-and-efficiency-webassembly

  • L’utilisation de WebAssembly avec Serverless. Faire tourner des applications plus facilement dans le cloud.WebAssembly est rapide et sûr pour exécuter du code. Cela aide à déployer les applications plus rapidement et à utiliser moins de ressources.
  • De nombreuses entreprises utilisent WebAssembly pour des tâches comme le traitement d’images et de données. Des plateformes comme Cloudflare Workers et AWS Lambda.
  • La communauté autour de WebAssembly granèit. De nouveaux outils et bibliothèques sont créés.
  • Cependant, il y a encore des défis à relever, comme la compatibilité et les performances. Malgré cela, l’avenir de WebAssembly est prometteur.
Web

C’est la guerre chez Wordpress https://techcrunch.com/2024/09/26/wordpress-vs-wp-engine-drama-explained/

  • une boite nommée WP Engine fait du hosting de WordPress mais ne contribue pas
  • Automatic, les gens derrière WordPress leur onbt demandé de résoudre ce probleme, soit en payant des droits de trademark soit en contribuant de l’engineering upstream à auteur de 8% de leurs revenus
  • WP Engine dit non
  • Automatic coupe l’accès aux mises a jours de thèmes et de plugins à WP Engine mettant des sites à risque (securité)
  • WP Engine dit que c’est un abus de position du CEO d’Automatic sur les accès WordPress.org
  • Bref c’est le drame
  • le CEO d’automatic propose à ses employés 6 mois de salaire si ils ne sont pas d’accord avec la stratégie https://www.cio.com/article/3550331/one-twelfth-of-automattic-staff-leave-over-wordpress-wp-engine-spat.html
  • 8% ont pris l’offre

Les WebComposants ne sont pas le fuitur https://dev.to/ryansolid/web-components-are-not-the-future–48bh

  • un article d’un auteur proéminent de framework JavaScript
  • Discute les avantages et les inconvenients de la standardisation
  • qui permet d’élever le débat mais aussi bloque des avenues d’optimisations
  • beaucoup d’exemples d’inovations en frameworks JS qui auraient été bloqués
  • Les commentaires apres l’article sont interessants aussi (en contre perspective)
  • mais tout le monde n’est pas d’accord avec cet article https://www.abeautifulsite.net/posts/web-components-are-not-the-future-they-re-the-present/
Data et Intelligence Artificielle

Conseils et bonnes pratiques lors de l’intégration de LLM dans une application https://glaforge.dev/posts/2024/09/23/some-good-practices-when-integrating-an-llm-in-your-application/

  • management de prompt effectif
  • versionnage et externalisation des prompts
  • fixer la version des modèles
  • optimisation et caching
  • mettre en place des rails de sécurité
  • évaluer et monitorer le comportement et la performance
  • prioriser la sécurité des données privées

Encore une nouvelle version de LangChain4j, avec la version 0.35 ! Guillaume couvre les nouveautés côté Gemini et Google Cloud https://glaforge.dev/posts/2024/09/29/lots-of-new-cool-gemini-stuff-in-langchain4j/

  • Support des toutes nouvelles versions de Gemini 1.5 (version 002)
  • Un “document loader” pour charger des documents à partir de Google Cloud Storage
  • Un “scoring model” qui permet de faire du “reranking” de résultat, pour trouver les résultats les plus pertinents pour une requête donnée
  • Support de nouveaux paramètres des embedding models (choix de la dimensionalité des vecteurs, du troncage des textes en entrée)
  • Ajout d’un “embedding model” pour le module Google AI Gemini
  • Un estimateur de token pour Google AI Gemini
  • Support des chat listeners
  • Support des enums pour la sortie structurée JSON
  • Et plein de mise à jour de la documentation pour refleter tous ces changements et aditions

Self Correction Algo LLM https://www.infoq.com/news/2024/10/google-deepmind-score/

  • Google DeepMind a récemment publié SCoRe, une nouvelle méthode d’auto-correction pour les modèles de langage (LLM). Elle améliore la capacité des LLM à corriger leurs erreurs lorsqu’ils résolvent des problèmes de mathématiques ou de programmation.
  • Contrairement aux méthodes antérieures, SCoRe utilise des données générées par le modèle lui-même pour créer des dialogues d’auto-correction. Cela permet au modèle de s’améliorer via un processus d’apprentissage par renforcement (RL) en deux étapes.
  • Les modèles ajustés avec cette technique ont montré des améliorations significatives, surpassant les performances des modèles de base.
  • Cette méthode pourrait ouvrir de nouvelles pistes pour rendre les LLM plus précis et robustes dans leurs réponses.

MongoDB 8 est sorti https://www.mongodb.com/products/updates/version-release

  • La version 8.0 est plus rapide, avec des lectures plus rapides, une meilleure gestion des mises à jour et des agrégations de séries temporelles jusqu’à 60 % plus rapides.
  • De nouvelles fonctionnalités incluent le support des Query pour les données chiffrées, rendant le traitement des données sensibles plus facile.
  • Beaucoup d’ameliorations pour la performance et scalabilité

Guillaume explore les techniques avancées de Retrieval Augmented Generation pour améliorer la qualité des résultats de recherche dans ses propres documents, avec les LLMs https://glaforge.dev/talks/2024/10/14/advanced-rag-techniques/

  • Présentations et vidéos données lors de la conférence Devoxx Belgique
  • Code des exemples disponibles sur Github
  • Techniques de chunking : sliding window, hypothetical questions, semantic chunking, context retrieval chunking
  • Techniques de retrieval : hypothetical document embedding, query compression, metadata filtering
Outillage

Article sur les cache alias en Infinispan https://infinispan.org/blog/2024/10/07/cache-aliases-redis-databases

  • Explique comment on peut utiliser Infinispan pour remplacer Redis
  • Explique la différence entre les database de Redis et les caches d’Infinispan
  • Explique l’utilité des alias en général
  • Explique comment on peut avoir un mapping des databases de Redis vers des caches d’Infinispan
Sécurité

Keycloak 26 est sorti: https://www.keycloak.org/2024/10/keycloak–2600-released

  • Organizations feature: permet aux administrateurs de créer et gérer des structures organisationnelles, facilitant la gestion des rôles et des permissions.
  • Persistent user sessions: Les sessions des utilisateurs sont maintenant stockées par default dans la base de donnée ce qui améliore la cohérence, surtout avec plusieurs instances.
  • Login Theme: Offre un design plus propre et une option de mode sombre qui s’adapte aux préférences des utilisateurs.
  • L’amélioration du déploiement multi-sites renforce la fiabilité et réduit le temps d’arrêt lors des demandes des utilisateurs.
  • Admin recovery: une méthode simple pour récupérer l’accès administrateur si tous les comptes sont bloqués, en créant un compte temporaire via des variables d’environnement.
  • Pour les utilisateurs qui migrent vers cette version, il est important de prêter attention aux changements liés à la gestion des caches et aux sessions persistantes.
Loi, société et organisation

Introduction des licences fair source https://techcrunch.com/2024/09/22/some-startups-are-going-fair-source-to-avoid-the-pitfalls-of-open-source-licensing/

  • Certaines startups utilisent des licences “fair source” pour partager leur code tout en protégeant leurs intérêts commerciaux.
  • Les licences FSL (Functional Source License) et BUSL (Business Source License) permettent d’ouvrir le code après 2 ou 4 ans.
  • Ces licences empêchent les concurrents de vendre des produits similaires tout de suite, offrant une protection temporaire.
  • Certains critiques pensent que ces licences sont compliquées et pourraient limiter l’innovation, car elles ne sont pas totalement ouvertes.
  • Le “fair source” est encore un concept nouveau, mais il pourrait devenir un bon compromis entre open source et logiciel privé.
  • definition de fair source: code lisible publique, peut etre utilise et modifié avec des “restrictions minimales” pour proteger le business modele du producteur ; et devient open source de maniere deferée
  • “any purpose other than a Competing Use. A Competing Use means use of the Software in or for a commercial product or service that competes with the Software or any other product or service we offer using the Software as of the date we make the Software available”
Outils de l’épisode

Un petit outil sympa pour les utilisateurs de Macs avec un écran “wide”, pour partager un écran virtuel : https://github.com/Stengo/DeskPad

  • les écrans larges sont partagés entierement et ceui fait un rendu 16:9 pour les gens qui le voient
  • cet écran acte comme un écran mais il est virtuel et on peut mettre les applications que l’on veut dedans
  • on ne l’a pas testé
Conférences

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/