직렬화란? → 메모리를 디스크에 저장하거나, 네트워크 통신에 사용하기 위한 형식으로 변환한 것.
JVM에선 데이터들을 외부의 자바 시스템에서도 사용할 수 있도록 바이트(Byte)
형태로 다시 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 역직렬화를 포함한다.
안드로이드에서 서버에 데이터를 request할 때 data class를 Gson이나 다른 라이브러리로 직렬화 해서 보내야할까?
<aside> 💡 서로 다른 가상 메모리 공간에 있는 곳에 데이터를 전달할 수 없다. 주소값이 아닌 직렬화된 데이터를 객체를 이용할 수 있음.
데이터 중 디스크에 저장하거나, 통신이 가능한 데이터는 값(참조형 데이터X) 형식 데이터만 가능하다.
직렬화를 하게되면 이러한 데이터들도 값 형식으로 데이터를 변환해준다.
</aside>
코틀린에서 객체는 메모리의 주소값을 가지고 있다. 이러한 객체를 서버나, 다른 화면에 보내기 위해 직렬화를 사용해야한다.
아! 그래서 액티비티간 객체를 전달할 때도 @Serialization
어노테이션을 사용했구나!