10. Annexes
Nous présentons ici comment installer les outils utilisés dans ce document sur des machines windows 7 à 10. Le lecteur s'adaptera à son propre environnement.
10.1. Installation d'un JDK
On trouvera à l'URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (avril 2016), le JDK le plus récent. On nommera par la suite <jdk-install> le dossier d'installation du JDK.
![]() |
10.2. Installation du SDK Manager d'Android
![]() |
- en [1], pourquoi on a besoin du SDK d'Android ;
On trouvera le SDK Manager d'Android à l'adresse [https://developer.android.com/studio/index.html#downloads] (mai 2016).
![]() |
Faire l'installation du SDK Manager. Nous noterons par la suite <sdk-manager-install> son répertoire d'installation. Lancez-le.
Le projet a été configuré pour (cf paragraphe 9.3.2) :
- le SDK API 23 [2] ;
- le SDK Build-tools 23.0.3 [3] ;
- le SDK Tool 25.1.3 [4]
Assurez-vous d'avoir téléchargé ces éléments.
10.3. Installation du gestionnaire d'émulateurs Genymotion
Les émulateurs fournis avec le SDK d'Android sont lents ce qui décourage de les utiliser. L'entreprise [Genymotion] offre un émulateur performant. Celui-ci est disponible à l'URL [https://cloud.genymotion.com/page/launchpad/download/] (mai 2016).
Vous aurez à vous enregistrer pour obtenir une version à usage personnel. Téléchargez le produit [Genymotion] avec la machine virtuelle VirtualBox :

Nous appellerons par la suite <genymotion-install> le dossier d'installation de [Genymotion]. Lancez [Genymotion]. Téléchargez ensuite une image pour une tablette :
![]() |
- en [1], ajoutez le terminal virtuel décrit en [2] ;
10.4. Installation de l'IDE IntellijIDEA Community Edition
L'IDE [ Intellij IDEA Community Edition] est disponible à l'URL [https://www.jetbrains.com/idea/#chooseYourEdition] :
![]() |
Installez l'IDE puis lancez-le.
![]() | ![]() |
- en [1-2], configurez les plugins ;
- en [3-4], ajoutez à l'IDE le plugin [Genymotion];
![]() |
- en [6-7], configurez l'IDE ;
![]() | ![]() |
- en [8-9], indiquez le dossier d'installation du gestionnaire d'émulateurs [Genymotion] ;
![]() |
- en [12-13], on configure la nature par défaut des projets ;
![]() | ![]() |
![]() |
- en [14-16], on configure le JDK ;
![]() |
![]() | ![]() |
- en [17-20], on configure le SDK d'Android ;
![]() |
- en [21-22], on indique le JDK par défaut des projets ;
![]() | ![]() |
![]() |
- en [23-27], on désactive la correction orthographique qui par défaut est pour la langue anglaise ;
![]() | ![]() |
- en [28-32], choisissez le type de raccourcis clavier que vous souhaitez. Vous pouvez garder celui par défaut d'Intellij ou choisir celui d'un autre IDE auquel vous seriez plus habitués ;
![]() |
- en [33-35], configurez l'IDE vis à vis de multiples projets. Il peut gérer plusieurs projets dans la même fenêtre ou dans des fenêtre différentes ;
![]() |
- en [36-37], par défaut numérotez les lignes. Cela vous permettra de retrouver rapidement la ligne qui a provoqué une exception ;
10.5. Utilisation des exemples
Les projets IntellijIDEA des exemples sont disponibles |ICI|. Le paragraphe 1.3 explique comment les ouvrir.
10.6. Gestion du jSON en Java
De façon transparente pour le développeur le framework [Spring MVC] utilise la bibliothèque JSON [Jackson]. Pour illustrer ce qu'est le JSON (JavaScript Object Notation), nous présentons ici un programme qui sérialise des objets en JSON et fait l'inverse en désérialisant les chaînes JSON produites pour recréer les objets initiaux.
La bibliothèque 'Jackson' permet de construire :
- la chaîne JSON d'un objet : new ObjectMapper().writeValueAsString(object) ;
- un objet à partir d'un chaîne JSON : new ObjectMapper().readValue(jsonString, Object.class).
Les deux méthodes sont susceptibles de lancer une IOException. Voici un exemple.
![]() |
Le projet ci-dessus est un projet Maven avec le fichier [pom.xml] suivant ;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>istia.st</groupId>
<artifactId>json</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
</project>
- lignes 12-16 : la dépendance qui amène la bibliothèque 'Jackson' ;
La classe [Personne] est la suivante :
package istia.st.json;
public class Personne {
// data
private String nom;
private String prenom;
private int age;
// constructeurs
public Personne() {
}
public Personne(String nom, String prénom, int âge) {
this.nom = nom;
this.prenom = prénom;
this.age = âge;
}
// signature
public String toString() {
return String.format("Personne[%s, %s, %d]", nom, prenom, age);
}
// getters et setters
...
}
La classe [Main] est la suivante :
package istia.st.json;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Main {
// l'outil de sérialisation / désérialisation
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// création d'une personne
Personne paul = new Personne("Denis", "Paul", 40);
// affichage Json
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// instanciation Personne à partir du Json
Personne p = mapper.readValue(json, Personne.class);
// affichage personne
System.out.println("Personne=" + p);
// un tableau
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// affichage Json
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// dictionnaire
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// affichage Json
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
L'exécution de cette classe produit l'affichage écran suivant :
De l'exemple on retiendra :
- l'objet [ObjectMapper] nécessaire aux transformations JSON / Object : ligne 11 ;
- la transformation [Personne] --> JSON : ligne 17 ;
- la transformation JSON --> [Personne] : ligne 20 ;
- l'exception [IOException] lancée par les deux méthodes : ligne 13.

























