JEE pour les nuls - SCIMAT3).pdf · 3 JEE pour les nuls • Ou bien : – J2EE pour les nuls –...

Click here to load reader

  • date post

    12-Sep-2018
  • Category

    Documents

  • view

    273
  • download

    3

Embed Size (px)

Transcript of JEE pour les nuls - SCIMAT3).pdf · 3 JEE pour les nuls • Ou bien : – J2EE pour les nuls –...

  • 1

    JEE pour les nuls*

    Atelier CRI du 15/01/2008

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

  • 2

    Licence

    Ce travail est mis disposition sous une licence Creative CommonsVous tes libres

    De 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/

  • 3

    JEE pour les nuls

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

    Allez on y va

  • 4

    Java

    Langage Objet Multiplateforme

    Utilisation dune JVM (Java Virtual Machine)

    JVM JRE (Java Runtime

    Environment) JDK (Java

    Development Kit) JRE + javac + javadoc +

    JavaJava

    JVMJVM

    OSOS

  • 5

    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) doesMicrosoft 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 makerecommendations on these products. However, customers caninstall any compatible Java virtual machine on any computer running Microsoft Windows that they wish. Microsoft works withthird parties to ensure that they have all of the information they need for their technologies to work well in the Windows environment.

  • 6

    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

  • 7

    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 classpath Ex : java -cp bin;util Test2

  • 8

    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 mail AsynchronousSmtpServiceImpl Le nom de la classe avec Une

    majuscule en premire lettre et sur chaque mot

  • 9

    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 Test3

    java.lang.NoClassDefFoundError: org/apache/log4j/Logger

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

    JAVA

  • 10

    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=9004

  • 11

    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() ! Une mthode un peu particulire est appele la cration de

    lobjet : Le constructeur

  • 12

    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 applications

    Objets et interfaces

  • 13

    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

  • 14

    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) Production de JSR (Java Specification Request Ex. de JSR 168

    pour portlet)

  • 15

    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 : Les dveloppeurs souffrent sur certains points Les prix sont parfois astronomiques

  • 16

    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 faut

  • 17

    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 ?

  • 18

    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 faut

  • 19

    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)

  • 20

    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/

  • 21

    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 classes

  • 22

    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 entit

  • 23

    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

  • 24

    Hibernate

    Hibernate est un exemple doutil de mappingobjet 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

  • 25

    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 !

  • 26

    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 java

  • 27

    Conteneur lger

    Son rle est de crer automatiquement des objets et de les mettre en relation Cest ce que fait un serveur Java EE ! Mais il est lger :

    Pas besoin, pour les objets manipuls, dimplmenter une interface particulire

    Utilisable hors dun serveur Java EE (Tomcat, Batch) Il est tellement lger quil est intgr dans lapplication et que

    son utilisation impacte seulement les dveloppeurs, pas les exploitants

    Permet de facilement changer un morceau (de puzzle) par un autre

    Ex. de Spring trs apprci des dveloppeurs

  • 28

    ESUP-Commons

    Ou comment fabriquer un pseudo serveur Java EE commun

    Une dmarche Esup-blank Des outils communs Du rangement

    Une librairie Une formation Une communaut

  • 29

    ESUP-Commons, le puzzle

    Gestion

    des beans

    dataw

    eb

    Prsentation

    Logique applicative

    Logique mtier

    Donnes

    Persistance

    Requtes web

    base

    LDA

    P

    portail

    UR

    Ls

    I18n

    Cache

    Accs

    Auth.

  • 30

    Les versions de java

    1.2 Quel est lidiot qui a oubli de changer le premier numro ? Que sera la version 2.0 ? J2SE 1.2, J2EE 1.2

    1.3 J2SE 1.3, J2EE 1.3

    1.4 J2SE 1.4, J2EE 1.4

    1.5 J2SE 1.5, Java EE 5

    1.6 Java SE 6

    En gnral les scripts shell utilisent la variable denvironnement JAVA_HOME pour savoir quelle version de java utiliser pour lancer un programme donn

  • 31

    Quai-je oubli ?

    Jai parl Servlet (Classe java qui fonctionne dans un serveur dapplications) mais : Cest quoi un Portlet ? Cest quoi une Applet ?

    Les exceptions

  • 32

    Cest quoi un Portlet ?

    Une classe java (conforme la JSR 168) qui tourne dans un portail Le but est davoir sur une mme page Web

    plusieurs applications (portail) Cest sous forme dun .war comme une

    application Web avec un WEB-INF/portlet.xml en plus

    Linterface implmenter nest plus Servletmais Portlet

  • 33

    Cest quoi une Applet

    Cest une classe java qui tourne dans une JVM intgre au navigateur Web et qui sexcute sur le poste client Cest sous forme dun .jar que le navigateur va

    tlcharger sur le web Je nen sais pas plus

  • 34

    Les exceptions

    En java quand quelque chose se passe mal on a une exception java.lang.NullPointerException java.io.FileNotFoundException

    Pour le dveloppeur cest pratique Il essaie (try) des choses Il attrape (catch) des exceptions pour ventuellement

    les traiter Et sil ne sait pas faire il soumet (throw) le problme au

    chef (en fait, la mthode qui lappelle dans la pile dexcution (stack))

  • 35

    Les exceptions

    Ce sont aussi des objets avec des mthodes pour connatre : La cause

    En gnrale on lve une exception parce que lon a eu un autre problme avant

    org.esupportail.lecture.exceptions.dao.XMLParseException cause dune org.dom4j.DocumentException

    Le message org.dom4j.DocumentException: Connection refused

    La pile dexcution org.dom4j.DocumentException: Connection refused

    org.dom4j.io.SAXReader.read(SAXReader.java:484) org.dom4j.io.SAXReader.read(SAXReader.java:321) org.esupportail.lecture.dao.FreshSourceThread.getFreshSource

    (FreshSourceThread.java:81) org.esupportail.lecture.dao.FreshSourceThread.run

    (FreshSourceThread.java:57)

  • 36

    Travaux pratiques

    ANT Voir une config Spring Voir une config log4j Eclipse et SVN

  • 37

    ANT

    ANT est un outil permettant dautomatiser des tches (comme make utilis sous Unix)

    Le fait quil soit crit en java permet quil soit utilisable sur toutes les plateformes disposant une JVM

    Le principe repose sur des cibles (target) dcrites dans un fichier XML (build.xml le plus souvent) Les cibles peuvent avoir des relations de dpendance

    entre elles Elles peuvent faire rfrence des proprits

    contenues dans un(des) fichier(s) de proprits facilement ditable(s) (par un exploitant par ex.)

  • 38

    ANT

    Les cibles ont leur disposition des tches (task) pour effectuer diffrentes actions : echo, mkdir, copy, replaceregexp, jar, javac, javadoc, etc.

    Les tches agissent sur des ensembles de fichiers : fileset, pathelement, etc.

    Mode de lancement de ANT ant excute la cible par dfaut (utilisation du build.xml du

    rpertoire courant) ant p donne la liste des cibles disponibles ant deploy lance la cible deploy en charge dinstaller

    (dployer) une application ant deluser -Duser=toto lance la cible deluser de

    suppression du user toto de la base de donnes du portail

  • 39

    ANT

    Un exemple de cible :

  • 40

    Spring

    Spring est un conteneur lger Son rle est de crer des objets et de les mettre en

    relation Le dveloppeur utilise des objets mais il ncrit plus le code de

    cration de ces objets Il demande Spring de les lui fournir

    Spring permet de facilement changer un morceau (de puzzle) par un autre

    Si un dveloppeur a besoin dun objet pour envoyer du mail Et quune interface dfinie que lenvoi de mail se fait en

    utilisant une mthode de nom send Le dveloppeur a juste besoin dappeler cette mthode Spring va se charger de crer le bon objet au bon moment

  • 41

    Spring

    Va appeler les objets quil gre des beans La dfinition de ces beans se fait dans un fichier XML Le dveloppeur ne soccupe plus de a (il veut juste

    envoyer un mail) Il na mme plus se soucier du traitement du fichier de

    configuration contenant ladresse du serveur de mail Vous comprenez pourquoi je vous disais que les dveloppeurs

    aimaient Spring ;-)

    Lexploitant a accs ce fichier XML et peut tout changer Sil le veut il peut mme envoyer les mails dans une base de

    donnes pour archivage et ne plus utiliser SMTP

  • 42

    Spring

  • 43

    Spring

    On peut centraliser le paramtrage

  • 44

    log4j

    Log for Java Depuis java 1.4 il existe, en standard dans la

    JVM, un mcanisme de log qui ressemble beaucoup ce qui existait dj avec log4j

    Apache commons logging met tout le monde daccord en offrant une surcouche au dveloppeur

    Le dveloppeur logue tout : Les erreurs (ERROR), les avertissements (WARN), des

    informations plus ou moins importantes pour lexploitant (INFO) ou lui (DEBUG)

  • 45

    log4j

    Cest lexploitant ensuite qui dcide de ce quil garde, oet comment Grace un fichier log4j.properties ou log4j.xml quil met la racine

    du classpath (emplacement par dfaut) ou dans properties/logging(pour un dveloppement esup-commons)

    Il a sa disposition des appenders (o seront envoys les logs) Fichiers tournants ou pas Syslog Etc.

    Il dcide de quelles classes il veut les logs en prcisant Lappender utiliser Le niveau de log souhait

    ERROR, WARN, INFO, DEBUG

  • 46

    log4J

  • 47

    Eclipse

    Eclipse est un IDE crit en java qui permet, entre autres choses, de dvelopper en JAVA Coloration syntaxique, auto-compltion, vrification des erreurs

    la vole, etc. Il est trs modulaire et permet de facilement diter

    diffrents type de fichiers grce diffrents plugins Editeur XML gnrique Editeur ANT Editeur Spring Etc.

    Il offre aussi des outils intressants Navigateur LDAP ou SQL Client SVN

  • 48

    SVN

    SubVerSion est un outil de gestion des versions Trs utilis par les dveloppeurs il pourrait

    (devrait ?) ltre par les exploitants pour grer leurs fichiers de configuration

    Quand un dveloppeur nutilisant pas SVN le dcouvre aprs avoir longtemps rsist, il se demande comment il a pu sen passer

  • 49

    Cest simple ! Checkout on prend ce qui est sur le serveur

    pour le mettre en local Update on met jour ce qui est local avec

    ce qui est sur le serveur Commit on met jour le serveur avec ce qui

    a t modifi en local

    SVN

  • 50

    On peut faire un tag Cest juste une copie, une image un moment donn, de ce qui est sur le serveur (ex : version mise en prod le 01/04/2007)

    Quand a ne marche plus : On a des outils pour voir ce qui a chang depuis telle

    date, tel tag On peut revenir (switch) limage une date, un tag

    On peut facilement travailler plusieurs : Au pire on devra faire une fusion (merge) et dcider

    laquelle des deux modifications est la plus pertinentes

    SVN

  • 51

    SVN

  • 52

    Conclusion

    Java cest : Tentaculaire, passionnant, structurant

    Donc java peut rendre : Insomniaque, psychorigide, maniaque

    Vous tes prvenus. Faites attention !