Cookies

Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Si continúas navegando consideramos que aceptas su uso.

Ingeniero Java

Java

Java es uno de los lenguajes de programación más utilizados en el mundo. La principal característica introducida por Java en el lejano 1995 fue incorporar una máquina virtual sobre la que ejecutar sus binarios, haciendo más fácil ejecutar un mismo programa en diferentes arquitecturas y/o plataformas instalando en éstas la máquina Java correspondiente. Otra de sus principales características es su recolector de basura (Garbage collector) que lo diferenció en su momento de otros lenguajes de programación y permite al desarrollador abstraerse de la gestión de memoria en el día a día.

GraalVM, uno de los proyectos más punteros lanzado por Oracle.

La gran adopción de Java, la gran cantidad de herramientas y librerías open-source en su ecosistema y su buen rendimiento lo han convertido en una de las plataformas más atractivas para elegirla como tecnología referencia en el Backend. La nueva versión LTS Java 21 ha modernizado significativamente tanto el lenguaje como la plataforma con funcionalidades que lo hacen mucho más adecuado para el desarrollo de microservicios Cloud Native como GraalVM y Project Loom.

Experiencia

Tengo más de cinco años de experiencia en Java, utilizando Java como base en diversas tareas de desarrollo en una plataforma digital con arquitectura de microservicios. Mi principal cometido ha sido entregar código óptimo y funcional que cumpla con los estándares de rendimiento esperados, que cumpla con las especificaciones del cliente y con las necesidades de los usuarios. También he trabajado en encontrar puntos de mejora tanto a nivel funcional como a nivel de rendimiento de la plataforma. Éstas serían las principales actividades llevadas a cabo desarrollando en Java.

http API REST

Implementación y diseño de APIs utilizadas por diferentes tecnologías cliente.

system_update_alt Desarrollo Backend

Análisis de plataforma backend nueva o existente. Optimización y mejora continua de aplicaciones heredadas.

swap_horiz Programación reactiva

Uso de la programación reactiva para poder implementar servicios no bloqueantes y mayor escalabilidad con menos recursos.

hexagon Arquitectura de microservicios

Desarrollo de microservicios utilizando patrones arquitecturales como Event-driven Architecture, Eventual Consistency y CQRS.

directions_boat Kubernetes y Docker

Orquestación de microservicios empaquetados en contenedores Docker con Kubernetes.

Spring Boot

Dentro del ecosistema Java, Spring Boot es el framework por excelencia para el desarrollo de servicios web. Dentro del mundo Spring, tengo experiencia en los siguientes paquetes.

  1. Spring Web
    Starter base para desarrollar servicios con APIs REST bloqueantes y/o aplicaciones web tradicionales.
  2. Spring Webflux
    Starter base para desarrollar servicios con APIs REST con programación reactiva.
  3. Spring Security
    Starter con soporte a infinidad de opciones de seguridad. Soporte OAuth2 y OIDC.
  4. Spring Data R2DBC
    Starter para realizar acceso a bases de datos relacionales a través de una API reactiva.
  5. Spring Data JDBC
    Starter para realizar acceso a bases de datos relacionales a través de JDBC.
  6. Spring Data Redis Reactive
    Módulo para comunicar un servicio con Redis. Provee de una extensa API para ejecutar comandos Redis.
  7. Spring AMQP/RabbitMQ
    Módulo para conectar con RabbitMQ con el objetivo de poder escuchar y producir mensajes en colas del broker de mensajería. Ofrece una API para poder gestionar colas y exchanges programáticamente.
  8. Project Reactor
    Librería basada en la especificación Reactive Streams y estándar de facto a la hora de utilizar el paradigma de programación reactiva.
  9. Liquibase
    Utilidad para gestionar migraciones del esquema de base de datos necesario para la ejecución de nuestro servicio/aplicación.
  10. Thymeleaf
    Motor de plantillas HTML

Para el testeo automático de las funcionalidades proporcionadas por los microservicios cabe añadir las librerías que he utilizado a la hora de escribir tests automáticos.

  1. Spring Test starter
  2. Cucumber
  3. jUnit
  4. Mockito

Como herramientas de construcción de proyectos Java y microservicios destacaría las tecnologías.

  1. Gradle
  2. Maven
  3. Docker
  4. Kubernetes
  5. Helm