Perfectionnement Java
Ce séminaire en 3 parties d'une heure présentera les principes qui gouvernent la conception d'applications backend: les designs patterns, les bonnes pratiques d'accès aux données et enfin l'implémentation du principe request/response en Java avec HTTP.
Le parti pris: pas de framework, faire bien avec peu, et maîtriser les bases. Cette approche rigoureuses favorisera ensuite l'appréciation de tel ou tel framework (cas d'usages, force et faiblesse) et permettra même de transposer ces connaissances à d'autres langages.
Be an engineer, not a frameworker.
s'intitule un célèbre article.
Time to level up.
(3 heures)
Développeurs et développeuses, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- choisir les designs patterns adaptés à un besoin métier;
- appliquer des transactions pour garantir la cohérence d'un système;
- requéter une base de données de manière performante;
- concevoir une API REST respectant les bonnes pratiques;
- recevoir des appels HTTP et y répondre de manière non bloquante avec les virtual threads
Prérequis
Ce cours demande une connaissance générale de la programmation d'applications backend. en Java.
Méthodes pédagogiques
Le cours alterne théorique et pratique: la mise en pratique prend la forme d'une application "démo" enrichie par le formateur tout au long des wébinaires et dont les participants peuvent disposer à la fin du wébinaire.
Une forte interaction avec les participants permettra à chacun de rapprocher les sujets du cours de son travail quotidien.
Programme détaillé
Session 1: designs pattern et bonnes pratiques de programmation
Les designs patterns sont des manière d'organiser son code pour traiter une problématique donnée. Chaque métier a ses designs patterns: aux échecs il ne suffit pas de savoir déplacer les pièces il faut aussi connaître les ouvertures, sortes de design patterns. Ils témoignent de pratiques qui ont fait leur preuve, qui sont transmis de générations en générations, tel un bien commun qui permet d'organiser son code d'une manière efficace et adaptée au besoin.
Le livre "Design Patterns: Elements of Reusable Object-Oriented Software" (1994) en propose 23. Beaucoup sont toujours au cœur des applications que nous développons aujourd'hui, même s'ils sont souvent masqués par les frameworks (Spring par exemple). Comprendre leur cas d'usage permet de transcrire un besoin métier en architecture logicielle de manière pertinente et faire ensuite bon usage de tel ou tel framework. Spring par exemple est d'abord une formidable .... factory (un design pattern...).
Cette session partira de la nécessaire "séparation des responsabilités" (separation of concerns) pour introduire l'injection de dépendances, le rôle d'une factory, la factorisation permise par la mise en œuvre de proxy, l'échange d'informations à travers des commands et le traitement des commands par des observers. Tout cela sans frameworks: seulement avec Java SE.
Session 2: accès aux données et transactions
Il est très fréquent que les applications backend sollicitent une base de données relationnelle. En découle deux aspects essentiels: l'utilisation des connexions pour soumettre des requêtes et la préservation de la cohérence grâce aux transactions.
Pourquoi n'utilise-t-on pas une connexion unique (singleton) ? Pourquoi utilise-t-on un pool de connexion ? Quel est le lien entre une connexion, transaction et thread ? Quels sont les principes ACID ?
Autant de questions au cœur de nombreuses applications backend et qui sont rarement maîtrisées car souvent abstraites par des frameworks, alors qu'on n'utilise bien un famework que si on sait comment il opère. En découle, trop souvent, une programmation par coïncidence: le programme fonctionne mais on ne sait pas comment et lorsqu'il ne fonctionne pas on ne sait pas pourquoi. Ce séminaire permettra d'éviter cette situation inconfortable en présentant des principes non seulement essentiels mais en plus indépendants d'une stack particulière (Java, .NET, etc...).
Session 3: création d'API REST en Java.
En Java, l'API Servlet normalise l'échange d'informations en HTTP. Être une servlet signifie "être capable de traiter une requête". Plus personne n'écrit ses propres servlets puisque les frameworks, Spring par exemple, propose une surcouche bienvenue permettant de gagner en productivité.
Néanmoins il est essentiel de bien connaître l'API Servlet: que signifie one thread per task
? À
quoi ressemble une requête HTTP ? Une réponse HTTP ? En quoi consiste un filtre ? Lorsqu'on maîtrise
tout cela il reste encore à connaître les bonnes pratiques de conception d'une API REST: qu'est ce
qu'une ressource ? Comment faire bon usage des verbes HTTP ? Que signifie l'étrange appellation
HATEOAS ? En montrant comment réaliser une API REST avec de simples servlets ce séminaire mettra
l'accent sur les bases du développement d'API en Java, ce qui favorise ensuite la compréhension de
tel ou tel framework web.
Prix
750 euros H.T. pour les 3 sessions d'une heure quelque soit le nombre de participants.