JEE Pour Les Nuls

download JEE Pour Les Nuls

of 52

  • date post

    15-Jul-2015
  • Category

    Documents

  • view

    194
  • download

    0

Embed Size (px)

Transcript of JEE Pour Les Nuls

JEE pour les nuls*Atelier CRI du 15/01/2008

1

* Je laisse la responsabilit de ce titre Alain Kermarrec ;-)

LicenceCe travail est mis disposition sous une licence Creative Commons

Vous tes libresDe reproduire, distribuer et communiquer cette cration au public De modifier cette cration

Cette cration est mise disposition selon le Contrat Paternit-NonCommercial-ShareAlike 2.5 disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.5/2

JEE pour les nuls Ou bien : J2EE pour les nuls JEE pour les null Java EE pour les nuls

Allez on y va3

Java Langage Objet Multiplateforme Utilisation dune JVM (Java Virtual Machine)

Java Java JVM JVM OS OS

JVM JRE (Java Runtime Environment) JDK (Java Development Kit) JRE + javac + javadoc +4

JAVA JRE Sun (Pour Solaris, Linux, Windows), IBM (AIX, Linux, etc.), BEA, Apple (Mac) Microsoft (http://www.microsoft.com/mscorp/java/faq.mspx) : Which third-party Java Run-time Environment (JRE) does Microsoft recommend? Because Microsoft does not support third-party Java implementations, including monitoring and fixes of potential and exposed security vulnerabilities, we do not distribute or make recommendations on these products. However, customers can install any compatible Java virtual machine on any computer running Microsoft Windows that they wish. Microsoft works with third parties to ensure that they have all of the information they need for their technologies to work well in the Windows environment.5

JAVA Langage objet On cre des objets en mmoire, partir de classes, pour stocker de linformation et/ou excuter des traitements Un objet est une instance dune classe Un objet est constitu dattributs et de mthodes

Le code source dans un .java Javac du JDK le transforme en .class Le .class est excut dans un JRE Un Test1.class gnr sous windows fonctionnera sur Linux Ex : java Test1

6

Java On ne dveloppe jamais seul Des bibliothques de classes tout faire existent dj Notre .class va faire appel ces classes (importer) pour crer de nouveaux objets Quand on va lancer notre programme la JVM devra savoir o trouver ces classes On parle de classpath7

Ex : java -cp bin;util Test2

JAVA Pour les maniaques du rangement ! Les classes sont dans des rpertoires Pour avoir un espace de nom propre et viter les conflits Par domaine pour sy retrouver On utilise le . comme sparateur de rpertoires

Exemple org.esupportail.commons.services.smtp.AsynchronousSmtpServiceImpl

org.esupportail utilisation du nom de domaine esup-portail.org lenvers (le - nest pas valide) commons pour esup-commons services.smtp pour le service de mail8

AsynchronousSmtpServiceImpl Le nom de la classe avec Une majuscule en premire lettre et sur chaque mot

JAVA On fait des Zip de tout a Cest plus pratique Ce sont des .jar (Java Archive)

Dans le classpath on utilise donc : Des rpertoires de Classes Des Zip de Classes Ex : java -cp bin;util Test3java.lang.NoClassDefFoundError: org/apache/log4j/Logger

Mieux : java -cp bin;util;lib/log4j-1.2.13.jar Test39

Lancer java En gnral les scripts shell utilisent la variable denvironnement JAVA_HOME pour pointer vers le rpertoire dinstallation de java $JAVA_HOME/bin contient lexcutable java qui va servir au lancement du programme Quelques options de la ligne de commande java On a vu la gestion du classpath -cp path1;path2;fic1.jar:fic2.jar

On peut grer la mmoire minimum et maximum alloue -Xms512m -Xmx1024m

On peut faire du debug distance -Xdebug -Xrunjdwp:transport=dt_socket,address=55555,server=y,suspend=n

On peut faire de ladministration distance On utilisant JMX (Java Management Extensions) -Dcom.sun.management.jmxremote.port=900410

Objets et interfaces Objets Attributs Peuvent tre accessibles directement Mais trs souvent on cre des mthodes pour manipuler les attributs (des accesseurs ) Meilleure matrise de lvolution du contenu de lobjet Ex : une Personne un nom on aura une mthode pour connatre son non getNom()

Mthodes Pour manipuler les donnes dun objet ou offrir un service Ex : raymond.travailleMaintenant() !11

Une mthode un peu particulire est appele la cration de lobjet : Le constructeur

Objets et interfaces Interfaces Dfinition dune liste de mthodes On va pouvoir utiliser tout objet qui sait rpondre cette liste de mthodes On dit quil implmente linterface Ex : raymond.travailleMaintenant() devient robot.travailleMaintenant() ( ou )

On va voir lutilit de ce mcanisme dans les serveurs dapplications o lon va pouvoir brancher des applications12

Revenons Java EE Java ME (Micro Edition) Je ne connais pas bien

Java SE (Standard Edition) On peut tout faire avec Sert de base Java EE

Java EE (Enterprise Edition) Lusine gaz et fric que le temps, lexprience et lOpen Source ont rendu accessible

13

Java EE Cest un gros package de technologies Sur lesquelles je vais revenir JSP ; Servlet ; EJB

Ou pas JSF (Java Server Faces. Utilis dans les dveloppements ESUP et Rennes 1) JMS (Java Message Service) JAX-RPC (Java API for XML-Based RPC) Etc.

En java, chaque technologie majeure passe par une phase ouverte de spcification JCP (Java Community Process http://www.jcp.org) Ex. de JSR 168 Production de JSR (Java Specification Request pour portlet)14

La machine de guerre Comme le cadre de travail est clair tout le monde y va : Les diteurs (Oracle, IBM, SUN) lancent des serveurs dapplications compatibles Java EE Les DSI forment leurs personnels Les SSII vendent de la prestation

Oui mais :15

Les dveloppeurs souffrent sur certains points Les prix sont parfois astronomiques

Alors ? JSP et Servlet sont incontournables Apache Tomcat est un serveur dapplications (non Java EE au sens stricte) qui ne fait que a mais le fait bien et gratuitement

Et pour tout le reste ? Accs aux donnes Les EJB sont trop lourds on utilise Hibernate On organise les dveloppements avec un conteneur lger comme Spring Si on a tel ou tel besoin on va trouver en Open Source la bibliothque quil faut16

Servlet Cest une classe java qui va produire le contenu dune page Web Cette classe doit implmenter linterface Servlet Pratiquement on doit crire, dans une mthode prcise, le code java produisant le HTML Le serveur dapplications va savoir appeler cette mthode Vous vous souvenez du puzzle ?17

JSP Java Server Page Ecrire une servlet cest bien mais cest encore trop compliqu Il faut crire une classe et la compiler

JSP permet dincrer facilement du JAVA dans une page HTML Cest le serveur dapplication qui va se charger de la transformer en Servlet et de la compiler quand il le faut18

JSP et Servlet Ce que je viens de vous dcrire cest du bricolage Dans la pratique Les JSP servent au rendu (Vue) et font appel des classes mtier crites en java (Modle) qui appellent, leur tour, le service de stockage de linformation (en base de donnes par ex.) Une Servlet sert aiguiller entre les vues (Contrleur) On parle alors de MVC (Modle, Vue, Contrleur)

19

Et si on rangeait ? Ouai ! On va mettre toutes les JSP, Servlet ainsi que les Classes et librairies quelles utilisent dans un .war (Web Archive) Cest encore un zip On y trouve toujours WEB-INF/ web.xml lib/ Classes/20

On sy retrouve mieux web.xml Est un fichier XML de description de lapplication Il a une syntaxe prcise On va, par ex., y trouver le nom de la Classe (implmentant linterface Servlet) utiliser pour tel ou tel chemin dune URL Web

Lib/ On va y mettre tous les .jar dont notre programme a besoin

Classes/ On va y mettre toutes les .class que lon produit

Le serveur dapplications va savoir, pour chaque application quil hberge, lire le web.xml et crer automatiquement un classpath spcifique lapplication partir des rpertoires lib et classes21

EJB Enterprise Java Bean Bean Objet dont les attributs ne sont accessibles que par des accesseurs et dont un des constructeurs ne prend aucun paramtre

Java OK

Enterprise Compliqu ? Solide ? Lourd ? Cher ?

Ils sont de deux types Les EJB session Les EJB entit22

EJB Lide de dpart (EJB 1 et 2) Avoir des objets qui offrent des services (Les EJB session) rpartis, pour des questions de charge, sur diffrents serveurs Avoir un mcanisme standard de persistance des donnes contenues dans les objets (Les EJB Entit)

Dans la pratique cest compliqu Besoin, pour les objets, dimplmenter une interface particulire Objets non utilisables hors dun serveur Java EE Pas facilement portable dun serveur un autre

23

Hibernate Hibernate est un exemple doutil de mapping objet Relationnel Le mapping est dfini dans des fichiers XML Un objet devient une ligne dune table dans une base de donnes Un attribut devient un champ de cette ligne

Permet de stocker tout objet (pas dinterface particulire) Utilisable hors dun serveur dapplications Java EE Un simple Tomcat Un programme batch

24

EJB 3 EJB 3 reprend les principes dHibernate Hibernate est compatibles avec EJB 3 Lhonneur est sauf et les DSI restent en poste ;-) EJB 3 est surtout focaliser sur lenregistrement des donnes JPA (Java Persistence API)

EJB 3 (JSR 220) fait parti de Java EE 5 Faites moi penser vous parler de versions !25

Et les EJB session ? Les Web Services mais aussi les framework MVC et les conteneurs lgers font quils nont plus besoin dexister en tant que tel Un Web Service Cest un EJB session sauf que lon utilise HTTP pour communiquer et quil nest pas obligatoirement crit en java26

Conteneur lger Son rle est de crer automatiquement des objets et de les mettre en relation Cest ce que fait un serv