본문 바로가기
프로그래밍 언어/Java

[Java] 직렬화(Serialization)란?

by Tree나무Tree 2024. 7. 12.

객체를 저장하거나 메모리, 데이터베이스 혹은 파일로 옮기려면 어떻게 해야할까?

 

이럴 때 필요한 것이 직렬화(Serialization)다. 

 

자바의 직렬화는 객체를 바이트 스트림으로 변환하여 저장하거나 네트워크를 통해 전송할 수 있게 해주는 과정이다.

 

쉽게 말해, 자바 객체를 파일에 저장하거나 다른 컴퓨터로 보낼 수 있도록 ‘일렬로 세우는’ 과정이다.

 

이를 통해 객체의 상태를 저장하거나 공유할 수 있다.

 

왜 직렬화가 필요한가?

직렬화의 주된 목적은 객체를 상태 그대로 저장하고 필요할 때 다시 생성하여 사용하는 것이다.

 

 

 

역직렬화(Deserialization)는 직렬화의 반대말로,

 

네트워크나 영구저장소에서 바이트 스트림을 가져와서 객체가 저장되었던 바로 그 상태로 변환하는 것이다.

 

직렬화하면서 생긴 바이트 스트림은 플랫폼에 독립적이다.

 

직렬화된 객체는 다른 플랫폼에서 역직렬화가 가능하다는 뜻이다.

 

더보기

바이트 스트림이란?

스트림은 클라이언트나 서버 간에 출발지 목적지로 입출력하기 위한 데이터가 흐르는 통로를 말한다.
바이트 스트림(byte stream)은 데이터를 1바이트 단위로 연속적으로 전송하는 데이터 스트림이다.

이를 통해 데이터를 파일에 저장하거나 네트워크를 통해 전송할 수 있다.

자바에서는 바이트 스트림을 다루기 위해 여러 가지 클래스를 제공한다.

 

그렇다면 데이터 스트림은 무엇인가?

데이터 스트림(data stream)은 연속적으로 데이터를 전송하는 방식으로, 데이터의 흐름을 관리하고 처리하는 데 사용된다.

데이터 스트림은 주로 파일 입출력(I/O)이나 네트워크 통신에서 데이터를 순차적으로 읽거나 쓸 때 사용된다.

 

 

 

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

[Java] class 선언 방법, class란?  (3) 2024.02.14