1 java ee 5 - introduction

21
Chapitre 1 Introduction à Java et aux technologies Java EE Introduction à Java et à Java EE 2 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

Upload: paul-pat

Post on 28-Jun-2015

235 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Java EE 5 - Introduction

1

Chapitre 1- Introduction à Java et à Java EE

Chapitre 1

Introduction à Java et aux

technologies Java EE

Introduction à Java et à Java EE

2

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

Page 2: 1 Java EE 5 - Introduction

2

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

3

Qu'est-ce que Java ?

Un langage de programmation orienté objets purQualité, productivité, et maîtrise de la complexitéd'applications

Une architecture de Virtual MachinePortabilité

Un ensemble d'API (bibliothèques) riches et variéesNetworking, accès aux bases de données, distribution, interfaces graphiques, …

Les spécifications de Java et le JDK sont publicsJava 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

4

Les caractéristiques du langage Java

Simple• Ok, c'est plus simple que le C++.

Orienté objets• OO pur dans la ligne de Smalltalk et les

autres langages de POO

Interprété• Le compilation génère un code

indépendant des machines, le bytecode. Ce code est ensuite interprétée par la JVM.

Portable• Java est "architecture neutral", il tourne

sur les PC, les Macs, UNIX, …

Robuste • C'est difficile d'avoir des échecs

mémoire ou de corrompre le code ou le stack.

Sécurisé• Mécanismes de sécurité (Bytecode

verifier, Security manager, …)

Multi-threads• Le multi-tâches est immédiatement

supporté.

Distribué• Support des protocoles réseau• Support de la distribution d'objets,

Appels RMI, CORBA

Page 3: 1 Java EE 5 - Introduction

3

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

5

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

6

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 popularityWidely used with dynamic content (interactivity & animations)

Current – used forDevelop large scale enterprise applicationsEnhance WWW server functionalityProvide applications for consumer devices

Cellular phone, Palm, Personal Game, etc.

Historique de Java

Page 4: 1 Java EE 5 - Introduction

4

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

7

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

8

J2SE 1.3 (May 8, 2000) – Codename Kestrel. The most notable changes were: HotSpot JVM, Remote MethodInvocation (RMI) was changed to be based on CORBA, RMI/IIOP, Java Naming and Directory Interface (JNDI), Java Sound, etc1842 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, securityand cryptography extensions (JCE, JSSE, JAAS) were integrated intoJ2SE, image reading/writing, drag-and-drop for Swing, assertkeyword, etc2991 classes, 135 packages.

Historique de Java

Page 5: 1 Java EE 5 - Introduction

5

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

9

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

Historique de Java

Introduction à Java et à Java EE

10

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 APIsMonitoring and Management facilities

Java SE 7 – Codename Dolphin. Project started up in August 2006, with release estimated in 2008.

Historique de Java

Page 6: 1 Java EE 5 - Introduction

6

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

11

La plateforme J2SE 5.0

Version 1.5.0 or 5.0Both 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).

Introduction à Java et à Java EE

12

La plateforme J2SE 5.0

Page 7: 1 Java EE 5 - Introduction

7

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

13

Java™ Platform, Standard Edition 6

Java™ SE 6, Platform Name and Version NumbersAt 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.

Introduction à Java et à Java EE

14

JRE

JDK

Java SEAPI

Java™ Platform, Standard Edition 6

Page 8: 1 Java EE 5 - Introduction

8

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

15

Les packages de Java SE

Le succès de Java tient, entre autres, à la richesse de son API. L'API estorganisé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'appletjava.awt – Développement d'interfaces graphiquesjavax.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 relationnellesjava.rmi – Développement d'applicatifs Java distribué sur plusieurs machines

Introduction à Java et à Java EE

16

Java EE pour quoi faire ?

Infrastructure « serveur » pour le support d’applications d’entrepriseSupport des architecture multi-tiers

1. Architecture client léger (architecture Web basée « browser »)2. Architecture client lourd3. 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 incluantUn 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 CommunityProcess www.jcp.org) à travers des JSR(Java Specification Request)

Page 9: 1 Java EE 5 - Introduction

9

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

17

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

Introduction à Java et à Java EE

18

Evolutions des versions de la Java EE

EJB 1.0March 1998

Servlets 2.1November 1998

JSP 1.0September 1999

J2EE 1.2December 1999

J2EE 1.3September 2001

J2EE 1.4November 2003

1998 1999 20012000 … 2003 2006…

Java EE 5May 2006

Page 10: 1 Java EE 5 - Introduction

10

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

19

Evolutions des versions de la Java EE

J2EE 1.3Connector APIEJB (2.x) local interfaces and new CMP model

J2EE 1.4“Web services”Management, Deployment, JAAS

Java EE 5 (May 2006)“Ease of Development”AnnotationsDependency InjectionBetter defaultsJava Persistance API, StAX, JAX-WS

Introduction à Java et à Java EE

20

L'architecture Java EE 5

Page 11: 1 Java EE 5 - Introduction

11

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

21

Containers de la Java EE

Java2EE Components live in Containers

Containers shield the Components from the underlying infrastructure

Containers are responsible forManaging the lifecycle of the Components and notify Components about lifecycle events such as Activation, Passivation and TransactionprogressProvide Components uniform access to services like transactions, security and persistenceRegister and deployment of Components

Introduction à Java et à Java EE

22

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 RuntimeThe Component is called by the Runtime through the Abstract Interceptor Interface

Page 12: 1 Java EE 5 - Introduction

12

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

23

Java EE 5 APIs and VersionsJavaTM 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 244Elle a été lancée en Mai 2006 avec GlassFish V1 comme implémentation de référence

Java EE 5 regroupe 23 spécificationsWeb : JSF 1.2, JSP 2.1, JSTL 1.2, Servlet 2.5Entreprise : Common Annotations 1.0, EJB 3.0, JAF 1.1, JavaMail 1.4, JCA 1.5, JMS 1.1, JPA 1.0, JTA 1.1Web 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.0Management and Security : JACC 1.1, Java EE Application Deployement 1.2, Java EE management 1.1

Introduction à Java et à Java EE

24

Architecture Java EE: Les points critiques

Navigateur

Serveur WebNavigateur

Navigateur

Services Métiers

InformationsPersistantes

Couche de présentation Séparation

Modèle-Vue-Contrôleur

Interface de communication

Contrôles et Entités

Métier

GestionDe la

Persistance

Page 13: 1 Java EE 5 - Introduction

13

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

25

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 professionnelSe 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 pratiquesIls 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 solutionNe pas "réinventer la roue"

Introduction à Java et à Java EE

26

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 CenterServices experience

Le catalogue contient 21 Design Patterns dans sa seconde édition

Les patterns sont réparties sur les trois couches du modèle Java EEOuvrage de référence : Core J2EE™ Patterns: Best Practices and Design Strategies, Second Edition, By Deepak Alur, John Crupi, Dan Malkshttp://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/blueprintsDans le cadre de ce programme, des démons d'applications telles que PetShop, Jav Adventure Builder sont disponibles

Page 14: 1 Java EE 5 - Introduction

14

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

27

Facilite le traitement asynchrone des composants EJB.Service activator

Abstrait les ressources de données, fournit un accès transparent aux donnéesData access object

Encapsule la complexité de la recherche et de la création du service métier.Service locator

Gère l’exécution des requêtes, la mise en cache des résultats et le traitement de ceux-ci.

Value list handler

Assemble un objet valeur composite à partir de plusieurs sources de donnéesValue object assembler

Best practice visant à concevoir des beans entité à gros grain, en regroupant des objets dépendants d’un parents dans seul bean.

Composite entity

Masque la complexité de l’objet métier : centralise la gestion du workflowSession facade

Facilite l’échange des données entre les couches en réduisant la bavardage du réseau

Value object

Découple les couches présentation et service et fournit aux services une interface servant de façade ou de proxy.

Business Delegate

Associe un composant Dispatcher aux patterns Controller et View helpe, en reportant plusieurs activités au moment du traitement de la vue.

Dispatcher viewAssocie un composant Dispatcher aux patterns Controller et view helperService to workerCrée une vue composite à partir de sous composantsComposite view

Encapsule la logique qui n’est pas liée à la mise en forme de la représentation dans des composants dits helpers.

View helper

Fournit un contrôleur centralisé permettant de gérer le traitement des requêtes

Front controller

Facilite le prétraitement et le post-traitement d’une requête.Intercepting filter

RésuméNom du pattern

J2EE design patterns

Présentation

Métier

Intégration

Liste des patterns J2EE

Introduction à Java et à Java EE

28M.Romdhani, R el

a tin

en

tre l es

pa

tt ern

s J

2 EE,

2nd Ed

itio

n

Page 15: 1 Java EE 5 - Introduction

15

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

29

Java PetStore Patterns

Front Controller

Page-by-Page Iterator

Fast-Lane Reader

Value Object

Session Facade

Data Access Object

EncapsulatesData

WorkflowMediator

AbstractsData Access

Centralizes View Management

AcceleratesRead-Only

Access

EfficientSub list

Traversal

PRESENTATION TIER

BUSINESS TIER

INTEGREATION TIER

Introduction à Java et à Java EE

30

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

Vue- Rendu du modèle- MAJ du rendu- Récupération actions utilisateurs.

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

Contrôleur- Logique de présentation- Convertion des actions utilisateur en appel de méthodes sur le modèle

Sélection des vues

actions utilisateurs

changement d’état

notification changements

récupération état

Page 16: 1 Java EE 5 - Introduction

16

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

31

Bonnes pratiques d'accès aux données

Objectifs générauxAssurer une indépendance de l'accès aux données vis-à-vis du client utilisé

Avoir un code du programme client clair et simpleAssurer une indépendance vis-à-vis de la technologie de base de données utilisée

Accroître le degré de portabilité des applicationsAssurer 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éesOffrir un mécanisme qui supporte divers outils de plusieurs fournisseurs (Hibernate, JDO, TopLink, …)

Introduction à Java et à Java EE

32

Les objets "Data Access" et "Transfer"

Page 17: 1 Java EE 5 - Introduction

17

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

33

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.

Le design pattern DAO

Introduction à Java et à Java EE

34

Le design pattern DAO

Page 18: 1 Java EE 5 - Introduction

18

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

35

Exemple d'implémentation (DAO)

package com.mRomdhani.dao;// importspublic class StockDAO {

final private String tableName = "Stock";// select statement uses fieldsfinal 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;

}}

Introduction à Java et à Java EE

36

Le design pattern DTO (Value Objet)

ContexteLes clients de l’application doivent échanger des données avec les beans entreprise

ProblèmeChaque 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.

SolutionUtiliser un Value Object pour encapsulerles données métier. Un seul appelde méthode sert à envoyer et à extrairel’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

Page 19: 1 Java EE 5 - Introduction

19

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

37

Le design pattern DTO (Value Objet)

Introduction à Java et à Java EE

38

Exemple d'implémentation (DTO)

Package com.mRomdhani.dto;//importspublic 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);

}// ...

}

Page 20: 1 Java EE 5 - Introduction

20

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

39

Offre commerciale

Introduction à Java et à Java EE

40

Offre en termes de serveurs d’applications

Offre commercialeIBM / WebSphere (n° 1)BEA / WebLogicSun OneOracle 9i Application ServerEt 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 5Partnership Sun et Oracle (TopLink Essentials)

JOnASJSAS (Java System Application Server de Sun, serveur de test d’applications J2EE)

Page 21: 1 Java EE 5 - Introduction

21

Chapitre 1- Introduction à Java et à Java EE

Introduction à Java et à Java EE

41

Offre en termes d’IDE de développement

Offre commercialeIBM / WebSphere Studio Application Developer (WSAD)Borland JBuilderSun One DeveloperOracle JDeveloperIDEA software…

Offre « Open Source »Eclipse (Projet eclipse.org soutenu par IBM)NetBeans (de Sun Microsystems)Emacs + ant, …