2013-09-29 2 views
0

thread에 게시 된 매우 유용한 답변은 일련 번호 관련 문제를 해결하는 데 도움이되었습니다. 응답에서 나는 그것이 jvm에서 데이터를 유지하고 다시 만드는 수단이라는 것을 이해합니다. 직렬화는 바이트 스트림에서 Java 객체를 재생성하는 데 사용됩니다. 그러나 데이터는 XML/JSON 또는 다른 데이터 형식을 통해 전송 될 수 있습니다. 그래서 직렬화라고 부를 수 있을까요? 차이점은 관련 자바 라이브러리가 바이트 스트림/xml 데이터/json 데이터 등의 데이터 형식을 기반으로 오브젝트를 재생성한다고 가정합니다. 2 자바 기반 시스템 사이의 통신의 경우, 나는 bytestream이 다른 기술에서 작동하는 2 개의 시스템 사이의 통신의 경우 다른 표준 데이터 형식이 사용되는 곳에서 유용 할 것이라고 가정합니다. EJB/Java RMI의 경우, java가 표준 직렬화 API를 사용하여 객체를 직렬화 해제하지 않는다고 가정 할 때 클라이언트와 서버간에 전송되는 객체가 직렬화되어야한다고 가정합니다. 위에 나열된 모든 항목이 올바른지 확인하십시오.데이터 교환 형식 및 Java 정규화

답변

1

위키는 잘

In computer science, in the context of data storage and transmission, 
serialization is the process of translating data structures or 
object state into a format that can be stored 

그것을 요약 그래서 첫 번째 질문

데이터가 XML/JSON에 의해 ​​또는 다른 데이터 형식을 통해 전송 될 수있다 그러나

. 그래서 직렬화라고 부를 수 있을까요?

예. 저장할 수있는 한 원하는 모든 형식.

질문 2 :

2 자바 기반 시스템 간의 통신의 경우, 내가 다른 기술에서 작업이 시스템 간의 통신의 경우와 같이 다른 표준 데이터 형식이 사용되는 위치를 바이트 스트림이 유용 할 것이다 가정합니다.

실제로 자바의 직렬화는 사용자가 볼 때 거의 보이지 않으며 속도가 중요하지 않은 경우에만 사용되는 경향이 있습니다. 예를 들어, 일부 분산 제품은 java 직렬화를 사용하여 한 노드에서 다른 노드로 오브젝트를 보낼 수 있습니다. JVM에서 지원하는 서비스에서부터 다른 서비스에 이르기까지 JSON 또는 XML과 같은 친숙한 형식의 웹 서비스는 훨씬 더 일반적입니다. 속도가 중요하거나 페이로드 크기가 가능한 한 작아야하는 제품의 경우 java의 직렬화를 사용하지 않지만 우선 순위 바이너리 형식을 사용합니다.

protobuf, avrothrift과 같은 프로토콜은 여러분에게 두 가지 장점을 모두 제공하도록 설계되었습니다. 그들은 다소 인기가 있지만 보편적 인 것은 아닙니다.

마셜 러 또는 개체 마샬링과 마찬가지로 마샬링이라는 용어를들을 수도 있습니다. 비록 Java가 아닌 곳에서는 이진 형식에 대해서 이야기 할 때 마샬링을 듣는 것이 더 일반적이며 바이너리 형식 일 때는 직렬화를 사용한다고해도 기본적으로 같은 의미입니다.

+0

감사합니다. Monkjack! 따라서 EJB 또는 Java RMI의 경우 객체는 항상 직렬화되어야합니까? 이러한 프레임 워크는 ObjectOutputStream을 사용한 Java 내부 직렬화 기능에 의존합니까? –

+0

EJB 또는 Java RMI에 대해 너무 많이 알지는 못하지만 Java의 내부 직렬화 또는 이와 유사한 것을 사용한다고 생각합니다. – monkjack

+0

Thanks Monk !!!! –