Published: May 15, 2023, 10:04 a.m.
Dans cet \xe9pisode, Arnaud, Antonio et Emmanuel d\xe9cortiquent les nouvelles d\u2019avril et mai. On y discute Java 20, ecrire un profiler de z\xe9ro, Quarkus 3 (encore !), Micronaut 4, Podman, JReleaser, GitHub, CloudEvent, GraphQL, licenciements (encore !), et de la question a 1000 francs: librarie vs framework, quelle diff\xe9rence? Mais pas que.
Enregistr\xe9 le 12 mai 2023
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode\u2013295.mp3
News Langages
Un descriptif du changement de paiement d\u2019Oracle JDK https://horstmann.com/unblog/2023\u201302\u201323/
- Cay Horstmann
- Explique OpenJDK avec plusieurs distributeurs
- Pref\xe8re Adoptium dont celle par d\xe9faut est Eclipse Temurin
- Pour Oracle, beaucoup d\u2019options de licenses (no-fee, binary code, OTM license)
- Oracle depense beaucoup pour Java
- La license en discussion est Java SE Universal Subscription Licensing
- passage de license par CPU (Java SE advanced) vers license par employ\xe9 (et une assiete large)
- Bref si vous \xeates concern\xe9s, passer sur OpenJDK: Adoptium, ou d\u2019autres vendeurs
Java 20 est sorti : qu\u2019y a t\u2019il de nouveau dans Java 20 par rapport \xe0 Java 19 ? https://foojay.io/today/its-java\u201320-release-day-heres-whats-new/
- L\u2019article fait le point sur ce qu\u2019il y a de nouveau par rapport \xe0 la pr\xe9c\xe9dente release :
- 4\xe8me preview du pattern matching pour switch
- 2nde preview des record patterns
- 2nde preview des virtual threads
- incubation des scoped values (similaire au thread locals mais pour les virtual threads)
- 2nde incubation de la structured concurrency
- 2nd preview de foreign function et memory API
- 5\xe8me incubation de la vector API (pour utiliser les instructions vectorielles des processeurs)
- La liste des JEPs : https://openjdk.org/projects/jdk/20/
- Les release notes : https://jdk.java.net/20/release-notes
- dans le pattern matching switch: guarde
when
- Record pattern: utilisation de
var
. utilisable dans les for
aussi maintenant for (Delay(var timeInMS) : delays)
- quelques changements autour de l\u2019API
Thread
est non preview (main API) - Les
ScopedValue
sont comme les threadlocal par (virtual) thread mais elles sont immuables une fois \xe9crites. - use cases: copie d\u2019etat pour des donn\xe9es non changeantes pour le virtual thread
- Serait interessant d\u2019avoir des details dessus
PDF 2.0 maintenant un vrai format ISO ouvert et gratuit https://www.pdfa.org/sponsored-standards/
- standard dispo sans cout
- versions precedentes \xe9taient payantes
- clarifications et corrections de beaucoup de corner cases
Librairies
\xc9crire un Profiler en 240 lignes de Java https://mostlynerdless.de/blog/2023/03/27/writing-a-profiler-in\u2013240-lines-of-pure-java/
- Ce n\u2019est peut-\xeatre pas si compliqu\xe9 d\u2019\xe9crire soi m\xeame un Java Profiler ! Et justement cet article nous montre comment le faire, en cr\xe9ant un Java Agent, en analysant les stacks d\u2019appel, et \xe0 la fin en cr\xe9ant m\xeame un flame-graph en HTML
- Tr\xe8s didactique !
- fondamentallement: appeler
Threads:getAlStackStrace
reguilerement et faire une liste des methodes visibles et cr\xe9er un flamegraph a partir de ces donn\xe9es
L\u2019\xe9quipe de Flutter partage les grands th\xe8mes de sa roadmap https://flutter.dev/go/strategy\u20132023
- Performance, interop\xe9rabilit\xe9, portabilit\xe9, \xe9cosyst\xe8me, s\xe9curit\xe9, fondamentaux (comme la documentation, la fid\xe9lit\xe9 des UI natives, adresser les issues publiques)
Quarkus 3 est sorti https://quarkus.io/quarkus3/
- on a deja couvert
- Hibernate ORM 6.2
- nouvelle DevUI et admin sur un port different
- Support for Pact
- quarkus deply et extensibilite de la CLI avec des nouveaux verbes
- dev services for Kubernetes simule un Kube pour tester les calls vers l\u2019API Kube
- Java 11 et 17 (recommend\xe9)
- Jakarta EE
- Eclipse MicroProfile 6
Une librairie en Java sp\xe9cialement pour l\u2019astronomie par C\xe9dric Champeau https://melix.github.io/blog//2023/04\u201322-introducing-astro4j.html
- diff\xe9rentes librairies et applications pour traiter les images issues de sol\u2019ex qui permet de prendre des photos du soleil
Micronaut 4 milestone 2 est sorti. Les nouveaut\xe9s de Micronaut 4 https://docs.micronaut.io/4.0.0-M2/guide/index.html#whatsNew
- Kotlin 1.8.0
- Experimental Support for Kotlin Symbol Processing (KSP)
- Apache Groovy 4.0
- Core Changes
- Java 17 Baseline
- Improved Modularity
- GraalVM Metadata Repository and Runtime Initialization
- Completed javax to jakarta Migration
- Expression Language
- Injection of Maps
- Arbitrary Nesting of Configuration Properties
- Improved Error Messages for Missing Configuration
- Improved Error Messages for Missing Beans
- Tracking of Disabled Beans
- HTTP Changes
- Initial Support for Virtual Threads (Loom)
- Rewritten HTTP layer
- Annotation-Based HTTP Filters
- JDK HTTP Client
Infrastructure
5 choses \xe0 savoir sur Podman Desktop pour un utilisateur Docker https://podman-desktop.io/blog/5-things-to-know-for-a-docker-user
- Une UI unique pour travailler avec diff\xe9rents moteur de conteneurs, et pas uniquement Docker
- Compatible avec Docker avec un mode adapt\xe9 pour fonctionner aussi avec la docker CLI ou docker.sock pour les sockets
- Support de Compose
- Support de Kubernetes
- Securit\xe9 : on peut utilis\xe9 rootless sans avoir les privil\xe8ges root
- socket est particulierement utile pour TestContainer
compose
n\u2019est pas supporte en tant que tel mais on pout faire utiliser podman par compose - podman peut emuiler / executer des definitions de pods
- si besoin d\u2019exposer des ports <1024, on poeut activer le mode root.
Keycloak rejoins la CNCF https://www.tfir.io/keycloak-cloud-native-iam-for-cloud-native-applications-joins-the-cncf/?utm_campaign=shareaholic&utm_medium=linkedin&utm_source=socialnetwork
- IAM complete au sein de la CNCF
- Keycloak sur base Quarkus : \u201ccloud natif\u201d
Cloud
Un petit article court de chez Baeldung qui liste des distributions Kubernetes l\xe9g\xe8res () et partage leurs avantages et inconv\xe9nients respectifs https://www.baeldung.com/ops/kubernetes-lightweight-distributions
- Minikube (que des clusters \xe0 noeud unique)
- MicroK8S (\xe0 jour avec les releases Kubernetes, mais pas de support des CPUs ARM32)
- Kind (conteneurs consid\xe9r\xe9s comme des noeuds, plus difficile \xe0 configurer avec autre chose que Docker)
- K3S (moins de consommation de resources)
Il y a la liste des 100 trucs annonc\xe9s : https://blog.google/technology/developers/google-io\u20132023\u2013100-announcements/
- Bard, le concurrent de ChatGPT, disponible dans 180 pays\u2026 sauf les pays europ\xe9ens
- Pixel 7a, Pixel Tablet et Pixel Fold
- Plein d\u2019annonces autour de l\u2019AI avec l\u2019API PaLM (utilis\xe9e dans Bard), plein de Generative AI de partout dans les produits (search, workspace,..), y compris un mod\xe8le de code (qui comprends m\xeame le Groovy) qui va \xeatre int\xe9gr\xe9 aux IDE, VSCode, etc
Outillage
Connaissiez vous le flag \u2013json de curl ? https://glaforge.dev/posts/2023/03/22/curl-s-json-flag/
- Ca va simplifier nos interactions avec les APIs qui utilisent du JSON
- Plus besoin de passer les headers de content-type et d\u2019accept, c\u2019est moins verbeux
- Rajout\xe9 il y a un an dans curl 7.82 (pour info, sur mon mac, par exemple, je suis en 7.86)
curl --json '{ "drink": "coffe" }' [https://example.com](https://example.com)
ou curl --json @prepared [https://example.com](https://example.com)
pour pointer vers un fichier
R\xe9trop\xe9dalage chez Docker https://www.docker.com/blog/no-longer-sunsetting-the-free-team-plan/
Github supprime le sponsoring par Paypal\u2026 et plein de d\xe9veloppeurs Open Source perdent leurs sponsorships https://github.com/orgs/community/discussions/45183
Github a mis \xe0 jour sa cl\xe9 RSA SSH Host https://github.blog/2023\u201303\u201323-we-updated-our-rsa-ssh-host-key/
- Apparemment, ils ont committ\xe9 bri\xe8vement leur cl\xe9 priv\xe9e, oops !
- Potentielle disruption pour certains, avec impossibilit\xe9 de committer son code
- Il faut alors \u201coublier\u201d l\u2019ancienne cl\xe9 publique et m\xe9moriser la nouvelle
- Personnellement, j\u2019ai committ\xe9 du code \xe0 partir de Visual Studio Code et je n\u2019ai pas eu de soucis
- que sur RSA et pas sur les cl\xe9s a courbe elliptique
- clef poriv\xe9e aurait pu faire du spoofing ou de dechiffremetn de flux en ssh via RSA vers github
2\xe8me anniversaire de JReleaser https://andresalmiray.com/jreleasers-second-birthday/
- jreleaser permet de publier sur plusieurs appstores (homebroew, jbang, etc)
- publie sur maven central automatiquemenr
- publie les annonces sur twotter zulip etc
- publication de binaires (gitHub etc) et de changelogs
Architecture
Introduction \xe0 CloudEvents https://atamel.dev/posts/2023/04\u201303_cloudevents_basics/
- decrire des evenement de donn\xe9es de mani\xe8re commune
- metadata standardisees pour le routage
- en JSON ou en
cloudevents+json
- metadonn\xe9es incluent: id, source, type, sujet, time, type de contenu de donn\xe9e, scheme ade donn\xe9e et des extensions comme partitioning etc
- binary mode: data dans le corps du message, et metadonn\xe9es en header. efficace pour parsing minimal
- structured-mode: data et metadata dans la meme enveloppe
- batch-mode: plusieurs evenements en un seul envoie
- formats: JSON, protobuf, Avro et XML
- protocoles: HTTP, AMQP, KAfka, MQTT, NATS, WebSocket
- Des evolutions futures planifi\xe9es
GraphQL, tout n\u2019est pas si rose https://betterprogramming.pub/graphql-from-excitement-to-deception-f81f7c95b7cf
- pour Facebook qui pense en tant que graph de donn\xe9es
- Pour leur appli mobile qui devait etre a bande apssante limit\xe9e
- choses positives: one requete pour plusieurs resources, selection des donn\xe9es dont on a besoin uniquement, typ\xe9 (entre client et serveur), meilleur outilllage dev pour l\u2019exploration, pas de soucis de version d\u2019API?
- equipe qui embrace GraphQL en 2019
- les perf optimis\xe9es apr un choix de donn\xe9es ne s\u2019set pas materialis\xe9 pour eux (sauf mobile, doncpas machine- mache et desktop)
- la latence de REST reste mieux que GraphQL
- en pratique desktop et mobile sont assez similaire en donn\xe9es fetch\xe9es
- schemas apportaient des problemes en pratique ; synchro front et back, code first generation avait des problemes de qualite de code genere
- schema -> code est meilleur mais synchro front back toujours un probleme en pratique
- erreurs, plus simple en rest avec les codes HTTP a debugger et monitorer
- version free est une mensonge, les schemas ne peuvent etre cass\xe9s
- pagination est compliqu\xe9 et non standard et caching est primitif compar\xe9 a REST
- n+1 probleme comme dans les ORMs ou alors dataloaders qui amene de la complexit\xe9
- securite est plus compliqu\xe9 a cause de la nav libre de GraphQL
- ecosysteme pas super mature pour les besoins encore et paradoxalement tres complexe
M\xe9thodologies
Trends technologie et culture par InfoQ https://www.infoq.com/articles/culture-trends\u20132023/
- les licenciement ont cass\xe9 les effets de psychological safety dans l\u2019industrie
- les IA genratives ont un impact fort sur la productivit\xe9 du d\xe9veloppeur mais aussi avec des faiblesses significatives
- au dela du legal, les responsabilit\xe9s societales deviennent plus importantes pour retenir employ\xe9s et clients
- Le travail asynchrone devient plus accept\xe9 socialement et adopter les practiques apportent des b\xe9n\xe9fices r\xe9els
- Le travail hybride devient la norme, amener les gens ensemble devient un choix d\xe9lib\xe9r\xe9, plus un horaire fixe
Loi, soci\xe9t\xe9 et organisation
Red Hat f\xeate ses 30 ans ! (limite, on n\u2019\xe9tait m\xeame pas n\xe9s, hein ?) https://www.redhat.com/en/blog/red-hat\u201330th-anniversary-celebrating-red-hat-day-north-carolina
Red Hat licencie 4% de ses employ\xe9s https://wraltechwire.com/2023/04/24/red-hat-cutting-hundreds-of-jobs-ceo-says-in-letter-to-employees/
- IBM avait annonc\xe9 3900 licenciements il y a peu et cela monte \xe0 5000 avec les licenciements chez Redhat (les effectifs \xe9taient de 2200 \xe0 Raleigh et 19000 \xe0 l\u2019international)
- Licenciements suite au contexte \xe9conomique post Covid, les revenus trimestriels de redhat n.ont \xe9t\xe9 que de 8% en Q1 alors que la croissance \xe9tait de 15 depuis l\u2019acquisition de redhat par ibm en 2019
Crazy Bob est d\xe9c\xe9d\xe9 :scream: https://www.sfgate.com/bayarea/article/mill-valley-man-killed-sf-stabbing\u201317878809.php
10 millions de comptes sur Mastodon https://mastodon.social/@mastodonusercount/110051957865629817
- Peut-\xeatre pas 10 millions de comptes actifs, mais d\u2019autres commentateurs estiment le nombre d\u2019actifs serait plut\xf4t de 6 \xe0 7 millions actifs, pour effectivement 10 millions de comptes cr\xe9\xe9s donc certains inutilis\xe9s ou disparus (serveur disparu)
Gordon Moore meure \xe0 94 ans https://www.lemonde.fr/economie/article/2023/03/26/mort-de-gordon-moore-entrepreneur-par-accident-et-cofondateur-d-intel_6167037_3234.html#xtor=AL\u201332280270-%5Bdefault%5D-%5Bios%5D
- chimiste de formation, il refuse de bosser autour de la bombe atomique et fini dans la silicon valley
- fonde un des premiers semiconducteurs (plusieurs transistors ensemble)
- Intel sera un des rpemier a parier sur le silicium (pour construire de la m\xe9moire) et un des premiers a faire une puce int\xe9gr\xe9 regroupant plusieurs fonctions
Twitter open source ses algorithmes de recommendation https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
- on retrouve le code source sur Github https://github.com/twitter/the-algorithm-ml
- et quelqu\u2019un a d\xe9j\xe0 trouv\xe9 o\xf9 il y a des clauses particuli\xe8res pour le cas o\xf9 un tweet vient d\u2019Elon Musk, o\xf9 un tweet vient d\u2019un r\xe9publicain ou d\u2019un d\xe9mocrate https://uwyn.net/@danluu@mastodon.social/110119479811452246
- L\u2019algorithme de Twitter https://aakashgupta.substack.com/p/the-real-twitter-files-the-algorithm
- analyse sans sensation
- trois \xe9tapes: aggravation des donn\xe9es, construction des \u201cfeatures\u201d, mixage
- Followers, nos tweets et nous
- Plus gros booster likes 30x, puis retweet 20x
- Features: SimCluster: groupe par categories/personnes le tweet
- Feature: TwHIN: vecteur de prediction d\u2019engagement pour un tweet donn\xe9
- Features: RealGraph, prend le tweet, the tweeter et le tweet\xe9 et construit un graphe pond\xe9r\xe9 de potentiel d\u2019interaction
- R\xe8gles de confiance et securit\xe9: \xe9limine certains sujets (cela censure plus depuis Elon Musk)
- Mixer: prend tout et construit la \u201ctimeline\u201d
- Utilisateur r\xe9pond aux r\xe9ponses: x75
- En fait que 80% du code ouvert
The end of faking it in silicon valley https://www.nytimes.com/2023/04/15/business/silicon-valley-fraud.html
- les startup qui brulaient du cash sans business model clair
- proces et prisons pour falsification de donn\xe9es clients
- le approches non etique ne sont plus ignor\xe9es
- avant les investisseurs avaient peur de se mettre les createur de boite a dos, maintenant, l\u2019argent vaut cher
- \u201cfinding out who is swimming naked when the tide goes out\u201d Warren Buffet
- \u201cIt feels like we were in a nightclub and the lights just turned on\u201d
- ils vont evaluer plus exhaustivement les foundateurs
- le probleme c\u2019\\est que VC c\u2019est sur la confiance (one way au moins) et que la c\u2019est cass\xe9
Rubrique d\xe9butant
On parle souvent de librairies et de frameworks, mais c\u2019est quoi la diff\xe9rence ? https://www.red-gate.com/simple-talk/development/other-development/the-difference-between-libraries-and-frameworks/
- Une librairie est une collection de classes, de fonctions, de code, que l\u2019ont peut utiliser pour des t\xe2ches sp\xe9cifiques, pour \xe9viter au d\xe9veloppeur de r\xe9inventer la roue (par exemple une librairie comme Joda Time qui permet de simplifier / codifier la repr\xe9sentation du temps)
- Il y a diff\xe9rents types de librairies : des librairies statiques ou dynamiques, suivant si elles sont charg\xe9es au runtime ou bien attach\xe9es au code que l\u2019on compile. Il y a des librairies standards (comme celles venant du JDK et donc inclues avec lui) ou des librairies tierces (que l\u2019on va par exemple trouver sur Maven Central)
- Un framework (un \u201ccadriciel\u201d en bon fran\xe7ois) c\u2019est aussi un ensemble de code, mais aussi de librairies, qui va offrir un cadre de d\xe9veloppement pour ses applications.
- Par exemple un framework web qui permet de cr\xe9er des applications web plus facilement, ou Tensorflow pour d\xe9velopper de nouveaux algorithmes d\u2019intelligence artificielle, ou Unity pour d\xe9velopper des jeux vid\xe9os
- Mais un framework est effectivement plus \u201ccadrant\u201d dans le sens o\xf9 on doit suivre ses recommendations sur comment structurer son code, comment \xe9tendre des classes ou interfaces du framework, etc.
- ainsi que les bonnes pratiques et parfois une boite a outil \u201cprete a l\u2019emploi vs assemblage
- article decrit les pour et les contre
Conf\xe9rences
Une liste de conf\xe9rences Java https://javaconferences.org/
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/