Published: July 12, 2022, 10:50 a.m.
Cet \xe9pisode marathon sera d\xe9coup\xe9 en deux morceaux pour \xe9viter \xe0 vos oreilles une \xe9coute marathon. Dans cet \xe9pisode on y parle Brian Goetz, Bian Goetz, Brian Goetz, usages des threads virtuels, OpenAPI, Kubernetes, KNative, copilot et Tekton. La deuxi\xe8me partie couvrira des sujets d\u2019architecture et de loi soci\xe9t\xe9 et organisation ainsi que les conf\xe9rences \xe0 venir.
Enregistr\xe9 le 8 juillet 2022
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode\u2013281.mp3
News Langages
Peut-\xeatre une nouvelle syntaxe sp\xe9cifique aux Records Java pour tordre le cou aux builders
- Brian Goetz discute de l\u2019id\xe9e d\u2019avoir une syntaxe sp\xe9cifique pour les records pour facilement cr\xe9er un record d\xe9riv\xe9, potentiellement avec des valeurs par d\xe9faut, mais en param\xe9trant certains champs
- Point shadowPos = shape.position() with { x = 0 }
- Cela \xe9vite de cr\xe9er la notion de param\xe8tre par d\xe9faut dans les constructeurs ou les m\xe9thodes
Il y a l\u2019article Data Oriented Programming de Brian Goetz, sur InfoQ
- projet Amber am\xe8ne des changements qui combin\xe9s permet de faire du data oriented programming en Java et pas que du OOP
- OO combine \xe9tat et comportement (code)
- OO est super utile pour d\xe9fendre des limites (programme large en des limites plus petites et plus g\xe9rable)
- mais on s\u2019oriente vers des applications plus petites (microservices)
- data oriented programming: mod\xe9lise data immuable et le code de la logique m\xe9tier est s\xe9par\xe9e
- records -> data en tant que classe, sealed classes -> d\xe9finir des choix, pattern matching -> raisonne sur des data polymorphiques
- algebraic data: hi\xe9rarchie de sealed classes dont les feuilles sont des records: nomm\xe9es, immuable, testable (pas de code)
Un nouveau JEP pour int\xe9grer une Classfile API
- Le JDK inclut d\xe9j\xe0 des forks de ASM, de BCEL, et d\u2019autres APIs internes, pour manipuler / produire / lire le bytecode
- Mais l\u2019id\xe9e ici c\u2019est que le JDK vienne avec sa propre API officielle, et qui soit plus sympa \xe0 utiliser aussi que le pattern visiteur de ASM par exemple
- La version d\u2019ASM int\xe9gr\xe9e \xe9tait toujours en retard d\u2019une version (probl\xe8me de poule et d\u2019oeuf, car ASM doit supporter la derni\xe8re version de Java, mais Java n+1 n\u2019est pas encore sorti)
Lilian nous montre \xe0 quoi va ressembler les Record Patterns de JEP 405
Apache Groovy et les virtual threads, et aussi Groovy et le Deep Learning
- Paul King, qui dirige actuellement le PMC de Apache Groovy, a partag\xe9 r\xe9cemment plusieurs articles sur le blog d\u2019Apache sur des int\xe9grations int\xe9ressantes avec Groovy
- Groovy et sa librairie GPars pour la programmation concurrente et parall\xe8le s\u2019int\xe8gre facilement avec les Virtual Threads de JEP 425 / JDK 19 https://blogs.apache.org/groovy/entry/gpars-meets-virtual-threads
- Groovy avec Apache Wayang et Apache Spark pour classifier des Whiskey par clusterisation KMeans https://blogs.apache.org/groovy/entry/using-groovy-with-apache-wayang
- Et aussi Groovy avec diff\xe9rentes librairies de Deep Learning pour la classification https://blogs.apache.org/groovy/entry/classifying-iris-flowers-with-deep
Le jargon (en anglais) de la programmation fonctionnelle, si vous avez r\xeav\xe9 d\u2019avoir sous la main la d\xe9finition de foncteur, de mono\xefde, et j\u2019en passe
- avec des exemples en JavaScript
- des pointeurs vers des librairies fonctionnelles en JavaScript
- des traductions dans d\u2019autres langues et d\u2019autres langages de programmation
Librairies
Spring Boot 2.7
- SpringBoot 2.7
- Spring GraphQL 1.0
- Support pour Podman
- Gestion de d\xe9pendance et auto configuration pour Cache2k
- nouvelle annotations pour Elasticsearch et CouchBase
- derni\xe8re versions avant SpringBoot 3 qui changera plus de choses. Recommande de migrer une version a la fois. Support pour 2.5 \xe0 fini (upstream)
Quarkus 2.10.0
- Travaux pr\xe9liminaires sur les threads virtuels de Loom
- Support non-blocking pour GraphQL
- Prise en charge des Kubernetes service binding pour les clients SQL r\xe9actifs
- CacheKeyGenerator pour l\u2019extension de cache
- quarkus-bootstrap-maven-plugin d\xe9pr\xe9ci\xe9 et remplac\xe9 par quarkus-extension-maven-plugin (uniquement utile pour les d\xe9veloppeurs d\u2019extensions Quarkus)
- Nouveaux guides:
- Using Stork with Kubernetes
- OpenId Connect Client Reference Guide
- Using Podman with Quarkus
Les diff\xe9rences entre OpenAPI 2 et 3
- Introduction de la notion de lien pour cr\xe9er des relations entre Response et Operations, pratique pour faire des APIs hyperm\xe9dia
- La structure du document OpenAPI a \xe9t\xe9 -un peu simplifi\xe9e, en combinant par exemple basePath et schemes, ou en rassemblant les securityDefinitions
- Des am\xe9liorations sur les security schemes, autour de OAuth et OpenID
- Plus de clart\xe9 dans la n\xe9gociation de contenu et les cookies
- La section des exemples de Request / Response devrait aider les outils qui g\xe9n\xe8rent par exemple des SDK automatiquement \xe0 partir de la description OpenAPI
- Un support \xe9tendu de JSON Schema
- Introduction d\u2019une notion de Callback, importante pour les APIs asynchrones, en particulier les WebHooks
- je me demande si ils ont l\u2019intention d\u2019embrasser AsyncAPI ou su la partie asynchrone d\u2019OpenAPI 3 a pour objectif de faire de la competition
Infrastructure
N\u2019utilisez pas Kubernetes tout de suite !
- Kubernetes, c\u2019est bien, mais c\u2019est un gros marteau. Est-ce que vous avez des gros clous \xe0 enfoncer ?
- Ne commencez peut-\xeatre pas avec l\u2019artillerie lourde de Kubernetes. Commencez plut\xf4t avec des solutions manag\xe9es genre serverless, ce sera plus simple, et au fur et \xe0 mesure si votre infrastructure a besoin de grossir et d\xe9passe les fonctionnalit\xe9s des solutions manag\xe9es, \xe0 ce moment l\xe0 seulement \xe9valuer si Kubernetes peut r\xe9pondre \xe0 votre besoin
- Choisir Kubernetes, c\u2019est aussi avoir la taille de l\u2019\xe9quipe qui va bien avec, et il faut des profils DevOps, SRE, etc, pour g\xe9rer un cluster K8S
- L\u2019auteur sugg\xe8re grosso modo que \xe7a d\xe9pend de l\u2019ordre de magnitude de la taille de l\u2019\xe9quipe : avec quelques personnes, pr\xe9f\xe9rez des solutions type Google App Engine ou AWS App Runner, avec une dizaine de personne peut-\xeatre du Google Cloud Run ou AWS Fargate, avec moins d\u2019une centaine l\xe0 pourquoi pas du Kubernetes manag\xe9 comme Google Kubernetes Engine, et si vous d\xe9passez mille, alors peut-\xeatre vos propres clusters manag\xe9s par vos soins et h\xe9berg\xe9s par vos soins sur votre infra
- ca impose d\u2019utiliser les services du cloud provider? Parce que la vie ce n\u2019est pas que du code maison.
- C\u2019est la mode de dire de pas utiliser K8S : https://www.jeremybrown.tech/8-kubernetes-is-a-red-flag-signalling-premature-optimisation/ (mais bon, vu le nombre de fois o\xf9 il est pas utilis\xe9 \xe0 b
Knative Eventing Devlivery methods
- on peut faire de la delviery simple 1\u20131 sans garantie
- on peut faire de la delivery complexe et persistante en introduisant la notion de channel qui decouple la source de la destination.
- on peut repondre a la reception d\u2019un message et pousser la r\xe9ponse dans un second channel
- mais ca devient compliquer a g\xe9rer quand on rajoute des souscripteurs
- il y a la notiuon de broker qui definit: des flitres, un channel (automatique) et la capacit\xe9 de r\xe9pondre
- les triggers sont un abonnement non pas a un channel mais a un type d\u2019\xe9v\xe8nement sp\xe9cifique
Cloud
AWS is Windows and Kube is Linux
- pourquoi utilisez Kube qui etait pas stablewa lors qu\u2019AWS offre tout
- AWS forc\xe9 d\u2019offrir EKS
- MAis pourri
- Lockin AWSIAM
- Pourquoi AWS serait le windows
- economies d\u2019echelles de faire chez soi
- kube devient rentable une certaine taille de l\u2019organisation
- besoin alternative a AWS (bus factor)
- on voit le Kube distro modele arriver
Google data center Paris
Outillage
IntelliJ IDEA 2022.5 EAP 5 am\xe8ne des nouveaut\xe9s
GitHub copilot est disponible pour tous (les developpeurs)
- 40% du code \xe9crit est g\xe9n\xe9r\xe9 par copilot en python (ca calme)
- gratuit pour les \xe9tudiants et les d\xe9veloppeurs OSS
- Revue de Redmonk d\xe9crit copilot comme une extension d\u2019intelligence ou auto complete mais qui \xab comprend \xbb le code autour
- premiere fois pas une boite de cette taille et \xe0 cette \xe9chelle
- l\u2019avantage de copilot en terme de productivit\xe9, de qualit\xe9 de code, de s\xe9curit\xe9 et de l\xe9galit\xe9
- En gros, c\u2019est encore \xe0 voir. Mais la qualit\xe9 impressionne les gens qui l\u2019ont test\xe9 ; s\xe9curit\xe9 pas de retour d\u2019un c\xf4t\xe9 ou de l\u2019autre sauf que les d\xe9veloppeurs humains ne sont pas des lumi\xe8res de s\xe9curit\xe9 :D
- GitHub pense que GitHub n\u2019est pas responsable de la violation de code vue que ce sont des machines et des algorithmes qui transforment: cela a l\u2019air d\u2019etre le consensus des avocats
- GitHub dit qu\u2019on est responsable du code qu\u2019on \xe9crit avec copilot
- Et implicitement GitHub dit que la licensure du code \xab source \xbb ne se propage pas au code gener\xe9. Et l\xe0, c\u2019est pas clair et de la responsibilit\xe9 de l\u2019utilisateur, mais la encore les avocats sont plutot ok
- moralement c\u2019est probablement pas ok mais bon et il y a d\xe9bat autour des licenses copyleft notamment LGPL
- 1% du temps, code copi\xe9 verbatim de > 150 caract\xe8res
- Question sur le code non open source sur lequel GitHub Copilot s\u2019appuie
- mais en gros le marcher s\u2019en fout un peu des licences
- Risque de reputation de Microsoft
- la question c\u2019est quand / si les gens seront pr\xeat \xe0 accepter cet usage
Gradle publie sa roadmap
- Historiquement, la soci\xe9t\xe9 Gradle Inc ne publiait pas vraiment de roadmap officielle
- Outre les tickets que l\u2019on pouvait voir dans Github, cette fois ci, une \u201croadmap board\u201d est visible et disponible pour tout le monde, et pas seulement pour les clients
Tekton est groovy (mais non, il n\u2019utilise pas Groovy !)
- Un grand tutoriel sur Tekton
- Une br\xe8ve histoire de CI/CD (avec un contraste avec Groovy utilis\xe9 dans Jenkins)
- Un aper\xe7u des grands concepts de Tekton, avec ses t\xe2ches et ses pipelines (Task, TaskRun, Pipeline, PipelineRun)
- Comment installer Tekton
- Les outils CLI
- Un exemple concret d\u2019utilisation
Sortie de Vim 9, surtout avec VimScript 9
- des changements incompatibles entre VimScript 8.2 et 9 font qu\u2019il \xe9tait n\xe9cessaire de passer \xe0 une version majeure
- mais l\u2019ancienne version du langage reste support\xe9e pour compatibilit\xe9
- avec la nouvelle, les utilisateurs peuvent s\u2019attendre \xe0 des performances x10 voire x100 !
- le langage devient pr\xe9-compil\xe9, au lieu d\u2019\xeatre interpr\xe9t\xe9 ligne par ligne
- l\u2019id\xe9e \xe9tait d\u2019avoir un langage plus proche de ce qu\u2019on trouve dans JavaScript, TypeScript ou Java
Conf\xe9rences
De la part de Youen
Cette ann\xe9e Codeurs en Seine, c\u2019est le 17 novembre et le cfp est ouvert
N\u2019h\xe9sitez pas \xe0 amener un peu de JVM dans l\u2019appel \xe0 orateur. (ca commence \xe0 se faire rare). Pour rappel : codeurs en seine c\u2019est 1000 personnes autour des m\xe9tiers du d\xe9veloppement dans une des plus grande salle de Rouen, le kindarena.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/