6. Anexos
A continuación, explicamos cómo instalar las herramientas utilizadas en este documento en computadoras con Windows 7 a 10. El lector deberá adaptarse a su propio entorno.
6.1. Instalación del Arduino IDE
El sitio web oficial de Arduino es [http://www.arduino.cc/]. Ahí es donde se encuentra 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, genera 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, este último debe ser reconocido por el PC anfitrión. Para ello, se puede proceder de la siguiente manera:
- conectar el Arduino a un puerto USB de la computadora anfitriona;
- 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:
- ejecutar el IDE;
- conectar el Arduino al PC mediante su cable USB. Por el momento, no incluir la tarjeta de red;
![]() | ![]() |
- en [1], seleccione el tipo de placa Arduino conectada al puerto USB;
- en [2], indique el puerto USB al que está conectada la Arduino. Para averiguarlo, desconecte la Arduino y anote los puertos. Vuelva a conectarla y verifique nuevamente los puertos: el que se ha agregado 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 presiona el botón [Reset]. Ahí 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 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 comienza a parpadear indefinidamente.
6.4. Conexión de red del Arduino
El Arduino o los Arduinos y el PC (host) 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 mini-hub.
Se conectarán el host PC y los Arduinos a la red privada 192.168.2.x.
- La dirección IP de los Arduinos está definida por el código fuente. Veremos cómo;
- la dirección IP de la computadora host se puede 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 equipo 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, cargue 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
*/
#incluye <SPI.h>
#include <Ethernet.h>
// Ingresa 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 nueva línea
// ) y la línea está en blanco, la solicitud HTTP ha terminado,
// 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>");
// agregar 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 comenzando una nueva línea
currentLineIsBlank = true;
}
else if (c != '\r') {
// has recibido un carácter en la línea actual
currentLineIsBlank = false;
}
}
}
// dale tiempo al navegador web para que reciba 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 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; de lo 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 es 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 como eco 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, enviándole una serie de líneas de texto que terminan con una línea vacía,
- el servidor responde entonces al cliente enviándole una respuesta y cerrando la conexión;
Línea 62: el servidor no hace nada 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 es generado dinámicamente por el servidor y está en formato HTML (líneas 68-69);
- línea 71: una línea HTML especial que le pide al navegador del cliente que actualice la página cada 5 segundos. De esta manera, 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 6 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 espera 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 nuevamente.
Modifica el código en la línea 25 para ingresar 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, solicitamos 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 en el navegador, se obtiene:
Aquí se reconocen las líneas de texto enviadas por el servidor. Por el lado 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 una biblioteca para manejar 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;
- descomprima la carpeta y copie la carpeta [aJson-master] [2] en la carpeta [<arduino>/libraries] [3], donde <arduino> es la carpeta de instalación delIDE Arduino;
![]() | ![]() | ![]() |
- en [4], cambie el nombre de esta carpeta a [aJson];
- en [5], su contenido.
Ahora, ejecuta el Arduino IDE:
![]() |
Verifica que en la sección de ejemplos ya tengas 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 debe instalar el controlador de la misma en su equipo de desarrollo. El controlador 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, necesitarás conectar la tableta a una red (probablemente Wi-Fi) y conocer su dirección IP en esa red. A continuación te explicamos cómo hacerlo (Samsung Galaxy Tab 2):
- enciende tu tableta;
- busca entre las aplicaciones disponibles en la tableta (arriba a la derecha) la que se llama [paramètres] con un ícono de rueda dentada;
- en la sección de la izquierda, activa el wifi;
- en la sección de la derecha, selecciona una red Wi-Fi;
- una vez conectado a la red, toca brevemente la red seleccionada. Se mostrará 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] (justo al final de las opciones);
- Verifica que, a la derecha, la opción [Débogage USB] esté marcada.
Para regresar al menú, toca en la barra de estado de abajo el ícono del medio, el de una casa. También en la barra de estado de abajo,
- el ícono más a la izquierda es el de retroceder: te lleva a la vista anterior;
- el ícono más a la derecha es el de administración de tareas. Puede ver y administrar todas las tareas ejecutadas en un momento dado por su tableta;
Conecta tu tableta a tu PC con el cable USB que viene incluido.
Inserta la llave wifi en uno de los puertos USB del PC y luego 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 deberá conectarse a su PC. Este normalmente está protegido por un firewall que impide que cualquier elemento externo establezca una conexión con el PC. Por lo tanto, debe desactivar el firewall. Hazlo con la opción [Panneau de configuration\Système et sécurité\Pare-feu Windows]. A veces también es necesario desactivar el firewall que instala el antivirus. Esto depende de tu antivirus.
Ahora, en tu PC, verifica 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 similar a esto:
Las líneas 4 a 7 indican que la tableta con la dirección IP [192.168.1.y] respondió al comando [ping].
6.8. Instalación de un JDK
En el URL [http://www.oracle.com/technetwork/java/javase/downloads/index.html] (junio de 2016), se encuentra el JDK más reciente. A partir de ahora, llamaremos <jdk-install> a la carpeta de instalación del JDK.
![]() |
6.9. Instalación del administrador 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).
Deberá registrarse para obtener una versión para uso personal. Descargue el producto [Genymotion] junto con la máquina virtual VirtualBox:

A partir de ahora, llamaremos <genymotion-install> a la carpeta de instalación de [Genymotion]. Ejecuta [Genymotion]. A continuación, descarga una imagen para una tableta:
![]() |
- en [1], agrega 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 sale bien, aparecerá la ventana del emulador de Android:

A veces, el emulador de Android no se inicia. En una computadora con Windows, puedes revisar los siguientes dos puntos:
- verificar que la máquina virtual [Hyper-V] no esté instalada. Si es necesario, desinstálala [1-2];
![]() | ![]() |
- luego, en el asistente de configuración [Centre Réseau et partage] [1]:
![]() |
![]() | ![]() |
- en [3], seleccione la tarjeta o las tarjetas asociadas a la máquina virtual VirtualBox;
![]() |
- verifique que en [6], el controlador para VirtualBox esté marcado. Repita el procedimiento 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. 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, 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 luego ejecútalo. Siguiendo el procedimiento [1-8], instala los componentes del SDK Manager que se utilizan en los ejemplos que se presentan a continuación. Si decides instalar componentes más recientes, es probable que recibas advertencias 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, puedes seguir las sugerencias proporcionadas por IDE.
![]() |
![]() |
![]() |
- En [9], solicite ver los detalles de los paquetes:
![]() |
- En [11], arriba, los ejemplos utilizaron las herramientas de compilación SDK 23.0.3;
- en [9-12] a continuación, indique la carpeta donde instaló el administrador 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úrese 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 idioma 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], haz que se muestren los números de línea del código;
![]() |
- a continuación, en [31-34], indique cómo desea gestionar el primer proyecto al iniciar el IDE y, posteriormente, los proyectos siguientes;
![]() |
Con Android 2.1 (mayo de 2016), la tecnología [Instant Run] a veces presenta 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 coincide con el anterior, tendrás que modificar la configuración de los proyectos. Esto puede resultar bastante complicado. 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 verifica el archivo [local.properties];
![]() | ![]() |
- En la línea 11 anterior, ingresa 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 de Gradle configurados mediante un archivo [build.gradle] [1-2]:
![]() |
El archivo [build.gradle] del ejemplo 07 es el siguiente:
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
// reemplazar 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, debes usar 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 debas modificar las versiones en las líneas 8, 21, 22, 38 y 39. Android Studio te ayuda con sugerencias. Lo más sencillo es seguirlas.
Se puede acceder a los elementos del archivo [build.gradle] de otra manera:
![]() | ![]() |
- las diferentes pestañas de [3] recogen los distintos valores del archivo [build.gradle]. Por lo tanto, se puede construir este último de esta manera, lo que permite evitar los problemas de sintaxis del archivo [build.gradle];
Otro punto que hay que verificar es el archivo JDK utilizado por el IDE y el [5]:
![]() |
En [6], revisa el archivo JDK.
Todos los ejemplos son proyectos de Gradle con dependencias que deben descargarse. 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 desea utilizar el mismo dispositivo para la ejecución. Por lo general, esta opción se marca para evitar tener que especificar el dispositivo a utilizar en cada nueva ejecución. Aquí la dejamos desmarcada precisamente porque vamos a probar diferentes dispositivos Android;
- una vez creada la configuración de ejecución, iniciamos el administrador de emuladores de Android [1-3];
![]() | ![]() |
- si el emulador de Android no se inicia, revisa los puntos mencionados en el párrafo 6.11;
Para ejecutar la aplicación en el emulador, siga estos pasos [1-4]:
![]() | ![]() |
- En [2], debería aparecer el emulador que iniciaste anteriormente;
![]() |
- en [5], la vista que muestra el emulador;
Ahora conecta 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], contamos con terminales virtuales predefinidos. Aprenderemos a agregar 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], agregamos una tableta;
![]() |
- en [6], se elige un API. Arriba elegimos el API 23 para un 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], ahora se muestra la siguiente ventana:
![]() |
- En [1], aparece el nuevo terminal virtual;
- en [2], se pueden crear nuevos;
Realice pruebas para determinar cuál es el terminal virtual más adecuado para su 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 llamada [Logcat] [1-2]:

Revisa estos registros con regularidad. Ahí es donde se indicarán las excepciones que han provocado que tu programa se cuelgue.
También puede depurar su programa con las herramientas habituales de depuración:
![]() | ![]() |
- En [2], se coloca un punto de interrupción haciendo clic una vez en la columna 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 ingresar a 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 detención;
- [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 agregará la extensión [Advanced Rest Client] . Se puede proceder de la siguiente manera:
- visitar el sitio 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 descargar:
![]() |
- Para obtenerla, deberá crear una cuenta de Google. [Google Web Store] solicita luego la confirmación [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.
6.14. Administración del « » jSON en Java
De manera 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 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 lanzar un IOException. 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;
// 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 un objeto «Persona» a partir del JSON
Personne p = mapper.readValue(json, Personne.class);
// visualización de un usuario
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:
De este ejemplo, cabe destacar 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.
6.15. Instalación de [WampServer]
[WampServer] es un paquete de software para desarrollar en PHP / MySQL / Apache en una máquina con Windows. Lo utilizaremos únicamente para SGBD y MySQL.
![]() | ![]() |
- En el sitio 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. Esta información no se refiere a MySQL. Por lo tanto, puede ignorarse. Al finalizar la instalación, aparece la ventana [3]. Se ejecuta [WampServer],
![]() | ![]() |
- en [4]; el ícono de [WampServer] se instala en la barra de tareas, en la parte inferior derecha de la pantalla ([4]),
- al hacer clic en él, se muestra el menú [5]. Este permite administrar el servidor Apache y el SGBD MySQL. Para administrar este último, se utiliza la opción [PhpPmyAdmin],
- lo cual abre 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.





























































































