Я читаю об Avro и пытаюсь сравнить систему сериализации avro и java.Но почему-то я не могу понять, почему avro используется для сериализации данных вместо Java-сериализации.На самом деле, почему пришла другая система, чтобы заменить систему сериализации Java?
Вот краткое изложение моего понимания.Чтобы использовать возможности сериализации Java, мы должны заставить этот класс реализовывать интерфейс Serilizable.Если вы делаете это и сериализуете объект, то во время десериализации что-то вроде
e = (Employee) in.readObject ();
Далее мы можем использовать методы получения / установки для игры с объектом сотрудника.
В avro First - это определение схемы.Далее следует использовать API avro для сериализации.Опять же при десериализации происходит что-то вроде этого.
Далее мы можем использовать геттеры / сеттеры для игры с объектом работника.
Вопрос в том, что я не вижу никакой разницы, только в том, чтоAPI, который использовал это по-другому?Может кто-нибудь прояснить мои сомнения?
public AvroHttpRequest deSerealizeAvroHttpRequestJSON(byte[] data) {
DatumReader<AvroHttpRequest> reader
= new SpecificDatumReader<>(AvroHttpRequest.class);
Decoder decoder = null;
try {
decoder = DecoderFactory.get().jsonDecoder(
AvroHttpRequest.getClassSchema(), new String(data));
return reader.read(null, decoder);
} catch (IOException e) {
logger.error("Deserialization error:" + e.getMessage());
}}
Далее мы можем использовать геттеры / сеттеры для игры с объектом сотрудника.
Вопрос в том, что я не вижу никакой разницы между этими двумяподходы.Оба делают одно и то же.Только что API разные?Может кто-нибудь помочь мне лучше понять это?