6. Anexos
A continuación se explica cómo instalar las herramientas utilizadas en este documento en equipos con Windows 7 a 10. El lector deberá adaptarse a su propio entorno.
6.1. Instalación del Arduino IDE
La página web oficial de Arduino es [http://www.arduino.cc/]. Allí encontrarás el IDE de desarrollo para los Arduinos [http://arduino.cc/en/Main/Software]:
![]() | ![]() |
El archivo descargado [1] es un archivo zip que, una vez descomprimido, da como resultado la estructura de directorios [2]. Se puede ejecutar el archivo IDE haciendo doble clic en el ejecutable [3].
6.2. Instalación del controlador (driver) del Arduino
Para que el IDE pueda comunicarse con un Arduino, es necesario que este último sea reconocido por el PC anfitrión. Para ello, se puede proceder de la siguiente manera:
- conectar el Arduino a un puerto USB del ordenador host;
- el sistema intentará entonces encontrar el controlador del nuevo dispositivo USB. No lo encontrará. Indique entonces que el controlador se encuentra en el disco, en la ruta <arduino>/drivers, donde <arduino> es la carpeta de instalación del Arduino IDE.
6.3. Pruebas del IDE
Para probar el IDE, se puede proceder de la siguiente manera:
- iniciar el IDE;
- conectar el Arduino al PC mediante su cable USB. Por el momento, no incluir la tarjeta de red;
![]() | ![]() |
- en [1], selecciona el tipo de placa Arduino conectada al puerto USB;
- en [2], indica el puerto USB al que está conectada la Arduino. Para averiguarlo, desconecta la Arduino y anota los puertos. Vuelve a conectarla y comprueba de nuevo los puertos: el que se ha añadido es el de la Arduino;
Ejecuta algunos de los ejemplos incluidos en el IDE:
![]() |
El ejemplo se carga y se muestra:
![]() |
Los ejemplos que acompañan al IDE son muy didácticos y están muy bien comentados. El código de Arduino está escrito en lenguaje C y se compone de dos partes bien diferenciadas:
- una función [setup] que se ejecuta una sola vez al iniciar la aplicación, ya sea cuando esta se «carga » desde el PC host al Arduino, o bien cuando la aplicación ya está presente en el Arduino y se pulsa el botón [Reset]. Aquí es donde se coloca el código de inicialización de la aplicación;
- una función [loop] que se ejecuta continuamente (bucle infinito). Aquí es donde se coloca el núcleo de la aplicación.
Aquí,
- la función [setup] configura el pin n.º 13 como salida;
- la función [loop] la enciende y la apaga repetidamente: el LED se enciende y se apaga cada segundo.
1 ![]() |
El programa que se muestra se transfiere (se sube) al Arduino con el botón [1]. Una vez transferido, se ejecuta y el LED n.º 13 empieza a parpadear indefinidamente.
6.4. Conexión de red del Arduino
El Arduino o los Arduinos y el host PC deben estar en la misma red privada:
![]() |
Si solo hay un Arduino, se podrá conectar al PC host mediante un simple cable RJ 45. Si hay más de uno, el host PC y los Arduinos se conectarán a la misma red mediante un miniconcentrador.
Se conectarán el host PC y los Arduinos a la red privada 192.168.2.x.
- La dirección IP de los Arduinos viene fijada por el código fuente. Veremos cómo;
- la dirección IP del ordenador host se podrá configurar de la siguiente manera:
- selecciona la opción [Panneau de configuration\Réseau et Internet\Centre Réseau et partage]:
![]() |
- en [1], sigue el enlace [Connexion au réseau local]
![]() | ![]() |
- en [2], ver las propiedades de la conexión;
- en [4], ver las propiedades de la conexión IP v4 [3];
![]() |
- en [5], asignar la dirección IP [192.168.2.1] al ordenador host;
- en [6], asignar la máscara [255.255.255.0] a la red;
- confirmar todo en [7].
6.5. Prueba de una aplicación de red
Con el IDE, carga el ejemplo [Exemples / Ethernet / WebServer]:
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Introduce a continuación una dirección MAC y una dirección IP para tu controlador.
// La dirección IP dependerá de su red local:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
// Inicialice la biblioteca del servidor Ethernet
// con la dirección IP y el puerto que desee utilizar
// (el puerto 80 es el predeterminado para HTTP):
EthernetServer server(80);
void setup() {
// Abrir las comunicaciones serie y esperar a que se abra el puerto:
Serial.begin(9600);
while (!Serial) {
; // espera a que se conecte el puerto serie. Solo es necesario para Leonardo
}
// iniciar la conexión Ethernet y el servidor:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// Escuchar a los clientes entrantes
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// una solicitud HTTP termina con una línea en blanco
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// si has llegado al final de la línea (has recibido un carácter de salto de línea
// ) y la línea está en blanco, la solicitud HTTP ha finalizado,
// por lo que puedes enviar una respuesta
if (c == '\n' && currentLineIsBlank) {
// envía un encabezado de respuesta HTTP estándar
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// añade una etiqueta meta refresh, para que el navegador vuelva a cargar la página cada 5 segundos:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// muestra el valor de cada pin de entrada analógica
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// estás empezando una nueva línea
currentLineIsBlank = true;
}
else if (c != '\r') {
// has recibido un carácter en la línea actual
currentLineIsBlank = false;
}
}
}
// da tiempo al navegador web para recibir los datos
delay(1);
// cierra la conexión:
client.stop();
Serial.println("client disconnected");
}
}
Esta aplicación crea un servidor web en el puerto 80 (línea 30) en la dirección IP de la línea 25. La dirección MAC de la línea 23 es la dirección MAC indicada en la tarjeta de red del Arduino.
La función [setup] inicializa el servidor web:
- línea 34: inicializa el puerto serie en el que la aplicación va a generar registros. Vamos a seguir estos registros;
- línea 41: se inicializa el nodo TCP-IP (IP, puerto);
- línea 42: se inicia el servidor de la línea 30 en este nodo de red;
- líneas 43-44: se registra la dirección IP del servidor web;
La función [loop] implementa el servidor web:
- línea 50: si un cliente se conecta al servidor web, [server].available devuelve ese cliente; en caso contrario, devuelve null;
- línea 51: si el cliente no es null;
- línea 55: mientras el cliente esté conectado;
- línea 56: [client].available es verdadero si el cliente ha enviado caracteres. Estos se almacenan en un búfer. [client].available devuelve verdadero mientras este búfer no esté vacío;
- línea 57: se lee un carácter enviado por el cliente;
- línea 58: este carácter se muestra en la consola de registros;
- línea 62: en el protocolo HTTP, el cliente y el servidor intercambian líneas de texto.
- El cliente envía una solicitud HTTP al servidor web, remitiéndole una serie de líneas de texto que terminan con una línea vacía,
- a continuación, el servidor responde al cliente enviándole una respuesta y cerrando la conexión;
Línea 62: el servidor no realiza ninguna acción con los encabezados HTTP que recibe del cliente. Simplemente espera la línea vacía: una línea que contiene únicamente el carácter \n;
- líneas 64-67: el servidor envía al cliente las líneas de texto estándar del protocolo HTTP. Estas terminan con una línea vacía (línea 67);
- a partir de la línea 68, el servidor envía un documento a su cliente. Este documento lo genera dinámicamente el servidor y está en formato HTML (líneas 68-69);
- línea 71: una línea HTML específica que solicita al navegador del cliente que actualice la página cada 5 segundos. De este modo, el navegador solicitará la misma página cada 5 segundos;
- líneas 73-80: el servidor envía al navegador del cliente los valores de las seis entradas analógicas del Arduino;
- línea 81: se cierra el documento HTML;
- línea 82: se sale del bucle while de la línea 55;
- línea 97: se cierra la conexión con el cliente;
- línea 98: se registra el evento en la consola de registros;
- línea 100: se vuelve al inicio de la función loop: el servidor volverá a estar a la escucha de los clientes. Hemos dicho que el navegador del cliente volverá a solicitar la misma página cada 5 segundos. El servidor estará ahí para responderle de nuevo.
Modifica el código de la línea 25 para introducir la dirección IP de tu Arduino, por ejemplo:
Sube el programa al Arduino. Abre la consola de registros (Ctrl-M) (M mayúscula):
![]() | ![]() |
- en [1], la consola de registros. El servidor se ha iniciado;
- en [2], con un navegador, se solicita la dirección IP del Arduino. Aquí, [192.168.2.2] se traduce por defecto como [http://198.162.2.2:80];
- en [3], la información enviada por el servidor web. Si se visualiza el código fuente de la página del navegador, se obtiene:
Aquí se reconocen las líneas de texto enviadas por el servidor. Por parte de Arduino, la consola de registros muestra lo que el cliente le envía:
- líneas 2-9: encabezados estándar HTTP;
- línea 10: la línea vacía que las cierra.
Estudia bien este ejemplo. Te ayudará a comprender la programación del Arduino utilizada en el TP.
6.6. La biblioteca aJson
En el TP que vamos a escribir, los Arduinos intercambian líneas de texto en formato jSON con sus clientes. Por defecto, el Arduino IDE no incluye ninguna biblioteca para gestionar el jSON. Vamos a instalar la biblioteca aJson disponible en URL [https://github.com/interactive-matter/aJson].
![]() | ![]() |
- en [1], descarga la versión comprimida del repositorio de GitHub;
- descomprime la carpeta y copia la carpeta [aJson-master] [2] en la carpeta [<arduino>/libraries] [3], donde <arduino> es la carpeta de instalación delIDE Arduino;
![]() | ![]() | ![]() |
- en [4], cambia el nombre de esta carpeta a [aJson];
- en [5], su contenido.
Ahora, ejecuta el Arduino IDE:
![]() |
Comprueba que, en la sección de ejemplos, ahora dispones de ejemplos para la biblioteca aJson. Ejecuta y estudia estos ejemplos.
6.7. La tableta Android
Los ejemplos se han probado con la tableta Samsung Galaxy Tab 2.
Para probar los ejemplos con una tableta, primero debes instalar el controlador de la misma en tu equipo de desarrollo. El de la tableta Samsung Galaxy Tab 2 se puede encontrar en el URL [http://www.samsung.com/fr/support/usefulsoftware/KIES/]:
![]() |
Para probar los ejemplos, tendrás que conectar la tableta a una red (probablemente wifi) y conocer su dirección IP en dicha red. A continuación te explicamos cómo hacerlo (Samsung Galaxy Tab 2):
- enciende la tableta;
- busca entre las aplicaciones disponibles en la tableta (arriba a la derecha) la que se llama [paramètres] y tiene un icono de rueda dentada;
- en la sección de la izquierda, activa el wifi;
- en la sección de la derecha, selecciona una red wifi;
- una vez conectado a la red, pulsa brevemente sobre la red seleccionada. Aparecerá la dirección IP de la tableta. Anótala. La vas a necesitar;
Sin salir de la aplicación [Paramètres],
- selecciona a la izquierda la opción [Options de développement] (la última de las opciones);
- comprueba que, a la derecha, la opción [Débogage USB] esté marcada.
Para volver al menú, pulsa en la barra de estado de la parte inferior el icono del medio, el de una casa. Siguiendo en la barra de estado de la parte inferior,
- el icono más a la izquierda es el de «volver»: te lleva a la vista anterior;
- el icono situado más a la derecha es el de gestión de tareas. Puede ver y gestionar todas las tareas ejecutadas en un momento dado por su tableta;
Conecta tu tableta a tu PC con el cable USB que viene incluido.
Instala el adaptador wifi en uno de los puertos USB del PC y, a continuación, conéctate a la misma red wifi que la tableta. Una vez hecho esto, en una ventana DOS, escribe el comando [ipconfig]:
Tu PC tiene dos tarjetas de red y, por lo tanto, dos direcciones IP:
- la de la línea 9, que es la del PC en la red por cable;
- la de la línea 17, que es la del PC en la red wifi;
Anota estos dos datos. Los necesitarás. Ahora te encuentras en la siguiente configuración:
![]() |
La tableta tendrá que conectarse a su PC. Este suele estar protegido por un cortafuegos que impide que cualquier elemento externo establezca una conexión con el PC. Por lo tanto, debe desactivar el cortafuegos. Hágalo con la opción [Panneau de configuration\Système et sécurité\Pare-feu Windows]. A veces también es necesario desactivar el cortafuegos configurado por el antivirus. Esto depende de su antivirus.
Ahora, en su PC, compruebe la conexión de red con la tableta mediante el comando [ping 192.168.1.y], donde [192.168.1.y] es la dirección IP de la tableta. Deberías obtener algo parecido a esto:
Las líneas 4-7 indican que la tableta con la dirección IP [192.168.1.y] ha respondido al comando [ping].
6.8. Instalación de un JDK
En el URL se encuentra el [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (junio de 2016), y el JDK es la versión más reciente. A partir de ahora, denominaremos <jdk-install> a la carpeta de instalación del JDK.
![]() |
6.9. Instalación del gestor de emuladores Genymotion
La empresa [Genymotion] ofrece un emulador de Android de alto rendimiento. Este está disponible en URL y [https://cloud.genymotion.com/page/launchpad/download/] (junio de 2016).
Tendrás que registrarte para obtener una versión para uso personal. Descarga el producto [Genymotion] junto con la máquina virtual VirtualBox:

A partir de ahora, denominaremos <genymotion-install> a la carpeta de instalación de [Genymotion]. Ejecuta [Genymotion]. A continuación, descarga una imagen para una tableta:
![]() |
- en [1], añade el terminal virtual descrito en [2];
![]() |
- en [3], configura el terminal;
![]() | ![]() |
- en [4-5], personalice el terminal para su entorno;
- en [6], inicia el terminal virtual;
Si todo va bien, aparecerá la ventana del emulador de Android:

A veces, el emulador de Android no se inicia. En un equipo con Windows, puedes comprobar los dos puntos siguientes:
- comprueba que la máquina virtual [Hyper-V] no esté instalada. Si es necesario, desinstálala ([1-2]);
![]() | ![]() |
- y, a continuación, en el asistente de configuración [Centre Réseau et partage] [1]:
![]() |
![]() | ![]() |
- en [3], selecciona la tarjeta o tarjetas asociadas a la máquina virtual VirtualBox;
![]() |
- compruebe que, en [6], el controlador para VirtualBox esté marcado. Repita la operación para todas las tarjetas asociadas a la máquina virtual VirtualBox;
6.10. Instalación de Maven
Maven es una herramienta para gestionar las dependencias de un proyecto Java y mucho más. Está disponible en URL [http://maven.apache.org/download.cgi].
![]() |
Descarga y descomprime el archivo. Denominaremos <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, si, como en mi caso, tu {user.home} tiene un espacio en su ruta (por ejemplo, [C:\Users\Serge Tahé]), puede causar problemas en algunos programas. En ese caso, escribiremos algo como:
<!-- 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>
y, en la línea 7, evitaremos una ruta que contenga espacios.
6.11. Instalación de IDE en Android Studio
La edición Community de Android Studio está disponible en la versión de junio de 2016:
![]() |
Instala el IDE y, a continuación, ejecútalo. Siguiendo el procedimiento [1-8], instala los componentes del SDK Manager que se utilizan en los ejemplos que se muestran a continuación. Si decides instalar componentes más recientes, es probable que recibas avisos de Android Studio indicando que la configuración de los ejemplos hace referencia a componentes de SDK que no existen en tu entorno. En ese caso, podrás seguir las sugerencias que ofrece IDE.
![]() |
![]() |
![]() |
- en [9], solicita ver los detalles de los paquetes:
![]() |
- En [11], mencionado anteriormente, los ejemplos han utilizado SDK Build-Tools 23.0.3;
- en [9-12], más abajo, indica la carpeta donde has instalado el gestor de emuladores [Genymotion];
![]() | ![]() |
- en [13-18], se configura el tipo predeterminado de los proyectos;
![]() | ![]() |
- en [17], el valor predeterminado suele ser el correcto;
- en [18], asegúrate de tener un JDK 1.8;
A continuación, en [19-26], se desactiva el corrector ortográfico, que por defecto está configurado para el inglés;
![]() | ![]() |
![]() |
- A continuación, en [27-28], elige el tipo de atajos de teclado que prefieras. Puedes mantener los predeterminados de IntelliJ o elegir los de otro IDE con los que estés más acostumbrado;
![]() |
- A continuación, en [29-30], activa la visualización de los números de línea del código;
![]() |
- a continuación, en [31-34], indica cómo deseas gestionar el primer proyecto al iniciar el IDE y, a continuación, los proyectos siguientes;
![]() |
Con Android 2.1 (mayo de 2016), la tecnología [Instant Run] a veces plantea problemas. En este documento, la hemos desactivado:
![]() | ![]() |
- En [3-4], se ha desactivado todo;
6.12. Uso de los ejemplos
Los proyectos de Android Studio de los ejemplos están disponibles en ICI|. Descárgalos.
![]() |
Los ejemplos se han compilado con los elementos definidos anteriormente:
- JDK 1.8;
- Plataforma Android SDK 23 para la ejecución;
Las siguientes herramientas de SDK:
![]() |
Si tu entorno no se corresponde con el anterior, tendrás que modificar la configuración de los proyectos. Esto puede resultar bastante tedioso. En un primer momento, probablemente sea más fácil recrear un entorno de trabajo similar al anterior.
Inicie Android Studio y abra el proyecto [exemple-07], por ejemplo:
![]() | ![]() |
![]() |
- en [1-3], se abre el proyecto [Exemple-07];
- en [4], se comprueba el archivo [local.properties];
![]() | ![]() |
- en la línea 11 anterior, introduce la ubicación del Administrador de Android <sdk-manager-install> de SDK. Puedes encontrarlo siguiendo el procedimiento de [1-4]:
![]() |
Todos los ejemplos de este documento son proyectos Gradle configurados mediante un archivo [build.gradle] [1-2]:
![]() |
El archivo [build.gradle] del ejemplo 07 es el siguiente:
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
// sustituir por la versión actual del complemento de Android
classpath 'com.android.tools.build:gradle:2.1.0'
// Desde la versión 0.11 del complemento Gradle para Android, hay que utilizar android-apt >= 1.3
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
def AAVersion = '4.0.0'
dependencies {
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
repositories {
jcenter()
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "android.exemples"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
Dependiendo del entorno de Android (SDK y herramientas) que hayas configurado, es posible que tengas que cambiar las versiones de las líneas 8, 21, 22, 38 y 39. Android Studio te ayuda ofreciéndote sugerencias. Lo más sencillo es seguirlas.
Se puede acceder a los elementos del archivo [build.gradle] de otra forma:
![]() | ![]() |
- Las diferentes pestañas de [3] recogen los distintos valores del archivo [build.gradle]. Por lo tanto, se puede crear este último de esta forma, lo que permite evitar los problemas de sintaxis del archivo [build.gradle];
Otro aspecto que hay que comprobar es el archivo JDK utilizado por el IDE y el [5]:
![]() |
En [6], comprueba el archivo JDK.
Todos los ejemplos son proyectos Gradle con dependencias que hay que descargar. Para ello, se puede proceder de la siguiente manera:
![]() | ![]() ![]() |
- en [5], se compila el proyecto;
Una vez que el proyecto no presente errores, hay que crear una configuración de ejecución [1-8]:
![]() | ![]() |
- en [8], se puede indicar que siempre se quiere utilizar el mismo terminal para la ejecución. Por lo general, esta opción se marca para evitar tener que especificar el terminal que se va a utilizar en cada nueva ejecución. En este caso, la dejamos desmarcada porque, precisamente, vamos a probar diferentes dispositivos Android;
- una vez creada la configuración de ejecución, iniciamos el gestor de emuladores de Android [1-3];
![]() | ![]() |
- si el emulador de Android no se inicia, comprueba los puntos mencionados en el apartado 6.11;
Para iniciar la aplicación en el emulador, siga estos pasos [1-4]:
![]() | ![]() |
- En [2], debería aparecer el emulador que ha iniciado anteriormente;
![]() |
- en [5], la vista que muestra el emulador;
Conecta ahora una tableta Android a un puerto USB del PC y ejecuta la aplicación en ella:
![]() |
- En [6], selecciona la tableta Android y prueba la aplicación.
En [7], disponemos de terminales virtuales predefinidos. Vamos a aprender a añadir y eliminar algunos.
![]() |
![]() |
En la captura de pantalla anterior, todos los terminales propuestos funcionan con el API 22. Los eliminamos todos porque queremos trabajar con el API 23. Seguimos el procedimiento [2-3] para eliminar los terminales.

![]() |
- En [4-5], añadimos una tableta;
![]() |
- en [6], se selecciona un API. En el ejemplo anterior, seleccionamos el API 23 para un sistema Windows de 64 bits;
![]() |
- en [7], el resumen de la configuración realizada;
- en [8], se puede realizar una configuración más avanzada del terminal virtual;
![]() |
Una vez finalizado el asistente, el terminal creado aparece en [9].
Hecho esto, si se vuelve a ejecutar [Exemple-07], aparecerá la siguiente ventana:
![]() |
- En [1], aparece el nuevo terminal virtual;
- en [2], se pueden crear otros nuevos;
Realiza algunas pruebas para determinar cuál es el terminal virtual más adecuado para tu equipo. En este documento, los ejemplos se han probado principalmente con el emulador Genymotion.
Independientemente del terminal virtual que elijas, los registros se muestran en la ventana denominada [Logcat] [1-2]:

Consulta estos registros con regularidad. En ellos se indicarán las excepciones que han provocado el fallo de tu programa.
También puede depurar su programa con las herramientas habituales de depuración:
![]() | ![]() |
- En [2], se establece un punto de interrupción haciendo clic una vez en la columna situada a la izquierda de la línea de destino. Un nuevo clic cancela el punto de interrupción;
![]() |
- en [3], en el punto de interrupción, haz lo siguiente:
- [F6], para ejecutar la línea sin entrar en los métodos si la línea contiene llamadas a métodos,
- [F5], para ejecutar la línea entrando en los métodos si la línea contiene llamadas a métodos,
- [F8], para continuar hasta el siguiente punto de parada;
- [Ctrl-F2], para detener la depuración;
6.13. 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 añadirá la extensión [Advanced Rest Client] . Se puede proceder de la siguiente manera:
- acceder a la página web de [Google Web store] (https://chrome.google.com/webstore) con el navegador Chrome;
- buscar la aplicación [Advanced Rest Client]:
![]() |
- la aplicación estará entonces disponible para su descarga:
![]() |
- Para descargarla, tendrás que crear una cuenta de Google. A continuación, [Google Web Store] te pedirá que confirmes [1]:
![]() | ![]() |
- En [2], la extensión añadida está disponible en la opción [Applications] [3]. Esta opción aparece en cada nueva pestaña que crees (CTRL-T) en el navegador.
6.14. Gestión del « » jSON en Java
De forma transparente 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 la operación inversa deserializando las cadenas jSON generadas para recrear los objetos iniciales.
La biblioteca «Jackson» permite crear:
- 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 un IOException. 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 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;
// constructores
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 de JSON
String json = mapper.writeValueAsString(paul);
System.out.println("Json=" + json);
// instanciación de «Persona» a partir del JSON
Personne p = mapper.readValue(json, Personne.class);
// Visualización de una 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);
}
}
La ejecución de esta clase genera el siguiente mensaje en pantalla:
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.
6.15. Instalación de [WampServer]
[WampServer] es un conjunto de programas para desarrollar en PHP / MySQL / Apache en un equipo con Windows. Lo utilizaremos únicamente para SGBD y MySQL.
![]() | ![]() |
- En la página web de [WampServer] [1], elige la versión adecuada [2],
- el archivo ejecutable descargado es un instalador. Durante la instalación se solicita diversa información. Dicha información no afecta a MySQL, por lo que puede ignorarse. Al finalizar la instalación, aparece la ventana [3]. Se inicia [WampServer],
![]() | ![]() |
- en [4], el icono de [WampServer] se instala en la barra de tareas, en la parte inferior derecha de la pantalla [4],
- al hacer clic en él, aparece el menú [5]. Permite gestionar el servidor Apache y el SGBD MySQL. Para gestionar este último, se utiliza la opción [PhpPmyAdmin],
- y aparecerá la ventana que se muestra a continuación,

No daremos muchos detalles sobre el uso de [PhpMyAdmin]. En el documento se explica cómo utilizarlo.





























































































