wikiHow es un "wiki", lo que significa que muchos de nuestros artículos están escritos por varios autores. Para crear este artículo, autores voluntarios han trabajado para editarlo y mejorarlo con el tiempo.
En este artículo, hay 7 referencias citadas, que se pueden ver en la parte inferior de la página.
Este artículo ha sido visto 24 729 veces.
Cuando serializas un objeto en Java, lo que haces es convertir los datos en flujos de bytes que luego se convertirán nuevamente en una copia de los datos originales. Si esto suena algo confuso, piensa en la serialización en los siguientes términos. Supongamos que estás trabajando en un documento y lo guardas en tu disco duro. Lo que estarías haciendo, por así decirlo, sería serializar los datos de forma tal que puedas obtener una copia más tarde. La serialización hace que la transferencia de datos en la red sea mucho más fácil y más eficiente. Es importante que entiendas lo esencial de Java antes de serializar un objeto. Si has utilizado lenguajes como Pascal y las versiones más antiguas de C, sabrás que sin serialización, el programador debe crear un archivo de E/S de texto aparte, para poder almacenar y cargar datos. La serialización de objetos en Java evita tener que crear este archivo de texto para almacenar los datos, y ahorrar tiempo así como también costos de programación. El siguiente artículo contiene los pasos para serializar un objeto en Java. El código de ejemplo que aparece en este artículo es cortesía de The Java Developers Almanac 1.4.
Pasos
-
1Abre el código del objeto de Java que requiere serialización, o crea uno desde cero.
-
2Selecciona el objeto en Java que quieres serializar. En este ejemplo, llamaremos a este objeto “MyObject”.
-
3Habilita la serialización de objetos en java, haciendo que la clase MyObject herede de la clase java.io.Serialize. Simplemente tienes que agregar la siguiente línea de código al principio del código, reemplazando la línea "public class MyObject”. public class MyObject implements java.io.Serializable.public class MyObject implements java.io.Serializable
-
4Ahora tu objeto es serializable, esto significa que puede escribirse mediante un flujo de salida, de la siguiente forma:
try{
// Serializar un objeto de datos a un archivo
ObjectOutputStream out = new ObjectOutputStream(new
FileOutputStream("MyObject.ser"));
out.writeObject(object);
out.close();
// Serializar un objeto de datos a un arreglo de bytes
ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
out = new ObjectOutputStream(bos) ;
out.writeObject(object);
out.close();
// Obtener los bytes del objeto serializado
byte[] buf = bos.toByteArray();
} catch (IOException e) {
}
-
5
-
6Ejecuta el código del objeto serializado en un programa de Java para asegurarte de que funciona en forma efectiva (opcional).
-
7Guarda el objeto serializado en Java y ciérralo.
Consejos
- Para mejorar los tiempos de lectura y escritura en árboles de objetos grandes, utiliza la palabra clave “transient” para instanciar variables que no requieran serialización. Esto mejorará el rendimiento debido a que ya no leerás ni escribirás más datos innecesarios en el proceso de serialización.
- Las mejoras respecto a la serialización en Java SE Development Kit 6 te permiten utilizar el método de ObjectStreamClass lookupAny para manipular cualquier objeto de clases no serializables.
Advertencias
- Java suele lanzar una nueva versión de su Develpment Kit casi todos los años. Las nuevas versiones incluyen actualizaciones y cambios respecto a las formas en las cuales puedes serializar un Objeto en Java. Por lo tanto, es importante observar los cambios en la versión que estás utilizando.
- Cuando serializas objetos, no puedes encriptar los flujos de datos. Consecuentemente, necesitarás apoyarte en otras aplicaciones o procesos de transporte de red secundarios para proteger los datos, si es necesario.
- Actualmente no hay ninguna opción que te permita escribir objetos en archivos de acceso aleatorio. En vez de eso, puedes utilizar flujos de entrada y salida de Byte Array como un posible lugar para leer y escribir objetos. No obstante, debes asegurarte de que el objeto completo se encuentre en el flujo del Byte Array, si no fallará el proceso.
Referencias
- http://www.javacoffeebreak.com/articles/serialization/index.html
- http://java.sun.com/products/jndi/tutorial/objects/storing/serial.html
- http://www.acm.org/crossroads/xrds4-2/serial.html
- http://java.sys-con.com/node/44199
- http://zamov.online.fr/EXHTML/JAVA/JAVA_706788.html
- http://java.sun.com/javase/technologies/core/basic/serializationFAQ.jsp#handle
- http://www.exampledepot.com/egs/java.io/SerializeObj.html