Published: June 15, 2024, 8:17 a.m.
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\xe8re de dev \xe0 40 ans ?
Enregistr\xe9 le 14 juin 2024
T\xe9l\xe9chargement de l\u2019\xe9pisode 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\xe9 chez Google et l\u2019\xe9quipe Flutter/Dart comme plein d\u2019autres ont \xe9t\xe9 touch\xe9es, mais sur les r\xe9seaux sociaux les gens ont pens\xe9 que Google d\xe9sinvestissait dans Flutter et Dart.
- Par ailleurs, c\xf4t\xe9 Android, ils poussent plut\xf4t du c\xf4t\xe9 de Kotlin et KMP, mais naturellement aussi les gens se sont demand\xe9 si Google avait pris parti pour pousser plus Kotlin/KMP plut\xf4t que Flutter/Dart.
- Pour essayer de mieux faire comprendre aux d\xe9veloppeurs l\u2019int\xe9r\xeat des deux plateformes, et leurs avantages et inconv\xe9nients, les directeurs des deux plateformes ont r\xe9dig\xe9 un article commun.
- Si l\u2019on souhaite une exp\xe9rience plus proche du hardware et des derni\xe8res nouveaut\xe9s d\u2019Android, et d\u2019avoir aussi une UI/UX vraiment native Android, mieux vaut aller du c\xf4t\xe9 de Kotlin/KMP.
- Si l\u2019on souhaite par contre une exp\xe9rience multiplateforme Web, mobile, desktop avec une UX commune cross-plateforme, avec \xe9galement le partage de business logic \xe0 partir d\u2019une m\xeame base de code, Flutter et Dart sont plus adapt\xe9s.
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\u2019experience de la migration d\u2019android 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\u2019adoption (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\xe9es SQL (exp\xe9rimental)
- R\xe9cup\xe9ration des resources remont\xe9es par le RAG lorsque AiServices retourne un Result
- Observabilit\xe9 LLM pour OpenAI pour \xeatre notifi\xe9 des requ\xeates, r\xe9ponses et erreurs
- Int\xe9gration de Cohere (embedding), Jina (embedding et re-ranking scoring), Azuere CosmosDB comme embedding store
- Mise \xe0 jour de Gemini avec le parallel function calling et les instructions syst\xe8me
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\xe9 sur Netty inclus la d\xe9tection d\u2019op\xe9ration bloquante et les modules l\u2019utilisant indiqueront \xe0 l\u2019utilisateur quand certaines op\xe9rations peuvent \xeatre redirig\xe9e plut\xf4t 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\xe9n\xe9rer des JSON Schemas pour les records Java
- Un nouveau module Source Gen pour faire de la g\xe9n\xe9ration 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\xe9rimental pour la d\xe9tection de changement sans zone
- Angular.dev est d\xe9sormais le nouveau site pour les d\xe9veloppeurs Angular
- Material 3, les \u201cdeferrable views\u201d, le \u201cbuilt-in control flow\u201d sont maintenant stables et int\xe8grent une s\xe9rie d\u2019am\xe9liorations
- Am\xe9liorations du rendu c\xf4t\xe9 serveur telles que le support de l\u2019hydratation i18n, un meilleur d\xe9bogage, le support de l\u2019hydratation dans Angular Material, et la event replay qui utilise la m\xeame biblioth\xe8que 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\u2018ex\xe9cution de LLM en Java avec l\u2019api vector https://www.infoq.com/news/2024/05/jlama-llm-inference-java/
- bas\xe9 sur llama.c qui est un moteur d\u2019inference de LLM (l\u2019execution des requetes)
- jlama implement\xe9 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\u2019Universit\xe9 de Washington permet d\u2019\xe9couter une seule personne de ton choix et effacer tout le bruit autour
- le syst\xe8me n\xe9cessite que la personne portant les \xe9couteurs appuie sur un bouton tout en regardant quelqu\u2019un parler ou simplement en le fixant pendant trois \xe0 cinq secondes
- Permet \xe0 un mod\xe8le d\u2019apprendre les sch\xe9mas vocaux du locuteur et de s\u2019y attacher pour pouvoir les restituer \xe0 l\u2019auditeur, m\xeame s\u2019il se d\xe9place et cesse de regarder cette personne.
- Selon les chercheurs, cela constitue une avanc\xe9e significative par rapport aux \xe9couteurs \xe0 r\xe9duction de bruit existants, qui peuvent annuler efficacement tous les sons, mais ne peuvent pas s\xe9lectionner les locuteurs en fonction de leurs caract\xe9ristiques vocales.
- Actuellement, le syst\xe8me ne peut enregistrer qu\u2019un seul locuteur \xe0 la fois. Une autre limitation est que l\u2019enregistrement ne r\xe9ussira que si aucune autre voix forte ne provient de la m\xeame direction.
- L\u2019\xe9quipe a mis en open source leur code et leur jeu de donn\xe9es afin de faciliter les travaux de recherche futurs pour am\xe9liorer l\u2019audition 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\xe9 15.000 tests de Enzyme \xe0 React Testing Library avec un succ\xe8s de 80%
- Migration n\xe9cessaire pour le manque de support de Enzyme pour React 18
- L\u2019\xe9quipe a essay\xe9 d\u2019automatiser la conversion avec des transformations AST, mais n\u2019a atteint que 45 % de succ\xe8s \xe0 cause de la complexit\xe9 des m\xe9thodes d\u2019Enzyme et du manque d\u2019acc\xe8s aux informations contextuelles du DOM.
- L\u2019\xe9quipe a utilis\xe9 Claude 2.1 pour la conversion, avec des taux de r\xe9ussite variant de 40 % \xe0 60 %, les r\xe9sultats d\xe9pendant largement de la complexit\xe9 des t\xe2ches.
- Suite aux r\xe9sultats insatisfaisants, l\u2019\xe9quipe a d\xe9cid\xe9 d\u2019observer comment les d\xe9veloppeurs humains abordaient la conversion des tests unitaires.
- Les d\xe9veloppeurs humains utilisaient leurs connaissances sur React, Enzyme et RTL, ainsi que le contexte du rendu et les conversions AST de l\u2019outil initial pour mieux convertir les tests unitaires.
- Finalement les ing\xe9nieurs de Slack ont combin\xe9 transformations AST et LLM en int\xe9grant des composants React rendus et des conversions AST dans les invites, atteignant un taux de r\xe9ussite de 80 % d\xe9montrant ainsi la compl\xe9mentarit\xe9 de ces technologies.
- Claude 2.1 est un mod\xe8le de langage de grande taille (LLM) annonc\xe9 en novembre 2023 par Anthropic. Il inclut une fen\xeatre contextuelle de 200 000 tokens, des r\xe9ductions significatives des taux d\u2019hallucination du mod\xe8le, des invites syst\xe8me et permet l\u2019utilisation d\u2019outils. Depuis, Anthropic a introduit la famille de mod\xe8les Claude 3, compos\xe9e de trois mod\xe8les distincts, avec des capacit\xe9s multimodales et une compr\xe9hension contextuelle am\xe9lior\xe9e.
- Un arbre de syntaxe abstraite (AST) est une repr\xe9sentation arborescente de la structure syntaxique abstraite du code source \xe9crit dans un langage de programmation. Chaque n\u0153ud de l\u2019arbre repr\xe9sente une construction du code source. Un arbre de syntaxe se concentre sur la structure et le contenu n\xe9cessaires pour comprendre la fonctionnalit\xe9 du code. Les AST sont couramment utilis\xe9s 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\xe7u pour l\u2019automatisation des tests, supporte plusieurs langages (Java, Python, JavaScript, TypeScript, Kotlin, SQL) et frameworks de tests (Selenium, Playwright, Cypress).
- Pourquoi ? Les tests d\u2019applications n\xe9cessitent des comp\xe9tences sp\xe9cifiques. Aqua, un IDE adapt\xe9, est recommand\xe9 par les ing\xe9nieurs 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\u2019heure du devops et du TDD de faire des outils d\xe9di\xe9s et donc des equipes ou personnes d\xe9di\xe9es
M\xe9thodologies
Les 10 principes \xe0 suivre, selon le cr\xe9ateur de cURL, pour \xeatre un bon BDFL (Benevolent Dictator For Life) https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/
- \xcatre ouvert et amical
- Livrer des produits solides comme le roc
- \xcatre un leader de l\u2019Open Source
- Privil\xe9gier la s\xe9curit\xe9
- Fournir une documentation de premier ordre
- Rester ind\xe9pendant
- R\xe9pondre rapidement
- Suivre l\u2019actualit\xe9
- Rester \xe0 la pointe de la technologie
- Respecter les retours d\u2019information
- Dans un vieil article de Artima, Guido Van Rossum, le cr\xe9ateur de Python et premier BDFL d\u2019un projet, se rem\xe9more un \xe9change de 1995 qui est \xe0 l\u2019origine de ce concept https://www.artima.com/weblogs/viewpost.jsp?thread=235725
- Guido Van Rossum a \xe9t\xe9 le premier \xe0 endosser ce \u201cr\xf4le\u201d
Un site compr\xe9hensif sur les build reproductibles https://reproducible-builds.org
- longue doc
- de la definition aux m\xe9thodes pour resoudre des probl\xe8mes sp\xe9cifiques
Masterclass de Fabien Olicard: Le Palais Mental https://www.youtube.com/watch?v=u6wu_iY4xd8
- Technique pour retenir de l\u2019information plus longtemps que dans sa m\xe9moire courte
Les APIs web ne devraient pas rediriger HTTP vers HTTPS https://jviide.iki.fi/http-redirects
- grosso modo le risque majeur est d\u2019envoyer des donn\xe9es confidentielles en clair sur le r\xe9seau
- le mieux serait de ne pas rediriger vers HTTPS, mais par contre de retourner une vraie erreur explicite
- notamment les cl\xe9s d\u2019API et c\u2019est facile de ne pas le,voir vu les redirects.
S\xe9curit\xe9
Blog de GitHub sur la provenance et l\u2019attestation https://github.blog/2024-04-30-where-does-your-software-really-come-from/
- Discute les concepts de securisation de chainne d\u2019approvisionnement de sogiciel et comment elles s\u2019articulent entre elle. A haut niveau
- discute les hash pour garantir le meme fichier
- La signature asymetrique pour prouver que j\u2019ai sign\xe9 (e.g.\xa0le hash) et donc que je garantis.
- L\u2019attenstation 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\u2019est sigstore
- MEtionne aussi The Update Framework pour s\u2019appuyer 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 \xeatre codeur reconnu ?
Conf\xe9rences
La liste des conf\xe9rences provenant de Developers Conferences Agenda/List par Aur\xe9lie Vache et contributeurs :
Nous contacter
Pour r\xe9agir \xe0 cet \xe9pisode, 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 \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/