JEE pour les nuls* Atelier CRI du 15/01/2008. * Je laisse la responsabilité de ce titre à Alain Kermarrec ;-)



Documents pareils
Utilisation de Jakarta Tomcat

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

JOnAS Day 5.1. Outils de développements

Java pour le Web. Cours Java - F. Michel

Compte Rendu d intégration d application

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Vulgarisation Java EE Java EE, c est quoi?

Environnements de développement (intégrés)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Application Web et J2EE

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Cours en ligne Développement Java pour le web

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Refonte front-office / back-office - Architecture & Conception -

Projet Java EE Approfondi

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Installation et prise en main

1 JBoss Entreprise Middleware

Initiation à JAVA et à la programmation objet.

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

Mise en œuvre des serveurs d application

Etude de l ENT de l Université de Paris 5. Recommandations des experts suite à la journée du 29 octobre 2009

TP1. Outils Java Eléments de correction

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

A. Architecture du serveur Tomcat 6

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

DOSSIER DEVELOPPEUR Projet CAR

as Architecture des Systèmes d Information

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Hébergement de sites Web

JOnAS 5. Serveur d application d

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Projet de développement

Point sur les solutions de développement d apps pour les périphériques mobiles

Quick Start Installation de MDweb version 2.3

Eclipse atelier Java

Auto-évaluation Aperçu de l architecture Java EE

Formation en Logiciels Libres. Fiche d inscription

Expert technique J2EE

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Introduction à la plateforme J2EE

Environnements de Développement

Chapitre I Notions de base et outils de travail

Extensions, Documentation, Tutoriels, Astuces

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Le moteur de workflow JBPM

PRODUCTS LIST (updated 11th January 2010)

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

MANUEL D INSTALLATION de GEONETWORK sur un serveur LINUX CentOS 4

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

PROCEDURE D'INSTALLATION OPENREPORTS

CAHIER DES CHARGES D IMPLANTATION

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Web Tier : déploiement de servlets

CQP Développeur Nouvelles Technologies (DNT)

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

4. SERVICES WEB REST 46

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Un serveur d'archivage

Solution d inventaire automatisé d un parc informatique et de télédistribution OCS INVENTORY NG. EHRHARD Eric - Gestionnaire Parc Informatique

Installation du package esup-portail Version uportal-2.5.x-esup

Guide d installation JMap 5.0

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

FileMaker Server 14. Guide de démarrage

APIs de table pour SQL Server

Traitement de données

GECKO Software. Introduction à MOBIDICK. Modular But Integrated Application Framework

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Introduction aux «Services Web»

Fournir un accès rapide à nos données : agréger au préalable nos données permet de faire nos requêtes beaucoup plus rapidement

Applications distribuées: le retour du client "riche"

BMC Middleware Management

TD/TP 1 Introduction au SDK d Android

Bases Java - Eclipse / Netbeans

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Open Source Job Scheduler. Installation(s)

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Président d Inotekk Gestion de la société, développement du portefeuille clients, gestion et réalisation des projets informatiques

Windows (2000/NT), Solaris, AIX, HP-UX, Linux Haute disponibilité : SunCluster 3, Veritas Cluster Server 4. J2EE (JSP, Servlet, EJB, JTA), Open Source

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Java et les bases de données

DotNet. Plan. Les outils de développement

Famille IBM WebSphere Application Server

ELO Office / Pro Les avantages : Archivage et gestion documentaire

Notre Catalogue des Formations IT / 2015

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Notes de version de Sun Java System Application Server Enterprise Edition

Guide d installation rapide

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Transcription:

JEE pour les nuls* Atelier CRI du 15/01/2008 1 * Je laisse la responsabilité de ce titre à Alain Kermarrec ;-)

Licence Ce travail est mis à disposition sous une licence Creative Commons Vous êtes libres De reproduire, distribuer et communiquer cette création au public De modifier cette création 2 Cette création est mise à disposition selon le Contrat Paternité-NonCommercial-ShareAlike 2.5 disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.5/

JEE pour les nuls Ou bien : J2EE pour les nuls JEE pour les null Java EE pour les nuls Allez on y va 3

Java 4 Langage Objet Multiplateforme Utilisation d une JVM (Java Virtual Machine) JVM JRE (Java Runtime Environment) JDK (Java Development Kit) JRE + javac + javadoc + Java JVM OS

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 6 Langage objet On crée des objets en mémoire, à partir de classes, pour stocker de l information et/ou exécuter des traitements Un objet est une instance d une classe Un objet est constitué d attributs et de méthodes Le code source dans un.java Javac du JDK le transforme en.class Le.class est exécuté dans un JRE Un Test1.class généré sous windows fonctionnera sur Linux Ex : java Test1

Java 7 On ne développe jamais seul Des bibliothèques de classes à tout faire existent déjà Notre.class va faire appel à ces classes (importer) pour créer 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

JAVA 8 Pour les maniaques du rangement! Les classes sont dans des répertoires Pour avoir un espace de nom propre et éviter les conflits Par domaine pour s y retrouver On utilise le «.» comme séparateur de répertoires Exemple org.esupportail.commons.services.smtp.asynchronoussmtpserviceimpl org.esupportail utilisation du nom de domaine esup-portail.org à l envers (le «-» n est pas valide) commons pour esup-commons services.smtp pour le service de mail AsynchronousSmtpServiceImpl Le nom de la classe avec Une majuscule en première lettre et sur chaque mot

JAVA On fait des Zip de tout ça C est plus pratique Ce sont des.jar (Java Archive) Dans le classpath on utilise donc : Des répertoires 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 9

Lancer java En général les scripts shell utilisent la variable d environnement JAVA_HOME pour pointer vers le répertoire d installation de java $JAVA_HOME/bin contient l exécutable «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 gérer la mémoire minimum et maximum allouée -Xms512m -Xmx1024m On peut faire du debug à distance -Xdebug -Xrunjdwp:transport=dt_socket,address=55555,server=y,suspend=n On peut faire de l administration à distance On utilisant JMX (Java Management Extensions) -Dcom.sun.management.jmxremote.port=9004 10

Objets et interfaces 11 Objets Attributs Peuvent être accessibles directement Mais très souvent on crée des méthodes pour manipuler les attributs (des «accesseurs») Meilleure maîtrise de l évolution du contenu de l objet Ex : une Personne à un nom on aura une méthode pour connaître son non getnom() Méthodes Pour manipuler les données d un objet ou offrir un service Ex : raymond.travaillemaintenant()! Une méthode un peu particulière est appelée à la création de l objet : Le constructeur

Objets et interfaces 12 Interfaces Définition d une liste de méthodes On va pouvoir utiliser tout objet qui sait répondre à cette liste de méthodes On dit qu il implémente l interface Ex : raymond.travaillemaintenant() devient robot.travaillemaintenant() ( ou ) On va voir l utilité de ce mécanisme dans les serveurs d applications où l on va pouvoir «brancher» des applications

Revenons à Java EE 13 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) L usine à gaz et à fric que le temps, l expérience et l Open Source ont rendu accessible

Java EE 14 C est un gros package de technologies Sur lesquelles je vais revenir JSP ; Servlet ; EJB Ou pas JSF (Java Server Faces. Utilisé dans les développements 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 spécification JCP (Java Community Process http://www.jcp.org) Production de JSR (Java Specification Request Ex. de JSR 168 pour portlet)

La machine de guerre 15 Comme le cadre de travail est clair tout le monde y va : Les éditeurs (Oracle, IBM, SUN) lancent des serveurs d applications compatibles Java EE Les DSI forment leurs personnels Les SSII vendent de la prestation Oui mais : Les développeurs souffrent sur certains points Les prix sont parfois astronomiques

Alors? 16 JSP et Servlet sont incontournables Apache Tomcat est un serveur d applications (non Java EE au sens stricte) qui ne fait que ça mais le fait bien et gratuitement Et pour tout le reste? Accès aux données Les EJB sont trop lourds on utilise Hibernate On organise les développements avec un conteneur léger comme Spring Si on a tel ou tel besoin on va trouver en Open Source la bibliothèque qu il faut

Servlet C est une classe java qui va produire le contenu d une page Web Cette classe doit implémenter l interface Servlet Pratiquement on doit écrire, dans une méthode précise, le code java produisant le HTML Le serveur d applications va savoir appeler cette méthode Vous vous souvenez du puzzle? 17

JSP 18 Java Server Page Ecrire une servlet c est bien mais c est encore trop compliqué Il faut écrire une classe et la compiler JSP permet d incérer facilement du JAVA dans une page HTML C est le serveur d application qui va se charger de la transformer en Servlet et de la compiler quand il le faut

JSP et Servlet Ce que je viens de vous décrire c est du bricolage Dans la pratique Les JSP servent au rendu (Vue) et font appel à des classes «métier» écrites en java (Modèle) qui appellent, à leur tour, le service de stockage de l information (en base de données par ex.) Une Servlet sert à aiguiller entre les vues (Contrôleur) On parle alors de MVC (Modèle, Vue, Contrôleur) 19

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

On s y retrouve mieux 21 web.xml Est un fichier XML de description de l application Il a une syntaxe précise On va, par ex., y trouver le nom de la Classe (implémentant l interface Servlet) à utiliser pour tel ou tel chemin d une URL Web Lib/ On va y mettre tous les.jar dont notre programme a besoin Classes/ On va y mettre toutes les.class que l on produit Le serveur d applications va savoir, pour chaque application qu il héberge, lire le web.xml et créer automatiquement un classpath spécifique à l application à partir des répertoires lib et classes

EJB 22 Enterprise Java Bean Bean Objet dont les attributs ne sont accessibles que par des accesseurs et dont un des constructeurs ne prend aucun paramètre Java OK Enterprise Compliqué? Solide? Lourd? Cher? Ils sont de deux types Les EJB session Les EJB entité

EJB 23 L idée de départ (EJB 1 et 2) Avoir des objets qui offrent des services (Les EJB session) répartis, pour des questions de charge, sur différents serveurs Avoir un mécanisme standard de persistance des données contenues dans les objets (Les EJB Entité) Dans la pratique c est compliqué Besoin, pour les objets, d implémenter une interface particulière Objets non utilisables hors d un serveur Java EE Pas facilement portable d un serveur à un autre

Hibernate Hibernate est un exemple d outil de mapping objet <-> Relationnel Le mapping est défini dans des fichiers XML Un objet devient une ligne d une table dans une base de données Un attribut devient un champ de cette ligne Permet de stocker tout objet (pas d interface particulière) Utilisable hors d un serveur d applications Java EE Un simple Tomcat Un programme batch 24

EJB 3 EJB 3 reprend les principes d Hibernate Hibernate est compatibles avec EJB 3 L honneur est sauf et les DSI restent en poste ;-) EJB 3 est surtout focaliser sur l enregistrement des données 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 légers font qu ils n ont plus besoin d exister en tant que tel Un Web Service «C est un EJB session» sauf que l on utilise HTTP pour communiquer et qu il n est pas obligatoirement écrit en java 26

Conteneur léger Son rôle est de créer automatiquement des objets et de les mettre en relation C est ce que fait un serveur Java EE! Mais il est léger : Pas besoin, pour les objets manipulés, d implémenter une interface particulière Utilisable hors d un serveur Java EE (Tomcat, Batch) Il est tellement léger qu il est intégré dans l application et que son utilisation impacte seulement les développeurs, pas les exploitants Permet de facilement changer un morceau (de puzzle) par un autre Ex. de Spring très apprécié des développeurs 27

ESUP-Commons 28 Ou comment fabriquer un pseudo serveur Java EE commun Une démarche Esup-blank Des outils communs Du rangement Une librairie Une formation Une communauté

ESUP-Commons, le puzzle Requêtes web Présentation Gestion des beans web data Données Accès Persistance Logique applicative Logique métier URLs portail LDAP I18n Cache Auth. 29 base

Les versions de java 30 1.2 Quel est l idiot qui a oublié de changer le premier numéro? 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 général les scripts shell utilisent la variable d environnement JAVA_HOME pour savoir quelle version de java utiliser pour lancer un programme donné

Qu ai-je oublié? J ai parlé Servlet (Classe java qui fonctionne dans un serveur d applications) mais : C est quoi un Portlet? C est quoi une Applet? Les exceptions 31

C est quoi un Portlet? 32 Une classe java (conforme à la JSR 168) qui tourne dans un portail Le but est d avoir sur une même page Web plusieurs applications (portail) C est sous forme d un.war comme une application Web avec un WEB-INF/portlet.xml en plus L interface à implémenter n est plus Servlet mais Portlet

C est quoi une Applet C est une classe java qui tourne dans une JVM intégrée au navigateur Web et qui s exécute sur le poste client C est sous forme d un.jar que le navigateur va télécharger sur le web Je n en sais pas plus 33

Les exceptions 34 En java quand quelque chose se passe mal on a une exception java.lang.nullpointerexception java.io.filenotfoundexception Pour le développeur c est pratique Il essaie (try) des choses Il attrape (catch) des exceptions pour éventuellement les traiter Et s il ne sait pas faire il soumet (throw) le problème au chef (en fait, la méthode qui l appelle dans la pile d exécution (stack))

Les exceptions Ce sont aussi des objets avec des méthodes pour connaître : La cause En générale on lève une exception parce que l on a eu un autre problème avant org.esupportail.lecture.exceptions.dao.xmlparseexception à cause d une org.dom4j.documentexception Le message org.dom4j.documentexception: Connection refused La pile d exécution 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) 35

Travaux pratiques ANT Voir une config Spring Voir une config log4j Eclipse et SVN 36

ANT 37 ANT est un outil permettant d automatiser des tâches (comme make utilisé sous Unix) Le fait qu il soit écrit en java permet qu il soit utilisable sur toutes les plateformes disposant une JVM Le principe repose sur des cibles (target) décrites dans un fichier XML (build.xml le plus souvent) Les cibles peuvent avoir des relations de dépendance entre elles Elles peuvent faire référence à des propriétés contenues dans un(des) fichier(s) de propriétés facilement éditable(s) (par un exploitant par ex.)

ANT 38 Les cibles ont à leur disposition des tâches (task) pour effectuer différentes actions : echo, mkdir, copy, replaceregexp, jar, javac, javadoc, etc. Les tâches agissent sur des ensembles de fichiers : fileset, pathelement, etc. Mode de lancement de ANT ant exécute la cible par défaut (utilisation du build.xml du répertoire courant) ant p donne la liste des cibles disponibles ant deploy lance la cible «deploy» en charge d installer (déployer) une application ant deluser -Duser=toto lance la cible «deluser» de suppression du user toto de la base de données du portail

ANT Un exemple de cible : 39

Spring 40 Spring est un conteneur léger Son rôle est de créer des objets et de les mettre en relation Le développeur utilise des objets mais il n écrit plus le code de création de ces objets Il demande à Spring de les lui fournir Spring permet de facilement changer un morceau (de puzzle) par un autre Si un développeur a besoin d un objet pour envoyer du mail Et qu une interface définie que l envoi de mail se fait en utilisant une méthode de nom send Le développeur a juste besoin d appeler cette méthode Spring va se charger de créer le bon objet au bon moment

Spring Va appeler les objets qu il gère des beans La définition de ces beans se fait dans un fichier XML Le développeur ne s occupe plus de ça (il veut juste envoyer un mail) Il n a même plus à se soucier du traitement du fichier de configuration contenant l adresse du serveur de mail Vous comprenez pourquoi je vous disais que les développeurs aimaient Spring ;-) L exploitant a accès à ce fichier XML et peut tout changer S il le veut il peut même envoyer les mails dans une base de données pour archivage et ne plus utiliser SMTP 41

42 Spring

Spring On peut centraliser le paramétrage 43

log4j Log for Java Depuis java 1.4 il existe, en standard dans la JVM, un mécanisme de log qui ressemble beaucoup à ce qui existait déjà avec log4j Apache commons logging met tout le monde d accord en offrant une surcouche au développeur Le développeur logue tout : Les erreurs (ERROR), les avertissements (WARN), des informations plus ou moins importantes pour l exploitant (INFO) ou lui (DEBUG) 44

log4j 45 C est l exploitant ensuite qui décide de ce qu il garde, où et comment Grace à un fichier log4j.properties ou log4j.xml qu il met à la racine du classpath (emplacement par défaut) ou dans properties/logging (pour un développement esup-commons) Il a sa disposition des appenders (où seront envoyés les logs) Fichiers tournants ou pas Syslog Etc. Il décide de quelles classes il veut les logs en précisant L appender à utiliser Le niveau de log souhaité ERROR, WARN, INFO, DEBUG

46 log4j

Eclipse 47 Eclipse est un IDE écrit en java qui permet, entre autres choses, de développer en JAVA Coloration syntaxique, auto-complétion, vérification des erreurs à la volée, etc. Il est très modulaire et permet de facilement éditer différents type de fichiers grâce à différents plugins Editeur XML générique Editeur ANT Editeur Spring Etc. Il offre aussi des outils intéressants Navigateur LDAP ou SQL Client SVN

SVN SubVerSion est un outil de gestion des versions Très utilisé par les développeurs il pourrait (devrait?) l être par les exploitants pour gérer leurs fichiers de configuration Quand un développeur n utilisant pas SVN le découvre après avoir longtemps résisté, il se demande comment il a pu s en passer 48

SVN C est 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 49

SVN 50 On peut faire un tag C est 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) à l image à une date, un tag On peut facilement travailler à plusieurs : Au pire on devra faire une fusion (merge) et décider laquelle des deux modifications est la plus pertinentes

51 SVN

Conclusion Java c est : Tentaculaire, passionnant, structurant Donc java peut rendre : Insomniaque, psychorigide, maniaque Vous êtes prévenus. Faites attention! 52