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 le nouveau site pour les développeurs Angular
  • Material 3, les “deferrable views”, le “built-in control flow” sont maintenant stables et intègrent une série d’améliorations
  • Améliorations du rendu côté serveur telles que le support de l’hydratation i18n, un meilleur débogage, le support de l’hydratation dans Angular Material, et la event replay qui utilise la même bibliothèque que Google Search.
Data et Intelligence Artificielle

Une version pure Java du LLM Llama3 de Meta https://github.com/mukel/llama3.java/tree/main

  • utilise la future API Vector de Java

JLama, un moteur d‘exécution de LLM en Java avec l’api vector https://www.infoq.com/news/2024/05/jlama-llm-inference-java/

  • basé sur llama.c qui est un moteur d’inference de LLM (l’execution des requetes)
  • jlama implementé avec vector APIs et PamanaTensorOperations
  • plusisures alternatives (native binding, iml0ementation pure en java, scala, kotlin)

Target Speech Hearing https://www.infoq.com/news/2024/05/target-speech-hearing/

  • Nouveau algo Deep Learning de l’Université de Washington permet d’écouter une seule personne de ton choix et effacer tout le bruit autour
  • le système nécessite que la personne portant les écouteurs appuie sur un bouton tout en regardant quelqu’un parler ou simplement en le fixant pendant trois à cinq secondes
  • Permet à un modèle d’apprendre les schémas vocaux du locuteur et de s’y attacher pour pouvoir les restituer à l’auditeur, même s’il se déplace et cesse de regarder cette personne.
  • Selon les chercheurs, cela constitue une avancée significative par rapport aux écouteurs à réduction de bruit existants, qui peuvent annuler efficacement tous les sons, mais ne peuvent pas sélectionner les locuteurs en fonction de leurs caractéristiques vocales.
  • Actuellement, le système ne peut enregistrer qu’un seul locuteur à la fois. Une autre limitation est que l’enregistrement ne réussira que si aucune autre voix forte ne provient de la même direction.
  • L’équipe a mis en open source leur code et leur jeu de données afin de faciliter les travaux de recherche futurs pour améliorer l’audition de la parole cible.
Outillage

Utiliser LLM pour migrer du framework de testing https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/

  • Slack a migré 15.000 tests de Enzyme à React Testing Library avec un succès de 80%
  • Migration nécessaire pour le manque de support de Enzyme pour React 18
  • L’équipe a essayé d’automatiser la conversion avec des transformations AST, mais n’a atteint que 45 % de succès à cause de la complexité des méthodes d’Enzyme et du manque d’accès aux informations contextuelles du DOM.
  • L’équipe a utilisé Claude 2.1 pour la conversion, avec des taux de réussite variant de 40 % à 60 %, les résultats dépendant largement de la complexité des tâches.
  • Suite aux résultats insatisfaisants, l’équipe a décidé d’observer comment les développeurs humains abordaient la conversion des tests unitaires.
  • Les développeurs humains utilisaient leurs connaissances sur React, Enzyme et RTL, ainsi que le contexte du rendu et les conversions AST de l’outil initial pour mieux convertir les tests unitaires.
  • Finalement les ingénieurs de Slack ont combiné transformations AST et LLM en intégrant des composants React rendus et des conversions AST dans les invites, atteignant un taux de réussite de 80 % démontrant ainsi la complémentarité de ces technologies.
  • Claude 2.1 est un modèle de langage de grande taille (LLM) annoncé en novembre 2023 par Anthropic. Il inclut une fenêtre contextuelle de 200 000 tokens, des réductions significatives des taux d’hallucination du modèle, des invites système et permet l’utilisation d’outils. Depuis, Anthropic a introduit la famille de modèles Claude 3, composée de trois modèles distincts, avec des capacités multimodales et une compréhension contextuelle améliorée.
  • Un arbre de syntaxe abstraite (AST) est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l’arbre représente une construction du code source. Un arbre de syntaxe se concentre sur la structure et le contenu nécessaires pour comprendre la fonctionnalité du code. Les AST sont couramment utilisés dans les compilateurs et les interpreters pour analyser et examiner le code, permettant diverses transformations, optimisations et traductions lors de la compilation.

IDE de test de JetBrains https://blog.jetbrains.com/qa/2024/05/aqua-general-availability/

  • Aqua, le premier IDE conçu pour l’automatisation des tests, supporte plusieurs langages (Java, Python, JavaScript, TypeScript, Kotlin, SQL) et frameworks de tests (Selenium, Playwright, Cypress).
  • Pourquoi ? Les tests d’applications nécessitent des compétences spécifiques. Aqua, un IDE adapté, est recommandé par les ingénieurs en automatisation des tests.
  • Aqua propose deux plans de licence : un gratuit pour les usages non commerciaux et un payant pour les usages commerciaux.
  • cam me parait un peu contre intuitif a l’heure du devops et du TDD de faire des outils dédiés et donc des equipes ou personnes dédiées
Méthodologies

Les 10 principes à suivre, selon le créateur de cURL, pour être un bon BDFL (Benevolent Dictator For Life) https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/

  • Être ouvert et amical
  • Livrer des produits solides comme le roc
  • Être un leader de l’Open Source
  • Privilégier la sécurité
  • Fournir une documentation de premier ordre
  • Rester indépendant
  • Répondre rapidement
  • Suivre l’actualité
  • Rester à la pointe de la technologie
  • Respecter les retours d’information
  • Dans un vieil article de Artima, Guido Van Rossum, le créateur de Python et premier BDFL d’un projet, se remémore un échange de 1995 qui est à l’origine de ce concept https://www.artima.com/weblogs/viewpost.jsp?thread=235725
  • Guido Van Rossum a été le premier à endosser ce “rôle”

Un site compréhensif sur les build reproductibles https://reproducible-builds.org

  • longue doc
  • de la definition aux méthodes pour resoudre des problèmes spécifiques

Masterclass de Fabien Olicard: Le Palais Mental https://www.youtube.com/watch?v=u6wu_iY4xd8

  • Technique pour retenir de l’information plus longtemps que dans sa mémoire courte

Les APIs web ne devraient pas rediriger HTTP vers HTTPS https://jviide.iki.fi/http-redirects

  • grosso modo le risque majeur est d’envoyer des données confidentielles en clair sur le réseau
  • le mieux serait de ne pas rediriger vers HTTPS, mais par contre de retourner une vraie erreur explicite
  • notamment les clés d’API et c’est facile de ne pas le,voir vu les redirects.
Sécurité

Blog de GitHub sur la provenance et l’attestation https://github.blog/2024-04-30-where-does-your-software-really-come-from/

  • Discute les concepts de securisation de chainne d’approvisionnement de sogiciel et comment elles s’articulent entre elle. A haut niveau
  • discute les hash pour garantir le meme fichier
  • La signature asymetrique pour prouver que j’ai signé (e.g. le hash) et donc que je garantis.
  • L’attenstation qui declare des faits sur un artifact
  • attestation de provenance: source code et instructions de build (SLSA provenance)
  • mais il faut garantir les signature avec une autorite de certification et avec des certificats a courte vide idealement, c’est sigstore
  • MEtionne aussi The Update Framework pour s’appuyer sur cela et garantir des undates non compromis

Keycloak 25 est sorti https://www.keycloak.org/2024/06/keycloak-2500-released.html

  • Argon2 pour le hashing de mots de passe
  • Depreciation des adaptateurs (Tomcat, servlet etc)
  • Java 21 et depreciation de Java 17
  • session utilisatur persistente meme pour les instances online (pour survivre a une rotation de keycloak
  • ameliorations autour des passkeys
  • management et health endpoint sur un port different
  • Et plus
Demande aux cast codeurs

A 40 ans, tu peux encore être codeur reconnu ?

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/