JavaBank
Un banco para la terminal en Java 21 con cero dependencias externas: cuentas, depósitos, retiros, transferencias e historial de movimientos.
- Java
El caso de estudio
- Problema
- Manejar dinero sin errores de redondeo y con reglas que no se puedan saltar, demostrando arquitectura limpia sin frameworks, base de datos ni librerías.
- Solución
- Solo Java 21 y su biblioteca estándar, con dependencias en una sola dirección; el dinero siempre en BigDecimal (un value object Money) y el saldo que solo cambia por un método que, en el mismo paso, registra el movimiento.
- Resultado
- Ejecutable con un run.sh que compila con javac, sin instalación; código pensado para leerse como de producción. Especialmente pertinente para fintech.
Proceso
Proceso de desarrollo
El razonamiento detrás de las decisiones técnicas: por qué se eligió cada tecnología, qué retos surgieron y cómo se resolvieron.
- 01
Cero dependencias, a propósito
Construí el banco solo con Java 21 y su biblioteca estándar, sin frameworks ni base de datos. La restricción es deliberada: obliga a que la arquitectura limpia se sostenga por sí sola, con las dependencias apuntando en una sola dirección, y demuestra los fundamentos sin que una librería haga el trabajo difícil.
- 02
El dinero, bien modelado
El dinero nunca se representa con float: siempre en BigDecimal, encapsulado en un value object Money que centraliza el redondeo. Es la decisión más importante del proyecto, porque un error de centavos en un banco no es un detalle.
- 03
Invariantes imposibles de saltar
El saldo solo cambia a través de un método que, en el mismo paso, registra el movimiento: es imposible mover dinero sin dejar rastro. Modelar la regla dentro del objeto —y no en el código que lo usa— es lo que hace que este ejercicio sea especialmente pertinente para fintech.
Repositorios
Commits
- Cambios en el Readme
ceb5e4cEduardohace 3 semanas
- Initial commit
307508cEduardohace 3 semanas