Chapitre 23
23 - Annexes
> Glossaire de 200+ termes, cheat sheets, commandes Maven/Gradle et références rapides
Chapitre 23 — Annexes
Glossaire de 200+ termes, cheat sheets, commandes Maven/Gradle et references rapides
Glossaire (A-Z)
A
AOT (Ahead-of-Time) — Compilation du bytecode Java en code natif avant l'execution. GraalVM native-image, Project Leyden.
AOP (Aspect-Oriented Programming) — Paradigme qui separe les preoccupations transversales (logging, transactions, securite). Spring AOP, AspectJ.
API Gateway — Point d'entree unique pour les microservices. Routing, rate limiting, authentification. Spring Cloud Gateway, Kong, Traefik.
ArchUnit — Bibliotheque de tests d'architecture Java. Verifie les dependances entre packages, les conventions de nommage, etc.
AssertJ — Bibliotheque d'assertions fluides pour Java. Alternative a JUnit assertions. assertThat(actual).isEqualTo(expected).
Autoboxing — Conversion automatique entre types primitifs et leurs wrappers. int → Integer. Peut causer des performances inattendues.
B
Bean Validation — Jakarata Bean Validation (JSR 380). Annotations @NotNull, @Size, @Pattern pour valider les donnees.
Bounded Context — Concept DDD : limite explicite d'un modele de domaine. Chaque contexte a son propre langage et ses propres entites.
Builder Pattern — Pattern de conception pour construire des objets complexes avec de nombreux parametres. Lombok @Builder.
C
CAS (Compare-And-Swap) — Instruction atomique CPU pour la synchronisation sans verrou. Utilisee par AtomicInteger, ConcurrentHashMap.
CDI (Contexts and Dependency Injection) — Standard Jakarta EE pour l'injection de dependances et la gestion de contexte.
CI/CD (Continuous Integration/Continuous Deployment) — Automatisation du build, test et deploiement. GitHub Actions, Jenkins, GitLab CI.
Circuit Breaker — Pattern de resilience qui interrompt les appels a un service defaillant. Resilience4j, Hystrix.
CQRS (Command Query Responsibility Segregation) — Separation des modeles de commande (ecriture) et de requete (lecture).
Criteria API — API JPA pour construire des requetes de maniere programmee et type-safe. Alternative a JPQL.
D
Daemon Thread — Thread d'arriere-plan qui ne bloque pas l'arret de la JVM. Thread.setDaemon(true).
DDD (Domain-Driven Design) — Approche de conception logicielle centree sur le domaine metier. Eric Evans.
Docker — Plateforme de conteneurisation. Permet d'emballer et d'executer des applications isolees.
DTO (Data Transfer Object) — Objet pour transporter des donnees entre couches. record en Java 21.
E
EJB (Enterprise JavaBeans) — Composant serveur Jakarta EE. @Stateless, @Stateful, @Singleton.
EntityGraph — API JPA pour definir des graphes d'entites a charger. Alternative a JOIN FETCH.
Event Sourcing — Pattern ou l'etat courant est derive de la relecture des evenements passes.
F
Feign — Client HTTP declaratif pour Spring Cloud. @FeignClient(name = "service").
Flyway — Outil de migration de base de donnees. Versionnement SQL, integration Spring Boot.
Foreign Memory/Function API — Projet Panama. API pour interagir avec la memoire et les fonctions hors-heap (C/C++).
Functional Interface — Interface avec une seule methode abstraite. @FunctionalInterface. Predicate, Function, Consumer, Supplier.
G
G1GC (Garbage-First Garbage Collector) — GC par defaut depuis Java 9. Region-based, pause time cible.
GraalVM — VM polyglotte avec compilation native. Supporte Java, JavaScript, Python, etc.
Gradle — Outil de build moderne. Groovy/Kotlin DSL, incremental build, daemon.
H
HATEOAS (Hypermedia as the Engine of Application State) — Niveau 3 de maturite REST. Liens hypermedia dans les reponses.
Hibernate — Implementation JPA la plus populaire. ORM, L2 cache, HQL.
I
IoC (Inversion of Control) — Principe ou le conteneur gere le cycle de vie des objets. Spring framework.
Immutabilite — Etat d'un objet qui ne peut pas etre modifie apres sa creation. record (immuable), Collections.unmodifiableList().
J
Jakarta EE — Successeur de Java EE sous la fondation Eclipse. Servlets, JPA, CDI, REST.
JEP (Java Enhancement Proposal) — Proposition d'amelioration du JDK. Processus OpenJDK.
JFR (Java Flight Recorder) — Outil de profiling integre a la JVM. Evenements GC, CPU, IO, threads.
JUnit 5 — Framework de test Java moderne. Platform + Jupiter + Vintage.
JVM (Java Virtual Machine) — Machine virtuelle qui execute le bytecode Java. HotSpot, OpenJ9, GraalVM.
JWT (JSON Web Token) — Format de token compact (Header.Payload.Signature). Utilise pour l'authentification.
K
Kafka — Plateforme de streaming distribuee. Pub/sub, event sourcing, log compacte.
Keycloak — Serveur d'authentification Open Source. OAuth2, OIDC, SAML.
Kotlin — Langage JVM concis et sur (null safety). Compatible Java. Coroutines.
L
Lambda — Fonction anonyme (Java 8+). (param) -> expression. Pilier de la programmation fonctionnelle en Java.
Loom — Projet OpenJDK pour les threads virtuels et la concurrence structuree.
Lombok — Bibliotheque d'annotations pour reduire le boilerplate. @Data, @Builder, @Slf4j.
M
Maven — Outil de build et de gestion de dependances. POM.xml, phases (compile, test, package, install, deploy).
Micrometer — Bibliotheque de metriques pour applications JVM. Integration Prometheus, Grafana.
Microservices — Style architectural ou l'application est composee de services petits, independants et decentralises.
Mockito — Framework de mocking pour les tests Java. @Mock, @InjectMocks, when().thenReturn().
N
N+1 Query — Problemes de performance JPA : 1 requete pour la liste + N pour chaque association.
Native Image — Image executable native creee par GraalVM. Demarrage instantane, faible empreinte memoire.
Non-blocking I/O — E/S qui ne bloquent pas le thread appelant. NIO, WebFlux, Netty.
O
OAuth2 — Protocole d'autorisation. Authorization Code, Client Credentials, PKCE.
Optional — Conteneur qui peut contenir une valeur ou etre vide. Optional<T>. Evite les null checks.
ORM (Object-Relational Mapping) — Mapping entre objets Java et tables relationnelles. Hibernate, EclipseLink.
P
Panama — Projet OpenJDK pour l'interoperabilite avec du code natif (C/C++). Foreign Function & Memory API.
Pattern Matching — Fonctionnalite Java 17+ pour matcher des types dans switch et instanceof.
Pessimistic Locking — Verrouillage explicite en base. SELECT ... FOR UPDATE. LockModeType.PESSIMISTIC_WRITE.
PMD — Analyseur statique de code. Detecte les bugs potentiels, code mort, mauvaises pratiques.
Predicate — Interface fonctionnelle boolean test(T t). Utilisee dans les streams pour le filtrage.
Q
Quarkus — Framework Java natif pour Kubernetes. Build time processing, GraalVM integration, dev mode.
R
Reactive Programming — Paradigme de programmation asynchrone base sur les flux de donnees. Reactor, WebFlux, RxJava.
Record — Classe de donnee immuable (Java 16+). record Point(int x, int y) {}. Genere constructeur, equals, hashCode, toString.
Record Pattern — Pattern matching sur les records (Java 21+). case Point(int x, int y) -> ....
Redis — Base de donnees en memoire. Cache, sessions, pub/sub, rate limiting.
Resilience4j — Bibliotheque de resilience pour Java. Circuit Breaker, Retry, Rate Limiter, Bulkhead.
REST (Representational State Transfer) — Style architectural pour les API web. Resources, methodes HTTP, stateless.
S
Sealed Class — Classe qui controle ses sous-classes. sealed class Shape permits Circle, Rectangle {}.
Singleton — Pattern de conception : une seule instance. enum Singleton { INSTANCE }.
SonarQube — Plateforme d'analyse de qualite de code. Bugs, vulnerabilites, code smells, couverture.
Spring Boot — Framework Spring avec auto-configuration et serveur embarque. Simplifie le developpement d'applications Java.
Spring Cloud — Suite d'outils pour les microservices. Config, Discovery, Gateway, Tracing.
Stream API — API de traitement de collections (Java 8+). map, filter, reduce, collect.
Structured Concurrency — Gestion structuree des threads virtuels (JEP 453). StructuredTaskScope.
T
Testcontainers — Bibliotheque pour les tests d'integration avec Docker. PostgreSQL, Kafka, Redis en conteneurs.
TDD (Test-Driven Development) — Cycle : Red (ecrire le test qui echoue) → Green (faire passer le test) → Refactor.
Thread Virtual — Thread leger (Project Loom). Des millions par application. Thread.startVirtualThread().
Transaction — Unite de travail atomique. @Transactional (Spring). ACID (Atomicite, Consistence, Isolation, Durabilite).
U
Unmodifiable Collection — Collection immuable. List.of(), Set.of(), Map.of(). Lance UnsupportedOperationException si modification tentee.
V
Valhalla — Projet OpenJDK pour les value types et primitive classes. JEP 401, 402.
Value Object — Objet immutable defini par ses attributs (DDD). record Money(BigDecimal amount, Currency currency).
Virtual Thread — Voir Thread Virtual.
Volatile — Mot-cle Java garantissant la visibilite des ecritures entre threads. Pas d'atomicite.
W
WebFlux — Module Spring reactive. Non-blocking, event-loop, Netty. Mono<T>, Flux<T>.
WebSocket — Protocole de communication bidirectionnelle. Utilise pour le chat, les notifications temps reel.
X
XSS (Cross-Site Scripting) — Attaque par injection de scripts. Prevention : encodage, CSP, validation.
Y
YAML (YAML Ain't Markup Language) — Format de serialisation de donnees. Configuration Spring Boot, Docker Compose, CI/CD.
Z
ZGC (Z Garbage Collector) — GC a faible latence (< 10ms). Colored pointers, concurrent, scalable jusqu'a 16TB de heap.
Zero-copy — Technique de transfert de donnees sans copie entre kernel et espace utilisateur. FileChannel.transferTo().
Cheat Sheets
Java Streams API
Intermediate Operations
| Operation | Description | Signature |
|---|---|---|
filter | Garde les elements matchant le predicate | Stream<T> filter(Predicate<T>) |
map | Transforme chaque element | Stream<R> map(Function<T,R>) |
flatMap | Aplatit un Stream de Streams | Stream<R> flatMap(Function<T,Stream<R>>) |
distinct | Supprime les doublons (equals) | Stream<T> distinct() |
sorted | Trie les elements | Stream<T> sorted(Comparator<T>) |
peek | Applique une action (debug) | Stream<T> peek(Consumer<T>) |
limit | Limite a N elements | Stream<T> limit(long) |
skip | Saute N elements | Stream<T> skip(long) |
takeWhile | Prend tant que le predicate est vrai | Stream<T> takeWhile(Predicate<T>) |
dropWhile | Supprime tant que le predicate est vrai | Stream<T> dropWhile(Predicate<T>) |
Terminal Operations
| Operation | Description | Signature |
|---|---|---|
forEach | Execute pour chaque element | void forEach(Consumer<T>) |
collect | Collecte les elements | R collect(Collector<T,A,R>) |
toList | Collecte en List immuable | List<T> toList() |
reduce | Reduction binaire | Optional<T> reduce(BinaryOperator<T>) |
count | Compte les elements | long count() |
anyMatch | Au moins un match | boolean anyMatch(Predicate<T>) |
allMatch | Tous matchent | boolean allMatch(Predicate<T>) |
noneMatch | Aucun match | boolean noneMatch(Predicate<T>) |
findFirst | Premier element | Optional<T> findFirst() |
findAny | Element quelconque | Optional<T> findAny() |
min | Minimum selon Comparator | Optional<T> min(Comparator<T>) |
max | Maximum selon Comparator | Optional<T> max(Comparator<T>) |
Collectors
| Collector | Description |
|---|---|
toList() | Liste immuable |
toSet() | Set immuable |
toMap(keyMapper, valueMapper) | Map |
groupingBy(classifier) | Map<K, List<V>> |
partitioningBy(predicate) | Map<Boolean, List<V>> |
joining(delimiter) | String avec separateur |
summarizingInt/Double/Long(...) | Statistiques |
reducing(identity, accumulator) | Reduction |
mapping(mapper, downstream) | Transformation avant collecte |
Spring & Spring Boot Annotations
Core Annotations
| Annotation | Usage |
|---|---|
@Component | Bean generique |
@Service | Bean service |
@Repository | Bean repository |
@Controller | MVC controller |
@RestController | REST controller |
@Autowired | Injection de dependance |
@Qualifier | Injection par nom |
@Value | Injection de propriete |
@Configuration | Classe de configuration |
@Bean | Declaration de bean |
@Lazy | Initialisation paresseuse |
@Scope | Portee (singleton, prototype) |
@Primary | Bean principal en cas de conflit |
Web Annotations
| Annotation | Usage |
|---|---|
@RequestMapping | Mapping generique |
@GetMapping | GET mapping |
@PostMapping | POST mapping |
@PutMapping | PUT mapping |
@DeleteMapping | DELETE mapping |
@RequestParam | Query parameter |
@PathVariable | URI path segment |
@RequestBody | Corps de la requete |
@ResponseBody | Corps de la reponse |
@ResponseStatus | Status HTTP |
@ExceptionHandler | Gestionnaire d'exception |
@ControllerAdvice | Advice global |
Data Annotations
| Annotation | Usage |
|---|---|
@Transactional | Gestion de transaction |
@EnableTransactionManagement | Active les transactions |
@Cacheable | Cache le resultat |
@CacheEvict | Vide le cache |
@CachePut | Met a jour le cache |
@EnableCaching | Active le cache |
JPA/Hibernate Annotations
| Annotation | Usage |
|---|---|
@Entity | Classe entite |
@Table(name) | Table associee |
@Id | Cle primaire |
@GeneratedValue | Generation de cle |
@Column | Colonne |
@Transient | Champ non persiste |
@Enumerated | Enum persiste |
@Temporal | Date/Timestamp |
@Lob | BLOB/CLOB |
@OneToOne | Relation 1-1 |
@OneToMany | Relation 1-N |
@ManyToOne | Relation N-1 |
@ManyToMany | Relation N-N |
@JoinColumn | Colonne de jointure |
@JoinTable | Table de jointure |
@MappedSuperclass | Classe mere non-entite |
@Embedded | Valeur embarquee |
@Embeddable | Classe embarquable |
@Version | Optimistic locking |
@EntityGraph | Graphe de chargement |
@NamedQuery | Requete nommee |
@Query | Requete Spring Data |
@Modifying | Modification query |
@Lock | Verrouillage pessimiste |
Maven Commandes
# Phases de build
mvn clean # Nettoie target/
mvn validate # Valide le projet
mvn compile # Compile le code source
mvn test-compile # Compile les tests
mvn test # Execute les tests
mvn package # Cree le JAR/WAR
mvn verify # Verifications integration
mvn install # Installe dans le repo local
mvn deploy # Deploie sur le repo distant
# Cycles de vie complets
mvn clean install # Nettoie + build complet
mvn clean verify # Nettoie + build + verification
# Options utiles
mvn -DskipTests # Saute les tests
mvn -Dmaven.test.skip=true # Saute compilation + execution des tests
mvn -o # Mode offline
mvn -U # Force mise a jour des snapshots
mvn -pl module-name # Build un module specifique
mvn -am # Aussi les modules dependants
# Debug
mvn -X # Debug mode
mvn dependency:tree # Arbre des dependances
mvn dependency:resolve # Resout les dependances
mvn help:effective-pom # POM effectif
mvn versions:display-dependency-updates # Verifie les versions
# Profils
mvn -P production # Active le profil "production"
mvn install -P test # Build avec profil de test
Gradle Commandes
# Build
gradle build # Build complet
gradle clean # Nettoie build/
gradle check # Tests + verification
gradle assemble # Cree le JAR (sans tests)
# Tests
gradle test # Execute les tests
gradle test --tests "*ServiceTest" # Filtre les tests
gradle test --info # Tests en mode verbose
# IntelliJ
gradle idea # Genere les fichiers IntelliJ
# Dependances
gradle dependencies # Arbre des dependances
gradle dependencyUpdates # Verifie les mises a jour
# Performance
gradle build --parallel # Build parallele
gradle build --daemon # Utilise le daemon
gradle build --build-cache # Cache de build
# Watcher
gradle build --continuous # Rebuild automatique
# Profils
gradle -Pprofile=prod # Propriete personnalisee
gradle -Dorg.gradle.jvmargs="-Xmx2g" # JVM args
Docker Commandes
# Images
docker build -t app:latest . # Build image
docker images # Liste des images
docker rmi image:tag # Supprime image
docker pull postgres:16 # Pull image
# Containers
docker run -d -p 8080:8080 app # Lance container
docker ps # Containers actifs
docker ps -a # Tous les containers
docker stop <id> # Stop container
docker rm <id> # Supprime container
docker logs -f <id> # Logs en temps reel
docker exec -it <id> bash # Shell dans le container
# Docker Compose
docker-compose up -d # Lance les services
docker-compose down # Arrete les services
docker-compose logs -f # Logs de tous les services
docker-compose build # Rebuild les images
docker-compose pull # Pull les images
# Systeme
docker system prune # Nettoie les ressources inutilisees
docker system df # Utilisation disque
docker stats # Stats en temps reel
Git Workflow
# Branches
git checkout -b feature/xxx # Nouvelle branche
git branch -d feature/xxx # Supprime branche (locale)
git push origin --delete feature/xxx # Supprime branche (distante)
# Stash
git stash # Sauvegarde temporaire
git stash pop # Restaure le stash
git stash list # Liste des stashs
# Rebase
git rebase main # Rebase sur main
git rebase -i HEAD~3 # Rebase interactif (squash, edit, reword)
# Merge
git merge --squash feature/xxx # Merge en un commit
git merge --no-ff feature/xxx # Merge avec commit de merge visible
# Cherry-pick
git cherry-pick <commit-hash> # Applique un commit specifique
# Reset
git reset --soft HEAD~1 # Annule le commit, garde les modifications
git reset --hard HEAD~1 # Annule le commit + modifications
# Tags
git tag v1.0.0 # Tag le commit courant
git push --tags # Push les tags
# Log
git log --oneline --graph # Log compact avec graphe
git log --since="2 weeks ago" # Log depuis 2 semaines
git shortlog -sn # Stats de commits par auteur
Resilient Summary
Ce glossaire et ces cheat sheets sont des references rapides. Pour approfondir :
- Glossaire : chaque terme est lie a un chapitre du cours
- Cheat Sheets : utilisables comme antisèche pendant le developpement
- Commandes : copier/coller directement utilisables
Le repertoire references/ contient des liens vers les sources officielles pour chaque notion abordee.