23. Anexos
A continuación se explica cómo instalar las herramientas utilizadas en este documento en equipos con Windows 7 u 8. Las capturas de pantalla suelen mostrar las versiones de 64 bits de SGBD y las herramientas instaladas. El lector deberá adaptarse a su propio entorno.
23.1. Instalación de un JDK
Encontrará en URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (octubre de 2014), el JDK más reciente. A partir de ahora, denominaremos <jdk-install> a la carpeta de instalación del JDK.
23.2. Instalación de Maven
Maven es una herramienta de gestión de dependencias de un proyecto Java y mucho más. Está disponible (octubre de 2014) en URL [http://maven.apache.org/download.cgi].
Descarga y descomprime el archivo. Llamaremos <maven-install> a la carpeta de instalación de Maven.
- En [1], el archivo [conf / settings.xml] configura Maven;
En él se encuentran las siguientes líneas:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
El valor por defecto de la línea 4 puede suponer un problema para algunos programas que utilizan Maven, si, como en mi caso, su {user.home} tiene un espacio en su ruta (por ejemplo, [C:\Users\Serge Tahé]). Designaremos (línea 7) otra carpeta para el repositorio local de 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>
En la línea 7, evitaremos una ruta que contenga espacios.
Vamos a instalar SpringSource Tool Suite [http://www.springsource.com/developer/sts] (octubre de 2014), un Eclipse preconfigurado con numerosos complementos relacionados con el marco Spring y también con una configuración de Maven preinstalada.
- Ir a la página web de SpringSource Tool Suite (STS) [1], para descargar la versión actual de version de STS [2A] [2B],
- el archivo descargado es un instalador que crea el árbol de archivos [3A] [3B]. En [4], se ejecuta el ejecutable,
- en [5], la ventana de trabajo de IDE tras cerrar la ventana de bienvenida. En [6], se muestra la ventana de servidores de aplicaciones,
- en [7], la ventana de servidores. Se registra un servidor. Se trata de un servidor VMware compatible con Tomcat.
Hay que indicar a STS la carpeta de instalación de Maven:
- en [1-2], se configura STS;
- en [3-4], se añade una nueva instalación de Maven;
- en [5], se indica la carpeta de instalación de Maven;
- en [6], se cierra el asistente;
- en [7], se establece la nueva instalación de Maven como la instalación predeterminada;
- en [8-9], se comprueba el repositorio local de Maven, la carpeta donde se guardarán las dependencias que se descarguen y donde STS guardará los artefactos que se compilen;
También hay que elegir un JDK (Java Development Kit) para ejecutar tanto los proyectos de Eclipse sin Maven como con él [1-5].
Con [4], se pueden añadir JDK (Java Development Kit) o JRE (Java Runtime Environment). Este último sabe ejecutar archivos .class, pero no sabe compilar los .java para generarlos. El JDK puede hacer ambas cosas. Se elegirá un JDK porque algunas operaciones de Maven requieren un JDK.
Para crear un proyecto Eclipse, se procederá de la siguiente manera:
- en [3], asigne un nombre al proyecto;
- en [4], seleccione una carpeta existente y vacía;
- en [5], el proyecto creado;
- en [5-8], cree un paquete. Un paquete es una carpeta que contiene código Java. Dos clases pueden tener el mismo nombre si pertenecen a paquetes diferentes. En un proyecto, no puede haber dos paquetes con el mismo nombre. Por lo tanto, no se puede utilizar un nombre de paquete que ya exista en una de las dependencias del proyecto. Una empresa utilizará como nombre de paquete un nombre que especifique la empresa, el proyecto y las diferentes ramas del mismo;
- en [9], asigne un nombre al paquete;
- en [10], el paquete creado;
- en [11-13], se crea una clase en el paquete que se ha creado;
- en [14], asigne un nombre a la clase (debe cumplir la norma CamelCase: cada palabra del nombre debe comenzar con una mayúscula seguida de minúsculas);
- en [15], compruebe el paquete;
- en [16], marque la casilla. Esto solicita que se genere el método estático [main]. Este método convierte una clase en ejecutable, es decir, la primera clase que se ejecutará en un proyecto;
- en [17], la clase así creada;
Escriba en el método [main] el siguiente código, que muestra un texto en la consola:
package st.istia;
public class Test01 {
public static void main(String[] args) {
System.out.println("test01");
}
}
- en [18-20], ejecute la clase. A continuación, se ejecutará su método [main];
- en [21-22], el resultado de la aplicación;
Si la vista [Console] no está presente, proceda de la siguiente manera [1-4]:
Es posible que al importar un proyecto de Eclipse, este presente errores. Esto puede deberse a una configuración incorrecta del proyecto. Para corregir el error (si lo hay), proceda de la siguiente manera:
- en [1], modifique el [Build Path] del proyecto;
- por [2], el proyecto está configurado para utilizar un JVM 1.5;
- en [3], elimine esta dependencia;
- en [4], añada una nueva dependencia;
- en [5], se añade un JVM;
- en [6], se selecciona el JVM de la entrada;
Una vez hecho esto, se valida todo y se pasa a la propiedad [Java compiler] del proyecto [7]:
- en [8], se le pide al compilador que acepte todas las características del lenguaje Java hasta su versión version 1.7 (o 1.8) incluida;
- en [9], se valida;
- en [10], el proyecto así reconfigurado ya no debería presentar errores;
Por otra parte, el proyecto importado puede utilizar una codificación de caracteres UTF-8. Proceda de la siguiente manera para establecer esta codificación en el proyecto importado [1-4]:
Por otra parte, puede resultar útil desactivar la corrección ortográfica en el proyecto para evitar que los comentarios en francés aparezcan subrayados como incorrectos. Siga los pasos [1-4] que se indican a continuación:
La SGBD MySQL5 Community Edition se encuentra (junio de 2015) en la URL [https://dev.mysql.com/downloads/mysql/]:
La instalación se realiza de la siguiente manera:
- En [8], se ha utilizado la contraseña [root]. En este documento, las credenciales de administrador de SGBD MySQL son [root / root];
Una vez instalado MySQL 5, abra la página de administración de servicios de Windows:
- [1]: icono de Windows en la parte inferior izquierda;
- En [8], configure el servicio [MySQL56] en inicio manual para que no consuma recursos innecesariamente. Lo iniciará desde la página de servicios cada vez que lo necesite;
23.5. Instalación de EMS MyManager
El sitio [http://www.sqlmanager.net/en/] ofrece clients gratuitos para gestionar seis tipos de SGBD:
La ventaja es que todos presentan la misma interfaz para gestionar los SGBD. Es ideal para este documento, en el que se desea gestionar los seis SGBD. No hay que aprender a manejar un nuevo cliente cuando se cambia de SGBD. Todos se encuentran en el URL [http://www.sqlmanager.net/download/]. Descargaremos las versiones gratuitas denominadas «lite»:
Los archivos URL disponibles para descarga son actualmente (mayo de 2015) los siguientes:
Al instalar, por ejemplo, el cliente MyManager de MySQL5, se obtiene la siguiente estructura de directorios:
- el ejecutable se encuentra en [2];
- los pasos de [3-8] muestran cómo conectar [MyManager] a una de las bases de datos de MySQL;
- en [4], la contraseña es [root];
23.6. Instalación de SGBD Oracle Database Express Edition 11g Release 2
SGBD Oracle Database Express Edition 11g Release 2 está disponible en URL (junio de 2015): [http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:
La instalación se realiza de la siguiente manera:
- En [6], se introduce la contraseña [system]. En este documento, las credenciales del administrador de Oracle son [system / system];
La instalación instala Oracle como un servicio de Windows. Se instalan varios servicios que, por defecto, se inician automáticamente. Lo primero que hay que hacer es cambiarlos al modo manual:
Hay que iniciar dos servicios:
- [OracleXETNSListener], que escucha en el puerto 1521 las solicitudes realizadas a SGBD;
- [OracleServiceXE], que es el SGBD;
Para administrar Oracle, utilizaremos el cliente [OraManager] (apartado 23.5). Para poder utilizarlo, es necesario instalar previamente la suite [Oracle Database Express Edition 11g Release 2 Client], disponible en URL (junio de 2015): [http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html]. Es necesario descargar version de 32 bits, ya que [OraManager] es un cliente de 32 bits:
La instalación de esta suite se realiza de la siguiente manera:
- en [3], indique la carpeta <oracleXE-install>\app\oracle\product\11.2.0\client_1, donde <oracleXE-install> es la carpeta en la que ha instalado Oracle Express;
Ahora, conectemos el cliente [OraManager] al SGBD de Oracle:
- en [2], el nombre del grupo es libre;
- en [4], es obligatorio poner XE;
- en [5], el alias es libre;
- en [6], los identificadores son [system / system];
23.7. Instalación de SGBD PostgreSQL 9.4
El SGBD PostgreSQL 9.4 está disponible en el URL (junio de 2015): [http://www.enterprisedb.com/products-services-training/pgdownload#windows]:
La instalación se realiza de la siguiente manera:
- En [4], la contraseña es postgres. En este documento, las credenciales del administrador de SGBD PostgreSQL son [postgres / postgres];
La instalación instala PostgreSQL como un servicio de Windows con inicio automático. Lo primero que hay que hacer es cambiarlo al modo manual:
Ahora conectemos el cliente [PgManager] (véase el apartado 23.5) a SGBD PostgreSQL:
- en [2], los identificadores son [postgres / postgres];
- en [3], se conecta a la base [postgres];
23.8. Instalación de SGBD DB2 Express
El SGBD DB2 Express está disponible en el URL (junio de 2015): [http://www-01.ibm.com/software/data/db2/express-c/download.html]:
La instalación se realiza de la siguiente manera:
- En [9], la contraseña es [db2admin]. En este documento, las credenciales de administrador de SGBD son [db2admin / db2admin];
Nota: puede resultar tentador saltarse este paso. No lo haga. Este paso creará la carpeta donde se almacenarán las bases de datos DB2 que vamos a crear.
- Se ha creado una carpeta [d:\DB2] [1] ;
- Se ha creado la base de datos [SAMPLE] en la carpeta [d:\db2\node0000];
La instalación configura DB2 como un servicio de Windows con inicio automático. Lo primero que hay que hacer es cambiarlo al modo manual:
Haga lo mismo con todos los servicios [DB2*] mencionados anteriormente. Para los fines de este documento, solo es necesario iniciar el servicio [DB2 - DB2COPY1].
Ahora conectemos el cliente [Db2Manager] (véase el apartado 23.5) a SGBD DB2:
- en [1], utilice los identificadores [db2admin / db2admin];
23.9. Instalación de SGBD SQL Server 2014 Express
El SGBD SQL Server 2014 Express está disponible en el URL (junio de 2015): [http://www.microsoft.com/fr-fr/server-cloud/products/sql-server/]:
La instalación se realiza de la siguiente manera:
- en [1], introduce cualquier contraseña. La cambiaremos más adelante;
A continuación, iniciamos el servicio de SQL Server:
Una vez hecho esto, iniciamos el cliente [Microsoft SQL Server Management Studio], que se instaló al mismo tiempo que el SGBD (véase el menú Inicio):
Se podría utilizar este cliente para administrar el servidor SQL. Pero, en aras de la homogeneidad con los clients de los demás SGBD, utilizaremos el cliente [MsManager] (véase el apartado 23.5).
- en [1], anote el nombre del SGBD;
- en [2], se ha introducido la contraseña msde. En este documento, las credenciales del administrador de SGBD son [sa / msde];
Una vez hecho esto, se inicia la herramienta [Gestionaire de configuration SQL Server], que se instaló al mismo tiempo que SGBD (véase el menú Inicio):
- Por defecto, en [2], la comunicación TCP/IP no está activada. Para este documento, hay que activarla [3];
- en [4], siempre para las necesidades de este documento, hay que indicar que SGBD espera las solicitudes de clients en el puerto 1433. El valor de [Ports TCP dynamiques] debe estar vacío;
Una vez hecho esto, se inicia el cliente [MsManager] (véase el apartado 23.5):
- en [3], introduzca el nombre anotado en [1];
- en [4], los identificadores son [sa / msde];
23.10. Instalación de SGBD Firebird
SGBD Firebird 2.5.4 está disponible en URL (junio de 2015): [http://www.firebirdsql.org/en/firebird-2-5-4/]:
La instalación se realiza de la siguiente manera:
Una vez hecho esto, comprobemos el modo de inicio del servicio de Windows creado:
Conectemos ahora el cliente [IBManager] (véase el apartado 23.5) al Firebird SGBD instalado:
- en [1], la contraseña es masterkey;
23.11. Instalación del complemento de Chrome [Advanced Rest Client]
En este documento se utiliza el navegador Chrome de Google (http://www.google.fr/intl/fr/chrome/browser/). Se le añadirá la extensión [Advanced Rest Client]. Se puede proceder de la siguiente manera:
- la aplicación estará entonces disponible para su descarga:
- Para obtenerla, deberá crear una cuenta de Google. A continuación, [Google Web Store] solicita la confirmación de [1]:
- En [2], la extensión añadida está disponible en el option [Applications] [3]. Este option se muestra en cada nueva pestaña que se crea (CTRL-T) en el navegador.
23.12. Gestión de jSON en Java
De forma trans a para el desarrollador, el marco [Spring MVC] utiliza la biblioteca jSON [Jackson]. Para ilustrar qué es el jSON (JavaScript Object Notation), presentamos aquí un programa que serializa objetos en jSON y hace lo contrario al deserializar las cadenas jSON generadas para recrear los objetos iniciales.
La biblioteca «Jackson» permite construir:
- la cadena jSON de un objeto: new ObjectMapper().writeValueAsString(object);
- un objeto a partir de una cadena jSON: new ObjectMapper().readValue(jsonString, Object.class).
Ambos métodos pueden lanzar una excepción. A continuación se muestra un ejemplo.
El proyecto anterior es un proyecto Maven con el siguiente archivo [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>
- líneas 12-16: la dependencia que incluye la biblioteca «Jackson»;
La clase [Personne] es la siguiente:
package istia.st.json;
public class Personne {
// data
private String nom;
private String prenom;
private int age;
// fabricantes
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);
}
// getters y setters
...
}
La clase [Main] es la siguiente:
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 {
// la herramienta de serialización/deserialización
static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws IOException {
// creación de una persona
Personne paul = new Personne("Denis", "Paul", 40);
// visualización jSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// instanciación de Persona a partir de Json
Personne p = mapper.readValue(json, Personne.class);
// Visualización de persona
System.out.println("Personne=" + p);
// una tabla
Personne virginie = new Personne("Radot", "Virginie", 20);
Personne[] personnes = new Personne[]{paul, virginie};
// visualización Json
json = mapper.writeValueAsString(personnes);
System.out.println("Json personnes=" + json);
// diccionario
Map<String, Personne> hpersonnes = new HashMap<String, Personne>();
hpersonnes.put("1", paul);
hpersonnes.put("2", virginie);
// visualización Json
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
La ejecución de esta clase produce la siguiente salida en pantalla:
| 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}}
|
Del ejemplo se desprende lo siguiente:
- el objeto [ObjectMapper] necesario para las transformaciones jSON / Objeto: línea 11;
- la transformación [Personne] --> jSON: línea 17;
- la transformación jSON --> [Personne]: línea 20;
- la excepción [IOException] lanzada por ambos métodos: línea 13.