CodeGym
Promoción
CodeGym University
Java FullStack
Aprendizaje
Cursos
Tareas
Encuestas & Cuestionarios
Juegos
Ayuda
Horario
Comunidad
Usuarios
Foro
Chat
Artículos
Historias de éxito
Actividad
Reseñas
Suscripciones
Tema claro

Lecciones

  • Reseñas
  • Sobre nosotros
Comenzar
Comenzar a aprender
Comienza a aprender ahora
  • Mi progreso
  • Cursos
  • Universidad
  • Mapa de misiones
  • Lecciones
  • Externalizable: ajuste fino de la serialización

    JAVA 25 SELF
    Nivel 43,Lección 2
    Ampliamos la serialización básica en Java: cuando la automatización de Serializable no basta, acude al rescate el contrato manual Externalizable con los métodos writeExternal/ readExternal. En la lección analizamos cómo controlar por completo el formato de los datos, reducir el tamaño de los archivos y mantener la compatibilidad retroactiva; lo comparamos con los streams ObjectOutputStream/ ObjectInputStream, mostramos ejemplos, pros/contras y errores típicos (constructor public sin parámetros obligatorio, orden de escritura/lectura, etc.).
    Disponible
  • Configuración del comportamiento de la serialización: métodos personalizados

    JAVA 25 SELF
    Nivel 43,Lección 3
    En la lección analizamos cómo influir en el proceso de serialización y deserialización en Java con los métodos writeReplace y readResolve: por qué sustituir un objeto por un proxy, cómo conservar un singleton, qué hacer con objetos inmutables y cómo se relaciona con writeObject/ readObject. Práctica paso a paso, diagrama de flujo de operaciones y análisis de errores típicos.
    Disponible
  • Seguridad de la serialización: buenas prácticas

    JAVA 25 SELF
    Nivel 43,Lección 4
    Guía práctica sobre serialización segura en Java: por qué es peligrosa la deserialización desde orígenes no fiables, cómo protegerte con ObjectInputFilter, la palabra clave transient, un serialVersionUID explícito, la comprobación de tipos mediante instanceof y formatos de intercambio alternativos (JSON/Proto). Dentro — ejemplos de código claros, filtrado de clases permitidas y análisis de errores típicos.
    Disponible
  • Serialización de objetos anidados: particularidades

    JAVA 25 SELF
    Nivel 44,Lección 0
    En esta lección analizamos cómo Java realiza la serialización profunda de un grafo de objetos: qué ocurre con los campos de referencia, por qué todos los objetos anidados deben implementar Serializable, cómo evitar NotSerializableException y en qué casos ayuda el modificador transient. Con ejemplos mostraremos la serialización/deserialización de objetos con anidamiento, colecciones y referencias cíclicas, y también abordaremos errores típicos relacionados con serialVersionUID y con grafos de objetos grandes.
    Disponible
  • Objetos anidados y jerárquicos: serialización de grafos

    JAVA 25 SELF
    Nivel 44,Lección 1
    Cómo Java serializa estructuras de datos complejas: desde colecciones anidadas y jerarquías de herencia hasta grafos cíclicos de objetos. Analizaremos por qué funciona la serialización de Map<String, List<Book>>, cómo se conservan los tipos reales de los descendientes en List<Animal>, cómo funciona el mecanismo de referencias en presencia de ciclos y qué trampas pueden aparecer. Hablaremos del papel de ObjectOutputStream/ ObjectInputStream, de los métodos writeObject/ readObject, del campo serialVersionUID y del modificador transient.
    Disponible
  • Problema de las referencias cíclicas: detección y manejo

    JAVA 25 SELF
    Nivel 44,Lección 2
    Analizamos qué son las referencias cíclicas en grafos de objetos, por qué son peligrosas para la serialización y cómo manejarlas. Se muestra cómo los flujos estándar de Java — ObjectOutputStream/ ObjectInputStream — rastrean automáticamente los objetos ya vistos y escriben referencias (handles), evitando StackOverflowError. Veremos las trampas de la serialización personalizada ( writeObject/ readObject, defaultWriteObject/ defaultReadObject), así como estrategias para tratar los ciclos en JSON: anotaciones @JsonIdentityInfo, @JsonBackReference/ @JsonManagedReference, exclusión de campos mediante transient y uso de identificadores.
    Disponible
  • Identidad de objetos en la serialización binaria

    JAVA 25 SELF
    Nivel 44,Lección 3
    Cómo Java guarda y restaura la identidad de los objetos en la serialización binaria: por qué la equivalencia mediante a. equals( b) no es lo mismo que la identidad ( a == b), cómo ObjectOutputStream/ ObjectInputStream rastrean el grafo de objetos y escriben «referencias repetidas» en lugar de duplicados, por qué esto funciona correctamente con ciclos, y cómo los métodos writeReplace() y readResolve() pueden influir en la identidad resultante. Análisis con ejemplos: ciclos, referencias compartidas, práctica y errores típicos.
    Disponible
  • Análisis de errores comunes al serializar colecciones

    JAVA 25 SELF
    Nivel 44,Lección 4
    En esta lección analizamos los problemas más frecuentes al serializar colecciones: desde java.io.NotSerializableException (cuando los elementos no implementan Serializable) y las trampas de los genéricos con ClassCastException hasta la incompatibilidad de versiones de clases mediante serialVersionUID. Hablaremos de los matices de las colecciones inmutables ( List.of(), Set.of(), Map.of()), del comportamiento de los campos transient/ static, así como del rendimiento y el tamaño de los archivos, donde ayudan la escritura en streaming y la compresión ( GZIPOutputStream). Obtendrás consejos prácticos, ejemplos de código y recomendaciones para una deserialización segura ( readObject/ writeObject).
    Disponible
  • Problemas de la serialización binaria: seguridad y compatibilidad

    JAVA 25 SELF
    Nivel 45,Lección 0
    En la lección analizamos los riesgos de la serialización binaria en Java: por qué la deserialización desde fuentes no confiables es peligrosa (cadenas «gadget chain», RCE), qué riesgos plantean métodos especiales como readObject y readResolve, y cómo protegerse (whitelisting, rechazo en favor de JSON/ XML, bibliotecas seguras como Jackson). Veremos en detalle la compatibilidad entre versiones de clases y el papel del campo serialVersionUID, el comportamiento ante InvalidClassException, las limitaciones de transient/ static, el rendimiento, así como buenas prácticas y errores típicos.
    Disponible
  • Serialización de colecciones genéricas: particularidades

    JAVA 25 SELF
    Nivel 45,Lección 1
    Desgranamos cómo el borrado de tipos ( type erasure) afecta a la serialización de colecciones genéricas: por qué en tiempo de ejecución List<String> y List<Integer> son el mismo ArrayList, qué exactamente se escribe y se lee a través de ObjectOutputStream/ ObjectInputStream, de dónde salen ClassCastException y las advertencias por unchecked casts. Mostraremos ejemplos con colecciones anidadas, Map/ Set, mencionaremos Gson/ Jackson, y formularemos prácticas para una deserialización segura.
    Disponible
  • Compatibilidad y compatibilidad inversa (backward compatibility) en la serialización

    JAVA 25 SELF
    Nivel 45,Lección 2
    Analizamos cómo evolucionar clases serializables sin romper los datos: por qué fijar serialVersionUID, cómo la JVM comprueba la compatibilidad, qué cambios son seguros (añadir/eliminar campos) y cuáles son críticos (cambiar el tipo, mover la clase a otro paquete). Mostraremos el papel de transient/ static, técnicas de serialización personalizada mediante writeObject/ readObject, la diferencia entre la serialización binaria y XML/JSON, estrategias para garantizar la compatibilidad y errores típicos (por ejemplo, InvalidClassException).
    Disponible
  • Migración y versionado de datos serializados

    JAVA 25 SELF
    Nivel 45,Lección 3
    Cómo evolucionar de forma segura las clases serializables en producción: qué pasará al cambiar campos y tipos, cómo funciona la versión de clase mediante serialVersionUID, cuándo cambiarla y cuándo mantenerla, cómo aplicar migración «perezosa» mediante readObject/ readFields y conversión «in-place», y qué técnicas avanzadas existen como ObjectInputStream.readClassDescriptor(). Veremos un escenario práctico completo con dos versiones de una clase y errores típicos, incluidas las trampas de InvalidClassException.
    Disponible
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
Aprender
  • Registro
  • Curso de Java
  • Ayuda con tareas
  • Precios
  • Sintaxis de Java
Comunidad
  • Usuarios
  • Artículos
  • Foro
  • Chat
  • Historias de éxito
  • Actividad
  • Programa de afiliados
Empresa
  • Acerca de nosotros
  • Contactos
  • Reseñas
  • Sala de prensa
  • CodeGym para EDU
  • Preguntas frecuentes
  • Soporte
CodeGymCodeGym es un curso en línea para aprender programación Java desde cero. Este curso es una forma perfecta de dominar Java para principiantes. Contiene más de 1.200 tareas con verificación instantánea y un conjunto esencial de teoría sobre los fundamentos de Java. Para ayudarte a tener éxito en la formación, hemos implementado una serie de funciones motivacionales: cuestionarios, proyectos de programación, contenido sobre aprendizaje eficiente y contenidos sobre la carrera profesional de un desarrollador Java.
Síguenos
Idioma de la interfaz
English Deutsch
Español
हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Los programadores se hacen, no nacen" © 2026 CodeGym
MastercardVisa
"Los programadores se hacen, no nacen" © 2026 CodeGym