23. Anexos
A continuación, explicamos 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
En el URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (octubre de 2014), se encuentra el JDK más reciente. A partir de ahora, llamaremos <jdk-install> a la carpeta de instalación del JDK.
23.2. Instalación de Maven
Maven es una herramienta para gestionar las 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 predeterminado de la línea 4 puede causar problemas en algunos programas que utilizan Maven, si, como en mi caso, tu {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 que ya viene equipado con numerosos complementos relacionados con el marco Spring y también con una configuración de Maven preinstalada.
- visita el sitio web de SpringSource Tool Suite (STS) [1], para descargar la versión actual de STS [2A] [2B],
- el archivo descargado es un instalador que crea la estructura de archivos [3A] [3B]. En [4], se ejecuta el archivo ejecutable,
- en [5], aparece la ventana de trabajo de IDE después de 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 en STS la carpeta de instalación de Maven:
- en [1-2], se configura STS;
- en [3-4], se agrega una nueva instalación de Maven;
- en [5], se indica la carpeta de instalación de Maven;
- en [6], finalizamos el asistente;
- en [7], se establece la nueva instalación de Maven como la instalación predeterminada;
- en [8-9], se verifica el repositorio local de Maven, la carpeta donde se guardarán las dependencias que se descargarán y donde STS guardará los artefactos que se compilarán;
También hay que elegir un JDK (Java Development Kit) para ejecutar tanto los proyectos de Eclipse sin Maven como los que lo tienen, [1-5].
Con [4], se pueden agregar JDK (Java Development Kit) o JRE (Java Runtime Environment). Este último puede ejecutar archivos .class, pero no puede compilar los archivos .java para generarlos. El JDK puede hacer ambas cosas. Se elegirá un JDK porque ciertas operaciones de Maven requieren un JDK.
Para crear un proyecto de Eclipse, se seguirá el siguiente procedimiento:
- en [3], asigne un nombre al proyecto;
- en [4], seleccione una carpeta existente y vacía;
- en [5], el proyecto creado;
- en [5-8], crea 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 alguna de las dependencias del proyecto. Una empresa utilizará como nombre de paquete uno 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 con la norma CamelCase: cada palabra del nombre debe comenzar con una mayúscula seguida de minúsculas);
- en [15], verifique el paquete;
- en [16], marque la casilla. Esto solicita que se genere el método estático [main]. Este método convierte a 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. Se ejecutará entonces 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 con [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 archivo [Build Path] del proyecto;
- a [2], el proyecto está configurado para usar un JVM 1.5;
- en [3], elimine esta dependencia;
- en [4], agregue una nueva dependencia;
- en [5], se agrega un JVM;
- en [6], se selecciona el JVM de la entrada;
Una vez hecho esto, validamos todo y pasamos 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 la versión 1.7 (o 1.8) inclusive;
- en [9], se valida;
- en [10], el proyecto así reconfigurado ya no debe presentar errores;
Además, el proyecto importado puede utilizar una codificación de caracteres UTF-8. Siga estos pasos para establecer esta codificación en el proyecto importado [1-4]:
Además, puede ser útil desactivar la revisió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:
23.4. Instalación de la Edición Comunitaria de SGBD MySQL5
La edición comunitaria de SGBD MySQL5 se encuentra (junio de 2015) en URL [https://dev.mysql.com/downloads/mysql/]:
La instalación se realiza de la siguiente manera:
- En [8], se utilizó la contraseña [root]. En este documento, las credenciales del administrador de SGBD y MySQL son [root / root];
Una vez instalado MySQL 5, abra la página de administración de servicios de Windows:
- [1]: ícono de Windows en la esquina inferior izquierda;
- En [8], configura el servicio [MySQL56] en inicio manual para que no consuma recursos innecesariamente. Lo iniciarás desde la página de servicios cada vez que lo necesites;
23.5. Instalación de EMS y MyManager
El sitio [http://www.sqlmanager.net/en/] ofrece clientes gratuitos para administrar seis tipos de SGBD:
La ventaja es que todos presentan la misma interfaz para gestionar los SGBD. Esto es ideal para este documento, en el que queremos gestionar los seis SGBD. No es necesario aprender a usar un nuevo cliente cada vez que 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 actualmente (mayo de 2015) son 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
La versión SGBD de Oracle Database Express Edition 11g, Release 2, está disponible en la versión URL (junio de 2015): [http://www.oracle.com/technetwork/database/database-techno logies/express-edition/downloads/index.html]:
La instalación se lleva a cabo de la siguiente manera:
- En [6], se ingresa la contraseña [system]. En este documento, las credenciales del administrador de Oracle son [system / system];
La instalación configura 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:
Se deben iniciar dos servicios:
- [OracleXETNSListener], que escucha en el puerto 1521 las solicitudes dirigidas a SGBD;
- [OracleServiceXE], que es el SGBD;
Para administrar Oracle, utilizaremos el cliente [OraManager] (párrafo 23.5). Para poder utilizarlo, primero hay que instalar 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]. Se debe descargar la versión de 32 bits, ya que [OraManager] es un cliente de 32 bits:
La instalación de este paquete 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 donde instaló Oracle Express;
Ahora, conectemos el cliente [OraManager] a Oracle SGBD:
- en [2], el nombre del grupo puede elegirse libremente;
- 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 lleva a cabo 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 configura 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 párrafo 23.5) a SGBD y PostgreSQL:
- en [2], los identificadores son [postgres / postgres];
- en [3], nos conectamos 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 del administrador de SGBD son [db2admin / db2admin];
Nota: puede que te den ganas de saltarte este paso. No lo hagas. 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:
Hazlo para todos los servicios [DB2*] mencionados anteriormente. Solo es necesario iniciar el servicio [DB2 - DB2COPY1] para los fines de este documento.
Ahora conectemos el cliente [Db2Manager] (véase el párrafo 23.5) a SGBD y 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 lleva a cabo de la siguiente manera:
- En [1], pon 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. Sin embargo, para mantener la coherencia con los clientes de los demás SGBD, utilizaremos el cliente [MsManager] (véase el párrafo 23.5).
- en [1], anote el nombre de SGBD;
- en [2], se ha establecido la contraseña msde. En este documento, las credenciales del administrador de SGBD son [sa / msde];
Una vez hecho esto, ejecutamos 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 en [3];
- en [4], siempre para este documento, hay que indicar que SGBD espera las solicitudes de los clientes 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 párrafo 23.5):
- en [3], ingrese el nombre anotado en [1];
- en [4], los identificadores son [sa / msde];
23.10. Instalación de SGBD Firebird
Firebird 2.5.4 (SGBD) está disponible a partir de la versión 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, revisemos el modo de inicio del servicio de Windows creado:
Ahora conectemos el cliente [IBManager] (véase el párrafo 23.5) al Firebird SGBD instalado:
- en [1], la contraseña es masterkey;
23.11. Instalación de la extensión 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 agregará la extensión [Advanced Rest Client]. Se puede proceder de la siguiente manera:
- la aplicación estará entonces disponible para descargar:
- Para obtenerla, deberá crear una cuenta de Google. [Google Web Store] solicita luego la confirmación de [1]:
- En [2], la extensión agregada está disponible en la opción [Applications] [3]. Esta opción aparece en cada nueva pestaña que crees (CTRL-T) en el navegador.
23.12. Manejo de jSON en Java
De manera tra nsparente para el desarrollador, el marco [Spring MVC] utiliza la biblioteca jSON [Jackson]. Para ilustrar qué es el jSON (Notación de objetos JavaScript), presentamos aquí un programa que serializa objetos en jSON y realiza el proceso inverso 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 generar una excepción. A continuación se muestra un ejemplo.
El proyecto anterior es un proyecto de 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 incorpora la biblioteca «Jackson»;
La clase [Personne] es la siguiente:
package istia.st.json;
public class Personne {
// datos
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 una 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 de 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 de JSON
json = mapper.writeValueAsString(hpersonnes);
System.out.println("Json hpersonnes=" + json);
}
}
Al ejecutar esta clase, se muestra lo siguiente 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}}
|
De este ejemplo, cabe destacar:
- 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.