직렬화(serialization)
<aside>
❓ 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술
</aside>
- 자바에서 입출력은 “스트림” 이라는 데이터 통로를 통해 이동한다.
다만 객체는 바이트형이 아니라, 스트림을 통해 파일에 저장하거나 네트워크에 전송 할 수 없다.
- 따라서 객체를 스트림을 통해 입출력하려면, 바이트 배열로 변환하는것이 필요하다.
- 시스템 적으로는 JVM(Java Virtual Machine)의 메모리에 상주(heap 또는 stack) 되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화 된 바이트 형태의 데이터를 객체로 변환해서 JVM 으로 상주시키는 형태를 말함.
역직렬화(Deserialization)
- 반대로 스트림을 통해 받은 직렬화된 객체를 원래 모양으로 만드는과정을 역직렬화 라고한다.
SerialVersionUid 사용이유
- 직렬화된 객체와 클래스가 호환되는지를 검사하는 데 사용된다.
즉, 역직렬화할 때 직렬화된 객체의 클래스와 현재 클래스가 같은지 여부를 검사하는 데 사용된다.