ACTUALIZAR UN PROGRAMA QUE SERIALIZA OBJETOS
Que es y para que sirve la constante serialVersionUID
Cuando nosotros creamos un
programa java, este queda marcado con un código SHA (Secure Hash Algorithm,
Algoritmo de Hash Seguro).
Este código SHA lo produce en
nuestro caso el compilador y para java es conocido como la constante serialVersionUID
o huella del programa. El serialVersionUID está compuesto por un total de 20
bytes.
La huella del programa es como un
código de barras o DNI de nuestro programa. Por eso nuestra serialVersionUID
esta encapsulada por el modificador como static final
que tiene la variable serialVersionUID y la convierte en una constante de
clase , para evitar ser modificada por el usuario.
Nosotros serializamos un objeto para poderlo enviar por la red a un
receptor. Para que esto suceda tanto
el emisor (nosotros) como el receptor (persona a la que le enviamos el archivo de bytes y va
a leerlo) deben tener una copia idéntica
del programa java serialVersionUID o huella.
Si nosotros realizamos un cambio en nuestro original cambiará el
serialVersionUID y el receptor (usuario
de nuestro programa) ha dejado de tener el miso serialVersionUID o huella de programa que nosotros. En el
caso de que el serialVersionUID del
receptor y el emisor sean diferente cuando enviemos un objeto serializado al
receptor este no lo podrá leer.
Si el receptor no tiene el
programa actualizado es posible que este deje de funcionar o falle. Para evitar
esto no debemos dejar que java genere el serialVersionUID, tenemos que
generarlo notros en su lugar de forma manual.
¿Cómo crear nosotros el serialVersionUID de nuestro programa?
Para evitar que java cree el serialVersionUID,
la declararemos nosotros en las clases de nuestro programa que implementen la
interface Serializable, así el usuario tendrá siempre huella de programa. La
declararemos como una variable constante (static final), el dato que almacenara nuestra variable
será un long porque recordar que serialVersionUID tiene que tener 20 bytes.
public static final long serialVersionUID=1l;
Eclipse es un IDE muy útil y sabe
que cuando implementamos una clase con la interface Sreailizable esto puede
pasar y por eso nos marca un aviso en nuestra clase diciéndonos que es
conveniente crear nuestra variable serialVersionUID. Si nos paramos en cima del
nombre de clase aparecerá el siguiente cuadro pulsaremos en añadir por defecto y
lo creará por nosotros
Añadir serialVersionUID con eclipse |
Eclipse nos escribirá dentro de
nuestra clase ahorrándonos trabajo y recordar declaraciones:
/**
*
*/
private static final long serialVersionUID = 1L;
Modificar la huella al actualizar el programa
Nosotros podemos crear nuestra
propia huella y cuando actualicemos el programa moficarla para saber que es una
versión actual.
private static final long serialVersionUID = 2L;
La
ventaja es que sabemos cual es la huella y cada vez que recibamos un objeto
serializado podemos utilizar dentro del try/catch la posibilidad de actualizar
nuestro programa para poder depurar el error sin que caiga nuestro programa.
En la parte inferior del artículo tienes la posibilidad de decirme que pensais de sobre lo escrito, para poder analizar que reacción provoca el tema de mi articulo sobre vosotros.
⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬
No hay comentarios:
Publicar un comentario