miércoles, 20 de marzo de 2019

Spring Boot Parte 2 - Externalizando la Configuración de la Aplicación

Algo muy importante y fácil de olvidar cuando creamos una aplicación, es que (si todo sale bien), esta vera la luz en un mundo productivo y será ahí cuando comenzará su vida útil, en un mundo fuera de la computadora del desarrollador.

Antes de llegar a su destino final (el ambiente de producción) una aplicación sana debería pasar por al menos dos ambientes. El primero es el ambiente del desarrollador, la computadora o computadoras en las que nunca nada falla ni sale mal :). El segundo ambiente debería ser el ambiente de integración continua; aquí será una computadora configurada en la que la aplicación se compilará y se ejecutarán una serie de pruebas automáticas que van desde las pruebas funcionales, hasta pruebas de carga y estrés. El tercer ambiente es un ambiente de testing, aquí un profesional altamente capacitado (el tester) hará su mayor esfuerzo por hacer que nuestra aplicación falle o "se rompa" en formas que nunca imaginamos al momento de escribir nuestro código productivo o de pruebas unitarias.

Una vez que nuestra aplicación sobrevive en los ambientes anteriores, llegará finalmente al ambiente productivo. En este ambiente es donde pasará su vida útil sirviendo a usuarios que no estuvieron involucrados dentro del proceso de construcción.
Como podemos ver, nuestra aplicación pasara a través de varios ambientes, algunos de los cuales no tendremos control y serán distintos al ambiente creado dentro de las máquinas de desarrollo. Debido a esto es muy importante tener un mecanismo que nos permita externalizar la configuración de nuestras aplicaciones Spring Boot y que se ejecute de la misma forma sin importar el ambiente en el que se encuentre. Algunos elementos que comúnmente cambian dependiendo del ambiente en el que ejecutemos la aplicación son: rutas, usuarios de conexiones a base de datos, puertos de funcionamiento, nombres de servidores, etc.

En este tutorial aprenderemos las formas que Spring Boot proporciona para colocar esta información de configuración fuera del código fuente de la aplicación (evitando con esto que tengamos que recompilarla cada vez que vayamos a moverla de ambiente), y las prioridades o precedencias que Spring Boot asigna a cada una de estas formas.

martes, 5 de marzo de 2019

Lombok, escribiendo menos código y logrando más cosas

En este tutorial no veremos un Framework, sino una herramienta Java que nos ayudará a simplificar mucho el código que escribimos en cada una de nuestras clases de datos; o sea, las clases que no contienen lógica de negocio, sino que nos ayudan a "transportar" información, como son los POJOs o los Value Objects.

Lombok es una librería Java que automáticamente se conecta a nuestro editor o herramienta de construcción (como pueden ser Maven o Eclipse) y que nos ayuda a generar código para las tareas más repetitivas de nuestras clases como son la generación de métodos setter y getter, constructores, toString, equals, etc. ¿Recuerdan en los tutoriales de Hibernate como la parte más tardada era generar las entidades por la cantidad de métodos getter y setter que estas tenían? Esas clases ocupan mucho espacio, en término de líneas de código; todo ese código podremos ahorrárnoslo con Lombok, ya que por medio de anotaciones le indicaremos qué es lo que queremos que genere.

En este tutorial aprenderemos cómo instalar Lombok en nuestro IDE y veremos algunos ejemplos de uso.

domingo, 24 de febrero de 2019

Spring Boot Parte 1 - Introducción y Hola Mundo

Comenzamos hoy con esta serie tutoriales sobre Spring Boot para renovarnos un poco, especialmente después de haber podido aprender algo de Spring Core y de Spring MVC

Seguramente muchos habrán escuchado de Spring Boot, sobre todo en el ámbito de los microservicios, pero ¿qué es Spring Boot? Spring Boot es un framework ligero que permite eliminar la mayor parte del trabajo de las configuraciones básicas de Spring. Es una de esas maravillas dentro de la maravilla que ya es Spring; literalmente en unos pocos segundos se puede tener una aplicación web recibiendo peticiones y lista para desplegarse, ya que contiene un conjunto inteligente de valores por default, por lo que requiere muy poca o ninguna configuración, y esa poca configuración se da en forma de anotaciones. No por nada ha sido una de las herramientas más utilizados por la comunidad de Spring desde su aparición en 2013.

Además de esto, Spring Boot proporciona un conjunto rico de herramientas integradas para sólo tener que preocuparnos de la lógica de la aplicación. A lo largo de esta serie de tutoriales iremos viendo y configurando cada una de estas herramientas.

sábado, 23 de febrero de 2019

Java Tutoriales está de regreso y tendrá algunos cambios

Ha sido un poco más de dos años desde la última vez que escribí. No ha sido por gusto sino por algunas causas de fuerza mayor; pero ya estoy finalmente de regreso.

Con esto quiero decirles que el blog tendrá algunos cambios, no se preocupen que todos serán para bien ^_^. En primer lugar los tutoriales se mantienen con su mismo formato, no se preocupen por eso; aunque ahora buscaré que sean un poco más cortos ya que me tomaba mucho tiempo escribirlos y esa es una de las razones por las que tardaba tanto en escribir nuevos tutoriales, y algunas veces tenía que dejarlos a medias por un buen rato, con tutoriales más cortos podré publicar más seguido.

En segundo lugar iré agregando no solamente tutoriales de Frameworks Java, sino también comenzaré a agregar tutoriales de Patrones de Diseño, UML, Buenas Prácticas y algo de Arquitectura de Software, para ir haciendo más completos los temas de los que trata; de vez en cuando incluso agregaré algunos temas que no tengan que ver con Java, pero sí con el mundo del desarrollo.

Tercero, debido a los cambios que ha habido con Java en los últimos años, en los tutoriales ya no usaré NetBeans sino que cambiaré a Eclipse; esta es una decisión que no me ha gustado mucho pero la verdad desde que la fundación Apache tomó el proyecto, y debido a que Oracle aún no ha terminado de donar completamente todos los módulos y plugins el IDE me parece que ya no funciona tan bien como antes. También, ya no usaremos los jars de las librerías directamente, sino que haremos la gestión de dependencias a través de Gradle, esto un poco con la idea de ir aprendiendo poco a poco cómo funciona esta herramienta.... ¿que por qué no uso Maven? Personalmente en mi trabajo llevo usando Maven desde hace unos 10 años, es una herramienta muy completa, madura y estable; también hay mucho material sobre cómo funciona en infinidad de lugares en la red; Gradle es nuevo para mi así que aprovecharé para aprender a usarlo mejor ;).

Finalmente, el código ya no será colocado en un sitio de Google para su descarga, sino que lo colocaré en Github, creo que así será más fácil para todos simplemente clonar el repositorio, y para mí será más fácil subirlo y actualizarlo.

Bien, me parece que eso es todo; además de una ligera actualización de imagen del blog, que ya le hacía mucha falta. El 21 de enero pasado este blog cumplió 10 años, así que ya era algo justo y necesario.

Siempre es bueno estar de regreso en casa, así que sea bienvenidos y gracias por la paciencia; también perdón a todas las personas a las que no pude contestarles en este tiempo, pero ya estoy de regreso.

Seguimos con las redes sociales del sitio, así que cualquier cosa no duden en ponerse en contacto. Por alguna razón Facebook eliminó el sitio anterior así que tuve que crear una nueva página de JavaTutoriales para poder estar en contacto; pueden encontrare en:

Twitter @JavaTutoriales
GMail: programadorjavablog@gmail.com
Faceboook: @JavaTutoriales

Esperen pronto la primera entrada de esta nueva etapa de JavaTutoriales!!

viernes, 19 de febrero de 2016

Spring MVC - Parte 2: Selección de manejadores de peticiones

En el tutorial anterior aprendimos cómo configurar nuestra aplicación para hacer uso de Spring MVC, además creamos dos Controllers con un método cada uno para manejar las peticiones recibidas por el usuario. En esa ocasión configuramos los métodos de una manera simple y directa para responder a las peticiones, sin embargo, Spring MVC permite varias formas de indicar a qué peticiones puede responder un manejador particular.

En este tutorial aprenderemos las distintas maneras que tenemos para indicar a qué peticiones debe responder un método dentro de un Controller, y cómo podemos tomar ventaja de estas formas para recibir distintos tipos de información desde nuestras páginas web.

miércoles, 23 de diciembre de 2015

Spring MVC - Parte 1: Configuración

En tutoriales anteriores hemos visto cómo trabajar con los módulos core de Spring, los cuales proporcionan el motor de inyección de dependencias y el contendor de beans. También tuvimos una serie completa de cómo trabajar con un framework MVC para aplicaciones web, Struts 2.

Spring tiene sus propios módulos que conforman un framework para el desarrollo de aplicaciones Java basadas en web, Este framework sigue el patrón de diseño MVC. A este conjunto de módulos se le conoce con el nombre de Spring MVC.

En esta serie de tutoriales aprenderemos a usar Spring MVC. En este primer tutorial aprenderemos cómo configurar el framework de dos formas, una a través de archivos de configuración en XML y otra a través de código Java y haremos el respectivo Hola Mundo.

miércoles, 14 de enero de 2015

Spring - Parte 5: Integración y manejo de transacciones con Hibernate

A lo largo de una serie de tutoriales hemos visto las bondades que nos ofrece el framework Spring para el manejo del ciclo de vida de beans, inyección de dependencia y configuración a través de anotaciones y de archivos de configuración en XML.

Además ya hemos visto cómo trabajar con el framework Hibernate para el manejo de persistencia de nuestra aplicación. Este framework nos permite olvidarnos de escribir queries a mano para centrarnos en la lógica y el flujo de la aplicación, además de proporcionar mecanismos de caché de datos.

En este tutorial veremos cómo integrar estos dos frameworks para que Spring se encargue del manejo de las sesiones y las transacciones que Hibernate usa.