직렬화와 역직렬화에 대해 설명해주세요

     

    직렬화와 역직렬화의 핵심!

    Object를 전송 또는 저장 가능한 형태로 바꾸기 위한 작업

     

    예시

    USB 인터페이스 (Universal Serial Bus) 

    Serial : 연쇄, 연속해서 이어지는 어떤 것 = 직렬화

     

    즉, USB는 직선상으로 연속해서 들어오는 데이터를 받아들일 수 있는 인터페이스라는 의미이다.

     

    Serialization 직렬화

    Object를 연속된 string이나 bytes로 바꾸는 작업

     

    왜 이런 작업을 할까?

    Object는 메모리에 존재하고 추상적이지만, string과 bytes데이터는 드라이브에 저장도 할 수 있도 통신선을 통해서 전송할 수 있기 때문이다. 

     

    Objcet는 프로그램 위에 할당된 메모리 위에 존재하고, 프로그램이 종료되면 Object도 자동으로 소멸된다.

     

    Deserialization 역직렬화

    이는 직렬화의 반대로 string이나 bytes에서 Object를 생성하는 행위라고 할 수 있다.

     

    사람을 냉동인간으로 만들었다가 냉동인간에서 해동하는 과정이라고 생각하자

     

     

    예시 

    모니카의 컴퓨터와 립제이의 컴퓨터가 있다. 이 둘은 사용하는 하드웨어와 운영체제 그리고 프로그래밍 언어가 전부 다르다. 이때 모니카의 컴퓨터에 존재하는 Objcet A를 립제이의 컴퓨터에 전송하고자 한다. 또한 Objcet A는 물리적인 회선으로 존재하는 것이 아니라 메모리에 존재하는 추상적인 타입이다. 하지만 두 대의 컴퓨터 모두 byte 단위로 데이터를 주고 받을 수 있다는 공통점이 있다. 그러한 byte 데이터는 물리적인 회선을 통해 전기 신호로 전송할 수 있다. 

     

    두 대의 컴퓨터가 물리적인 회선으로 연결되어 있다고 했을 때, 먼저 모니카의 컴퓨터는 Objcet A를 byte 데이터로 직렬화한다. 그 byte 데이터를 회선을 통해서 립제이의 컴퓨터로 이동한다. 립제이의 컴퓨터는 byte 데이터를 역직렬화 한다.

     

    (왜? 다운로드 받은 byte 데이터는 그냥 파.일.일 뿐이기 때문이다. 파일은 메모리 위에 존재하는 실체가 아니기 때문에 

    메모리 위에 존재하는 실체로 만들기 위해서 byte 데이터를 역직렬화 하는 것이다.)

     

    실무 Ver.

    서버와 웹브라우저가 통신할 때 JSON 포맷을 사용해서 Objcet를 주고받는데, Object에서 JSON 파일로 직렬화해서 전송을 하고 다운로드한 JSON 파일에서 역직렬화해서 Objcet를 복구한다.

     

     

     

    https://www.youtube.com/watch?v=qrQZOPZmt0w 

     

     

    serialVersionUID 용도

    1. Serialization 이란? 모든 데이터의 흐름은 바이트 전송으로 이루어 집니다. 이것은 객체도 마찬가진데, 이때 사용되는 개념이 Serialization 이라는 것이고 자바에서는 java.io.Serializable 이라는 interf.

    unabated.tistory.com

    728x90

    댓글