PARTIE I : Outils et Logiciels
Etape1 : Description des outils (logiciels /
matériels) utilisés :
· Les outils logiciels :
1. EasyPHP : on l'utilise pour la
création et la gestion des bases de données :
Pour la création de la base de
données utilisée dans notre projet.
2. JDK1.6 (recommandée, la plus
récente) : elle inclut la bibliothèque
« javax.smartcardio » qui est nécessaire pour notre
application.
3. Jbuilder Foundation 2005 : il est
utilisé pour :
- La création d'un projet javacard et sa
compilation. Le résultat de cette dernière nous donne un fichier
(.cap) qui sera chargé sur la carte.
- Le chargement de l'applet (application serveur).
4. Connecteur JDBC Mysql (version
3.0.15) : Utile pour la connexion à la base de données.
5. GemXplore Developer : Un kit
complet pour les tests des applications. Il contient plusieurs outils parmi
eux JcardManager.
6. JcardManager : il présente
une multitude de fonctionnalités :
- Le chargement de l'applet (voir la section III).
- La sélection de l'applet.
- La suppression de l'applet de la carte.
- L'envoi des APDU's.
7. Notpad ++ : Editeur de textes
efficace qui donne une meilleure lisibilité aux sources.
· Les outils matériels :
1. Un PC Intel P 4 1.80 GHz RAM 256 Mo.
2. Lecteur de cartes à puce CHIPDRIVE micro 100
V4.30 : utilisé comme un terminal d'insertion de la carte.
3. Carte à puce GEM Xplore 3G.
4. Dongle ou Verrou : pour initialiser la
communication entre le terminal et la carte.
Etape2 : Installation et configuration des
outils :
1. EasyPHP :
EasyPHP installe et configure automatiquement un environnement
de travail complet. Il regroupe un serveur Apache, une base de données
MySQL, le langage PHP ainsi que des outils facilitant le développement
de sites ou d'applications.
Installation d'EasyPHP :
Ø Télécharger EasyPHP sur le
site :
http://www.manucorp.com/
http://www.easyphp.org/
Ø Lancer l'application «
EasyPHP\ easyphp2.0b1_setup.exe » et suivre les instructions
d'installation en choisissant la langue et le répertoire
d'installation.
NB: Pour mieux suivre la procédure de
configuration, on vous conseille d'installer EasyPHP dans le répertoire
proposé par défaut : « C:\Program
Files\EasyPhp2.0b1 »
Pour vérifier si EasyPHP fonctionne, il vous suffit de
taper dans votre navigateur web préféré:
· http://localhost
· ou http://127.0.0.1
Lancement d'EasyPHP :
Le lancement d'EasyPHP permet la mise en route du serveur
Apache et de MySQL.
Pendant l'installation, un raccourci vers EasyPHP est
créé dans le répertoire"
Démarrer/Programmes/EasyPHP ".
Une fois EasyPHP lancé, une icône se place
à côté de l'horloge :
EasyPHP
Un clic droit sur l'icone permet d'accéder à
différents menus :
Cliquer ici pour afficher la page d'administration d'EasyPHP.
· Aide : aide d'EasyPHP. ·
Fichiers Log : renvoie les erreurs générées par Apache,
MySQL et EasyPHP. · Configuration : donne accès aux
différents outils de configuration. · Explorer : ouvre
le répertoire "www" via l'explorateur Windows. ·
Administration : ouvre la page d'administration. · Web local
: ouvre le web local. · Redémarrer : redémarre
Apache et MySQL. · Démarrer/Arrêter :
démarre/arrête Apache et MySQL. · Quitter :
ferme EasyPHP.
Sur le menu « Administration », cliquer
sur « PhpMyAdmin » pour lancer l'interface graphique de
PhpMyAdmin .
Le SGBD MySQL
MYSQL est un gestionnaire de base de données SQL multi
utilisateurs et multi traitements. Il se compose d'un langage de
définition de données (LDD) et de droits ainsi que d'un langage
de manipulation de données (LMD).
MySQL est fondé sur SQL qui est un langage de
requêtes vers les bases de données exploitant le modèle
relationnel. Il est implémenté sur un mode client serveur, avec
un démon mysqld du coté serveur et toute une
variété de librairies et de programmes du coté client.
Il a l'avantage d'être portable (il peut être
compilé sur plusieurs plates-formes comme Windows, Unix...etc.). De
plus, il est facile à utiliser, standard (il utilise SQL), robuste et
gratuit. Il permet le stockage et la manipulation de données d'une
façon libre, rapide et fiable.
PhpMyAdmin :
Pour implémenter notre base de données, on a
utilisé l'outil PhpMyAdmin fourni avec le logiciel EasyPHP. Le SGBD
PhpMyAdmin, avec son interface graphique, nous a permis de créer et de
gérer l'ensemble des tables de notre base de données.
PhpMyAdmin, consiste en un ensemble de scripts PHP, permettant
d'administrer des bases de données MySQL via un navigateur Web. Il a
Plusieurs fonctions parmi elles, on cite:
· La création et la suppression de bases de
données ;
· La création, la modification et la suppression
de tables ;
· L'édition, l'ajout et la suppression de
champs ;
· L'exécution de commandes SQL et de
requêtes batch ;
· La création d'index ;
· Le chargement de fichiers textes dans des
tables ;
· La gestion des privilèges des utilisateurs.
La figure suivante illustre l'espace de travail de
PhpMyAdmin :
Figure: Espace de travail de PhpMyAdmin.
Configuration d'EasyPHP pour une connexion à
distance à la base de données:
Ø Dans le répertoire d'installation d'EasyPHP,
choisir le répertoire mysql :
« C:\Program Files\EasyPHP 2.0b1\mysql ».
Dans le fichier « my.ini», changer la valeur de
bind-address avec : « 0.0.0.0 » :
« bind-address = 0.0.0.0 ».
Note : On peut agir d'une autre manière en
cliquant avec le bouton droit sur l'icône d'EasyPHP dans la zone de
notification et en choisissant le menu « Configuration » puis
« MySQL » et le fichier « my.ini » va
s'ouvrir.
Ø Dans le répertoire d'installation d'EasyPHP,
choisir le répertoire phpmyadmin :
« C:\Program Files\EasyPHP 2.0b1\
phpmyadmin ».
Dans le fichier «config.sample.inc.php»
(« ou config.inc.php » dans la version 1-8 d'EasyPHP),
changer « localhost » dans la ligne suivante :
$cfg['Servers'][$i]['host'] = 'localhost'
par l'adresse IP de la machine (hôte) qui va se
connecter au serveur MySQL à distance.
Exemple : Si l'adresse IP est de
«192.168.27.2» alors
$cfg['Servers'][$i]['host'] = '192.168.27.2'.
Création d'une base de données sous
MySQL:
Pour créer une base de données, saisir le nom de
la base de données dans le champ prévu à cet effet dans la
page d'accueil de PhpMyAdmin.
Ajout d'un Utilisateur :
Pour ajouter un utilisateur, il suffit de cliquer sur
privilèges dans la page d'accueil de PhpMyAdmin.
Privilèges des utilisateurs
Saisir le nom de la
base de données
En cliquant sur privilèges, la page suivante affichera
tous les utilisateurs et leurs privilèges et pour créer un nouvel
utilisateur, il suffit de cliquer sur « Ajouter un
utilisateur ».
Puis remplir les informations concernant le nouvel
utilisateur.
Lors de la saisie des informations pour la connexion, si on
choisit «Tout serveur » pour le champ
« serveur », le caractère « % »
doit apparaître dans le champ de saisie (pour cela, il suffit de choisir
un autre serveur puis revenir à «Tout serveur ».).
A ce niveau, il est important de bien comprendre que les
privilèges que vous allez donner à l'utilisateur
créé ne vont concerner que le système MySQL et en aucun
cas telle ou telle base. Maintenant si l'on veut restreindre les droits de
l'utilisateur vis-à-vis de la base de données, on clique sur
l'icône entourée en rouge sur la figure suivante :
Cliquer ici pour modifier les privilèges
Création d'une table
sous MySQL :
Pour créer une table, il faut dans un premier temps
sélectionner la base de données puis saisir le nom et le nombre
de champs de la table. La figure suivante illustre tout cela :
Sélectionner la base de données saisir le
nom de la table saisir le nombre de champs
Ensuite remplir les champs de la fenêtre qui
suit en choisissant un nom pour le champ, son type, sa taille...etc.
Et pour insérer des données, on clique sur
« insérer » pour pouvoir ajouter un ou plusieurs
enregistrements.
Remarque :
Pour :
créer, modifier ou supprimer une table ;
éditer, ajouter ou supprimer des champs ;
charger ou renvoyer des données de la table ;
...etc.
on peut utiliser le langage de requêtes SQL en cliquant
en haut de page de l'interface de PhpMyAdmin sur
« SQL ».
Dans le champ prévu à cet effet, On saisit notre
ou nos requêtes SQL, et en cliquant sur
« Exécuter », la base de données sera
interroger et/ou mise à jour.
2. Installation et Utilisation du JDK (Java Development
Kit)
Le JDK de SUN (créateur de java) est l'outil essentiel
pour programmer en java. Il permet la compilation, le débogage, et
l'exécution d'applications et d'applets java.
· Après avoir installé le JDK, nous allons
configurer le système d'exploitation afin que les commandes soient
accessibles à partir de n'importe quel répertoire.
· Sélectionnez « Démarrez \Panneau de
configuration\ Système », vous devrez obtenir une fenêtre qui
ressemble à celle-ci :
· Ensuite, sélectionnez l'onglet «
Avancé » et cliquez sur le bouton « Variable
d'environnement »:
Sélectionnez la variable système « Path
» et cliquez sur le bouton « Modifier » :
Ajoutez, à la fin de la variable « Path », le
chemin d'accès au répertoire \bin du JDK installé sur
votre machine (dans l'exemple : C:\Program Files\Java\jdk1.6.0_06\bin;) et
cliquez sur le bouton « OK »:
NB : Le point virgule sert à
séparer deux chemins d'accès différents pour la même
variable d'environnement au cas où nous aurions besoin de
déclarer un autre.
Ouvrez ensuite une fenêtre « DOS », en
sélectionnant : « Démarrer\Exécuter\cmd » :
Vous devrez obtenir une fenêtre similaire à
celle-ci :
Tapez la commande « java -version ».
Si l'installation du JDK et la configuration de la variable
d'environnement « Path » ont été correctement
effectuées, vous devriez voir apparaître la version du JDK
installée :
Création d'un premier programme :
Ecriture d'un programme source
Le fichier source d'un programme java est un simple fichier
texte que l'on peut donc écrire avec tout éditeur comme le
Bloc-Notes fourni avec Windows.
Avant de créer ce fichier il est recommandé de
créer le dossier de travail qui le contiendra (dans l'exemple qui suit :
« C:\java »). Il suffit ensuite de recopier les lignes qui suivent et
d'enregistrer le fichier obtenu dans le dossier de travail avec le nom
"PremierProgram.java".
Pour notre exemple nous avons choisi de travailler avec
l'éditeur de texte Note Pad++ pour les divers avantages qu'il
présente :
· Vous remarquez que le menu
« Langage » vous permet de spécifier le langage de
programmation, dans notre cas « Java ».
Quelques explications :
· Les parties de code situées entre // et un
retour chariot sont des commentaires qui ne seront pas compilés.
· La première instruction public class
PremierProgram déclare que nous créons une classe
publique (accessible par tous) qui se nomme
«PremierProgram». Cette classe doit être
enregistrée dans un fichier de même nom et d'extension .java.
Attention, java différencie les majuscules et les minuscules. La classe
«premierprogram» est différente de la classe
«PremierProgram», et le fichier
«premierprogram.java » n'est pas
l'équivalent du fichier «PremierProgram.java
».
· Tout fichier source définit une ou plusieurs
classes. La définition d'une classe se fait dans un bloc d'instructions
contenu entre 2 accolades.
· Notre classe
«PremierProgram» contient une unique méthode
annoncée par l'instruction public static void main(String
args[]). Il s'agit de la méthode principale d'un programme,
celle qui sera exécutée lors du lancement. Le nom et la
déclaration de cette méthode ne peuvent pas être
modifiés.
· La définition d'une méthode est une suite
d'instructions située entre 2 nouvelles accolades. Dans le cas qui nous
intéresse, la méthode main n'a qu'une seule
instruction qui provoque l'affichage du message "Ca marche!", par
l'intermédiaire de la méthode
System.out.println. Les lignes contenant une instruction
simple comme celle-ci doivent se terminer par un point-virgule.
· Le fichier source étant créé et
enregistré, nous allons pouvoir passer aux phases de compilation et
d'exécution.
Compilation du programme
Le compilateur java est le programme « javac.exe »
contenu dans le dossier « \bin » du JDK. Pour compiler
«PremierProgram.java », commencez
par ouvrir une fenêtre « DOS ».
Ensuite, positionnez-vous dans le répertoire contenant
le fichier à compiler. Dans l'exemple, il se trouve dans le
répertoire « c:\java ». Pour y accéder, tapez la
commande « cd c:\java » :
Pour compiler la classe « PremierProgram.java »,
tapez la commande :
« javac PremierProgram.java » :
Si tout s'est bien passé, vous obtenez dans le
même répertoire un nouveau fichier«PremierProgram.class»
qui est le résultat de la compilation. Pour afficher le contenu du
répertoire, tapez la commande « dir » :
Malheureusement, les choses ne se passent pas toujours aussi
bien. Voici quelques causes d'erreur possibles :
· Le système d'exploitation ne trouve pas le
programme « javac.exe ». Il faut indiquer le chemin
d'accès à ce programme (voir Configuration de Windows XP).
· La commande « javac.exe » s'exécute
mais ne trouve pas « PremeirProgram.java ». Le dossier actif de votre
fenêtre « DOS » n'est pas celui qui contient «
PremierProgram.java ». Placez-vous dans le bon dossier (voir
Compilation).
· La commande « javac.exe » s'exécute et
trouve « Bonjour.java », mais écrit un message d'erreur. Il
s'agit en général d'une erreur dans le fichier source. Le message
d'erreur vous donne une indication sur la nature de l'erreur et sur la ligne
où elle s'est produite. Essayez de comprendre. Dans la plupart des
cas, il s'agit :
o d'un point-virgule oublié à la fin d'une
instruction simple;
o d'une faute d'orthographe ;
o d'une confusion majuscule/minuscule ;
o d'une accolade fermante oubliée.
Il vous faut alors corriger l'erreur dans le fichier
«PremierProgram.java », le sauver et le compiler à nouveau.
Exécution :
Lorsque la compilation a réussi et que le fichier
« PremierProgram.class » est créé, on l'exécute
en utilisant l'interpréteur « java.exe ».
A partir de la fenêtre « DOS », il suffit
d'exécuter la commande « java PremierProgram». Si tout se
passe bien, on voit apparaître le message prévu : « Ca marche
! » :
3. Présentation et utilisation du JDBC
JDBC (Java Data Base Connectivity) permet l'accès
à des bases de données créées dans des SGBD
variés, depuis un programme en Java. Il est fourni par le paquetage
(package) java.sql.
L'API JDBC est presque totalement indépendante des SGBD
(quelques méthodes ne peuvent être utilisées qu'avec
certains SGBD mais ne doivent être utilisées qu'en cas de
nécessité impérieuse pour améliorer les
performances).
JDBC : C'est un intermédiaire entre le programme java
et le SGBD choisi, il permet un accès :
Ø Local ou à distance, à une base de
données relationnelle.
Il fonctionne selon un principe Client/Serveur, où
Ø Le Client = le programme Java, et
Ø Le Serveur = la base de données.
Principe général :
Ø Le programme Java ouvre une connexion avec le
SGBD ;
Ø Il envoie des requêtes SQL ;
Ø Il récupère les
résultats ;
Ø Il met à jour la BD ;
Ø Il ferme la connexion.
Contenu de java.sql :
Ce paquetage contient un grand nombre d'interfaces et
quelques classes. Les interfaces constituent l'interface de programmation.
JDBC ne fournit pas les classes qui implantent les interfaces.
Drivers :
Pour travailler avec un SGBD, il faut disposer de classes qui
implantent les interfaces de JDBC.
Un ensemble de telles classes est désigné avec
le nom de driver JDBC. Les drivers dépendent du SGBD auquel ils
permettent d'accéder.
Architecture de JDBC :
Types de drivers :
Type 1: pont JDBC-ODBC
Type 2: driver qui fait appel à des
fonctions natives non Java (le plus souvent en langage C) de l'API du SGBD que
l'on veut utiliser.
Type 3: driver écrit
entièrement en Java qui utilise le protocole réseau du SGBD
Remarque :
Dans ce qui suit, nous donneront
des détails sur la configuration et l'utilisation du Driver
JDBC- MySQL pour une base de données sous MySQL EasyPHP 1.8
Utilisation de JDBC :
Pour le cas pratique nous utiliserons :
Ø MySQL inclus dans EasyPHP 1.8 :
Pour la création de la base de données ;
Ø Le JDK :
jdk-6u6-windows-i586-p.exe:
Pour l'execution de notre programme.
Ø Le driver JDBC :
MySQL-connector-java-3.0.15-ga :
Pour l'exploitation de la base de données.
4. La création de la base de
données MySQL:
Pour des raisons d'organisation, on se limite à une
base de données qui contient une seule table qui sera Nommée
«VolMoinsCher ». Notre base aura pour
nom « tp3bd»; pour cela, on a utilisé
EasyPHP1.8.
Voici un aperçu de ce que peut être notre
base :
Nom de la base
Nom de la table
Les champs et les
Données de la table
A partir du programme java on va accéder à la
table VolsMoinsCher en consultation a travers la requête
suivante :
`'SELECT Num_Vol, Dat_Vol, Heur_Vol, Tarif_Vol FROM
VolMoinsCher''.
Pour plus de détails concernant la création des
bases de données sous MySQL reportez-vous au Tutoriel
«EasyPHP-MySQL » qui est aussi réalisé dans le
cadre de ce TP.
1. Le JDK : reportez-vous à la
première section.
2. Le driver JDBC :
Dans ce qui suit, on va vous montrer comment configurer le
driver JDBC pour pouvoir l'utiliser dans le programme java ;
Ø Copier le fichier
« mysql-connector-java-3.0.15-ga » dans un
répertoire de votre choix
Dans notre cas, on le met dans le répertoire où
est installé le jdk :
Ø On passe à la configuration de la variable
d'environnement « ClassPath » pour pouvoir compiler les
programmes qui utilisent ce Driver.
1- Bouton droit sur poste de travail :
2 -Choisissez l'onglet Avancé :
Cette figure apparait
Propriétés
3-Puis cliquer sur variable d'environnements :
4-la fenêtre Variable d'environnements
apparait :
Variable d'environnement
du JDK.
Cliquer sur Nouveau.
5-Saisissez dans le champ
« Nom de la
variable » :ClassPath.
Dans le champ « Valeur
de la variable » on écrit :
«' . ; ` + chemin + ';' ».
· + : symbole de concaténation.
· Chemin : est le chemin vers le répertoire
''mysql-connector-java-3.0.15-ga'' concaténé avec
le nom du fichier exécutable Jar après un
antislash bien sûr.
Pour bien comprendre cette écriture procédez
comme suit :
Allez dans le répertoire jdbc ;
Entrez dans le répertoire
''mysql-connector-java-3.0.15-ga.
Copier le chemin qui apparait dans le champ adresse comme le
montre la figure suivante :
Copiez ce chemin
Dans ce répertoire vous trouverez le fichier qui a
l'indication : « Exécutable Jar File »,
copiez son nom.
En résumé : Dans notre cas
« chemin » sera égal a :
Il ne faut pas oublier l'antislash
« .; C:\Program
Files\Java\jdbc\mysql-connector-java-3.0.15-ga \
mysql-connector-java-3.0.15-ga-bin.jar ; »
Chemin vers le dossier le nom du fichier
Copiez le tout dans le champ « Valeur de la
variable »
ü puis appuyez sur ok ;
ü Appuyez une autre fois sur ok pour quitter la
fenêtre `' Variables d'environnements'';
ü Appuyez une dernière fois sur ok pour ;
quitter la fenêtre `'Propriétés
système `'.
2. Utilisation de JDBC
Il ne nous reste à présent qu'à
décrire les différents fragments du code qui nous permettent la
connexion à notre base de données.
.1 Déclaration du pilote
JDBC :
Notez l'instruction qui importe
L'API JDBC-SQL
Ø L'appel à la classe forName déclenche
un chargement dynamique du pilote.
Ø Un programme peut utiliser plusieurs pilotes, un pour
chaque base de données.
2.2 Connexion à la base de
données :
Voila le code de connexion à la base : Nom de la
base
La connexion à la base se fait à l'aide de la
méthode getConnection (p1, p2,
p3), membre de la classe DriverManager.
Elle est appelée avec trois paramètres qui sont :
Ø p1 :
L'adresse ou se trouve la base de données.
Ø p2 =
`'root `': Le nom de l'administrateur de la base.
Ø p3 : '' '' : le
mot de passe, ici notre base n'a aucun mot de passe.
2.3 Les traitement des requêtes et l'affichage
des résultats en JDBC :
Pour exécuter notre requête sur notre base de
données a partir du programme java, on fait appel à la classe
Statement, et à sa méthode membre
executeQuery (String) avec comme unique paramètre notre
requête SQL.
2.4 La classe java.sql.ResultSet
Une fois la requête est exécutée la classe
ResultSet nous offre tous les moyens qui nous permettent de
récupérer les données afin d'effectuer des
éventuels traitements sur la base de donnée.
Dans notre exemple le résultat est
récupéré dans la variable resultat, instance de la
classe ResultSet, on peut imaginer son état comme suit :
Les champs apparaissent dans un ordre
analogue à celui de la requête SQL
|
Num_Vol
|
Dat_Vol
|
Heur_Vol
|
Tarif_Vol
|
|
Resultat1
|
001/508
|
2008/06-08
|
10 :00 :00
|
11000
|
|
Resultat2
|
002/608
|
2008-06-17
|
08 :00 :00
|
12000
|
|
1 2 3 4
resultat.next()
La méthode next() permet de passer au tuple suivant (il
existe aussi prior(),first(), last(), ...).
La méthode getXxxx (int p) nous permet
l'accès à la valeur d'un champ de l'enregistrement courant dans
resultat, ce dernier étant spécifié par le
paramètre p qui est l'ordre de l'apparition du champ dans la clause
SELECT da la requête SQL. Quant à Xxxx c'est le type
Java correspondant au type du champ dans SQL.
Le tableau ci-dessus donne quelques types SQL est leurs
correspondance en Java :
SQL
|
CHAR
|
VARCHAR
|
LONG VARCHAR
|
BIT
|
INTEGER
|
REAL
|
FLOAT
|
DATE
|
TIME
|
Java
|
String
|
String
|
String
|
boolean
|
Int
|
Float
|
double
|
Date
|
Time
|
4. Fermeture de la connexion :
Une fois qu'on terminé avec la base de données
on doit fermer la connexion grâce à la méthode
close (), membre de la classe Connection.
Voici la structure générale de notre
exemple :
Essayons à présent de compiler et
d'exécuter notre programme ;
Ouvrez une fenêtre MS-DOS. Voici le résultat de
l'exécution :
Repertoire de travail
dir affiche le contenu d'un
répertoire.
Notre programme est là
Commande de compilation
Commande d'exécution
Resultat Affiché
Si notre requête SQL était :
`'SELECT Num_Vol, Dat_Vol, Heur_Vol, Tarif_Vol FROM
VolMoinsCher
WHERE VolMoinsCher.Tarif_Vol < 12''.
Le résultat sera : Exécution
précédente
Réexécution
Résultat affiché ;
Attention !!:
Veuillez respecter la hiérarchie suivante lors de
l'installation des logiciels/matériels suivants :
1. JBuilder Foundation 2005.
2. Le lecteur de carte à puce (sans insérer le
dongle)
3. GemXplore.
4. Insérer le dongle.
PARTIE II : Réalisation
Introduction :
Présentation du projet
Notre projet consiste en la création d'une application
exploitant la technologie javacard pour la recherche du billet d'avion le moins
cher possible. Pour ce faire, on va introduire des bases de données qui
représentent chacune une compagnie aérienne donnée.
L'objet de ce rapport est l'étude de
l'ingénierie logicielle permettant le développement
d'applications de carte à puce par le billet de carte java. Il est
destiné aux personnes qui désirent étudier les
éléments essentiels de la technologie des cartes à puce et
de la programmation des cartes java. Au cours de ce rapport, on se concentre
sur les méthodes impliquées pendant le processus de
développement d'une application javacard.
Ce rapport est organisé comme suit:
· Section I : Création des bases
de données, projet JavaCard et Applet :
1. Création des bases de données
nécessaires pour l'application.
2. Création du projet JavaCard.
3. Création de l'applet.
· Section II : Création &
Description de l'application :
- Résumé.
- Conception.
- Chargement de l'applet sur la carte (avec
JCardManager)
- Le code source de l'applet.
- Le source de l'application cliente (voir annexe).
· Section III : Tests &
Exécution.
·Conclusion.
· Bibliographies.
Section I : Création des bases de
données, projet JavaCard
I-1 Création des bases de données
nécessaires pour l'application
On a utilisé dans ce projet une base de données
nommée Compagnie qui contient deux tables simulant ainsi deux agences
aériennes : air_algerie et aigle_azur. Pour cela on a opté
pour un SGBD Mysql intégré à EasyPHP dont l'installation
est décrite précédemment.
Voici le code SQL pour la création des deux
tables :
- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Dimanche 25 Mai 2008
à 15:51
-- Version du serveur: 4.1.9
-- Version de PHP: 4.3.10
--
-- Base de données: `compagnie`
--
-- --------------------------------------------------------
--
-- Structure de la table `aigle_azur`
--
CREATE TABLE `aigle_azur` (
`nomcompagnie` varchar(30) NOT NULL default '',
`itineraire` varchar(30) NOT NULL default '',
`prix` int(10) NOT NULL default '0',
`dateheure` datetime NOT NULL default '0000-00-00
00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `aigle_azur`
--
INSERT INTO `aigle_azur` VALUES (`aigle_azur, 'alger-tunis',
120, '2008-05-27 00:30:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur ',
'alger-tunis', 119, '0000-00-00 00:00:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur', 'alger-tunis',
110, '2008-05-27 00:30:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur ',
'alger-Dubai', 114, '2008-05-20 12:00:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur',
'alger-bruxelles', 112, '2008-06-01 15:30:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur `,
'alger-bruxelles', 88, '2008-06-01 16:30:00');
INSERT INTO `aigle_azur` VALUES (' aigle_azur ',
'alger-Athènes', 99, '2008-05-15 12:00:00');
-- --------------------------------------------------------
--
-- Structure de la table `air_algerie`
--
CREATE TABLE `air_algerie` (
`nomcompagnie` varchar(30) NOT NULL default '',
`itineraire` varchar(30) NOT NULL default '',
`prix` int(10) NOT NULL default '0',
`dateheure` datetime NOT NULL default '0000-00-00
00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `air_algerie`
--
INSERT INTO `air_algerie` VALUES (' air_algerie ',
'alger-paris', 121, '2008-06-01 13:00:00');
INSERT INTO `air_algerie` VALUES (`air_algerie',
'alger-paris', 119, '2008-06-01 14:00:00');
INSERT INTO `air_algerie` VALUES (' air_algerie',
'alger-Athènes', 123, '2008-05-27 12:30:00');
INSERT INTO `air_algerie` VALUES (' air_algerie',
'alger-Ryadh', 100, '2008-07-29 00:00:00');
|
I-2 Création du projet
JavaCard :
Après avoir lancé le JBuilder, cliquez sur
File/New, et dans Object Gallery choisissez Java Card/Java Card Project.
Il y' a 7 étapes à suivre pour la
création du projet JavaCard. On décrit les étapes 2, 3 et
5 (Pour les autres, vous devez laisser les valeurs proposées par
défaut):
· Spécification du package AID du projet
(étape 2).
· Choix du Card type (étape 3).
· Choix de l'environnement JCardManager (étape
5).
I-3 Création de l'applet:
Après avoir créé le projet cliquer sur
File/New, et dans Object Gallery choisissez Java Card/Java Card Applet. Il y'a
4 étapes à suivre on décrit les étapes 1 et 2 (Pour
les autres, vous devez laisser les valeurs proposées par
défaut):
· Spécification du package AID de l'applet et son
applet AID (étape 1).
· Applet AID et instance AID (étape 2).
Section II : Création & Description de
l'application
II-1 Résumé
Ce projet orienté sur la technologie Javacard consiste
à réaliser une application de recherche de billet d'avion le
moins cher, dont le fichier .cap sera délivré et installé
sur la carte, et un programme client java sous forme d'une application avec
interface graphique permettant la communication avec la carte.
II-2 Conception
Nous avons nommé notre projet Application JavaCard, il
a été réalisé en utilisant JBuilder, le JDK et
GemXplore.
Il contient cinq classes :
· Une classe nommée Interface contenant les
composants suivants : JPanel, les JLabels, JTextArea, Buttons ainsi une
classe Main permettant de lancer notre application.
· Une classe nommée Connecting pour la connexion
aux bases de données et récupération des prix selon un
itinéraire choisi. Elle contient les événements et les
actions associés à notre application en particulier cette classe
contient des variables pour lancer les méthodes correspondantes au choix
de l'utilisateur.
· Une classe nommée ApduCommands, elle permet la
communication avec la carte en définissant toutes les fonctions
d'interface qui puisse être appelées par le terminal qui est
implémenté dans la classe Terminal.
· Une classe nommée Terminal qui nous permet
d'ouvrir la communication entre l'application cliente (l'interface) et
l'application serveur (l'applet).
· Une classe nommée Tool pour manipuler,
convertir et afficher les adresses suivant leur représentation (byte,
notation hexadécimale en deux quartets sous forme de chaine, etc.).
II-3 Chargement de l'applet sur la
carte
II-3-1 Lancement de JcardManager
II-3- 2 La fenêtre principale de
JCardManager
II-3-3 Choix de l'applet pour être chargé
et installé dans la carte
Pour charger l'applet dans la carte, on lance le JCard Manager
et on s'assure que le lecteur de carte est bien sélectionné dans
cette fenêtre. Ensuite, et dans la liste OP du USim Card R5, on
sélectionne la commande Quickload. Cette commande permet de charger et
d'installer l'applet. Dans le cadre File, on clique sur le bouton select pour
sélectionner le fichier CAP à charger et installer en même
temps.
Pendant que le chargement continue, les messages de statut
sont sans interruption affichés dans la zone message de la fenêtre
de JCard Manager.les dernières lignes indiquent que le module a
été téléchargé avec succès.
NB : le fichier mypackage.cap est obtenu
après compilation de l'applet avec Jbuilder, il se trouve dans le
dossier (oncard\mypackage\javacard) du projet JavaCard.
II-3- 4- Sélection de l'applet
Pour sélectionner l'applet après avoir
lancé le JCard Manager, on choisit dans la liste decommandes OP, la
commande Select. Ensuite, on tape l'AID de l'applet et on clique sur Go pour
envoyer la commande à la carte. Dans le cas du simulateur, le
résultat de la commande est affiché simultanément dans la
zone de messages du Jcard Manager.
II-3- 5- Effacement du paquetage et de
l'applet
Pour effacer l'applet de la carte, on doit sélectionner
à partir de la liste des commandes OP, la commande Delete. Dans la case
identifier of the package or applet to delete, on saisit tout d'abord le code
AID de l'applet après on clique sur Go ; ensuite, on tape le code AID
du paquetage suivi encore du bouton Go. Cet ordre doit être
respecté pour recevoir dans la zone de messages le code de
succès.
II-3-6 Explication et exécution des fonctions
de notre applet
II-3-6-1 code source de l'applet et
explication
Voici la structure générale de notre applet
NB : Vous trouverez en annexe le
programme source complet.
II-3-6.2 Exécution du programme
6.2.1 Lecture du contenu de la carte
« CLA » :
décrit la classe d'instruction indiquant la structure et le format pour
une catégorie de commande APDU. D'après le code, la constante a
été déclarée comme (byte) 0x80.
static final byte APP_CLA = (byte) 0x80;
« INS » :représente
l'instruction de la commande. Par ailleurs, il en existe trois dont celle-ci
(lecture du prix de la carte) qui est déclarée comme (byte)
0x10.
final static byte LECT_INS = (byte) 0x10;
« Lc » : indique la
longueur des données de commande.
« Le » : indique la
longueur prévue des données de réponse. Dans ce cas,
aucune réponse n'est attendue.
Le prix actuel dans la carte est de 127 d'après la
réponse 7F
6.2.2 Comparer le prix avec celui de la carte
« CLA » :
décrit la classe d'instruction indiquant la structure et le format pour
une catégorie de commande APDU. D'après le code, la constante a
été déclarée comme (byte) 0x80.
static final byte APP_CLA = (byte) 0x80;
« INS » :
représente l'instruction de la commande. Par ailleurs, il en existe
trois dont celle-ci (comparaison avec le prix qui existe dans la carte) qui est
déclarée comme (byte) 0x20.
final static byte COMP_INS = (byte) 0x20;
« Lc » : indique la
longueur des données de commande.
« Le » : indique la
longueur prévue des données de réponse. Dans ce cas,
aucune réponse n'est attendue.
« Data » : indique
le prix à envoyer à la carte pour être comparé avec
celui qui existe dans la carte.
6.2.3 Réinitialisation du prix de la
carte
CLA décrit la classe d'instruction indiquant la
structure et le format pour une catégorie de commande APDU.
D'après le code, la constante a été déclarée
comme (byte) 0xB0.
static final byte APP_CLA = (byte) 0x80;
INS représente l'instruction de la commande. Par
ailleurs, il en existe trois dont celle-ci (réinitialisation du prix de
la carte à la valeur maximale) qui est déclarée comme
(byte) 0x20.
final static byte INIT = (byte) 0x30;
Lc indique la longueur des données de commande.
Le indique la longueur prévue des données de
réponse. Dans ce cas, aucune réponse n'est attendue.
Section III : Tests & Exécution.
III.1 Création du fichier jar (Java
ARchive) :
Ce fichier contiendra l'exécutable de l'application.
Pour créer cette archive, on suit les étapes suivantes :
1- créer un nouveau dossier pour contenir tous les
fichiers nécessaires pour la création de l'archive JAR.
Ce dossier contiendra :
· Tous les fichiers .class à savoir :
Interface.class, Connecting.class, Terminal.class, ApduCommands.class et
Tool.class.
Tous ces fichiers sont générés
après compilation de chacune des cinq classes de l'application.
· Le fichier manifest (fichier avec extension .mf) qui
contient le nom du connecteur, la classe qui contient la méthode
« main » et éventuellement la version et le nom du
concepteur.
La figure suivante montre le fichier manifest de
l'application :
Ces deux lignes sont facultatives.
· Le connecteur JDBC (mysql-connector-java-3.0.15-ga-bin)
qui permet la connexion à la base de données avec un code source
Java.
2- Aller dans l'invite de commandes.
3. Accéder au répertoire créé
précédemment pour contenir l'archive JAR avec la commande
« cd » sur l'invite de commande.
4. exécuter la commande suivante :
« jar cmvf nom_ du_fichier_manifest.mf
nom_de_lexécutable.jar *.class »
5. Après exécution de cette commande
l'exécutable de l'application sera créé dans le même
dossier créé initialement.
6. Si on double-clique sur cet exécutable
créé (l'archive JAR) l'application se lancera.
III-2 Interface de notre application
III-3 Connexion à la carte, détection du
lecteur de carte et récupération de l'ATR
III-4 Choix de la destination
III-5 Affichage du résultat
Conclusion :
L'objectif de notre travail était de concevoir et de
réaliser une application permettant la recherche du billet d'avion le
moins cher entre plusieurs agences de voyage en utilisant la technologie
JavaCard.
La réalisation de ce travail nous a permis :
· D'acquérir des connaissances sur la technologie
javacard et les langages java, PHP, MYSQL, le langage de modélisation
UML, et aussi de se familiariser avec plusieurs logiciels tels que
JBuilder, JCardManager,
Perspectives
Nous espérons par ce modeste travail apporter des
connaissances basiques sur la technologie JavaCard et l`outil JCardManager
qui est un environnement offrant la possibilité d'exploitation de la
carte et sa mise en oeuvre réelle contrairement aux autres outils de
simulation.
|