LCC 330 - Nano banana l'AI de Julia
Description
Katia, Emmanuel et Guillaume discutent Java, Kotlin, Quarkus, Hibernate, Spring Boot 4, intelligence artificielle (modèles Nano Banana, VO3, frameworks agentiques, embedding). On discute les vulnerabilités OWASP pour les LLMs, les personalités de codage des différents modèles, Podman vs Docker, comment moderniser des projets legacy. Mais surtout on a passé du temps sur les présentations de Luc Julia et les différents contre points qui ont fait le buzz sur les réseaux.
Enregistré le 12 septembre 2025
Téléchargement de l'épisode LesCastCodeurs-Episode-330.mp3 ou en vidéo sur YouTube.
News
Langages
Dans cette vidéo, José détaille les nouveautés de Java entre Java 21 et 25 https://inside.java/2025/08/31/roadto25-java-language/
- Aperçu des nouveautés du JDK 25 : Introduction des nouvelles fonctionnalités du langage Java et des changements à venir [00:02 ].
- Programmation orientée données et Pattern Matching [00:43 ] :
- Évolution du "pattern matching" pour la déconstruction des "records" [01:22 ].
- Utilisation des "sealed types" dans les expressions
switchpour améliorer la lisibilité et la robustesse du code [01:47 ]. - Introduction des "unnamed patterns" (
_) pour indiquer qu'une variable n'est pas utilisée [04:47 ]. - Support des types primitifs dans
instanceofetswitch(en preview) [14:02 ].
- Conception d'applications Java [00:52 ] :
- Immuabilité et valeurs nulles [01:08 ] :
JDK 25 sort le 16 septembre https://openjdk.org/projects/jdk/25/
- Scoped Values (JEP 505) - alternative plus efficace aux ThreadLocal pour partager des données immutables entre threads
- Structured Concurrency (JEP 506) - traiter des groupes de tâches concurrentes comme une seule unité de travail, simplifiant la gestion des threads
- Compact Object Headers (JEP 519) - Fonctionnalité finale qui réduit de 50% la taille des en-têtes d'objets (de 128 à 64 bits), économisant jusqu'à 22% de mémoire heap
- Flexible Constructor Bodies (JEP 513) - Relaxation des restrictions sur les constructeurs, permettant du code avant l'appel super() ou this()
- Module Import Declarations (JEP 511) - Import simplifié permettant d'importer tous les éléments publics d'un module en une seule déclaration
- Compact Source Files (JEP 512) - Simplification des programmes Java basiques avec des méthodes main d'instance sans classe wrapper obligatoire
- Primitive Types in Patterns (JEP 455) - Troisième preview étendant le pattern matching et instanceof aux types primitifs dans switch et instanceof
- Generational Shenandoah (JEP 521) - Le garbage collector Shenandoah passe en mode générationnel pour de meilleures performances
- JFR Method Timing & Tracing (JEP 520) - Nouvel outillage de profilage pour mesurer le temps d'exécution et tracer les appels de méthodes
- Key Derivation API (JEP 510) - API finale pour les fonctions de dérivation de clés cryptographiques, remplaçant les implémentations tierces
Améliorations du traitement des annotations dans Kotlin 2.2 https://blog.jetbrains.com/idea/2025/09/improved-annotation-handling-in-kotlin-2-2-less-boilerplate-fewer-surprises/
- Avant Kotlin 2.2, les annotations sur les paramètres de constructeur n'étaient appliquées qu'au paramètre, pas à la propriété ou au champ
- Cela causait des bugs subtils avec Spring et JPA où la validation ne fonctionnait qu'à la création d'objet, pas lors des mises à jour
- La solution précédente nécessitait d'utiliser explicitement @field: pour chaque annotation, créant du code verbeux
- Kotlin 2.2 introduit un nouveau comportement par défaut qui applique les annotations aux paramètres ET aux propriétés/champs automatiquement
- Le code devient plus propre sans avoir besoin de syntaxe @field: répétitive
- Pour l'activer, ajouter -Xannotation-default-target=param-property dans les options du compilateur Gradle
- IntelliJ IDEA propose un quick-fix pour activer ce comportement à l'échelle du projet
- Cette amélioration rend l'intégration Kotlin plus fluide avec les frameworks majeurs comme Spring et JPA
- Le comportement peut être configuré pour garder l'ancien mode ou activer un mode transitoire avec avertissements
- Cette mise à jour fait partie d'une initiative plus large pour améliorer l'expérience Kotlin + Spring
Librairies
Sortie de Quarkus 3.26 avec mises à jour d'Hibernate et autres fonctionnalités - https://quarkus.io/blog/quarkus-3-26-released/
- mettez à jour vers la 3.26.x car il y a eu une regression vert.x
- Jalon important vers la version LTS 3.27 prévue fin septembre, basée sur cette version
- Mise à jour vers Hibernate ORM 7.1, Hibernate Search 8.1 et Hibernate Reactive 3.1
- Support des unités de persistance nommées et sources de données dans Hibernate Reactive
- Démarrage hors ligne et configuration de dialecte pour Hibernate ORM même si la base n'est pas accessible
- Refonte de la console HQL dans Dev UI avec fonctionnalité Hibernate Assistant intégrée
- Exposition des capacités Dev UI comme fonctions MCP pour pilotage via outils IA
- Rafraîchissement automatique des tokens OIDC en cas de réponse 401 des clients REST
- Extension JFR pour capturer les données runtime (nom app, version, extensions actives)
- Bump de Gradle vers la version 9.0 par défaut, suppression du support des classes config legacy
Guide de démarrage avec Quarkus et A2A Java SDK 0.3.0 (pour faire discuter des agents IA avec la dernière version du protocole A2A) https://quarkus.io/blog/quarkus-a2a-java-0-3-0-alpha-release/
- Sortie de l'A2A Java SDK 0.3.0.Alpha1, aligné avec la spécification A2A v0.3.0.
- Protocole A2A : standard ouvert (Linux Foundation), permet la communication inter-agents IA polyglottes. Version 0.3.0 plus stable, introduit le support gRPC.
- Mises à jour générales : changements significatifs, expérience utilisateur améliorée (côté client et serveur).
- Agents serveur A2A :
- Support gRPC ajouté (en plus de JSON-RPC). HTTP+JSON/REST à venir.
- Implémentations basées sur Quarkus (alternatives Jakarta existent).
- Dépendances spécifiques pour chaque transport (ex:
a2a-java-sdk-reference-jsonrpc,a2a-java-sdk-reference-grpc). - AgentCard : décrit les capacités de l'agent. Doit spécifier le point d'accès primaire et tous les transports supportés (
additionalInterfaces).
- Clients A2A :
- Dépendance principale :
a2a-java-sdk-client. - Support gRPC ajouté (en plus de JSON-RPC). HTTP+JSON/REST à venir.
- Dépendance spécifique pour gRPC :
a2a-java-sdk-client-transport-grpc. - Création de client : via
ClientBuilder. Sélectionne automatiquement le transport selon l'AgentCard et la configuration client. Permet de spécifier les transports supportés par le client (withTransport).
- Dépendance principale :
Comment générer et éditer des images en Java avec Nano Banana, le "photoshop killer" de Google https://glaforge.dev/posts/2025/09/09/calling-nano-banana-from-java/
- Objectif : Intégrer le modèle Nano Banana (Gemini 2.5 Flash Image preview) dans des applications Java.
- SDK utilisé : GenAI Java SDK de Google. <




