Dans cet épisode, Arnaud, Antonio et Emmanuel décortiquent les nouvelles d’avril et mai. On y discute Java 20, ecrire un profiler de zéro, Quarkus 3 (encore !), Micronaut 4, Podman, JReleaser, GitHub, CloudEvent, GraphQL, licenciements (encore !), et de la question a 1000 francs: librarie vs framework, quelle différence? Mais pas que.

Enregistré le 12 mai 2023

Téléchargement de l’épisode LesCastCodeurs-Episode–295.mp3

News Langages

Un descriptif du changement de paiement d’Oracle JDK https://horstmann.com/unblog/2023–02–23/

  • Cay Horstmann
  • Explique OpenJDK avec plusieurs distributeurs
  • Prefère Adoptium dont celle par défaut est Eclipse Temurin
  • Pour Oracle, beaucoup d’options 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é (et une assiete large)
  • Bref si vous êtes concernés, passer sur OpenJDK: Adoptium, ou d’autres vendeurs

Java 20 est sorti : qu’y a t’il de nouveau dans Java 20 par rapport à Java 19 ? https://foojay.io/today/its-java–20-release-day-heres-whats-new/

  • L’article fait le point sur ce qu’il y a de nouveau par rapport à la précédente release :
  • 4ème 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ème 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’API Thread est non preview (main API)
  • Les ScopedValue sont comme les threadlocal par (virtual) thread mais elles sont immuables une fois écrites.
  • use cases: copie d’etat pour des données non changeantes pour le virtual thread
  • Serait interessant d’avoir 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 étaient payantes
  • clarifications et corrections de beaucoup de corner cases
Librairies

Écrire un Profiler en 240 lignes de Java https://mostlynerdless.de/blog/2023/03/27/writing-a-profiler-in–240-lines-of-pure-java/

  • Ce n’est peut-être pas si compliqué d’écrire soi même un Java Profiler ! Et justement cet article nous montre comment le faire, en créant un Java Agent, en analysant les stacks d’appel, et à la fin en créant même un flame-graph en HTML
  • Très didactique !
  • fondamentallement: appeler Threads:getAlStackStrace reguilerement et faire une liste des methodes visibles et créer un flamegraph a partir de ces données

L’équipe de Flutter partage les grands thèmes de sa roadmap https://flutter.dev/go/strategy–2023

  • Performance, interopérabilité, portabilité, écosystème, sécurité, fondamentaux (comme la documentation, la fidélité 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’API Kube
  • Java 11 et 17 (recommendé)
  • Jakarta EE
  • Eclipse MicroProfile 6

Une librairie en Java spécialement pour l’astronomie par Cédric Champeau https://melix.github.io/blog//2023/04–22-introducing-astro4j.html

  • différentes librairies et applications pour traiter les images issues de sol’ex qui permet de prendre des photos du soleil

Micronaut 4 milestone 2 est sorti. Les nouveautés 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 à 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érents moteur de conteneurs, et pas uniquement Docker
  • Compatible avec Docker avec un mode adapté pour fonctionner aussi avec la docker CLI ou docker.sock pour les sockets
  • Support de Compose
  • Support de Kubernetes
  • Securité : on peut utilisé rootless sans avoir les privilèges root
  • socket est particulierement utile pour TestContainer
  • compose n’est 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’exposer des ports