Master 2ieme année
Filière -- Informatique 2011 - 2012
Java Enterprise Edition
1er semestre 2011
Cours 1 -- Introduction a Java EE
Auteur Gautier Loyaute 26 septembre 2011
Introduction a Java EE

Ce premier cours va presenter les grands principes de la programmation d'application. L'apport des patrons de conception, de l'injection de dependances, de l'inversion de controle et de la programmation par aspect dans le developpement d'application pour les entreprises. Dans un second temps, ce cours presente l'architecture JEE ainsi que les contraintes d'entreprise motivant l'apparition des conteneurs legers tels que Spring.

Projet 1 -- Outils de qualimetrie de code source
Auteur Gautier Loyaute Deadline : 03 octobre 2011 26 septembre 2011
Outils de qualimetrie de code source

Durant ce TD, nous allons nous interesser a des outils de qualimetrie de code (PMD, Checkstyle, Findbugs, JavaNCSS). Nous verrons ensuite le principe d'integration continue, les test unitaires et le principe de "continuous performance testing".

Ce TD va faire l'objet d'un rendu sous forme d'une archive zip contenant d'une part un rapport au format pdf et d'autre part d'un jar non executable contenant le code source.

Cours 2 -- Persistance des donnees
Auteur Gautier Loyaute 03, 10 et 17 octobre 2011
Persistance des donnees

Ce cours d'environ trois seances va presenter la persistance des donnees en Java. Ainsi, dans un premier temps, nous verrons JDBC (Java Data Base Connector) qui permet de dialoguer avec une base de donnees et de recuperer des donnees. Cependant, le mapping relationnel-objet et fait a la main. Nous verrons ensuite JPA (Java Persistence API) qui repond a la problematique de mapping relationnel-objet. La norme JPA a plusieurs implantations dont Hibernate que nous presenterons dans ce cours. Nous verrons a la fin de ce cours l'integration d'Hibernate dans une application spring.

Projet 2 -- En attendant le printemps... Mavenisation et Hibernation
Auteur Gautier Loyaute Deadline : 10 octobre a 18h 03 octobre 2011
En attendant le printemps... Mavenisation et Hibernation

Durant ce TD nous allons "Maveniser" un projet s'interessant a representer des auteurs et des livres ainsi que leurs relations. Maven est un outil logiciel permettant de gerer et d'automatiser la production de logiciels Java. L'idee est de produire un logiciels a partir de ses sources en optimisant les taches realisees a cette fin et en garantissant le bon ordre d'execution de ces taches.

Dans un second temps, nous allons persister les donnees de notre petit projet. La persistance correspond au mecanisme responsable de la sauvegarde et la restauration des donnees d'un programme pour que celui-ci puisse se terminer sans que ses donnees ne soient perdues. Pour se faire nous allons utiliser la norme JPA et Hibernate, une implantation de JPA fournie par la communaute JBoss.

Ce TD va lui aussi faire l'objet d'un rendu sous forme d'une archive zip contenant d'une part un rapport au format pdf et d'autre part d'un jar non executable contenant le code source. Vous utiliserez les outils de qualimetrie (PMD, Checkstyle, FindBugs, Cobertura) sur le code source que vous produisez.

Projet 3 -- Spring et Hibernate
Auteur Gautier Loyaute Deadline : 17 octobre 2011 a 18h 10 octobre 2011
Spring et Hibernate

Dans ce TD, nous allons voir l'integration de Spring et Hibernate au sein de votre module de persistance. Dans un premier temps et a l'aide des fichiers exemples fournis, nous allons ajouter les differents fichiers necessaires a Spring. Il s'agit du fichier listant les composants Spring (annotes) et le fichier de context.

Dans un second temps, nous allons rajouter le fichier definissant l'unite de persistance ainsi que differentes options de configuration d'Hibernate. Nous allons ensuite realiser des tests unitaires en utilisant les classes fournies par les deux projets (umlv-dao et umlv-hibernate).

Enfin, pour realiser les tests unitaires nous allons utiliser le mode bouchon fourni, par defaut, par Hibernate via le fichier import.xml.

Cours 3 -- JSF et RichFaces
Auteur Gautier Loyaute
JSF et RichFaces

Dans ce cours nous allons presenter la couche presentation via JSF-RichFaces. JSF-RichFaces permet d'utiliser des composants "sur etagere" et d'en developper en propre pour les incorporer dans diverses applications.

Projet 4 -- Relation entre objet, HQL et Hibernate avance
Auteur Gautier Loyaute Deadline : 24 octobre 2011 a 18h 17 octobre 2011
Relation entre objet, HQL et Hibernate avance

Dans ce TD, nous allons voir la representation des relations entre objets via une relation simple de type OneToMany. Cette relation permettra de modeliser le lien existant entre un auteur et ses livres. Par contre, nous n'allons pas modeliser la relation inverse entre un livre et ses differents auteurs.

Dans un second temps, nous allons comparer les requetes ecrites a l'aide du langage de requetage fourni par Hibernate (HQL) et les requetes ecrites a l'aide de l'API Criteria.

Enfin, nous verrons une fonctionnalite avancee (i.e. le cache de second niveau d'Hibernate) et realiserons des comparaisons de performance entre un chargement EAGER et un chargement LAZY.

Cours 4 -- Spring WebFlow
Auteur Gautier Loyaute
Spring WebFlow

Dans ce cours nous allons presenter Spring WebFlow qui est un outil permettant de definir le flot de navigation dans une application Web. SpringWebflow utilise un DSL (Domain Specific Language) afin de definir le flot de navigation entre les differentes pages en fonction des evenements des utilisateurs. Ce DSL se presente sour forme d'une machine a etats finie decrite dans un fichier xml. Spring WebFlow propose des outils de conversion et de validation des donnees (chaines de caracteres vers objets et inversement).

Projet 5 -- Java Server Faces et Richfaces
Auteur Gautier Loyaute Deadline : 31 octobre 2011 a 18h 24 octobre 2011
Java Server Faces et Richfaces

Durant ce TD nous allons realiser un certain nombre de vues de nos objets metiers Auteurs et Livres. Ainsi, nous afficherons tout d'abord la liste de tout les auteurs et tout les livres presents en base. Puis nous realiserons les vues unitaires de ces objets. Enfin, nous afficherons l'ensemble des livres d'un auteur. Comme indique dans le titre, les vues seront realisees a l'aide de JSF et RichFaces.

Ce TD comme ses predecesseurs fait l'objet d'un rendu sous forme d'une archive zip contenant d'une part un rapport au format pdf et d'autre part d'un jar contenant le code source de l'application.

Projet 6 -- Spring WebFlow
Auteur Gautier Loyaute Deadline : 07 novembre 2011 a 18h 31 octobre 2011
Spring WebFlow

Durant ce TD nous allons realiser les actions sur les vues que nous avons creer durant le TD precedent. Ces actions vont etre des operations de creation, suppression et modification sur nos objets metiers livres et auteurs. Les operations cotes serveur vont etre implantees dans des services via des methodes transactionnelles. Les operations de gestion de controle de navigation et le lien vers nos services vont etre fournis par SpringWebflow.

Ce TD comme ses predecesseurs fait l'objet d'un rendu sous forme d'une archive zip contenant, d'une part, un rapport au format pdf et, d'autre part, un jar contenant le code source de l'application.

Projet 1 -- Projet JEE - Boutique en ligne
Auteur Gautier Loyaute Deadline : 14 janvier 2012 puis semaine du 12 mars 2012 01 decembre 2011
Projet JEE - Boutique en ligne

Le projet JEE sera realise par groupe de 3 a 4 personnes. Il sera base sur un socle technique commun pour l'ensemble des equipes. Ce socle comprend l'API Birt pour l'edition de documents PDF, log4j pour logger les aplications, spring, spring Webflow, JSF pour la couche presentation des donnees.

Les groupes auront differents choix technologiques a respecter pour la persistance des donnees (BigTable, MongoDB, Cassandra ou RDBMS).

Une etude prealable sera a rendre pour le 14 janvier 2012 a 18h.

Le projet portera sur la realisation d'une boutique en ligne. Une boutique en ligne aura trois types d'utilisateurs (clients, acheteurs et administrateurs). Ces differents utilisateurs pourront effectuer une grande variete d'actions aussi bien au sein de la boutique en ligne, que via d'autres interfaces (LDAP par exemple).

Exemples de code -- Collection d'HyperLien ayant trait a JEE
Collection d'HyperLien ayant trait a JEE