Top Banner
Jeudi 2 octobre 2014 Introduction à Java Entreprise Edition
112

Java EE Class

Aug 18, 2015

Download

Software

oltruong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java EE Class

Jeudi 2 octobre 2014

Introduction à Java Entreprise Edition

Page 2: Java EE Class

Introduction à JavaEE

Présentons-nous

Olivier Truong

2006 : Télécom Bretagne

2006-2014 : Air France

Concepteur/Développeur applications JavaEE

Responsable d’équipe, développeur, coach technique

github.com/oltruong

@oltruong

Page 3: Java EE Class

Introduction à JavaEE

Objectifs

Découvrir l’origine et l’objectif de JavaEE

Parcourir les possibilités offertes par JavaEE et

leurs principes sous-jacents

Partager l’expérience JavaEE

Page 4: Java EE Class

Introduction à JavaEE

Pourquoi JavaEE ?

Pour JavaEE 6

+50 millions téléchargements composants JavaEE

#1 choix pour les développeurs d’entreprise

#1 plateforme de développement

Profils JavaEE recherchés

Page 5: Java EE Class

Introduction à JavaEE

Plan

Survol de JavaEE Les besoins

Un peu d’histoire

Concepts de base

Les fonctionnalités de JavaEE Transverses

Persistance

Logique métier

Communication

Présentation

L’expérience JavaEE Démonstration

La boîte à outils

Avec le recul…

Page 6: Java EE Class

Les besoins

Page 7: Java EE Class

Introduction à JavaEE

Application complexe

Page 8: Java EE Class

Introduction à JavaEE

Application qui s’interface avec l’existant

Page 9: Java EE Class

Introduction à JavaEE

Système robuste, fiable

Page 10: Java EE Class

Introduction à JavaEE

Maîtrise des coûts

Page 11: Java EE Class

Introduction à JavaEE

Question de programmation

Vous voulez une fonction

qui vous indique si une liste contient un élément précis…

Page 12: Java EE Class

Introduction à JavaEE

Réponse…

Une solution : Mais plus simple encore :

Page 13: Java EE Class

Introduction à JavaEE

Ne pas réinventer la roue !

Page 14: Java EE Class

Introduction à JavaEE

JavaEE

Ensemble de spécifications pour construire

une application d’entreprise basée sur le

langage Java

Ensemble d’API mises à disposition

Se concentrer sur la logique métier

Page 15: Java EE Class

Introduction à JavaEE

Plusieurs implémentations disponibles

Page 16: Java EE Class

Introduction à JavaEE

Quelques mots sur Java

Page 17: Java EE Class

Introduction à JavaEE

Un monde sans Java ?

Page 18: Java EE Class

Introduction à JavaEE

Page 19: Java EE Class

Un peu d’histoire Un peu d’histoire

Page 20: Java EE Class

Introduction à JavaEE

Java en 1999

Pas de standard Java EE

Pas d’open source (en Java :)

Serveurs proposés par quelques fournisseurs

Page 21: Java EE Class

Introduction à JavaEE

Evolution de JavaEE

Expérience

Page 22: Java EE Class

Introduction à JavaEE

Java EE 7

Plus riche 31 spécifications

Plus léger Profil Web

Elagage (pruning)

Plus simple Toujours plus d’annotations

Page 23: Java EE Class

Introduction à JavaEE

Qui définit JavaEE ?

Java Specification Request

Exemple : JSR342, JSR346

Page 24: Java EE Class

Introduction à JavaEE

Création d’une Java Specification Request (JSR)

Spécification complète

Implémentation de référence

Test de compatibilité

Technology Compatibility Kit (TCK)

Adopt a JSR Program !

Page 25: Java EE Class

Introduction à JavaEE

L’influence de l’Open Source

Page 26: Java EE Class

Introduction à JavaEE

L’arrivée de l’Open Source

Page 27: Java EE Class

Introduction à JavaEE

L’arrivée de l’Open Source

Spécification

puis implémentation

Implémentation

puis spécification

Page 28: Java EE Class

Concepts de base

Page 29: Java EE Class

Introduction à JavaEE

Une architecture n-Tier

Page 30: Java EE Class

Introduction à JavaEE

Une architecture en conteneurs

Page 31: Java EE Class

Introduction à JavaEE

Conteneurs, composants et services

Les conteneurs fournissent des services à leurs composants

Page 32: Java EE Class

Introduction à JavaEE

Concrètement…

Conteneur Web : fichier WAR Conteneur EJB : fichier JAR

Application gobale :

fichier EAR

Page 33: Java EE Class

Introduction à JavaEE

Plan

Survol de JavaEE Les besoins

Un peu d’histoire

Concepts de base

Les fonctionnalités de JavaEE Transverse

Persistance

Logique métier

Communication

Présentation

L’expérience JavaEE Démonstration

La boîte à outils

Avec le recul…

Page 34: Java EE Class

Transverse :

CDI, Bean Validation, Java Batch

Page 35: Java EE Class

Introduction à JavaEE

Context and Dependency Injection 1.1

Le besoin : des objets qui dépendent d’autres

Page 36: Java EE Class

Introduction à JavaEE

Comment instancier mes objets

Tout simplement…

Ou bien avec l’injection de dépendances

Page 37: Java EE Class

Introduction à JavaEE

Principe

Inversion de contrôle (IoC)

Injection de dépendances

Les ressources sont injectées par le conteneur dans

l’application au lieu d’être gérées par l’application

Page 38: Java EE Class

Introduction à JavaEE

Hollywood principle

Don’t call us, we’ll call you !

Page 39: Java EE Class

Introduction à JavaEE

Context and Dependency Injection en action

Utilisation de @Inject

Page 40: Java EE Class

Introduction à JavaEE

Context and Dependency Injection

En cas de conflit…

Utilisation de votre annotation via @Qualifier

Page 41: Java EE Class

Introduction à JavaEE

BeanValidation 1.1

Contrôle des données

Sur les attributs

Sur les paramètres

Page 42: Java EE Class

Introduction à JavaEE

Java Batch 1.0

Nouveauté JavaEE 7

Fortement inspiré de SpringBatch

Page 43: Java EE Class

Persistance

Page 44: Java EE Class

Introduction à JavaEE

Le problème

Objet java Base de données

?

Code Java pour traduire en SQL

ID ISBN NAME PRICE

Page 45: Java EE Class

Introduction à JavaEE

La solution

Object-Relational Mapping

Délègue à un framework la correspondance entre objets

et tables

Java Persistence API (2.1)

Page 46: Java EE Class

Introduction à JavaEE

Java Persistence API

Facilite l’Object-Relational Mapping :

Annotations

Fichier de description XML

Objets Entités

Page 47: Java EE Class

Introduction à JavaEE

Java Persistence API

Objet java Base de données

ID ISBN NAME PRICE

Page 48: Java EE Class

Introduction à JavaEE

Java Persistence API

(Configuration par exception)

Convention plutôt que configuration

Page 49: Java EE Class

Introduction à JavaEE

Java Persistence API

Objet java Base de données

ID ISBN NOM PRICE

Page 50: Java EE Class

Introduction à JavaEE

Trop simple ?

Page 51: Java EE Class

Introduction à JavaEE

Java Persistence API

Ecriture de requêtes complexes :

Java Persistence Query Language

Similaire au SQL

Retourne des entités et non un tableau

SELECT b from Book b where b.name LIKE ‘Java%'

Page 52: Java EE Class

Introduction à JavaEE

Java Persistence API

Et bien plus encore…

Stratégie d’héritage @Inheritance (Strategy…)

Chargement des relations (EAGER/LAZY)

Gestion des relations 1…n @OnetoMany

Page 53: Java EE Class

Logique métier

Page 54: Java EE Class

Introduction à JavaEE

Tâches complexes

Interaction entre composants

Communication externe

Entreprise Java Beans (3.2)

Composant côté serveur qui encapsule

la logique métier

Page 55: Java EE Class

Introduction à JavaEE

Différence avec la persistance

JPA modélise les noms (Pilote, Avion)

EJB modélise les verbes (affecter un pilote)

Page 56: Java EE Class

Introduction à JavaEE

Les EJB dans l’architecture

Page 57: Java EE Class

Introduction à JavaEE

3 types d’EJB de session

Sans état

Avec état

Singleton

Page 58: Java EE Class

Introduction à JavaEE

Bean sans état

Une tâche doit s’accomplir par un appel de méthode

Conteneur EJB

Pool

Instance 1

Instance 2

Client 1

Client 2

Client 3

Page 59: Java EE Class

Introduction à JavaEE

Bean avec état

Tâches nécessitant plusieurs étapes :

une instance par session

Conteneur EJB

Instance 1

Instance 2

Client 1

Client 2

Client 3 Instance 3

Page 60: Java EE Class

Introduction à JavaEE

Pour bien comprendre la différence

Imaginez que vous voulez changer de forfait…

Centre d’appel

Page 61: Java EE Class

Introduction à JavaEE

Bean singleton

Tâches où l’on ne requiert qu’un seul exemplaire

Conteneur EJB

Instance unique

Client 1

Client 2

Client 3

Page 62: Java EE Class

Introduction à JavaEE

Exemple

Page 63: Java EE Class

Introduction à JavaEE

Autres fonctionnalités

Timer

Sécurité

Appels asynchrones

Page 64: Java EE Class

Introduction à JavaEE

Transaction

Ensemble d’opérations qui gardent les données

dans un état cohérent

Exemple : Paiement d’un loyer

Locataire Propriétaire

Page 65: Java EE Class

Introduction à JavaEE

Exemple de transaction

Prélèvement du compte locataire

Versement sur compte propriétaire

Enregistrement des opérations dans l’historique

Page 66: Java EE Class

Introduction à JavaEE

Transaction

A

C

I

D

tomicité

ohérence

solement

urée

Java Transaction API (1.2)

Page 67: Java EE Class

Introduction à JavaEE

Et bien plus encore

Conteneur intégré

API permettant d’exécuter les EJB dans un

environnement Java SE

EJB Lite

Sous ensemble de l’API EJB (profil Web)

Page 68: Java EE Class

Communication

Page 69: Java EE Class

Introduction à JavaEE

Communication externe

Echanger avec des systèmes différents

Définir un format d’échange commun

WEB Services (Simple Object Access Protocol,

REpresentational State Transfer)

Page 70: Java EE Class

Introduction à JavaEE

JavaEE et les WebServices

Java Architecture for XML Binding (JAXB)

Java API for XML-Based Web Services (JAX-WS)

Java API for RESTful Web Services (JAX-RS)

Page 71: Java EE Class

Introduction à JavaEE

Nouveauté JavaEE7 : API pour JSON

JavaScript Object Notation : JSON

Plus concis que le format XML

Page 72: Java EE Class

Introduction à JavaEE

Architecture en API

Open Data : exemple : Vélib

Page 73: Java EE Class

Présentation

Page 74: Java EE Class

Introduction à JavaEE

Sites Web dynamiques

Servlet

Page 75: Java EE Class

Introduction à JavaEE

Les servlets dans l’architecture

Page 76: Java EE Class

Introduction à JavaEE

Exemple de servlet

Page 77: Java EE Class

Introduction à JavaEE

Servlet

Très utilisées (indirectement)

Version 3.1 : plus simple et plus riche

Reste bas niveau

Page 78: Java EE Class

Introduction à JavaEE

Java Server Page

Langage de script pour écrire une servlet

Cycle de vie géré par le conteneur Web

Page 79: Java EE Class

Introduction à JavaEE

Exemple de JSP

Page 80: Java EE Class

Introduction à JavaEE

Des marqueurs, encore des marqueurs

JSP Standard Tag Library

Offre des bibliothèques de marqueurs

Page 81: Java EE Class

Introduction à JavaEE

Java Server Faces va encore plus loin

Source : oracle.com

Enrichir toujours plus son interface

Pouvoir définir ses propres composants graphiques

Retourner du contenu multimédia / Utilisation d’Ajax

Page 82: Java EE Class

Introduction à JavaEE

JSF et le Modèle Vue Contrôleur

Page 83: Java EE Class

Introduction à JavaEE

Différents frameworks disponibles

Page 84: Java EE Class

Introduction à JavaEE

L’évolution de la couche présentation

Source : OCTO Technology

Page 85: Java EE Class

Introduction à JavaEE

Quelques frameworks Javascript

Page 86: Java EE Class

Introduction à JavaEE

Plan

Survol de JavaEE Les besoins

Un peu d’histoire

Concepts de base

Les fonctionnalités de JavaEE Persistance

Logique métier

Présentation

Communication

L’expérience JavaEE Démonstration

La boîte à outils

Avec le recul…

Page 87: Java EE Class

Introduction à JavaEE

Ça n’a pas l’air simple tout ça…

Page 88: Java EE Class

Introduction à JavaEE

Ça n’a pas l’air simple tout ça…

La parole est au maître…

Page 89: Java EE Class

Introduction à JavaEE

Exemple

Page 90: Java EE Class

Introduction à JavaEE

Integrated Development Environment

Page 91: Java EE Class

Introduction à JavaEE

Outils

Page 92: Java EE Class

Introduction à JavaEE

Mais alors…

JavaEE produit miracle ?

Page 93: Java EE Class

Introduction à JavaEE

La problématique du Cloud n’est pas encore traitée

JavaEE 8 ?

Page 94: Java EE Class

Introduction à JavaEE

Sur un plan plus « politique »

Avenir de Java avec ORACLE ?

Page 95: Java EE Class

Introduction à JavaEE

Le monde Java continue d’évoluer…

De nombreux languages pour la JVM

Page 96: Java EE Class

Introduction à JavaEE

Le monde Java continue d’évoluer…

De nombreux frameworks…

Page 97: Java EE Class

Introduction à JavaEE

Quel est le meilleur framework ?

http://static.raibledesigns.com/repository/presentations/Comparing_JVM_Web_Frameworks_February2014.pdf

Quel besoin ?

Quelles priorités ?

Quelles contraintes ?

Page 98: Java EE Class

Introduction à JavaEE

Page 99: Java EE Class

Conclusion

Page 100: Java EE Class

Introduction à JavaEE

Conclusion

JavaEE capitalise sur l’expérience pour

construire des applications d’entreprise

Page 101: Java EE Class

Introduction à JavaEE

Conclusion

JavaEE, un standard en perpétuelle évolution,

soutenu par une communauté et influencé par

le monde OpenSource

Plusieurs implémentations disponibles !

Page 102: Java EE Class

Introduction à JavaEE

Conclusion

JavaEE,

une plateforme riche et plus simple

Une palette d’API à votre disposition

Page 103: Java EE Class

Introduction à JavaEE

Conclusion

A VOUS de comprendre le besoin et de

concevoir l’application adéquate !

Page 104: Java EE Class

Introduction à JavaEE

Quelques pensées

Remember the KISS principle

Keep It Simple Stupid !

Page 105: Java EE Class

Introduction à JavaEE

Quelques pensées

Any fool can write code that a computer can

understand. Good programmers write code that

humans can understand. Martin Fowler

Page 106: Java EE Class

Introduction à JavaEE

Quelques pensées

Always code as if the guy who ends up

maintaining your code will be a violent

psychopath who knows where you live. Martin Golding

Ça n’est pas Martin Golding

Page 107: Java EE Class

Introduction à JavaEE

N’oubliez pas

Profils JavaEE recherchés

Page 108: Java EE Class

Introduction à JavaEE

Le mot de la fin

La plus grande difficulté n’est souvent pas technologique…

Page 109: Java EE Class

Introduction à JavaEE

Pour aller plus loin

Lire

Voir, écouter

Rencontrer

http://download.oracle.com/javaee/7/tutorial/doc/

http://jcp.org

Page 110: Java EE Class

Introduction à JavaEE

Essayez !

Page 111: Java EE Class

Introduction à JavaEE

Enjoy !

Page 112: Java EE Class

Introduction à JavaEE

Merci pour votre attention ! (J’espère )

Questions ?