Entradas

Saber Spring Boot no es lo mismo que saber desarrollar sistemas

 En los últimos años se ha vuelto común encontrar rutas de aprendizaje que llevan rápidamente a una persona desde los fundamentos básicos de programación hacia tecnologías como Spring Boot, React, Docker o servicios en la nube. No considero que esto sea necesariamente negativo. El problema aparece cuando confundimos el conocimiento de estas herramientas con una formación completa en desarrollo de sistemas. Una persona que recién termina la enseñanza secundaria puede perfectamente aprender Java, construir una API REST con Spring Boot, conectarla a una base de datos y desarrollar una interfaz web. Incluso puede llegar a trabajar profesionalmente con estas tecnologías. Pero saber utilizar un framework no significa necesariamente comprender todos los conceptos que existen detrás de él. La formación no consiste solamente en aprender tecnologías Una tecnicatura o una ingeniería relacionada con informática normalmente no busca enseñar únicamente las herramientas que demanda el mercado en...

Usar fetch con Servlets para enviar parámetros POST y devolver HTML

  En el artículo anterior vimos que es posible construir aplicaciones web dinámicas con Java, Servlets, Thymeleaf y JavaScript sin necesidad de incorporar obligatoriamente un framework frontend como React o Angular. En esta entrada vamos a llevar esa idea a un ejemplo práctico. Si estamos trabajando con Servlets, Thymeleaf y JavaScript, podemos utilizar fetch() para enviar datos al servidor y hacer que el Servlet responda directamente con HTML. En este ejemplo vamos a implementar una búsqueda dinámica de productos. La idea es sencilla: Usuario escribe el nombre ↓ JavaScript ejecuta fetch() ↓ Servlet recibe parámetros POST ↓ ProductoService realiza la búsqueda ↓ Servlet genera HTML ↓ fetch recibe el HTML ↓ Se reemplaza una sección de la página La página inicial La página de administración de productos se genera inicialmente utilizando Thymeleaf. Tenemos un campo de búsqueda: <input oninput="cargarSeccion('BUSCAR_NOMBRE...

Cómo reemplazar Node.js y React por Java y AJAX

Actualmente es bastante común asociar el desarrollo de una aplicación web moderna con una arquitectura formada por React en el frontend y Node.js en el backend. Algo parecido a esto: Navegador | React | API REST | Node.js | Base de datos Esta arquitectura es válida y tiene muchos casos de uso. Sin embargo, no significa que sea necesaria para todas las aplicaciones web. Un sistema administrativo, un punto de venta, un sistema de inventario o una aplicación de facturación pueden necesitar una interfaz dinámica sin que eso implique necesariamente construir una SPA completa. Podemos hacerlo utilizando Java: HTML + CSS | JavaScript / AJAX | Java | Servlets o Spring Boot | Servicios | JDBC | Base de datos La idea no consiste en eliminar JavaScript. La idea es utilizar JavaScript solamente para interactuar con el navegador y realizar peticiones asíncronas, dejando la construcción de la aplicación y la lógica del servidor en Java. AJAX no necesi...

Construyendo XML en Java: desde DOM hasta JAXB

 Cuando comencé a trabajar con XML en Java, una de las primeras alternativas que utilicé fue la API DOM incluida en Java. En ese momento desconocía JAXB, por lo que construir un documento XML significaba crear explícitamente cada elemento y agregarlo al árbol del documento. Con el tiempo conocí JAXB y una forma bastante diferente de enfrentar el mismo problema: representar la estructura XML mediante objetos Java y dejar que una biblioteca realice la transformación. En esta entrada veremos ambas alternativas y las diferencias que existen entre ellas. El XML que queremos construir Utilizaremos un ejemplo sencillo: <?xml version="1.0" encoding="UTF-8"?> <Producto> <Codigo>1001</Codigo> <Nombre>Teclado USB</Nombre> <Precio>15990</Precio> </Producto> Nuestro objetivo será generar este documento desde una aplicación Java. 1. Construcción utilizando DOM Java dispone de una API estándar para manipular docume...

Plantilla Maven para Spring Boot

 Durante el desarrollo de aplicaciones Java es común utilizar Spring Initializr para generar un nuevo proyecto. Sin embargo, en algunos entornos esta alternativa puede no ser la más conveniente. Con el tiempo he preferido mantener una plantilla Maven propia para Spring Boot , preparada y probada en mi entorno de desarrollo. Las ventajas de este enfoque son: Configuración conocida y controlada. Dependencias previamente verificadas. Estructura consistente entre proyectos. Independencia de servicios externos para generar un proyecto. Posibilidad de adaptar la plantilla a necesidades específicas. En entornos corporativos también es habitual que las organizaciones mantengan sus propias plantillas o arquetipos Maven, permitiendo estandarizar la creación de nuevos proyectos y evitar diferencias entre desarrolladores. Esto no significa que Spring Initializr sea una mala herramienta. Al contrario, resulta muy útil para comenzar rápidamente un proyecto. Sin embargo, dispone...

La ruta para aprender Full Stack Java

  En los últimos años han aparecido innumerables cursos para aprender Full Stack Java . Muchos comienzan directamente con tecnologías como: Spring Boot React Docker Kubernetes Al finalizar el curso, el estudiante logra construir una aplicación. Sin embargo, muchas veces no comprende realmente qué ocurre detrás de cada componente. Personalmente, creo que el problema no está en los frameworks. El problema es el orden en que se enseñan. El primer paso no es Spring Boot Antes de construir una aplicación Full Stack existe algo mucho más importante. Aprender el lenguaje de programación. En mi caso, esa ruta debería comenzar así. 1. Comprender el lenguaje Antes de hablar de aplicaciones web es necesario dominar Java. Variables. Tipos de datos. Operadores. Métodos. Condicionales. Ciclos. En esta etapa todavía no existe ninguna aplicación. Solo se aprende a resolver problemas mediante código. 2. Aprender a pensar en objetos Después aparece la Programac...

¿Por qué comenzaría con aplicaciones de escritorio?

 Muchas rutas de aprendizaje pasan directamente desde Programación Orientada a Objetos al desarrollo web. Personalmente, haría un paso intermedio. Las aplicaciones de escritorio. ¿Por qué? Porque permiten comprender el concepto de evento sin agregar todavía la complejidad de HTTP, servidores, sesiones o protocolos de red. Cuando un usuario presiona un botón ocurre un evento. Usuario │ Hace clic │ Evento │ Código Java │ Actualización de la interfaz El estudiante aprende conceptos como: Eventos. Escuchadores (Listeners). Componentes gráficos. Validaciones. Separación entre la interfaz y la lógica de negocio. Todo ocurre dentro de una misma aplicación. No existe todavía la complejidad de una arquitectura cliente-servidor. El siguiente paso: HTTP Una vez comprendidos los eventos, el salto al desarrollo web resulta mucho más natural. El botón ya no ejecuta directamente un método. Ahora genera una petición HTTP. Usuario │ Hace clic │ HTT...