Vous êtes sur la page 1sur 21

Chapitre 1- Introduction à Java et à Java EE

Chapitre 1

Introduction à Java
et aux
technologies Java EE

Introduction à Java et à Java EE

Sommaire

„ Introduction à Java et à l'édition Standard (Java SE)

„ Introduction à l'édition Entreprise (Java EE)

„ Conteneurs et composants de Java EE

„ Les Designs patterns Java EE

„ Offre commerciale des outils Java EE

1
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Qu'est-ce que Java ?

„ Un langage de programmation orienté objets pur


Î Qualité, productivité, et maîtrise de la complexité
d'applications

„ Une architecture de Virtual Machine


Î Portabilité

„ Un ensemble d'API (bibliothèques) riches et variées


Î Networking, accès aux bases de données, distribution, interfaces
graphiques, …

„ Les spécifications de Java et le JDK sont publics


Î Java se veut un standard pour le développement d'applications
d'entreprise
Î Les variantes JDK sont disponibles sur http://java.sun.com

Introduction à Java et à Java EE

Les caractéristiques du langage Java

„ Simple „ Robuste
• C'est difficile d'avoir des échecs
• Ok, c'est plus simple que le C++. mémoire ou de corrompre le code
ou le stack.

„ Orienté objets
„ Sécurisé
• OO pur dans la ligne de Smalltalk et les
autres langages de POO • Mécanismes de sécurité (Bytecode
verifier, Security manager, …)

„ Interprété „ Multi-threads
• Le compilation génère un code • Le multi-tâches est immédiatement
indépendant des machines, le bytecode. supporté.
Ce code est ensuite interprétée par la
JVM.
„ Distribué
„ Portable • Support des protocoles réseau
• Support de la distribution d'objets,
• Java est "architecture neutral", il tourne Appels RMI, CORBA
sur les PC, les Macs, UNIX, …

2
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Les trois éditions de Java

1. Java 2 Platform, Standard Edition (J2SE)


„ Applications "stand-alone"

2. Java 2 Platform, Enterprise Edition (J2EE)


„ Applications à large échelle, applications distribuées, applications
Web, …

3. Java 2 Platform, Micro Edition (J2ME)


„ Application pour terminaux mobiles (PDA, téléphones mobiles, …)

Introduction à Java et à Java EE

Historique de Java

„ 1991 – Sun Microsystems (James Gosling)


„ Codename Green – first time called “Oak”
„ Originally developed for intelligent consumer-electronic products such
as – set top boxes, Microwaves, TV, etc.

„ 1993 – WWW exploded in popularity


„ Widely used with dynamic content (interactivity & animations)

„ Current – used for


„ Develop large scale enterprise applications
„ Enhance WWW server functionality
„ Provide applications for consumer devices
„ Cellular phone, Palm, Personal Game, etc.

3
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Historique de Java
(www.wikipedia.com)

„ JDK 1.0 (1996) – Initial release.


„ 212 classes, 8 packages.

„ JDK 1.1 (1997) – Major additions, most notably the extensive retooling of
the event model, as well as the introduction of inner classes.
„ 504 classes, 23 packages.

„ J2SE 1.2 (December 4, 1998) – Codename Playground.


„ Major changes were made to the API (reflection was introduced,
the Swing graphical API was integrated into the core classes,
Collections API, etc) and to Sun's JVM (which was equipped with
a JIT compiler).
„ These had little impact on the language itself, however: the only
change to the Java language was the addition of the keyword
strictfp. This and subsequent releases were rebranded "Java
2", but this had no effect on any software version numbers.
„ 1520 classes, 59 packages.

Introduction à Java et à Java EE

Historique de Java

„ J2SE 1.3 (May 8, 2000) – Codename Kestrel.


„ The most notable changes were: HotSpot JVM, Remote Method
Invocation (RMI) was changed to be based on CORBA, RMI/IIOP,
Java Naming and Directory Interface (JNDI), Java Sound, etc
„ 1842 classes, 76 packages.

„ J2SE 1.4 (February 13, 2002) – Codename Merlin. As of 2004, the


most widely used version.
„ The most notable changes were: low-level I/O API, regular expressions
(modeled after Perl regular expressions), logging, user preferences,
XML-based persistence, DOM and SAX for XML parsing, SSL, security
and cryptography extensions (JCE, JSSE, JAAS) were integrated into
J2SE, image reading/writing, drag-and-drop for Swing, assert
keyword, etc
„ 2991 classes, 135 packages.

4
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Historique de Java

„ J2SE 5.0 (September 29, 2004) – Codename Tiger. (Originally


numbered 1.5, which is still used as the internal version number)
Added a number of significant new language features:
„ Generics – Provides compile-time type safety for collections and
eliminates the need for most typecasts.
„ Autoboxing/unboxing – Automatic conversions between primitive
types (such as int) and wrapper types (such as Integer).
„ Metadata – also called Annotations, allows language constructs such
as classes and methods to be tagged with additional data, which can
then be processed by metadata-aware utilities
„ Enumerations – the enum keyword creates a typesafe, ordered list of
values (such as Day.monday, Day.tuesday, etc.). Previously this could
only be achieved by non-typesafe constant integers or manually
constructed classes (typesafe enum pattern).
„ Enhanced for loop – the for loop syntax is extended with special
syntax for iterating over each member of an array or Collection.
„ >3000 classes

Introduction à Java et à Java EE

Historique de Java

„ Java SE 6 (December 11, 2006) – Codename Mustang. As of this


version, Sun replaced the name "J2SE" with Java SE and dropped the ".0"
from the version number.
„ Web Services support in Java SE 6 (before it was partially available
only in Java EE) : JAX-WS, JAXB, StAX, …

„ Scripting facilities in SE 6 (Developer APIs to allow mixing of scripting


code with your Java application,The Rhino JavaScript engine in Java
SE 6)
„ Database Development facilities, More Desktop APIs
„ Monitoring and Management facilities

„ Java SE 7 – Codename Dolphin. Project started up in August 2006, with


release estimated in 2008. 10

5
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

La plateforme J2SE 5.0

„ Version 1.5.0 or 5.0


„ Both version numbers "1.5.0" and "5.0" are used to identify this release
of the Java 2 Platform Standard Edition. Version "5.0" is the product
version, while "1.5.0" is the developer version. The number "5.0" is
used to better reflect the level of maturity, stability, scalability and
security of the J2SE.
„ The number "5.0" was arrived at by dropping the leading "1." from
"1.5.0". Where you might have expected to see 1.5.0, it is now 5.0 (and
where it was 1.5, it is now 5).

11

Introduction à Java et à Java EE

La plateforme J2SE 5.0

12

6
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Java™ Platform, Standard Edition 6

„ Java™ SE 6, Platform Name and Version Numbers


„ At this release, the platform name has changed from J2SE™ to Java™
SE. The official name is Java™ Platform, Standard Edition 6.
„ Both version numbers (1.6.0 and 6) are used to identify this release of
the Java Platform. Version 6 is the product version, while 1.6.0 is the
developer version. The number 6 is used to reflect the evolving level of
maturity, stability, scalability and security of Java SE.

„ Version 6 Used in Platform and Product Names

„ Due to significant popularity within the Java developer community, "JDK"


continues to be the acronym for the development kit, as does "JRE" for
the runtime environment.
13

Introduction à Java et à Java EE

Java™ Platform, Standard Edition 6


JDK
JRE

Java SE
API

14

7
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Les packages de Java SE


„ Le succès de Java tient, entre autres, à la richesse de son API. L'API est
organisée en packages chacun couvrant un domaine d'application.
„ java.lang – Package systématiquement visible contant des classes
fondamentales : Object, System, String, Thread, ..
„ java.util – Utilitaires de programmation : Date,List, Stack,Vector, ...
„ java.io – Classes pour les différents modes d'entrée/sortie
„ java.applet – Développement d'applet
„ java.awt – Développement d'interfaces graphiques
„ javax.swing – Développement d'interfaces graphique JFC, amélioration des
performances de AWT apparue depuis Java 2.
„ java.net – Programmation réseau : Sockets TCP, URL, Datagrammes,...
„ java.sql – Programmation des accès aux bases de données relationnelles
„ java.rmi – Développement d'applicatifs Java distribué sur plusieurs machines

15

Introduction à Java et à Java EE

Java EE pour quoi faire ?

„ Infrastructure « serveur » pour le support d’applications d’entreprise


„ Support des architecture multi-tiers
1. Architecture client léger (architecture Web basée « browser »)
2. Architecture client lourd
3. Architecture orientée service (application répartie sans présentation)
„ Support de QoS : transaction, sécurité
„ Connexion standard à des systèmes d’information externes (accès au « legacy »)

„ Java EE est la spécification d’un modèle de composants distribués


prenant en compte les différentes couches d’un système d’information
d’entreprise
„ La Java EE définit une architecture standard incluant
„ Un modèle de programmation (application multi-tiers, client légers)
„ Une plate-forme (ensemble de spécifications et de politiques requises)
„ Un ensemble de test de compatibilité
„ Une implantation de référence
„ Les standards de la Java EE sont gérés par la communauté JCP (Java Community
Process www.jcp.org) à travers des JSR(Java Specification Request)

16

8
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Vue générale de l’architecture J2EE

„ This model is a logical model. It does not imply physical partitioning into
machines, processes, etc.
„ No “all or nothing” requirement
„ use what you need
17

Introduction à Java et à Java EE

Evolutions des versions de la Java EE

Servlets 2.1 J2EE 1.2 J2EE 1.4


November 1998 December 1999 November 2003

1998 1999 2000 2001 … 2003 … 2006

EJB 1.0 JSP 1.0 J2EE 1.3 Java EE 5


March 1998 September 1999 September 2001 May 2006

18

9
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Evolutions des versions de la Java EE

„ J2EE 1.3
„ Connector API
„ EJB (2.x) local interfaces and new CMP model

„ J2EE 1.4
„ “Web services”
„ Management, Deployment, JAAS

„ Java EE 5 (May 2006)


„ “Ease of Development”
„ Annotations
„ Dependency Injection
„ Better defaults
„ Java Persistance API, StAX, JAX-WS

19

Introduction à Java et à Java EE

L'architecture Java EE 5

20

10
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Containers de la Java EE
„ Java2EE Components live in Containers

„ Containers shield the Components from the underlying infrastructure

„ Containers are responsible for


„ Managing the lifecycle of the Components and notify Components about
lifecycle events such as Activation, Passivation and Transaction
progress
„ Provide Components uniform
access to services like
transactions, security
and persistence
„ Register and deployment
of Components

21

Introduction à Java et à Java EE

Composants et containers de la Java EE

„ The Interceptor Pattern is used


making the Components aware of
lifecycle events
„ The Component is registered to the
Container and the Container attachs
the Component as an Interceptor to
the Runtime
„ The Component is called by the
Runtime through the Abstract
Interceptor Interface

22

11
Chapitre 1- Introduction à Java et à Java EE

Java EE 5 APIs and Versions


Introduction à Java et à Java EE

JavaTM Platform, Enterprise Edition 5 (Java EE 5) Specification (http://jcp.org/en/jsr/detail?id=244)

„ Java EE 5 fait l'objet de la JSR 244


„ Elle a été lancée en Mai 2006 avec GlassFish V1 comme
implémentation de référence

„ Java EE 5 regroupe 23 spécifications


„ Web : JSF 1.2, JSP 2.1, JSTL 1.2, Servlet 2.5
„ Entreprise : Common Annotations 1.0, EJB 3.0, JAF 1.1,
JavaMail 1.4, JCA 1.5, JMS 1.1, JPA 1.0, JTA 1.1
„ Web Services : JAX-RPC 1.1, JAX-WS 2.0, JAXB 2.0, SAAJ
1.0, StAX 1.0, Web Services 1.2, Web Services MetaData 2.0
„ Management and Security : JACC 1.1, Java EE Application
Deployement 1.2, Java EE management 1.1

23

Introduction à Java et à Java EE

Architecture Java EE: Les points critiques

Couche de présentation
Séparation Contrôles
Modèle-Vue-Contrôleur et Entités
Navigateur Métier

Services Informations
Navigateur Serveur Web
Métiers Persistantes

Navigateur Interface de
communication Gestion
De la
Persistance

24

12
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE


Bonnes pratiques pour le développement
Java EE
„ Apprendre les technologies Java EE est nécessaire mais certainement
insuffisant pour assurer la qualité
„ Besoin de se conformer aux bonnes pratiques de développement
professionnel
„ Se référer à des solutions qui ont fait leur preuve

„ Qu'est ce qu'un design pattern ?


„ Les designs patterns sont des modèles de conceptions génériques
prouvées dont l'utilisation pourra contribuer au respect des bonnes
pratiques
„ Ils constituent un vocabulaire commun
„ Un concepteur qui ne reposerait pas sur les patterns fournirait un effort plus
important pour transmettre sa conception à d'autres

„ Les design patterns doivent servir de guides aux architectes et aux


développeurs pour construire des solutions tout en profitant du savoir-
faire et de l'expérience de la communauté.
„ Limitent l'espace de la solution
„ Ne pas "réinventer la roue"
25

Introduction à Java et à Java EE

Le catalogue "Core J2EE™" Patterns de Sun

„ L'objectif de ce catalogue est de produire une documentation


formelle pour cataloguer les expériences et les bonnes
pratiques
„ Le catalogue est construit sur la base du Sun Java Center
Services experience

„ Le catalogue contient 21 Design Patterns dans sa seconde


édition
„ Les patterns sont réparties sur les trois couches
du modèle Java EE
„ Ouvrage de référence :
Core J2EE™ Patterns: Best Practices
and Design Strategies, Second Edition,
By Deepak Alur, John Crupi, Dan Malks
„ http://java.sun.com/blueprints/patterns/catalog.html

„ Sun lance le programme Java BluePrint Program dans l'objectif


de démontrer l'application des patterns et des bonnes pratiques
de conception
„ http://java.sun.com/blueprints
„ Dans le cadre de ce programme, des démons d'applications
telles que PetShop, Jav Adventure Builder sont disponibles

26

13
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Liste des patterns J2EE J2EE design patterns

Nom du pattern Résumé


Présentation
Intercepting filter Facilite le prétraitement et le post-traitement d’une requête.
Front controller Fournit un contrôleur centralisé permettant de gérer le traitement des
requêtes
View helper Encapsule la logique qui n’est pas liée à la mise en forme de la représentation
dans des composants dits helpers.
Composite view Crée une vue composite à partir de sous composants
Service to worker Associe un composant Dispatcher aux patterns Controller et view helper
Dispatcher view Associe un composant Dispatcher aux patterns Controller et View helpe, en
reportant plusieurs activités au moment du traitement de la vue.
Métier
Business Delegate Découple les couches présentation et service et fournit aux services une
interface servant de façade ou de proxy.
Value object Facilite l’échange des données entre les couches en réduisant la bavardage du
réseau
Session facade Masque la complexité de l’objet métier : centralise la gestion du workflow
Composite entity Best practice visant à concevoir des beans entité à gros grain, en regroupant
des objets dépendants d’un parents dans seul bean.
Value object assembler Assemble un objet valeur composite à partir de plusieurs sources de données
Value list handler Gère l’exécution des requêtes, la mise en cache des résultats et le traitement
de ceux-ci.
Service locator Encapsule la complexité de la recherche et de la création du service métier.

Data access object Abstrait les ressources de données, fournit un accès transparent aux données
Intégration
Service activator Facilite le traitement asynchrone des composants EJB.

27

Introduction à Java et à Java EE


J
Edition
erns
entr

EE,
tin

pa
les
el

28
tt
R

2d
2
a
e

M.Romdhani,
n

14
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Java PetStore Patterns

PRESENTATION TIER
Front Controller

Centralizes
View Management
BUSINESS TIER
Page-by-Page Iterator
Efficient
Sub list
Traversal
Value Object
Encapsulates Accelerates
Data Read-Only
Access

Session Facade Fast-Lane Reader


Workflow
Mediator

Abstracts
Data Access

INTEGREATION TIER

Data Access
Object
29

Introduction à Java et à Java EE


Frontal Web : MVC 2, un principe
architectural éprouvé

Modèle
- Expose les fonctionnalités
- Encapsule les informations métiers
- Répond aux changement d ’état.

récupération état
changement d’état

notification changements

Vue Contrôleur
- Rendu du modèle - Logique de présentation
- MAJ du rendu - Convertion des actions utilisateur
- Récupération actions utilisateurs. actions utilisateurs en appel de méthodes sur le modèle

Sélection des vues

30

15
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Bonnes pratiques d'accès aux données

„ Objectifs généraux
„ Assurer une indépendance de l'accès aux données vis-à-vis du client
utilisé
„ Avoir un code du programme client clair et simple
„ Assurer une indépendance vis-à-vis de la technologie de base de
données utilisée
„ Accroître le degré de portabilité des applications
„ Assurer une migration vers une persistance gérée par le conteneur

„ Le design pattern "Data Access Object"


„ Regrouper la logique d'accès aux données dans un objet séparé auquel
les clients délègueront la responsabilité de l'accès aux données
„ Offrir un mécanisme qui supporte divers outils de plusieurs fournisseurs
(Hibernate, JDO, TopLink, …)

31

Introduction à Java et à Java EE

Les objets "Data Access" et "Transfer"

32

16
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Le design pattern DAO

„ Contexte :
„ L’accès aux données dépend de la source et de type de stockage ; bases
de données relationnelles, base de données orientées objet, …
„ Problème :
„ API de stockage persistant varient d’un fournisseur à un autre.
„ Des composants (bean session, servelet...) doivent extraire et mémoriser des
informations issues de stockage persistant (système existant, LDAP…)

„ Solution :
„ Utiliser DAO pour abstraire et encapsuler tous ce qui concerne l’accès aux
sources de données. Le DAO gère la connexion, l’obtention des données et leur
mémorisation.

33

Introduction à Java et à Java EE

Le design pattern DAO

34

17
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Exemple d'implémentation (DAO)


package com.mRomdhani.dao;
// imports
public class StockDAO {
final private String tableName = "Stock";
// select statement uses fields
final private String fields = "project_id, name," + …;
public List findProjects(ProjectTO projCriteria) throws SQLException {
...
try {
.. .
stmt = con.prepareStatement(selectStatement);
stmt.setString(1, resourceID);
ResultSet rs = stmt.executeQuery();
list = createResultsList(rs);
stmt.close();
}
finally {
con.close();
}
return list;
}
}

35

Introduction à Java et à Java EE

Le design pattern DTO (Value Objet)

„ Contexte
„ Les clients de l’application doivent échanger des données avec les
beans entreprise

„ Problème
„ Chaque appel de méthode à l’objet du service métier est
potentiellement distant.
„ Plus ces appels de méthodes sont nombreux. Plus les performances de
l’application peuvent se dégrader de manière significative.

„ Solution
„ Utiliser un Value Object pour encapsuler
les données métier. Un seul appel
de méthode sert à envoyer et à extraire
l’objet valeur. Lorsque le client demande
des données au bean entreprise,
celui-ci construit l’objet valeur,
lui affecte les valeurs des attributs,
et le passe par valeur au client

36

18
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Le design pattern DTO (Value Objet)

37

Introduction à Java et à Java EE

Exemple d'implémentation (DTO)


Package com.mRomdhani.dto;
//imports
public class OrderDetails implements java.io.Serializable {

private String orderId;


private String userId;
private String orderDate;
private float orderValue;
private String orderStatus;

public OrderDetails(String oid, String uid, String date, float value,


String stat) {
orderId = oid;
userId = uid;
orderDate = date;
orderValue = value;
orderStatus = stat;
}

public String getOrderId() {


return(orderId);
}
// ...
}
38

19
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Offre commerciale

39

Introduction à Java et à Java EE

Offre en termes de serveurs d’applications

„ Offre commerciale
„ IBM / WebSphere (n° 1)
„ BEA / WebLogic
„ Sun One
„ Oracle 9i Application Server
„ Et aussi Borland Entreprise Server, Macromedia / Jrun, SAP Web
Application Server, Iona / Orbix E2A

„ Offre « open source »


„ JBoss (n° 1)
„ GlassFish
„ Implémentation de référence Java EE 5
„ Partnership Sun et Oracle (TopLink Essentials)
„ JOnAS
„ JSAS (Java System Application Server de Sun, serveur de test
d’applications J2EE)

40

20
Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

Offre en termes d’IDE de développement

„ Offre commerciale
„ IBM / WebSphere Studio Application Developer (WSAD)
„ Borland JBuilder
„ Sun One Developer
„ Oracle JDeveloper
„ IDEA software
„ …

„ Offre « Open Source »


„ Eclipse (Projet eclipse.org soutenu par IBM)
„ NetBeans (de Sun Microsystems)
„ Emacs + ant, …

41

21