Menu

Herramientas Utilizadas en Servicio REST Java + Spring Boot + MySQL

Java 8

Java 8 es la versión más reciente de Java que incluye nuevas características, mejoras y correcciones de bugs para mejorar la eficacia en el desarrollo y la ejecución de programas Java.


Funciones de Java 8

A continuación, se muestra un breve resumen de las mejoras que se incluyen en Java 8:

  • Métodos de extensión virtual y expresión Lambda
    Una de las funciones destacables de Java SE 8 es la implantación de expresiones Lambda y funciones adyacentes a la plataforma y el lenguaje de programación Java.
  • API de fecha y hora
    Esta nueva API permitirá a los administradores gestionar datos de fecha y hora de forma mucho más natural y fácil de comprender.
  • Motor de JavaScript Nashhorn
    Nueva implantación ligera de alto rendimiento del motor de JavaScript integrada en JDk y disponible en las aplicaciones Java mediante las API existentes.
  • Seguridad mejorada
    Sustitución de la lista de métodos sensibles al emisor mantenida a mano existente por un mecanismo que identifica con mayor precisión dichos métodos y permite detectar a los emisores de forma fiable.

 

Link de Descarga: https://www.java.com/es/

 

 

Spring Boot

 

Spring Boot es una de las tecnologías dentro del mundo de Spring de las que más se está hablando últimamente. ¿Qué es y cómo funciona Spring Boot? Para entender el concepto primero debemos reflexionar sobre como construimos aplicaciones con Spring Framework.

Fundamentalmente existen tres pasos a realizar. El primero es crear un proyecto Maven/Gradle y descargar las dependencias necesarias. En segundo lugar, desarrollamos la aplicación y en tercer lugar la desplegamos en un servidor. Si nos ponemos a pensar un poco a detalle en el tema, únicamente el paso dos es una tarea de desarrollo. Los otros pasos están más orientados a infraestructura.

SpringBoot nace con la intención de simplificar los pasos 1 y 3 y que nos podamos centrar en el desarrollo de nuestra aplicación. ¿Cómo funciona? El enfoque es sencillo y lo entenderemos realizando un ejemplo. Para ello nos vamos a conectarnos al asistente de Boot.

El asistente es intuitivo, elegimos el package al que queremos que nuestras clases pertenezcan, elegimos el nombre del proyecto y por último las dependencias. Eso sí ya no se trata de elegir jar por jar, sino que tipo de aplicación deseamos. En este caso voy a construir una aplicación Spring MVC y elijo la dependencia web. Pulsamos generar proyecto y nos descargará un proyecto Maven en formato zip. Descomprimimos el proyecto y este es su contenido.

 

Una aplicación de Spring con estructura Maven totalmente configurada. El siguiente paso es usar Maven y escribir en línea de comandos.

mvn eclipse

Esto convertirá el proyecto de Maven en un proyecto para Eclipse que podamos abrir con el editor. Vamos a ver el contenido de la clase HolaSpringBootApplication.

Esta clase es la encargada de arrancar nuestra aplicación de Spring a diferencia de un enfoque clásico no hace falta desplegarla en un servidor web ya que Spring Boot provee de uno. Vamos a modificarla y añadir una anotación.

Recordemos que la anotación @ComponentScan escanea los packages buscando clases que SpringFramework pueda inyectar. En este caso vamos a construir un controlador de HolaMundo.

Es momento de ejecutar nuestra aplicación como una aplicación de consola. Esto abrirá un servidor web y accederemos a la url.

 Maven

 Maven es una herramienta open-source, que se creó en 2001 con el objetivo de simplificar los procesos de build (compilar y generar ejecutables a partir del código fuente).

Antes de que Maven proporcionara una interfaz común para hacer builds del software, cada proyecto solía tener a alguna persona dedicada exclusivamente a configurar el proceso de build.

Normalmente cuando nosotros trabajamos con Java/JavaEE el uso de librerías es algo común como en cualquier otro lenguaje de programación.

 

 

Librerías y limitaciones

El concepto de librería es un concepto que a veces es limitado. Por ejemplo, nosotros podemos querer utilizar la librería A en nuestro proyecto. Sin embargo, no nos valdrá con simplemente querer utilizar la librería, sino que además necesitaremos saber que versión exacta de ella necesitamos.

¿Es esto suficiente? Lamentablemente no lo es, una librería puede depender de otras librerías para funcionar de forma correcta. Así pues, necesitamos más información para gestionarlo todo de forma correcta.

Maven y Artefactos

Maven solventa este problema a través del concepto de Artefacto. Un Artefacto puede verse como una librería con esteroides (aunque agrupa más conceptos). Contiene las clases propias de la librería, pero además incluye toda la información necesaria para su correcta gestión (grupo, versión, dependencias etc.).

Maven Repositorio y Artefactos

Una vez definidos correctamente todos los Artefactos que necesitamos, Maven nos provee de un Repositorio donde alojar, mantener y distribuir estos. Permitiéndonos una gestión correcta de nuestra librerías, proyectos y dependencias.

El uso de Maven es hoy una necesitad en cualquier proyecto Java/Java EE de cierta entidad.

Postman

Postman surgió originariamente como una extensión para el navegador Google Chrome. Hoy en día dispone de aplicaciones nativas para MAC y Windows y están trabajando en una aplicación nativa para Linux (disponible en versión beta).

Está compuesto por diferentes herramientas y utilidades gratuitas (en la versión free) que permiten realizar tareas diferentes dentro del mundo API REST: creación de peticiones a APIs internas o de terceros, elaboración de test para validar el comportamiento de APIs, posibilidad de crear entornos de trabajo diferentes (con variables globales y locales), y todo ello con la posibilidad de ser compartido con otros compañeros del equipo de manera gratuita (exportación de toda esta información mediante URL en formato JSON).

Además, dispone de un modo cloud colaborativo (de pago) para que equipos de trabajo puedan desarrollar entre todos colecciones para APIs sincronizadas en la nube para una integración más inmediata y sincronizada.

Entremos en materia: colecciones de APIs

El interés fundamental de Postman es que lo utilicemos como una herramienta para hacer peticiones a APIs y generar colecciones de peticiones que nos permitan probarlas de una manera rápida y sencilla.

Las colecciones son carpetas donde se almacenan las peticiones y que permiten ser estructuradas por recursos, módulos o como el equipo lo desee. En la siguiente imagen vemos un ejemplo de estructura de una colección de prueba de uno de los proyectos desarrollados en Paradigma: Security Hub.

Como vemos, se puede definir el tipo de petición (GET, POST, etc.), tokens de autenticación, cabeceras asociadas a la petición, etc., todo de una manera muy sencilla.

Todas las llamadas almacenadas en nuestra colección pueden ser exportadas a múltiples lenguajes haciendo clic en el apartado Generate Code que podéis ver en la captura anterior. Os dejo un ejemplo de cómo exporta una llamada GET para poder ser utilizada automáticamente desde código Python:

import requests

 

url = “http://localhost:8000/api/customers/

 

headers = {
    ‘content-type’: “application/json”,

 

    ‘cache-control’: “no-cache”,
    ‘postman-token’: “1432412f-9bc5-be13-a8a4-6f93e31feba4”

 

    }
response = requests.request(“POST”, url, headers=headers)
print(response.text)

 

Este snippet de código permite ejecutar la petición desde una aplicación Python tal cual la ejecuta Postman desde su interfaz, pintando la respuesta del servidor por la consola.

Entornos de trabajo

Uno de los puntos más potentes de Postman, desde mi punto de vista, es la posibilidad de definir todas las variables que necesites y clasificarlas por entornos de trabajo. Esto es muy útil cuando tienes diferentes proyectos o cuando necesitas configurar múltiples entornos para un mismo proyecto (por ejemplo, diferentes cabeceras, URLs de cada uno de los entornos de trabajo – local, preproducción o incluso producción, etc.).

Para configurar los entornos y sus variables, verás que en la esquina superior derecha de la interfaz hay un desplegable en el que se puede leer “No environments”. Si haces clic en el botón de ajustes que está al lado, aparece una opción llamada “Manage environments” donde se pueden configurar cada uno de ellos:

Una vez configuradas, su uso en cualquier llamada y en cualquier colección es muy simple. Si por ejemplo definimos la url del recurso con el nombre host_url como variable de entorno (o global), puedes utilizar esta variable escribiendo la clave entre dobles llaves. Por ejemplo:

De esta manera, es muy simple cambiar la URL de todas las llamadas definidas en la colección (únicamente deberás seleccionar el entorno correspondiente).

Desarrolla test de APIs en pocos minutos y automatízalos

Otra de las funcionalidades interesantes, sobre todo para los QAs de los equipos, es la posibilidad de automatizar de una manera sencilla tests de integración para nuestros proyectos. En cada una de las llamadas, Postman nos proporciona una pestaña tests en la que poder configurar los tests que se quieran.

Postman se apoya en código Javascript para programar sus tests. ¿No sabes cómo programar en JS? No te preocupes, Postman se ha preocupado de ofrecer un conjunto de snippets de tests que permiten hacer que desarrollar tus tests no sea más que un juego de niños. En el siguiente enlacepuedes ver más documentación al respecto de los tests.

Uno de los aspectos más demandados, y que Postman ha desarrollado hace no mucho, es la posibilidad de automatizar los tests para que nuestro software IC ejecute las pruebas dentro del flow de construcción de nuevas versiones. Todo aquel que esté interesado, puede visitar el blog de Postman, donde se cuenta paso a paso cómo integrarlos en Jenkins.

Documenta tu API

En cada colección que generes en tu API, Postman da la posibilidad de generar una documentación web de acceso libre donde pinta todas las llamadas con los headers definidos y, justo al lado, un ejemplo de la llamada para ser probada inmediatamente con cURL:

Para ver la documentación, hacer clic en la colección en el símbolo “>” y en el menú que aparece a la derecha, hacer clic en View Docs:

 

 

 

MySQL

  • Es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.

Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.

También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet.

Utilidad de MySQL 

Como comentábamos anteriormente este gestor de base de datos es muy utilizado en desarrollo web, ya que permite a los desarrolladores y diseñadores, realizar cambios en sus sitios de manera simple, con tan sólo cambiar un archivo, evitando tener que modificar todo el código web. Esto se debe a que MySQL, trabaja con un sistema centralizado de gestión de datos, que permite realizar cambios en un solo archivo y que se ejecuta en toda la estructura de datos que se comparte en la red. Además, permite incluir noticias e información rápidamente en un sitio web, utilizando un simple formulario, sin tener que tocar el código del website.

Cuando se combina con PHP, se convierte en una mezcla poderosa, que siempre es tomada en cuenta para realizar aplicaciones cliente/servidor, que requieran el uso de una base de datos rápida, segura y potente.

MySQL, también ofrece la posibilidad de realizar programas o aplicaciones que requieran acceso a plataformas de base de datos rápidas. Acá tiene un poco de competencia, como PostgreSQL y otras opciones, pero al ser libre y rápido, siempre va a tener una ventaja frente a sus rivales.

 

 

 

 

Eclipse

Eclipse es una plataforma de desarrollo de código abierto basada en Java. Por si misma, es simplemente un marco de trabajo y un conjunto de servicios para la construcción del entorno de desarrollo de los componentes de entrada. Afortunadamente, Eclipse tiene un conjunto de complementos, incluidas las Herramientas de Desarrollo de Java (JDT)

Mientras que la mayoría de los usuarios están felices de usar Eclipse como un IDE de Java, sus ambiciones no se detienen ahí. Eclipse también incluye el Entorno de Desarrollo de Complementos (PDE), que es de interés principalmente para los desarrolladores que quieren extender Eclipse, dado que les permite construir herramientas que se integran sin dificultades con el entorno de Eclipse. Dado que todo en Eclipse es un complemento, todos los desarrolladores de herramientas tienen un campo de juego de nivel para ofrecer extensiones a Eclipse y para proporcionar un entorno de desarrollo integrado y unificado para los usuarios.

Esta paridad y consistencia no está limitada a las herramientas de desarrollo de Java. Aunque Eclipse se escribe en el lenguaje Java, su uso no se limita al lenguaje Java. Por ejemplo, los complementos se encuentran disponibles o planificados para incluir soporte para los lenguajes de programación como C/C++ y COBOL. El marco de trabajo de Eclipse puede también utilizarse como base para otros tipos de aplicaciones que no se relacionen con el desarrollo del software, como los sistemas de gestión de contenido.

El ejemplo principal de una aplicación basada en Eclipse es el entorno de trabajo de IBM® WebSphere® Studio, que forma la base de la familia de IBM de las herramientas de desarrollo de Java. WebSphere Studio Application Developer, por ejemplo, agrega soporte para JSP, servlets, EJB, XML, servicios web y el acceso a la base de datos.

Principales características

Perspectivas, editores y vistas: en Eclipse el concepto de trabajo está basado en las perspectivas, que no es otra cosa que una preconfiguración de ventanas y editores, relacionadas entre sí, y que nos permiten trabajar en un determinado entorno de trabajo de forma óptima.

Gestión de proyectos: el desarrollo sobre Eclipse se basa en los proyectos, que son el conjunto de recursos relacionados entre sí, como puede ser el código fuente, documentación, ficheros configuración, árbol de directorios, … El IDE nos proporcionará asistentes y ayudas para la creación de proyectos. Por ejemplo, cuando creamos uno, se abre la perspectiva adecuada al tipo de proyecto que estemos creando, con la colección de vistas, editores y ventanas preconfigurada por defecto.

Depurador de código: se incluye un potente depurador, de uso fácil e intuitivo, y que visualmente nos ayuda a mejorar nuestro código. Para ello sólo debemos ejecutar el programa en modo depuración (con un simple botón). De nuevo, tenemos una perspectiva específica para la depuración de código, la perspectiva depuración, donde se muestra de forma ordenada toda la información necesaria para realizar dicha tarea.

Extensa colección de plug-ins: están disponibles en una gran cantidad, unos publicados por Eclipse, otros por terceros. Al haber sido un estándar de facto durante tanto tiempo (no el único estándar, pero sí uno de ellos), la colección disponible es muy grande. Los hay gratuitos, de pago, bajo distintas licencias, pero casi para cualquier cosa que nos imaginemos tenemos el plug-in adecuado.

Plug-in JDT

Dado el extenso uso que se le da, nos permitimos dedicarle un apartado específico. Es el plug-in encargado del soporte del IDE al lenguaje Java, incluido en la versión estándar de Eclipse por defecto, que como ya hemos explicado, no está concebido para dar soporte a un lenguaje determinado.

Cuando abrimos un proyecto Java, se abre la perspectiva correspondiente. Está formada por dos vistas: Outline y Package Explorer. La vista Outline se encarga de mostrar el esquema de la clase que tenemos abierta en el editor activo en ese momento. Una cuestión muy interesante es que cuando tenemos una vista activa, se visualizan en la barra de herramientas iconos extra, que nos permitirán el acceso rápido a las funciones más usadas de dicha vista.

El coloreado de código en el editor es una característica muy interesante, realizando para ello el reconocimiento sintáctico de todas aquellas palabras que son reservadas en el lenguaje Java.

Asímismo nos permite completar el código automáticamente (code completion), con sugerencias dependientes del contexto, lo cual nos permitirá escribir código más rápidamente.

Se podrá configurar el formateo de código, la forma de escribir los comentarios, incluyendo comentarios para la posterior creación del Javadoc. Podemos generar los esqueletos de clase automáticamente, generación de métodos getters y setters de manera automática, y un largo etcétera de funcionalidades, que hoy en día nos parecen típicos, pero muy útiles.

Proceso de instalación

Es tan sencillo como descargárselo de la página de Eclipse y descomprimir el fichero en la ubicación deseada. No hay nada más que hacer, ejecutarlo, configurarlo y listo.

Versiones

Está muy bien, ¡qué fácil es de instalar!, pero ¿qué versión me bajo? En la página de descargas de Eclipse podemos ver todas las versiones que se muestran en la imagen que acompaña a estas líneas.

Lo primero, y bastante obvio es elegir el sistema operativo para el cual va a ser instalado: Windows, Linux o Mac OS X (desplegable de la parte superior del listado). Después deberemos ver el listado de versiones preconfiguradas que se nos ofrecen, esto es la misma base, pero con diferentes plug-ins instalados, ajustándose a las necesidades más conocidas para las distintas necesidades de programación. En la fecha actual hay 12 versiones disponibles, que no encontráis la vuestra, no olvidéis buscar en las “Developer Builds” donde podemos encontrar la que se adapte a nuestras necesidades, pero en desarrollo. Los programadores de PHP podrán encontrar en este listado la versión de Eclipse adecuada para ellos:

Si aun así no encontramos la versión que se adapta a nuestras necesidades, podemos buscar entre la extensa lista de software basado en eclipse.

Existen otras versiones, basadas también en Eclipse, y desarrolladas por terceros, como puede ser el caso de STS (Spring Tool Suite), Amzi! Prolog + Logic ServerGoclipseMyEclipseTimeStormAptana StudioZend Studio,… La lista de IDEs basados en Eclipse es enorme, con lo cual nos hacemos una idea de la importancia de este.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *