Seguidores

MIS WEBS



sábado, 21 de abril de 2018

CONSTANTE serialVersionUID DE JAVA


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

Buscar este blog

Sandisk y Western Digital