23. Allegati
Di seguito illustriamo come installare gli strumenti utilizzati in questo documento su computer con sistema operativo Windows 7 o 8. Le schermate riportate si riferiscono generalmente alle versioni a 64 bit di SGBD e degli strumenti installati. Il lettore dovrà adattarsi al proprio ambiente.
23.1. Installazione di un JDK
All'indirizzo URL è disponibile il [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (ottobre 2014), mentre il JDK è la versione più recente. D'ora in poi chiameremo <jdk-install> la cartella di installazione del JDK.
23.2. Installazione di Maven
Maven è uno strumento per la gestione delle dipendenze di un progetto Java e non solo. È disponibile (ottobre 2014) all'indirizzo URL [http://maven.apache.org/download.cgi].
Scaricare e decomprimere l’archivio. Chiameremo <maven-install> la cartella di installazione di Maven.
- In [1], il file [conf / settings.xml] configura Maven;
In esso si trovano le seguenti righe:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
Il valore predefinito della riga 4 può causare problemi ad alcuni software che utilizzano Maven, se, come nel mio caso, il vostro {user.home} contiene uno spazio nel percorso (ad esempio [C:\Users\Serge Tahé]). Indicheremo (riga 7) un'altra cartella per il repository locale di Maven:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\Programs\devjava\maven\.m2\repository</localRepository>
Si eviterà, alla riga 7, un percorso che contenga spazi.
Installeremo la Spring Tool Suite SpringSource (ottobre 2014), un'istanza di Eclipse preconfigurata con numerosi plugin relativi al framework Spring e con una configurazione Maven preinstallata.
- visitare il sito della SpringSource Tool Suite (STS) [1], per scaricare la versione attuale di STS [2A] [2B],
- il file scaricato è un programma di installazione che crea la struttura di file [3A] [3B]. In [4], si avvia l'eseguibile,
- in [5], la finestra di lavoro di IDE dopo aver chiuso la finestra di benvenuto. In [6], viene visualizzata la finestra dei server delle applicazioni,
- in [7], la finestra dei server. È registrato un server. Si tratta di un server VMware compatibile con Tomcat.
È necessario indicare a STS la cartella di installazione di Maven:
- in [1-2], si configura STS;
- in [3-4] si aggiunge una nuova installazione di Maven;
- in [5], si indica la cartella di installazione di Maven;
- in [6], si chiude la procedura guidata;
- in [7], si imposta la nuova installazione di Maven come installazione predefinita;
- in [8-9], si verifica il repository locale di Maven, ovvero la cartella in cui verranno salvate le dipendenze scaricate e in cui STS salverà gli artefatti che verranno compilati;
È inoltre necessario selezionare un JDK (Java Development Kit) per eseguire sia i progetti Eclipse senza Maven che quelli con Maven [1-5].
Con [4] è possibile aggiungere JDK (Java Development Kit) o JRE (Java Runtime Environment). Quest'ultimo è in grado di eseguire file .class ma non di compilare i file .java per generarli. Il JDK è in grado di eseguire entrambe le operazioni. Si opterà per un JDK poiché alcune operazioni Maven richiedono un JDK.
Per creare un progetto Eclipse, si procederà come segue:
- in [3], assegnare un nome al progetto;
- in [4], selezionare una cartella esistente e vuota;
- in [5], il progetto creato;
- in [5-8], creare un pacchetto. Un pacchetto è una cartella che contiene codice Java. Due classi possono avere lo stesso nome se appartengono a pacchetti diversi. In un progetto non possono esserci due pacchetti con lo stesso nome. Pertanto non è possibile utilizzare un nome di pacchetto che esista già in una delle dipendenze del progetto. Un’azienda utilizzerà come nome del pacchetto un nome che specifichi l’azienda, il progetto e i diversi rami di quest’ultimo;
- in [9], assegnare un nome al pacchetto;
- in [10], il pacchetto creato;
- in [11-13], si crea una classe nel pacchetto appena creato;
- in [14], assegnare un nome alla classe (deve rispettare la norma CamelCase - ogni parola del nome deve iniziare con una maiuscola seguita da lettere minuscole);
- in [15], verificare il pacchetto;
- in [16], spuntare la casella. Questa richiede che venga generato il metodo statico [main]. Questo metodo rende una classe eseguibile, ovvero la prima classe da eseguire in un progetto;
- in [17], la classe così creata;
Digitare nel metodo [main] il codice seguente che visualizza un testo sulla console:
package st.istia;
public class Test01 {
public static void main(String[] args) {
System.out.println("test01");
}
}
- in [18-20], eseguire la classe. Verrà quindi eseguito il suo metodo [main];
- in [21-22], il risultato dell'applicazione;
Se la vista [Console] non è presente, procedere come segue [1-4]:
È possibile che durante l’importazione di un progetto Eclipse si verifichino degli errori. Ciò può essere dovuto a una configurazione errata del progetto. Per correggere l’errore (se presente), procedere come segue:
- in [1], modificare il file [Build Path] del progetto;
- in [2], il progetto è configurato per utilizzare un JVM 1.5;
- in [3], eliminare questa dipendenza;
- in [4], aggiungere una nuova dipendenza;
- in [5], si aggiunge un JVM;
- in [6], si seleziona JVM dalla voce;
Fatto ciò, si conferma il tutto e si passa alla proprietà [Java compiler] del progetto [7]:
- in [8], si richiede al compilatore di accettare tutte le caratteristiche del linguaggio Java fino alla versione 1.7 (o 1.8) compresa;
- in [9], si esegue la convalida;
- in [10], il progetto così riconfigurato non dovrebbe più presentare errori;
Inoltre, il progetto importato può utilizzare una codifica dei caratteri UTF-8. Procedere come segue per impostare questa codifica nel progetto importato [1-4]:
Inoltre, può essere utile disattivare il controllo ortografico nel progetto per evitare che i commenti in francese vengano evidenziati come errati. Seguire i passaggi [1-4] riportati di seguito:
La Community Edition di SGBD MySQL5 sarà disponibile (giugno 2015) all'indirizzo URL [https://dev.mysql.com/downloads/mysql/]:
L'installazione procede come segue:
- in [8] è stata utilizzata la password [root]. In questo documento le credenziali dell'amministratore di SGBD e MySQL sono [root / root];
Una volta installato MySQL 5, visualizzate la pagina di gestione dei servizi di Windows:
- [1]: icona di Windows in basso a sinistra;
- in [8], impostare il servizio [MySQL56] su avvio manuale in modo che non consumi risorse inutilmente. Sarà possibile avviarlo dalla pagina dei servizi ogni volta che se ne avrà bisogno;
23.5. Installazione di EMS e MyManager
Il sito [http://www.sqlmanager.net/en/] offre client gratuiti per gestire sei tipi di SGBD:
Il vantaggio è che presentano tutti la stessa interfaccia per gestire i SGBD. È l’ideale per questo documento in cui si desidera gestire i sei SGBD. Non è necessario imparare a utilizzare un nuovo client quando si cambia SGBD. Li troveremo tutti all'indirizzo URL [http://www.sqlmanager.net/download/]. Scaricheremo le versioni gratuite denominate lite:
Le versioni scaricabili URL sono attualmente (maggio 2015) le seguenti:
Quando si installa, ad esempio, il client MyManager di MySQL5, si ottiene la struttura delle directory seguente:
- l'eseguibile si trova in [2];
- i passaggi [3-8] illustrano come collegare [MyManager] a uno dei database di MySQL;
- in [4], la password è [root];
23.6. Installazione di SGBD Oracle Database Express Edition 11g Release 2
Oracle Database Express Edition 11SGBD, versione 2, è disponibile a partire dalla versione URL (giugno 2015): [http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:
L'installazione procede come segue:
- in [6], si digita la password [system]. Nel documento, le credenziali dell'amministratore Oracle sono [system / system];
L'installazione configura Oracle come servizio di Windows. Vengono installati diversi servizi che, per impostazione predefinita, sono tutti configurati per l'avvio automatico. La prima cosa da fare è impostarli in modalità manuale:
È necessario avviare due servizi:
- [OracleXETNSListener], che ascolta sulla porta 1521 le richieste inviate a SGBD;
- [OracleServiceXE], che è il SGBD;
Per amministrare Oracle, si utilizzerà il client [OraManager] (paragrafo 23.5). Per poterlo utilizzare, è necessario installare preventivamente la suite [Oracle Database Express Edition 11g Release 2 Client] disponibile su URL (giugno 2015): [http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]. È necessario scaricare la versione a 32 bit poiché [OraManager] è un client a 32 bit:
L'installazione di questa suite avviene nel modo seguente:
- in [3], specificare la cartella <oracleXE-install>\app\oracle\product\11.2.0\client_1 dove <oracleXE-install> è la cartella in cui è stato installato Oracle Express;
Ora colleghiamo il client [OraManager] a Oracle SGBD:
- in [2], il nome del gruppo è a scelta;
- in [4], è obbligatorio inserire XE;
- in [5], l'alias è a scelta;
- in [6], gli identificativi sono [system / system];
23.7. Installazione di SGBD PostgreSQL 9.4
Il SGBD PostgreSQL 9.4 è disponibile all'indirizzo URL (giugno 2015): [http://www.enterprisedb.com/products-services-training/pgdownload#windows]:
L'installazione procede come segue:
- in [4], la password è postgres. In questo documento, le credenziali dell'amministratore di SGBD PostgreSQL sono [postgres / postgres];
L’installazione configura PostgreSQL come servizio di Windows con avvio automatico. La prima cosa da fare è impostarlo in modalità manuale:
Ora colleghiamo il client [PgManager] (cfr. paragrafo 23.5) a SGBD PostgreSQL:
- in [2], gli identificativi sono [postgres / postgres];
- in [3], ci si connette al database [postgres];
23.8. Installazione di SGBD DB2 Express
Il SGBD DB2 Express è disponibile presso il URL (giugno 2015): [http://www-01.ibm.com/software/data/db2/express-c/download.html]:
L'installazione procede come segue:
- in [9] la password è [db2admin]. In questo documento, le credenziali dell'amministratore di SGBD sono [db2admin / db2admin];
Nota: si potrebbe essere tentati di saltare questo passaggio. Non bisogna farlo. Questo passaggio creerà la cartella in cui verranno memorizzati i database DB2 che creeremo.
- è stata creata una cartella [d:\DB2] [1];
- è stato creato il database [SAMPLE] nella cartella [d:\db2\node0000];
Il programma di installazione installa DB2 come servizio di Windows con avvio automatico. La prima cosa da fare è impostarlo in modalità manuale:
Eseguire questa operazione per tutti i servizi [DB2*] sopra indicati. Ai fini del presente documento, è necessario avviare solo il servizio [DB2 - DB2COPY1].
Ora colleghiamo il client [Db2Manager] (cfr. paragrafo 23.5) a SGBD e DB2:
- in [1], utilizzare gli identificativi [db2admin / db2admin];
23.9. Installazione di SGBD SQL Server 2014 Express
Il SGBD SQL Server 2014 Express è disponibile all'indirizzo URL (giugno 2015): [http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:
L'installazione procede come segue:
- in [1], inserire una password qualsiasi. La cambieremo in seguito;
Successivamente, avviamo il servizio SQL Server:
Fatto ciò, avviamo il client [Microsoft SQL Server Management Studio], installato contemporaneamente a SGBD (vedi Menu Start):
Si potrebbe utilizzare questo client per amministrare il server SQL. Tuttavia, per motivi di uniformità con i client degli altri SGBD, utilizzeremo il client [MsManager] (cfr. paragrafo 23.5).
- in [1], annotare il nome di SGBD;
- in [2], è stata inserita la password msde. In questo documento, le credenziali dell’amministratore di SGBD sono [sa / msde];
Fatto ciò, si avvia lo strumento [Gestionaire de configuration SQL Server] che è stato installato contemporaneamente a SGBD (cfr. Menu Start):
- Per impostazione predefinita, in [2], la comunicazione TCP/IP non è attivata. Per questo documento, è necessario attivarla in [3];
- in [4], sempre ai fini di questo documento, è necessario specificare che SGBD attende le richieste dei client sulla porta 1433. Il valore di [Ports TCP dynamiques] deve essere vuoto;
Fatto ciò, si avvia il client [MsManager] (cfr. paragrafo 23.5):
- in [3], inserire il nome annotato in [1];
- in [4], gli identificativi sono [sa / msde];
23.10. Installazione di SGBD Firebird
Firebird 2.5.4 (SGBD) è disponibile a partire dalla versione URL (giugno 2015): [http://www.firebirdsql.org/en/firebird-2-5-4/]:
L'installazione procede come segue:
Fatto ciò, verifichiamo la modalità di avvio del servizio Windows creato:
Colleghiamo ora il client [IBManager] (cfr. paragrafo 23.5) al Firebird SGBD installato:
- in [1], la password è masterkey;
23.11. Installazione del plugin Chrome [Advanced Rest Client]
In questo documento si utilizza il browser Chrome di Google (http://www.google.fr/intl/fr/chrome/browser/). Si aggiungerà l'estensione [Advanced Rest Client]. Si potrà procedere come segue:
- l’applicazione sarà quindi disponibile per il download:
- per scaricarla, è necessario creare un account Google. [Google Web Store] richiede quindi la conferma di [1]:
- In [2], l’estensione aggiunta è disponibile nell’opzione [Applications] [3]. Questa opzione viene visualizzata su ogni nuova scheda che create (CTRL-T) nel browser.
23.12. Gestione di jSON in Java
In modo tra sparente per lo sviluppatore, il framework [Spring MVC] utilizza la libreria jSON [Jackson]. Per illustrare cos’è il jSON (JavaScript Object Notation), presentiamo qui un programma che serializza oggetti in jSON ed esegue l'operazione inversa deserializzando le stringhe jSON prodotte per ricreare gli oggetti iniziali.
La libreria 'Jackson' consente di costruire:
- la stringa jSON di un oggetto: new ObjectMapper().writeValueAsString(object);
- un oggetto a partire da una stringa jSON: new ObjectMapper().readValue(jsonString, Object.class).
Entrambi i metodi possono generare un'eccezione. Ecco un esempio.
Il progetto sopra riportato è un progetto Maven con il seguente file [pom.xml]:
<?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.pam</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>
- righe 12-16: la dipendenza che include la libreria 'Jackson';
La classe [Personne] è la seguente:
package istia.st.json;
public class Personne {
// dati
private String nom;
private String prenom;
private int age;
// costruttori
public Personne() {
}
public Personne(String nom, String prénom, int âge) {
this.nom = nom;
this.prenom = prénom;
this.age = âge;
}
// firma
public String toString() {
return String.format("Personne[%s, %s, %d]", nom, prenom, age);
}
// getter e setter
...
}
La classe [Main] è la seguente:
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 {
// lo strumento di serializzazione/deserializzazione
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// creazione di una persona
Personne paul = new Personne("Denis", "Paul", 40);
// visualizzazione jSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// istanziazione di una persona da JSON
Personne p = mapper.readValue(json, Personne.class);
// visualizzazione di una persona
System.out.println("Personne=" + p);
// un array
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// visualizzazione JSON
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// dizionario
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// visualizzazione JSON
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
L'esecuzione di questa classe produce la seguente visualizzazione sullo schermo:
| Json={"nom":"Denis","prenom":"Paul","age":40}
Personne=Personne[Denis, Paul, 40]
Json personnes=[{"nom":"Denis","prenom":"Paul","age":40},{"nom":"Radot","prenom":"Virginie","age":20}]
Json hpersonnes={"2":{"nom":"Radot","prenom":"Virginie","age":20},"1":{"nom":"Denis","prenom":"Paul","age":40}}
|
Dall'esempio si ricava quanto segue:
- l'oggetto [ObjectMapper] necessario per le trasformazioni jSON / Oggetto: riga 11;
- la trasformazione [Personne] --> jSON: riga 17;
- la trasformazione jSON --> [Personne]: riga 20;
- l'eccezione [IOException] generata da entrambi i metodi: riga 13.