Prueba las librerías en acción directamente en tu navegador
Simulador interactivo en tiempo real que ejecuta en JavaScript los mismos algoritmos (Luhn, Merkle Trees, SHA-256 criptográfico, carrier pinning y circuitos CAS) de la suite de librerías Java empresariales. Cada sección incluye una explicación técnica de qué hace y cómo funciona.
AgentGuard: AI Prompt Firewall & Reversible PII Masking
Anonimiza datos sensibles con validación Luhn y bloquea prompt injections antes de enviar el prompt a LLMs (Spring AI / LangChain4j).
El problema: Al conectar microservicios Java con modelos LLM externos (OpenAI, Claude, etc.), corres el riesgo de enviar datos sensibles de tus clientes (RGPD) o sufrir ataques de Prompt Injection que manipulen el comportamiento del asistente.
[EMAIL_1]. Al recibir la respuesta del LLM, AgentGuard restaura los datos originales para el usuario final sin que el proveedor de IA los haya visto jamás.
<|im_start|>).
@SecurePrompt: En Spring Boot se aplica con una simple anotación sobre tus métodos de servicio, automatizando el proceso sin cambiar tu lógica de negocio.
Escribe un texto con datos personales reales o ficticios, o un ataque de inyección, y haz clic en procesar.
Muestra si el prompt es seguro para enviarse al LLM o si contiene comandos maliciosos que vulneren el sistema.
Observa cómo los datos privados han sido sustituidos por tokens artificiales protegidos.
[CREDIT_CARD_1] ➔ 4532-0150-1234-5671 (Luhn OK)
[EMAIL_1] ➔ cliente.vip@empresa.com
[TAX_ID_1] ➔ 12345678Z
[PHONE_1] ➔ +34 612 345 678
El LLM responde haciendo referencia a los tokens recibidos. Al restaurar, se devuelven los datos al usuario final sin riesgo de filtración.
EvidenceChain: Cryptographic Audit Trail & Merkle Forensics
Libro mayor inmutable con árboles de Merkle y SHA-256. Diseñado bajo metodología pericial judicial (Colegiado Nº 03624) para garantizar la no manipulación de evidencias digitales.
El problema: En auditorías de seguridad, procesos penales o transacciones bancarias, las bases de datos tradicionales pueden ser alteradas por administradores o atacantes sin dejar rastro ("nadie vigila al vigilante").
Cada registro posee una huella digital SHA-256 inmutable. Si alguien altera un registro pasado en la base de datos, el árbol criptográfico detectará la ruptura al instante.
Visualización de los nodos del árbol. La raíz superior (Merkle Root) es la firma única que resume criptográficamente todo el estado del sistema.
LoomDoctor: Virtual Thread Pinning & Pool Starvation Telemetry
Diagnóstico en vivo del comportamiento de hilos virtuales (Java 21+) sobre carrier threads y saturación de pools JDBC.
El problema: En Java 21+, los hilos virtuales (Project Loom) permiten manejar millones de peticiones ligeras, pero introducen dos fallos silenciosos muy graves en producción:
synchronized, queda "anclado" al hilo físico de la CPU (*carrier thread*). Si tienes 8 núcleos de CPU y 8 hilos quedan anclados, tu servidor se congela por completo.
/actuator/loom-doctor.
synchronized por java.util.concurrent.locks.ReentrantLock para permitir que el hilo virtual ceda la CPU limpiamente, y aplicar Semaphore para acotar la concurrencia downstream.
Ajusta los deslizadores para simular distintas condiciones de tráfico y concurrencia:
Métricas calculadas por LoomDoctor a partir de los eventos del runtime de Java 21:
- Carrier Thread Pinning Detectado: 8 hilos portadores bloqueados dentro de monitores
synchronized. Sustituye porjava.util.concurrent.locks.ReentrantLock. - Downstream Starvation: 990 hilos virtuales esperando por 10 conexiones JDBC. Implementa backpressure con
Semaphoreo amplía el pool.
Fuse: Ultra-lightweight Lock-Free Circuit Breaker
Circuit breaker en menos de 20 KB sin dependencias externas, con operaciones atómicas CAS (AtomicReference) para microservicios de ultra baja latencia.
El problema: Cuando un microservicio downstream o base de datos falla, seguir enviando peticiones congestiona los hilos, agota sockets y provoca caídas en cascada en toda la arquitectura.
Envía peticiones simuladas para comprobar cómo reacciona el Circuit Breaker:
Transiciones de estado gobernadas por AtomicReference.compareAndSet():
CLOSED
El tráfico fluye con normalidad. Los microservicios downstream responden adecuadamente.