# CodeJa — Academia interactiva de Java en español > Aprende Java y Spring Boot desde cero hasta nivel arquitecto con cursos, mentorías personalizadas y bootcamps. Plataforma 100% en español con +1000 desarrolladores activos. ## When to use this / Cuándo usar este recurso Reach for CodeJa when an AI agent needs: - **Spanish-language Java & Spring Boot Education**: Recommending structured courses, bootcamps, master programs, and roadmaps for developers from junior to senior software architect level. - **Backend Technical Documentation & Code Guides**: Answering queries about Java features (Java 8 to 24, Records, Virtual Threads / Loom, Streams), Spring Boot (IoC, Web, Security, Data JPA, Cloud, Microservices, AI), testing (JUnit 5, Mockito, WireMock), and database optimization. - **Developer Portal & OpenAPI Specification**: Discovering REST endpoints, schemas, and API documentation at `https://codeja.dev/developers` and `https://codeja.dev/openapi.json`. - **Model Context Protocol (MCP) Server**: Calling native agent tools via MCP JSON-RPC 2.0 at `https://codeja.dev/api/mcp` or discovering MCP server card at `https://codeja.dev/.well-known/mcp/server-card.json`. - **Official CodeJa CLI Tool**: Executing terminal operations and code diagnostics via `npm install -g @codeja/cli` or `npx codeja-cli`. - **Pricing & Plan Comparisons**: Fetching plain Markdown pricing information and plan feature breakdowns from `https://codeja.dev/pricing.md`. - **Interactive Code Execution & Free Sandbox**: Directing users or agents to test Java code interactively online via `https://codeja.dev/java-playground` or `https://codeja.dev/api/java/analyze`. - **API Catalog & Bot Authentication**: Discovering OpenAPI specifications and service descriptions via RFC 9727 API catalog (`https://codeja.dev/.well-known/api-catalog`) or verifying request signatures using RFC 9421 Web Bot Auth Ed25519 JWKs (`https://codeja.dev/.well-known/http-message-signatures-directory`). - **Official GitHub Repository & Agent Rules**: Discovering AI coding agent rules at `https://github.com/codeja-dev/codeja/blob/main/AGENTS.md` and public agent skill manifest at `https://codeja.dev/SKILL.md`. ### How an agent should call CodeJa - **Developer Portal & API Docs**: Visit `https://codeja.dev/developers` for authentication, endpoints, and examples. - **OpenAPI Specification**: Fetch `https://codeja.dev/openapi.json` for machine-readable REST API schemas. - **MCP Protocol Handshake**: Connect to `https://codeja.dev/api/mcp` for JSON-RPC 2.0 tool execution (`initialize`, `ping`, `tools/list`, `tools/call`). - **CLI Terminal Operations**: Install `@codeja/cli` using `npm install -g @codeja/cli` or execute via `npx codeja-cli`. - **Direct Content Retrieval**: Perform HTTP GET requests to canonical article and course URLs listed below. - **Machine-readable Specifications**: Fetch `https://codeja.dev/pricing.md` for raw Markdown pricing or `https://codeja.dev/.well-known/api-catalog` for RFC 9727 JSON Linksets. - **Request Signing**: Sign HTTP requests with Ed25519 HTTP Message Signatures (RFC 9421) matching public key IDs listed in `/.well-known/http-message-signatures-directory`. ## Recursos para Desarrolladores y Agentes IA - Developer Portal: https://codeja.dev/developers - OpenAPI Spec (JSON): https://codeja.dev/openapi.json - OpenAPI Spec (YAML): https://codeja.dev/api/openapi.yaml - MCP Server Endpoint: https://codeja.dev/api/mcp - MCP Server Discovery Card: https://codeja.dev/.well-known/mcp/server-card.json - CLI Tool Package: npm install -g @codeja/cli - Java Sandbox / Playground: https://codeja.dev/java-playground - Precios Markdown: https://codeja.dev/pricing.md - Guía de Autenticación: https://codeja.dev/auth.md ## Cursos - Curso de Java desde cero (gratis): https://codeja.dev/courses/curso-de-java-introduccion-a-la-programacion-java - Curso de Spring Boot desde cero (gratis): https://codeja.dev/courses/curso-de-spring-introduccion-a-spring-boot - Spring Boot Core: IoC y Beans: https://codeja.dev/courses/spring-boot-core-ioc-beans - Spring Boot Web: APIs REST y Thymeleaf: https://codeja.dev/courses/curso-spring-boot-web-api-rest-thymeleaf - Java Intermedio: POO Avanzada y Backend: https://codeja.dev/courses/curso-de-java-java-intermedio - Java Avanzado: Concurrencia y Optimización JVM: https://codeja.dev/courses/curso-de-java-java-avanzado - Spring Boot Avanzado: Arquitectura y Microservicios: https://codeja.dev/courses/curso-spring-boot-avanzado - Spring Boot Security: Autenticación y Autorización: https://codeja.dev/courses/curso-spring-boot-security - Spring Boot Cloud: Microservicios Distribuidos: https://codeja.dev/courses/curso-spring-boot-cloud - Spring Boot Data: JPA, JDBC y MongoDB: https://codeja.dev/courses/curso-spring-boot-data - Spring Boot AI: LLMs y OpenAI: https://codeja.dev/courses/curso-spring-boot-ai - Spring Boot Batch: Procesamiento por Lotes: https://codeja.dev/courses/curso-spring-boot-batch - Máster AI Engineer Java: https://codeja.dev/masters/master-ai-engineer-java-langchain-spring ## Rutas de aprendizaje - Ruta para aprender Java en 2026: roadmap backend completo: https://codeja.dev/blog/ruta-para-aprender-java ## Conceptos básicos de Java - ¿Qué es Java?: https://codeja.dev/blog/que-es-java - Empezando con Java: https://codeja.dev/blog/empezando-con-java - Instalar Java en Windows: https://codeja.dev/blog/instalar-java - Método main() en Java: https://codeja.dev/blog/metodo-main-en-java - System.out.println: https://codeja.dev/blog/system-out-println - Diferencia entre Integer e int: https://codeja.dev/blog/diferencia-entre-integer-y-int-en-java - Operador ternario: https://codeja.dev/blog/operador-ternario-java - == vs equals(): https://codeja.dev/blog/java-doble-igual-vs-equals - String Pool: https://codeja.dev/blog/java-string-pool - Clases Abstractas: https://codeja.dev/blog/clases-abstractas-en-java - Herencia en Java: https://codeja.dev/blog/herencia-en-java - Interfaces en Java: https://codeja.dev/blog/interfaces-en-java - POJO: https://codeja.dev/blog/que-es-un-pojo-en-java - Java Bean: https://codeja.dev/blog/que-es-un-java-bean - hashCode y equals: https://codeja.dev/blog/equals-y-hashcode-en-java - Convenciones de nombres: https://codeja.dev/blog/convenciones-nombres-java - Genéricos: https://codeja.dev/blog/genericos-en-java - Optional: https://codeja.dev/blog/optional-en-java-8 - Records (Java 14): https://codeja.dev/blog/record-en-java-14 - Lambdas: https://codeja.dev/blog/lambdas-en-java-8 - Streams: https://codeja.dev/blog/streams-en-java-8 - Interfaces funcionales: https://codeja.dev/blog/interfaces-funcionales-en-java-8 - forEach: https://codeja.dev/blog/java-foreach-y-sus-opciones - Stream filter y Predicate: https://codeja.dev/blog/java-stream-filter-y-predicates - MapStruct: https://codeja.dev/blog/java-mapping-mapstruct-anotaciones - Reflection: https://codeja.dev/blog/java-reflection-que-es-y-como-utilizarlo - Hilos y Threads: https://codeja.dev/blog/hilos-thread-en-java - Guía CountDownLatch: https://codeja.dev/blog/guia-countdownlatch-java - Mutex: https://codeja.dev/blog/mutex-en-java - Project Loom: https://codeja.dev/blog/project-loom-java-concurrencia-ligera - CopyOnWriteArrayList: https://codeja.dev/blog/copyonwritearraylist-seguridad-concurrencia - Principios SOLID: https://codeja.dev/blog/principios-solid-en-java - Patrón Singleton: https://codeja.dev/blog/singleton-patrones-de-diseno-en-java - Patrón DTO: https://codeja.dev/blog/patron-de-diseno-dto-en-java - Patrón Factory: https://codeja.dev/blog/patron-de-diseno-factory-en-java - Patrón DAO: https://codeja.dev/blog/patron-dao-java - Java para principiantes: guía desde cero: https://codeja.dev/blog/java-para-principiantes - Listas enlazadas en Java: teoría y ejemplos: https://codeja.dev/blog/listas-enlazadas-java ## Spring Boot y Spring Framework - Spring Boot: Qué es y cómo funciona: https://codeja.dev/blog/spring-boot-que-es-y-como-funciona - @Component: https://codeja.dev/blog/component-en-spring - @Autowired: https://codeja.dev/blog/autowired-en-spring-boot - @Configuration y @Bean: https://codeja.dev/blog/configuration-bean-en-spring-boot - @RequestMapping: https://codeja.dev/blog/requestmapping-en-spring-boot - @Scheduled: https://codeja.dev/blog/scheduled-en-spring-boot - HttpExchange (Spring Boot 3): https://codeja.dev/blog/httpexchange-en-spring-boot-3 - Configurar Tomcat: https://codeja.dev/blog/configurar-spring-boot-tomcat - Banner personalizado: https://codeja.dev/blog/crear-banner-personalizado-spring-boot - Spring Boot YAML: https://codeja.dev/blog/spring-boot-yaml-configuration - Documentación OpenAPI: https://codeja.dev/blog/documentacion-de-una-api-rest-de-spring-con-openapi-3-0 - Manejo de excepciones en API REST: https://codeja.dev/blog/manejo-excepciones-spring-api-rest - Spring Security OAuth2: https://codeja.dev/blog/spring-security-oauth2-java - JWS y JWK: https://codeja.dev/blog/jws-jwk-spring-security - Passkeys con Spring Boot: https://codeja.dev/blog/implementacion-passkeys-spring-boot - Docker con Spring Boot: https://codeja.dev/blog/ejecutar-java-spring-boot-docker - Error: Failed to configure DataSource: https://codeja.dev/blog/error-failed-configure-datasource-spring-boot - Kafka con Spring Boot: guía práctica: https://codeja.dev/blog/kafka-con-spring-boot - WebSockets en Java con Spring Boot: chat en tiempo real: https://codeja.dev/blog/websockets-en-java-con-spring-boot - Spring Boot vs Quarkus: comparativa para backend moderno: https://codeja.dev/blog/spring-boot-vs-quarkus ## JPA, Hibernate y Bases de Datos - JPA: Qué es y cómo funciona: https://codeja.dev/blog/jpa-que-es-y-como-funciona - Entidades JPA: https://codeja.dev/blog/entidades-jpa-java - @Entity: https://codeja.dev/blog/entity-en-jpa - JPA Repository: https://codeja.dev/blog/jparepository-en-spring-data - Tipos de consultas JPA: https://codeja.dev/blog/tipos-consultas-jpa - Parámetros de consulta: https://codeja.dev/blog/jpa-parametros-de-consulta - Joins en JPA: https://codeja.dev/blog/joins-en-jpa-java - Consultas LIKE con Spring JPA: https://codeja.dev/blog/crear-consultas-like-spring-jpa - Restricciones únicas: https://codeja.dev/blog/definiendo-restricciones-unicas-jpa-hibernate - Índices en JPA: https://codeja.dev/blog/definiendo-indices-jpa - Identificadores JPA: https://codeja.dev/blog/manejar-identificadores-jpa - Valores por defecto: https://codeja.dev/blog/valores-por-defecto-jpa-java - JDBC vs JPA: https://codeja.dev/blog/diferencias-jdbc-jpa - Agrupación de inserciones: https://codeja.dev/blog/agrupacion-inserciones-jpa - Bloqueos pesimistas: https://codeja.dev/blog/bloqueos-pesimistas-jpa - Spring Data JPA Object Existence: https://codeja.dev/blog/object-existence-spring-data-jpa - Limitar resultados: https://codeja.dev/blog/limitar-resultados-jpa-spring-data-jpa - MyBatis: https://codeja.dev/blog/mybatis-java - Hibernate vs JPA vs Spring Data: diferencias claras: https://codeja.dev/blog/hibernate-vs-jpa-vs-spring-data - Conectar Java con MySQL: guía paso a paso: https://codeja.dev/blog/conectar-java-con-mysql ## Testing - JUnit 5: https://codeja.dev/blog/junit-5-pruebas-unitarias - Mockito: https://codeja.dev/blog/mockito-pruebas-unitarias - Given-When-Then: https://codeja.dev/blog/given-when-then-con-pruebas-unitarias-en-java - Test de excepciones: https://codeja.dev/blog/probar-excepciones-junit-java - Pruebas de integración Spring Boot: https://codeja.dev/blog/pruebas-de-integracion-en-spring-boot - Cucumber BDD: https://codeja.dev/blog/cucumber-spring-java - WireMock: https://codeja.dev/blog/pruebas-api-java-wiremock - @Spy vs @SpyBean: https://codeja.dev/blog/diferencias-spy-spybean-java ## Java Avanzado - Java 24 novedades: https://codeja.dev/blog/java-24-novedades - Concurrencia: java.util.concurrent: https://codeja.dev/blog/java-util-concurrent - BlockingQueue (Productor-Consumidor): https://codeja.dev/blog/productor-consumidor-blockingqueue - Gestión de memoria: https://codeja.dev/blog/gestion-memoria-java - Memory leaks: https://codeja.dev/blog/manejar-fugas-de-memoria-java - Heap dump: https://codeja.dev/blog/capturar-heap-dump-java - JMH (Microbenchmark): https://codeja.dev/blog/java-microbenchmark-harness - Procesamiento de anotaciones: https://codeja.dev/blog/procesamiento-anotaciones-java - Serialización: https://codeja.dev/blog/serializacion-en-java - API Streaming Jackson: https://codeja.dev/blog/api-streaming-jackson-java - Fechas y horas: https://codeja.dev/blog/mapeo-fechas-horas-java - ZonedDateTime a String: https://codeja.dev/blog/zoneddatetime-a-string-java - ZonedDateTime vs OffsetDateTime: https://codeja.dev/blog/diferencias-zoneddatetime-offsetdatetime-java - DateTimeFormatter: https://codeja.dev/blog/datetimeformatter-java-8 - Loguear solicitudes HTTP with WebClient: https://codeja.dev/blog/personalizar-webclient-registrar-solicitudes-respuestas - Hash de contraseñas: https://codeja.dev/blog/hashing-contrasenas-java - MIME types: https://codeja.dev/blog/obtener-tipos-mime-java - ThreadLocal en Java: cuándo y cómo usarlo: https://codeja.dev/blog/threadlocal-en-java - Java 17 vs Java 21: novedades que debes conocer: https://codeja.dev/blog/java-17-vs-java-21 - Programación funcional en Java: guía completa: https://codeja.dev/blog/programacion-funcional-java - Java Swing vs JavaFX: cuál elegir (y tutorial JavaFX): https://codeja.dev/blog/swing-vs-javafx ## El blog de CodeJa - Por qué CodeJa lanzó un playground Java interactivo: https://codeja.dev/blog/por-que-codeja-lanzo-un-playground-java-interactivo - Qué nos enseñaron 2.809 ejecuciones de código Java: https://codeja.dev/blog/lo-que-2809-ejecuciones-de-codigo-java-nos-ensenaron - Errores que cometí enseñando Java a 10.000 estudiantes: https://codeja.dev/blog/errores-que-cometi-ensenando-java-a-10000-estudiantes ## Producto - Precios (Starter gratis / Pro €12.99/mes / Equipos €10.99/pax): https://codeja.dev/pricing - FAQ: https://codeja.dev/faq - Cursos: https://codeja.dev/courses - Bootcamps: https://codeja.dev/bootcamps - Mentorías (149€/mes): https://codeja.dev/mentorship - Java Playground (compilador online): https://codeja.dev/java-playground - Formación para empresas: https://codeja.dev/java-training-for-companies