Documente Academic
Documente Profesional
Documente Cultură
Licence
Ce travail est mis disposition sous une licence Creative Commons
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
Allez on y va
3
Java
Langage
Objet Multiplateforme
Utilisation dune JVM (Java Virtual Machine)
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
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
7
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
8
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)
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
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
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 applications
12
Revenons Java EE
Java ME (Micro Edition)
Je ne connais pas bien
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
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 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 classes
21
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 ?
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)
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)
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
27
ESUP-Commons
Ou comment fabriquer un pseudo serveur Java EE commun Une dmarche
Esup-blank Des outils communs Du rangement
28
ESUP-Commons, le puzzle
Requtes web
web data
Accs Persistance
portail
LDAP
URLs
Auth.
I18n
base
30
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
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
31
32
33
Les exceptions
En java quand quelque chose se passe mal on a une exception
java.lang.NullPointerException java.io.FileNotFoundException
34
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)
35
Travaux pratiques
ANT Voir une config Spring Voir une config log4j Eclipse et SVN
36
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.)
37
ANT
Les cibles ont leur disposition des tches (task) pour effectuer diffrentes actions :
echo, mkdir, copy, replaceregexp, jar, javac, javadoc, etc.
38
ANT
Un exemple de cible :
39
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
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 ;-)
Spring
42
Spring
43
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)
44
log4j
Cest lexploitant ensuite qui dcide de ce quil garde, o et 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.
log4J
46
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.
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
48
SVN
Cest simple !
Checkout on prend ce qui est sur le serveur pour le mettre en local on met jour ce qui est local avec Update ce qui est sur le serveur Commit on met jour le serveur avec ce qui a t modifi en local
49
SVN
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
SVN
51
Conclusion
Java cest :
Tentaculaire, passionnant, structurant