Serializacion

Páginas: 8 (1862 palabras) Publicado: 18 de marzo de 2013
Serialización de objetos en Java 2

Introducción
La serialización de un objeto consiste en obtener una secuencia de bytes que represente el estado de dicho objeto. Esta secuencia puede utilizarse de varias maneras (puede enviarse a través de la red, guardarse en un fichero para su uso posterior, utilizarse para recomponer el objeto original, etc.).

Estado de un objeto
El estado de unobjeto viene dado, básicamente, por el estado de sus campos. Así, serializar un objeto consiste, básicamente, en guardar el estado de sus campos. Si el objeto a serializar tiene campos que a su vez son objetos, habrá que serializarlos primero. Éste es un proceso recursivo que implica la serialización de todo un grafo (en realidad, un árbol) de objetos.
Además, también se almacena información relativaa dicho árbol, para poder llevar a cabo la reconstrucción del objeto serializado.
En ocasiones puede interesar que un atributo concreto de un objeto no sea serializado. Esto se puede conseguir utilizando el modificador transient, que informa a la JVM de que no nos interesa mantener el valor de ese atributo para serializarlo o hacerlo persistente.
Ejemplo:
public class MiFecha
{
protected intn;
protected Date fecha;
protected transient long s;
. . .
}
En este ejemplo, los atributos n y fecha serán incluídos en la secuencia de bytes resultante de serializar un objeto de clase MiFecha. El atributo s no será incluído, por tener el modificador transient.
Objetos serializables. Interfaz Serializable
Un objeto serializable es un objeto que se puede convertir en una secuencia debytes. Para que un objeto sea serializable, debe implementar la interfaz java.io.Serializable. Esta interfaz no define ningún método. Simplemente se usa para 'marcar' aquellas clases cuyas instancias pueden ser convertidas a secuencias de bytes (y posteriormente reconstruidas). Objetos tan comunes como String, Vector o ArrayList implementan Serializable, de modo que pueden ser serializados yreconstruidos más tarde.
Para serializar un objeto no hay más que declarar el objeto como serializable:
public class MiClase implements java.io.Serializable
El sistema de ejecución de Java se encarga de hacer la serialización de forma automática.

Ejemplos
Almacenamiento de objetos
Es posible utilizar los mecanismos de serialización disponibles para serializar un objeto guardándolo en un fichero ypara realizar el proceso inverso, recuperándolo desde el fichero.
FileOutputStream fos = new FileOutputStream("fichero.bin");
FileInputStream fis = new FileInputStream("fichero.bin");
ObjectOutputStream out = new ObjectOutputStream(fos);
ObjectInputStream in = new ObjectInputStream(fis);
ClaseSerializable o1 = new ClaseSerializable();
ClaseSerializable o2 = new ClaseSerializable();
//Escribir el objeto en el fichero
out.writeObject(o1);
out.writeObject(o2);
. . .
// Leer el objeto del fichero (en el mismo orden !!)
o1 = (ClaseSerializable)in.readObject();
o2 = (ClaseSerializable)in.readObject();

Envío de objetos por la red
También es posible enviar un objeto serializado a través de la red. La diferencia consiste en que ahora se utilizan streams de distinto tipo.
Socketsocket = new Socket(maquina, puerto);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
ObjectOutputStream out = new ObjectOutputStream(os);
ObjectInputStream in = new ObjectInputStream(is);
PeticionSerializable ps = new PeticionSerializable();
RespuestaSerializable rs;
// Escribir una petición en el socket
out.writeObject(ps);
// Recibir del socket larespuesta
rs = (RespuestaSerializable)in.readObject();

Serialización en RMI
En RMI, la serialización se utiliza de forma casi transparente al usuario. Concretamente, se utiliza en el paso de parámetros y retorno de valores de las invocaciones a métodos de objetos remotos. Por ejemplo, cuando hacemos una invocación remota del tipo retorno obj.metodo(param);

ocurre el siguiente proceso, de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Serialización
  • Serializacion en java
  • ArrayList y serialización
  • Serializacion
  • Serializacion
  • Informe acerca de serializacion de objetos en java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS