Published: March 20, 2023, 7:46 a.m.
Cet \xe9pisode nouvelles discute d\u2019am\xe9liorations dans le JDK, d\u2019Hibernate 6, de Service Weaver, de la fin d\u2019options dans DockerHub pour certains projets open source, de Gradle, de cURL et pleins d\u2019autres choses encore.
Enregistr\xe9 le 17 mars 2023
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode\u2013292.mp3
News Langages
Quelle version de JDK utiliser en fonction des fonctionnalit\xe9s que l\u2019on souhaite utiliser mais aussi du long time support https://whichjdk.com/
JetBrains propose une formation Rust int\xe9gr\xe9e aux IDEs https://blog.jetbrains.com/rust/2023/02/21/learn-rust-with-jetbrains-ides/
- Un apprentissage directement int\xe9gr\xe9 \xe0 l\u2019IDE
- Avec un plugin \u201cAcademy\u201d d\xe9di\xe9, qui rajoute un troisi\xe8me panneau avec les instructions, les explications, et on fait des exercices dans la partie IDE
- Une chouette mani\xe8re d\u2019apprendre int\xe9gr\xe9e directement \xe0 son IDE
- Chacun doit pouvoir cr\xe9er ses propres ressources d\u2019apprentissage, et on pourrait appliquer \xe7a \xe0 des frameworks, des outils, ou pourquoi pas son propre projet informatique !
Retravail de classes du JDK Bits
/ ByteArray
vers un usage via VarHandle
pour le swapping de bits dans Java 21 https://minborgsjavapot.blogspot.com/2023/01/java\u201321-performance-improvements.html
- petit changement mais utilis\xe9 par beaucoup de classes comme
ObjectInputStream
RandomAccessFile
etc - am\xe9liore la serialization en java
Rajout de la notion de \u201csequenced collection\u201d dans la hi\xe9rarchie des collections, planifi\xe9 pour JDK 21 https://www.infoq.com/news/2023/03/collections-framework-makeover/
- va permettre de codifier les collections qui ont un ordre donn\xe9 (pas forc\xe9ment tri\xe9)
- rajouter aussi des m\xe9thodes pour traverser des collections s\xe9quentielles \xe0 l\u2019envers, ou pour r\xe9cup\xe9rer ou ajouter un \xe9l\xe9ment au d\xe9but ou \xe0 la fin d\u2019une collection ordonn\xe9e
- aujourd\u2019hui ces methodes sont eparpill\xe9es dans les impl\xe9mentaions et n\u2019avaient aps de contrat commun
Le guide ultime des virtual threads https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
- un tr\xe8s long article qui couvre le sujet des nouveaux virtual threads
- comment en cr\xe9er
- comment ils fonctionnent
- le scheduler et le scheduling coop\xe9ratif
- les \u201cpinned\u201d virtual threads (lorsqu\u2019un thread virtuel est bloqu\xe9 dans un vrai thread, par exemple dans un bloc synchronized ou lors d\u2019appel de m\xe9thondes natives)
- les thread local et thread pools
Librairies
Quarkus 3 alpha 5 avec Hibernate ORM 6 et une nouvelle DevUI https://quarkus.io/blog/quarkus\u20133\u20130\u20130-alpha5-released/
La route vers Quarkus 3, article sure infoq https://www.infoq.com/news/2023/03/road-quarkus\u20133/
- Jakarta EE, ORM 6, Microprofile 6, virtual threads, io_uring, ReactiveStreams=> Flow
- io_uring reduit les copie de buffer entre userspace et kernel space
- pas de support JPMS en vue mais Red Hat contribue a project Leyden
- Camel extensions, attendez Camel 4 (passage Jakarta EE)
Interview de Geert Bevin, l\u2019auteur du framework Java RIFE2 https://devm.io/java/rife2-java-framework
Google annouce Service Weaver https://opensource.googleblog.com/2023/03/introducing-service-weaver-framework-for-writing-distributed-applications.html
- EJB is back (Enterprise Go Beans :D)
- ecrire en tant que modular monolith
- permet au deploiement d\xe9cider ce qui est distribu\xe9
- bas\xe9 sur leur experience du surtout de maintance des microservices (contrats plus difficiles a casser - dbesoin de coordination de rollout etc)
- dans la communaut\xe9 des entousiastes
- et des gens concern\xe9s par les 10 falaccies of distributed computing et le fait de cacher les appels distants
- EJB et corba avant cela ont \xe9t\xe9 des \xe9checs de ce point de vue la
- ils n\u2019expliquement pas comment le binding de nouveax contrats et de deploiement se fait de maniere transparente
- des deployeurs implementables (go et GKE initialement)
Etude d\u2019opinion de certains utilisateurs de Jakarta EE (OmniFaces community) https://omnifish.ee/2023/03/10/jakarta-ee-survey\u20132022\u20132023-results/
- biais\xe9e donc attention
- Java EE 8 suivi par Jakarta EE 8 et derriere Jakarta EE 10 etc
- WildFly puis Payara puis glassfish ensuite tomee et JBoss EAP
- gens contents de leurs serverus d\u2019app sand Weblogic et Websphere
- les api utilis\xe9es le plus JPA, CDI, REST, Faces, Servlet, Bean Validation, JTA, EJB, EL etc
- Produit microprofile: Quarkus puis WildFlky puis Open Liberty puis Payara et Helidon
- Dans microprofile: Config, rest client, open api, health et metric sont les plus utilis\xe9s
Comment utiliser des records et Hibernate https://thorben-janssen.com/java-records-embeddables-hibernate/
- pas en tant qu\u2019entit\xe9 encore (final, pas de constructeur vide)
- mais en tant qu\u2019
@Embeddable
- records sont immuable
- dans hibernate 6.2, c\u2019est support\xe9 par default (annoter le record
@Embeddable
- Ca utilise le contrat
EmbeddableIntentiator
Cinq librairies Java super confortables https://tomaszs2.medium.com/5-amazingly-comfortable-java-libraries\u2013887802e240de
- mapstruct mapper des entit\xe9s en DTO
- jOOQ requ\xeate de bases de donn\xe9es typ\xe9es
- WireMock mocker des API ou \xeatre entre le client et l\u2019API pour ne mocker que certaines requ\xeates
- Eclipse Collections : pour rendre le code plus simple et facile \xe0 comprendre. Attention \xe0 la,surface d\u2019attaque
- HikariCP connection pool rapide - agroal est dans la meme veine mais supporte JTA. C\u2019est ce qui est dans Quarkus.
Retour d\u2019exp\xe9rience sur Hibernate 6 https://www.jpa-buddy.com/blog/hibernate6-whats-new-and-why-its-important/
- c\xf4t\xe9 APIs et c\xf4t\xe9 moteur
- jakarta persistence 3 ; java 11
- annotations de types hibernate sont typesafe
- support des types JSON OOTB
- meilleur support des dates avec
@TimeZoneStorage
soit natif de la base soit avec une colonne s\xe9par\xe9e - changement dans la g\xe9n\xe9ration des ID (changement cassant) mais strat\xe9gies de noms historique peut \xeatre activ\xe9
- Options autour de UUID (Time base et IP based)
- composite id n\u2019ont plus besoin d\u2019\xeatre serialisable
- type texte long support\xe9s via
@JdbcTypeCode
- multitenancy (shared schema, resolver de tenant a plugger)
- read by position (SQL plus court car sans alias, deserialisarion plus rapide, moins de joins dans certains cas)
- modele sous jacent commun entre HQL et l\u2019api criteria et donc m\xeame moteur
- meilleure g\xe9n\xe9ration du SQL et plus de fonction SQL modernes r\xe9duisant le gap entre HQL et SQL
- ronctions analytiques et fen\xeatre quand la base les supportent
- graphe traverse en largeur plut\xf4t qu\u2019en profondeur (potentiellement plus de join donc bien mettre lazy sur vos associations)
Cloud
Docker supprime les organisations open source sur DockerHub https://blog.alexellis.io/docker-is-deleting-open-source-images/
Web
Une base de connaissance sur le fonctionnement et les bonnes pratiques autour des WebHooks https://nordicapis.com/exploring-webooks-fyi-the-webhooks-knowledge-center/
Guillaume a refondu son blog https://glaforge.dev/
- Cette fois ci, c\u2019est un site web statique, g\xe9n\xe9r\xe9 avec Hugo, avec des articles en Markdown, h\xe9berg\xe9 sur Github Pages, build\xe9 / publi\xe9 automatiquement par Github Actions
Outillage
Gradle 8.0 est sorti https://docs.gradle.org/8.0/release-notes.html
Une CLI connect\xe9e \xe0 OpenAI\u2019s Davinci model pour g\xe9n\xe9rer vos lignes de commandes https://github.com/TheR1D/shell_gpt
sgpt -se "start nginx using docker, forward 443 and 80 port, mount current folder with index.html"
- ->
docker run -d -p 443:443 -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
- -> Execute shell command? [y/N]: y
Un petit outil en ligne bas\xe9 sur le mod\xe8le GPT\u20133 qui permet d\u2019expliquer un bout de code https://whatdoesthiscodedo.com/g/db97d13
- Copiez-collez un bout de code de moins de 1000 caract\xe8res, et le mod\xe8le de code de GPT\u20133, et l\u2019outil vous explique ce que fait ces quelques lignes de code
- Assez impressionnant quand on pense que c\u2019est un mod\xe8le de pr\xe9diction probabiliste des prochains caract\xe8res logiques
- Certaines r\xe9ponses donnent vraiment l\u2019impression parfois que l\u2019outil comprends r\xe9ellement l\u2019intention du d\xe9veloppeur derri\xe8re ce bout de code
Git: Comment rebaser des branches en cascade https://adamj.eu/tech/2022/10/15/how-to-rebase-stacked-git-branches/
native-image
va \xeatre inclu dans la prochaine version de GraalVM JDK. Plus besoin de gu install native-image
https://github.com/oracle/graal/pull/5995
Si vous utilisez l\u2019outil Mermaid pour faire des graphes d\u2019architecture, d\u2019interactions, etc, il y a un petit cheatsheet sympa qui montre comment faire certains diagrammes https://jojozhuang.github.io/tutorial/mermaid-cheat-sheet/
Un site avec plein de trucs et astuces sur psql, le langage SQL de PostgreSQL https://psql-tips.org/
CURL a 25 ans ! https://daniel.haxx.se/blog/2023/03/10/curl\u201325-years-online-celebration/
- Son cr\xe9ateur, Daniel Stenberg, est toujours \xe0 la t\xeate du projet
- cURL est utilis\xe9 dans d\u2019innombrables projets
- par d\xe9faut dans plein de syst\xe8mes d\u2019exploitation
C\xe9dric Champeau explique le concept de version catalog de Gradle et comment il am\xe9liore la productivit\xe9 https://melix.github.io/blog//2023/03\u201312-micronaut-catalogs.html
- permet de r\xe9duire le temps et l\u2019effort n\xe9cessaire \xe0 g\xe9rer la version de ses d\xe9pendances
- apport aussi plus de s\xe9curit\xe9, de flexibilit\xe9, pour s\u2019assurer qu\u2019on a les bonnes versions les plus r\xe9centes des d\xe9pendances et qu\u2019elles fonctionnent bien entre elles
Architecture
La pyramide des besoins du code de qualit\xe9 https://www.fabianzeindl.com/posts/the-codequality-pyramid
- le bas de la pyramide supporte le haut
- performance de build
- performance de test
- testabilit\xe9
- qualit\xe9 des codes de composants
- fonctionalit\xe9s
- performance du code
- pour chaque bloc, il explique les raisons, ses definitions et des astuces pour l\u2019ameliorer
- par exemples les fonctionalites changent et donc build, testabilit\xe9 et qualite de code permet des changements l\xe9gers en cas de changement dans les fonctionalit\xe9s
- perf viennent ensuite ("premature opt, root of all evil), regader des besoins globaux
M\xe9thodologies
Le DevSusOps est n\xe9 https://www.infoq.com/news/2023/02/sustainability-develop-operation/?utm_campaign=i[\u2026]nt&utm_source=twitter&utm_medium=feed&utm_term=culture-methods
S\xe9curit\xe9
Plein de choses qu\u2019on peut faire avec des Yubikeys https://debugging.works/blog/yubikey-cheatsheet/
- Pour g\xe9n\xe9rer des time-based one-time passwords, pour l\u2019acc\xe8s SSH,, pour s\xe9curiser un base Keepass, comme 2FA pour le chiffrement de disque, pour la v\xe9rification d\u2019identifiant personnel, pour g\xe9rer les cl\xe9s priv\xe9es\u2026
Loi, soci\xe9t\xe9 et organisation
Le fabricant de graveurs de CPU hollandais ASML se voit interdire d\u2019exporter ses technologies vers la chine https://www-lemagit-fr.cdn.ampproject.org/c/s/www.lemagit.fr/actualites/365532284/Processeurs[\u2026]le-escalade-dans-les-sanctions-contre-la-Chine?amp=1
- en tous cas les technologies de gravure des deux derni\xe8res generations
- de la pression commerciale on passe au registre d\u2019exclusion par decision militaire
- ASML s\u2019\xe9tait fait espionner r\xe9cemment
- CAnon et Sony aussi dans la restriction
Meta supprime de nouveau 10000 emplois soit 25% au total depuis la fin de l\u2019ann\xe9e derni\xe8re https://www.lesechos.fr/tech-medias/hightech/meta-va-supprimer\u201310000-postes-de-plus\u20131915528
Rubrique d\xe9butant
Bouger les \xe9l\xe9ments d\u2019une liste https://www.baeldung.com/java-arraylist-move-items
- discute le concept d\u2019array list en dessous et donc le co\xfbt d\u2019ins\xe9rer au milieu
- decouverte de
Collections.swap
(pour intervertir deux elements) - decouverte de
Collections.rotate
pour \u201cdeplacer\u201d l\u2019index zero de la liste
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/