miércoles, 28 de mayo de 2014

Curso M101J: "MongoDB for Java Developers" por MongoDB University

Me he inscrito en la página de MongoDB University para realizar el curso "MongoDB for Java Developers".
 
Este curso es gratuito, comenzó ayer día 27 de mayo y se extenderá durante 7 semanas; terminará el día 15 de Julio. Cada semana se cuelga en la página una nueva lección, con una serie de ejercicios para realizar y ser subidos a la web antes del comienzo de la siguiente lección. Al final del curso se debe realizar un examen online. Los ejercicios prácticos contarán un 50% y el examen el otro 50%, obteniendo un certificado de completación del curso si se obtiene una nota final por encima del 65%.

Los ejercicios propuestos están relacionados con la creación de un Blog como aplicación web, utilizando MongoDB, Spark y Freemarker.  En la primera lección se realiza una introducción sobre como instalar y utilizar estas herramientas.

Instalando MongoDB

  
En mi caso trabajaré en Ubuntu 12.04. En este caso la instalación se puede realizar a través del sistema de paquetería de la distribución:
$ sudo apt-get update
$ sudo apt-get install mongodb-server mongodb-clients
He optado por descargar los binarios desde la propia web oficial de MongoDB www.mongodb.org. En estos momentos la última versión es la 2.6.1. Descargamos el archivo mongodb-linux-x86_64-2.6.1.tgz y lo descomprimimos:
astwin@astwin-H87-HD3:~$ tar xzf mongodb-linux-x86_64-2.6.1.tgz

Con mongod inicializamos MongoDB. mongo inicializa el shell para interactuar desde la consola de comando con MongoDB. Antes de inicializar MongoDB se necesita especificar el directorio donde se alojará la base de datos. Por defecto, MongoDB buscará el directorio /data/db y si no lo encuentra, se producirá un error. Lo creamos:
astwin@astwin-H87-HD3:~/mongodb-linux-x86_64-2.6.1/bin$ sudo mkdir -p /data/db
astwin@astwin-H87-HD3:~/mongodb-linux-x86_64-2.6.1/bin$ sudo chmod 777 /data/db/
Ejecutamos MongoDB:
astwin@astwin-H87-HD3:~/mongodb-linux-x86_64-2.6.1/bin$ ./mongod
 
Podemos abrir el shell de MongoDB:
astwin@astwin-H87-HD3:~/mongodb-linux-x86_64-2.6.1/bin$ ./mongo
Comprobamos que funciona correctamente. Creamos una nueva colección llamada nombre, añado el mio, lo muestro y la borro:
 

Hola Mundo: Maven, Eclipse y el driver de MongoDB para Java

 
Dependencias del driver Java para incluir en el pom.xml:
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.12.2</version>
    </dependency>
Creamos una colección llamada hola y añadimos un documento desde el shell:
 
 
Creamos un proyecto Maven desde Eclipse y añadimos el driver de Java en el pom.xml. Creamos la clase hola_mundo_mongoDB que se conectará al servidor de MongoDB (en mi caso en local), obtendrá acceso a la base de datos test, a la colección hola y mostrará el contenido del único documento añadido:
 

Hola mundo: Framework Spark para aplicación web

 
Repositorio y dependencias del framework Spark (actualmente van por la version 2.0, pero en el curso se utiliza la 0.9.4):
    <repositories>
        <repository>
            <id>Spark repository</id>
            <url>http://www.sparkjava.com/nexus/content/repositories/spark/</url>
        </repository>
    </repositories>

  <dependencies>
       <dependency>
          <groupId>spark</groupId>
          <artifactId>spark</artifactId>
          <version>0.9.9.4-SNAPSHOT</version>
    </dependency>
Creamos una nueva clase, donde se utiliza Spark para mostrar "Hola mundo desde Spark":
 
 
Abrimos el navegador con la dirección http://localhost:4567/ y podemos ver que la aplicación web que hemos creado muestra la frase "Hola mundo desde Spark".
 

Hola mundo: Freemarker como motor de plantillas

 
Durante el curso se utilizará Freemarker como motor de plantillas para generar el código HTML. FreeMarker es un motor de plantilla, lo que significa que es una herramienta que crea texto como resultado. Está destinado a ser utilizado con el lenguaje de programación Java, especialmente con aplicaciones de Model View Controller. Éste separa la lógica del programa, la interfaz y los datos de un sitio web. FreeMarker permite a los diseñadores de interfaz realizar cambios sin necesidad de la parte lógica del programa para hacerlo.

Dependencias para añadir Freemarker a un proyecto Maven:
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.19</version>
</dependency>
Creamos una plantilla de código html en el archivo "hola.ftl":
<html>
<head>
    <title>¡Bienvenido!</title>
</head>
<body>
    <h1>Hola ${nombre}</h1>
</body>
</html>
Mediante Freemarker procesamos la plantilla para cambiar el valor de la variable ${nombre} y añadir nuestro nombre:
 


Hola mundo: Uniendo Spark y Freemarker

 
Unimos Spark y Freemarker:
 

Ahora al abrir http://localhost:4567/, Spark captura la petición get al entrar a la raíz de la página ("/"), Freemarker procesa la plantilla html y se devuelve al navegador:

  

Hola mundo: Spark, Freemarker y MongoDB

 
Ahora se integran todos, de manera que a la hora de procesar la plantilla y obtener el valor para la variable ${nombre}, nos conectamos a la base de datos MongoDB y obtenemos el documento que introdujimos en la colección hola:



Homeworks: Lección 1

 
En esta primera lección existen 4 tareas a realizar y subir a la plataforma del curso:
  1. La primera de ellas consiste en utilizar la aplicación mongorestore para cargar una base de datos con varias colecciones en MongoDB, realizar una query en una de ellas y subir el valor que contiene la clave "answer" del documento JSON obtenido. 
  2. La segunda es un test donde se muestran 5 posibles documentos JSON y tienes que seleccionar los que están escritos de forma correcta. 
  3. La tercera consiste en compilar y ejecutar un proyecto Maven, conteniendo una aplicación Java que devuelve un resultado numérico que debes introducir en la plataforma. 
  4. La última es otro proyecto Maven que integra MongoDB (los datos se han cargado en la realización del primer ejercicio), Spark y Freemarker, que una vez compilado y ejecutado te permite abrir una web en local que contiene el último código a subir en la plataforma. 
Una vez realizados, podemos comprobar como los 4 ejercicios se han completado de forma correcta:
 



No hay comentarios:

Publicar un comentario