page1
Logiciel libre
Open Source
Cours technique
Les outils logiciels libres
Java Platform, Enterprise Edition
page2
Auteurs et contributeurs
Contributeurs :
M.-A. DARCHE (auteur original)
Stéfane FERMIGIER
David LAPETINA
page3
Panorama des différentes distributions GNU-Linux (1)
Ubuntu :
la distribution actuellement la plus populaire pour les postes de travail
objectif : la facilité d'utilisation pour les utilisateurs
basée sur la distribution Debian
financée par le millionnaire Mark Shuttleworth
(suite à la revente de son entreprise Thawte)
page4
Panorama des différentes distributions GNU-Linux (2)
Mageia / Mandriva :
très poussée au niveau de l'utilisabilité et utilisation sur le poste de travail
un éditeur francophone face à une majorité anglo-saxone
également très présent en Amérique du sud
RedHat, Fedora :
très utilisée en entreprise sur les serveurs
très bon support matériel
beaucoup de développeurs du noyau Linux
page5
Panorama des différentes distributions GNU-Linux (3)
Debian :
LA distribution communautaire
exclusivement composée de logiciels libres
objectif : l'excellence technique
la distribution à l'origine d'APT
(Advanced Packaging Tool)
le plus grand nombre
d'architectures matérielles supportées
la distribution préférée des administrateurs systèmes
et des hébergeurs
page6
Panorama des différentes distributions GNU-Linux (4)
page7
Les distributions *BSD
Linux est le clone d'Unix libre le plus célèbre,
mais ce n'est pas le seul disponible.
Il y a aussi les distributions *BSD :
page8
Panorama des logiciels libres phares (1) : briques de base
Linux : noyau Unix
Knoppix : distribution de programmes exécutables sans installation (CD vif ou Live CD)
GCC, Perl, Python, Ruby on Rails : plateformes de programmation, compilation et exécution
VIM, Emacs, Eclipse : éditeurs de texte, environnements de développement
KDE, GNOME : bureaux graphiques
Git, Mercurial, SVN : gestion de versions, gestion de sources
page9
Panorama des logiciels libres phares (2) : bureautique
Firefox : navigateur web
Thunderbird : application de gestion du courriel
XUL : plateforme générique de création d'applications graphiques, notamment utilisée par Firefox et Thunderbird
LibreOffice / OpenOffice.org : traitement de texte, tableur, présentation et dessin vectoriel
page10
Panorama des logiciels libres phares (3) : multimédia
VLC : lecteur multimédia
GIMP : dessin 2D
Inkscape : dessin vectoriel
Scribus : PAO
Blender : dessin et animation 3D
Audacity : manipulation de données audio numériques
page11
Panorama des logiciels libres phares (4) : côté serveur
Apache httpd : serveur Web
Samba : partage de fichiers et d'imprimantes SMB pour dialogue avec le monde Microsoft Windows
PHP : langage de scripts, langage de programmation et plateforme web
page12
Panorama des logiciels libres phares (5) : App + ECM
Tomcat : serveur d'application Java (servlets et JSP)
GlassFish : serveur d'application Java EE
JBoss : serveur d'application Java EE,
longtemps le plus rapide et le plus facile à utiliser
JOnAS : serveur d'application Java EE
de l'écosystème OW2
Nuxeo : plus haut niveau encore, gestion de contenu
(Enterprise Content Management, ECM)
page13
Les certifications Linux / Logiciels libres
Les certifications LPI (Linux Professional Institute) :
définies par les grands acteurs du domaine
neutres vis-à-vis des éditeurs de distributions GNU-Linux
gérées par des organismes locaux dans les différentes régions du monde, notamment la francophonie avec documentations et questions des examens
en français
prix adapté en fonction des zones géographiques
page14
page15
Les programmes d'automatisation de tâches
page16
page17
Les autotools
Les autotools sont une suite d'outils comme autoconf et automake pour créer des fichiers Makefile en fonction de la plateforme et en fonction de variables.
Une utilisation classique :
$ ./configure
$ make
$ make install
page18
page19
Ant (2)
Désavantages :
Moins proche de l'interpréteur de commandes (shell)
Plus long à écrire qu'un Makefile car il faut structurer avec des balises XML (mais écriture facilitée par des logiciels tiers, par exemple par Eclipse)
Avantages :
Orientation métier Java : commandes facilitant la réalisation de tâches spécifiques Java (compilation de fichiers source .java, création de JAR, génération de JavaDoc, etc.)
Grand nombre d'outils tiers (greffons, etc.) de par l'utilisation d'un fichier XML très structurant
page20
Maven (1)
Maven est un outil de plus haut niveau que Make et Ant. C'est un outil de structuration de projet qui impose une structure normative et une manière de travailler.
Alors qu'avec Make et Ant les fichiers utilisés sont procéduraux, avec Maven on décrit des projets avec leurs dépendances au lieu de décrire des actions. Avec Maven on décrit un Project Object Model (POM).
La description des actions se met dans un fichier pom.xml.
page21
page22
Maven (3)
Avantages :
Orienté projet, il suffit de décrire les dépendances des projets les uns par rapport aux autres et Maven se charge de générer tous les fichiers JAR, WAR, EAR nécessaires.
Les projets gérés par Maven peuvent être mis en ligne et leur récupération et leur gestion devient alors hautement automatisable, de manière comparable à des svn:externals et des référentiels APT
Complètement modulaire et extensible par greffon (plugin)
page23
Les systèmes libres
de gestion de version (1)
Anciens systèmes centralisés :
page24
Les systèmes libres
de gestion de version (2)
Systèmes de gestion de version décentralisés :
Mercurial (Hg) :
Commandes et logique proches de Subversion
Fonctionne uniquement en espace utilisateur (écrit en Python, plus grande sécurité, mécanisme d'extensions)
Utilisé par de très nombreux gros projets :
Mozilla, OpenJDK, Python, etc.
Git :
page25
page26
Plateforme Java
contre .NET (1)
page27
Plateforme Java
contre .NET (2)
Les défauts de .NET par rapport à Java :
Le coeur de .NET (la CLI et les bibliothèques de base) a été standardisé (il en existe même des versions logiciels libres) mais les bibliothèques périphériques ne le sont pas. De plus elles sont uniquement disponibles pour Windows alors que pour Java il existe un univers de bibliothèques et d'outils périphériques multi-plateformes et qui sont des logiciels libres depuis longtemps.
Risques juridiques avec attaques pour violation
de brevets de la part de Microsoft sur les bibliothèques non standardisées de .NET.
http://www.fsf.org/news/2009-07-mscp-mono
La date null n'existe pas dans .NET. Les dates sont calculées à partir de la date 1900-01-01.
Il y a la possibilité de mettre des contournements mais c'est sale et cela peut disqualifier l'utilisation de la plateforme .NET pour certains usages.
page28
page29
La plateforme Java (2) : Open Source JDK, logiciel libre
Les derniers gros changements ont été introduits avec Java 5.
C'est seulement la version Java 7 qui est un logiciel libre (avec l'exception classpath).
Open Source JDK ou plus communément appelé OpenJDK http://openjdk.java.net/
Normalement le JDK 6 devait être libre mais il faudra attendre le JDK 7 car le JDK 6 est déjà en production et que cela aurait des impacts.
https://jdk7.dev.java.net/
http://community.java.net/openjdk/opensource/
page30
La plateforme Java (3) : les différentes distributions
On peut télécharger les 3 types d'ensemble Java chez Sun sur http://java.sun.com/ :
Quand on parle du JDK,
c'est le plus souvent le JDK de Java SE
Quand on parle du JDK,
c'est le plus souvent le JDK de Java SE
page31
Architecture distribuée : définition (1)
Une architecture est distribuée si elle est constituée de plusieurs entités (composants et clients) séparées en terme d'accès réseau.
Les intérêts :
page32
Architecture distribuée : définition (2)
Nous allons aborder différents types d'architectures distribuées : 2-tier, 3-tier, N-tier
tier : terme anglais signifiant étage ou niveau.
Une architecture N-tier est une architecture
à N étages, pas une fraction N/3.
page33
Architecture distribuée : architecture 2-tier
Architecture 2-tier ou architecture à 2 niveaux : l'architecture client-serveur
page34
Architecture distribuée : architecture 3-tier
Architecture 3-tier ou architecture à 3 niveaux : le niveau du client, le niveau du frontal et le niveau de la base de données
page35
Architecture distribuée : architecture N-tier
Architecture N-tier ou architecture à N niveaux : le niveau du client et les multiples autres niveaux des nombreux serveurs sur lesquels se répartissent les services
page36
page37
Les formats de distribution Java
Java EE définit des formats de distribution (en fonction de l'application) de composants Java pour automatiser les déploiements :
JAR (Java ARchive) : distribution de classes Java compilées, d'applets, de métadonnées sous forme de fichiers XML et texte
WAR (Web Application aRchive): distribution d'applications Web (webapps). Peut contenir les mêmes éléments qu'un JAR, avec en plus des ressources Web (.html, .css, .js), des JSP et des JAR.
EAR (Enterprise ARchive) : distribution d'applications N-tier. Peut contenir les mêmes éléments qu'un WAR, y compris plusieurs WAR.
page38
Déploiement dans les serveurs d'application
Simple copie de fichiers dans un répertoire
Il y a généralement un répertoire deploy ou autodeploy. Il suffit de copier les fichiers .jar, .war ou .ear dedans.
page39
page40
Eclipse (2)
Désavantages :
Avantages :
Plus adapté à Java que les éditeurs de texte génériques (comme VIM ou Emacs) avec complètement contextuel intelligent, aide à l'écriture de code, etc.
Contient nativement le support de CVS et extensions disponibles pour beaucoup d'usage (SVN avec Subversive, Python avec PyDev, etc.)
Nombreux greffons (plugins) disponibles
page41
page42
JavaBeans
« composants logiciels réutilisables manipulables visuellement dans un outil de conception »
La classe doit être sérialisable :
implements java.io.Serializable
La classe doit posséder un constructeur sans argument (constructeur par défaut)
La classe doit avec des accesseurs normalisés pour ses propriétés (get et set) :
getValueA(), setValueA(a)
getValueB(), setValueB(b)
page43
Enterprise JavaBeans (EJB)
Enterprise JavaBeans ou EJB
Composant pouvant se multiplier
Un « Enterprise JavaBean » est un JavaBean
(les EJB forment un sous-ensemble des JavaBeans)
Utilisation des annotations (nouveauté de Java 5) pour les définitions des EJB 3.0 et les injections
2 types d'EJB :
Les Session Beans
Les Message-driven Beans
page44
page45
Session Beans : Stateless
@Remote
public interface TicketDesk {
}
@Stateless
public class TicketDeskBean
implements TicketDesk {
}
page46
Session Beans : Stateful
@Remote
public interface TicketDesk {
}
@Stateful
public class TicketDeskBean
implements TicketDesk {
}
page47
Message Driven Beans
Message Driven Beans
EJB qui réagissent aux messages, aux événements
Et là, 2 sous-types de Message Driven Beans :
Topic (modèle push) : abonnement, multiples abonnés et réceptions multiples
Queue (modèle pull) : abonnement, multiples abonnés mais réception par un client unique
page48
Entity (1) :
présentation
JavaBean spécifique pour la persistance des données
Lien fort avec le modèle de base de données relationnelles
Fichier de configuration : persistence.xml
La persistance des EJB3 est basée (sous-ensemble) sur Hibernate, infrastructure de gestion de la persistance des objets dans des bases relationnelles. Il existe également l'infrastructure JDO (Java Data Object) mais apparemment en perte de vitesse de par le succès de Hibernate. JDO est connu pour le fonctionnement avec des bases objets.
La persistance des EJB3 est basée (sous-ensemble) sur Hibernate, infrastructure de gestion de la persistance des objets dans des bases relationnelles. Il existe également l'infrastructure JDO (Java Data Object) mais apparemment en perte de vitesse de par le succès de Hibernate. JDO est connu pour le fonctionnement avec des bases objets.
page49
Entity (2) :
code
@Entity
public class Ticket implements Serializable {
private int id;
@Id
public int getId() {
return id;
}
}
page50
Entity (3) :
relations
On peut établir des relations entre objets persistants
On utilise alors les annotations suivantes :
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
page51
Empaquetage et déploiement
Un EJB est défini par plusieurs classes
Tous les fichiers nécessaires (.class, éventuels fichiers de configuration, etc.) doivent être mis dans un JAR à déployer dans le serveur d'application
Les métadonnées des EJB sont à mettre soit sous forme d'annotations (recommandé), soit dans un descripteur de déploiement
Le nom du JAR est sans importance
On peut mettre plusieurs EJB dans un JAR (EJB JAR)
L'EJB JAR ne doit pas contenir d'Entity
page52
page53
Les Web Services
Web services = XML,
mais plusieurs familles (XML-RPC et SOAP).
Java EE propose des Web services en SOAP
Seuls les Stateless Session Beans peuvent implémenter un Web service
Méthodes interopérables, indépendantes de la plateforme, peut-être la seule possibilité pour interconnecter des plateformes hétérogènes
Mauvaises performances comparées aux méthodes et appels classiques, binaires
page54