JAVA

[JAVA] 직렬화, 역직렬화 개념

hail2y 2024. 10. 2. 22:37

https://www.study24x7.com/article/164/serialization-and-deserialization-in-java

직렬화

  • Object를 ByteStream으로 변환하는 과정
  • 객체나 데이터 구조를 네트워크나 저장소(ex. 배열 버퍼 또는 파일 형식)를 통한 전송에 적합한 형식으로 변환하는 프로세스
    [https://developer.mozilla.org/ko/docs/Glossary/Serialization]
  • 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용할 수 있도록 바이트 스트림 형태로 연속적인 데이터로 변환하는 포맷 변환 기술
  •  JVM의 힙 혹은 스택 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해 두고, 다른 컴퓨터에서 이 파일을 가져와 역직렬화를 통해 자바 객체로 변환하여 JVM 메모리에 적재한다
  • 바이트 스트림은 platform-independent해서 어느 한 플랫폼에서 직렬화된 객체(데이터)는 다른 플랫폼으로 역직렬화할 수 있다
  • 객체를 직렬화하기 위해서는 java.io.Serializable interface를 구현한다

[https://www.study24x7.com/article/164/serialization-and-deserialization-in-java]

 

cf. byteStream (바이트 스트림)
- 스트림은 클라이언트나 서버 간 출발지, 목적지로 입출력하기 위한 데이터가 흐르는 통로를 말한다. 자바는 스트림의 기본 단위를 바이트로 두고 있기 때문에, 네트워크나 데이터 베이스로 전송하기 위해 최소 단위인 바이트 스트림으로 변환하여 처리한다.

[https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A7%81%EB%A0%AC%ED%99%94Serializable-%EC%99%84%EB%B2%BD-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0]

 

- There are two types of streams in Java - Byte Stream and Character Stream. Byte streams in Java are used to perform input and output operations of 8-bit bytes while the Character stream is used to perform input and output operations for 16-bits Unicode. Character streams are useful in reading or writing text files which are processed character by character. Byte Streams are useful to read/write data from raw binary files.

자바에는 스트림에 두 가지 종류가 있다 - 바이트 스트림, 문자 스트림. 자바에서 바이트 스트림은 8비트-바이트들의 입출력 작업을 수행하는 데 사용되는데 반해, 문자 스트림은 16비트의 유니코드 입출력 작업을 수행하는 데 사용된다. 문자 스트림은 문자별로 하나씩 처리되는 텍스트 파일들을 읽거나 쓰는 데 유용하다. 바이트 스트림은 원본 바이너리 파일로부터 데이터를 읽거나 쓸 때 유용하다.   

[https://www.scaler.com/topics/java/byte-stream-in-java/]

 

 

 

☕ 자바 직렬화(Serializable) - 완벽 마스터하기

자바의 직렬화 & 역직렬화 직렬화(serialize)란 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용 할수 있도록 바이트 스트림(stream of bytes) 형태로 연속전인(serial) 데

inpa.tistory.com

역직렬화

  • 역직렬화는 직렬화의 반대 과정이라고 보면 된다
  • 즉, 바이트 스트림을 다시 Object로 변환하는 과정

'JAVA' 카테고리의 다른 글

[JAVA] 열거형 enum  (6) 2024.10.09
[JAVA] 큐(Queue), 덱(Deque) 구현체, 메서드 정리  (0) 2024.09.30
[JAVA] 자바와 C언어 메모리 구조 비교  (0) 2024.08.19
[JAVA] comparable, comparator 비교  (0) 2024.07.03
[JAVA] System.in.read()  (1) 2024.06.30