Анонс доклада: Факты и заблуждения о Java-сериализации

Oct 12, 2013 19:03



Serialization ... is the process of translating data structures or object state into a format that can be
stored (for example, in a file or memory buffer, or transmitted across a network connection link)
and resurrected later in the same or another computer environment.

Wikipedia

Во вторник, 15 октября, на конференции по Java-технологиям Read more... )

programming, java, serialization

Leave a comment

Comments 31

magicprinc October 14 2013, 08:27:48 UTC
продублирую в корне

JAXB

1. стандарт
2. несколько бодрых имплементаций e.g. METRO, MOXY
3. очень гибкий и удобный - полный контроль над тем что сгенерируется
4. можно идти от классов, можно от схемы (генерация классов)
5. можно в XML, можно в JSON http://blog.bdoughan.com/2011/04/jaxb-and-json-via-jettison.html
6. можно ускорять чтобы не тормозил... e.g. ThreadLocal statefull (де)сериализатора, быстрый StAX парсер (http://woodstox.codehaus.org/Performance) подробнее
http://stackoverflow.com/questions/8626153/make-jaxb-go-faster

Reply

elizarov October 14 2013, 08:29:13 UTC
Спасибо за ссылки. Ни разу не приходилось убыстрять JAXB, поэтому не сталкивался.

Reply

magicprinc October 14 2013, 08:35:03 UTC
Мне приходилось ускорять десериализацию. Было давно и цифры были ~ такие (1.чтобы оценить разницу в скорости 2. при static final JAXBContext т.к. он thread safe):
сериализация 20тыс объектов/сек
десериализация 9тыс obj/sec

ещё пункт к JAXB
- версионность делается либо совсем прозрачно, либо довольно просто

Reply


Kryo pure Java ext_2219629 October 15 2013, 05:35:00 UTC
Добрый день!

Конечно Kryo! Ничего быстрее я не видел ;-) Хотя подходит только для Java to Java. Всё очень просто.

https://code.google.com/p/kryo/

Её использует KryoNet - библиотека эффективной коммуникации через TCP или UDP. Тоже всё очень просто. Умеет RMI и просто обмен сообщениями.

https://code.google.com/p/kryonet/

Reply


ext_1168151 October 15 2013, 10:06:42 UTC
с опозданием добавлю свои 5 копеек... расцвет ява сериализации пришелся на технологию jini, котороя сильно опередила свое время и поэтому не была оценена рынком. сейчас именно ява сериализация для меня вещь бессмысленная, т.к. в реальной жизни приходится взаимодействовать с другими языками/платформами и объявлять wire format. в этом разрезе было бы более интересен топик "high performance serialization in java". а ObjectOutputStream пусть покоится с миром - не нужны графы объектов.

Reply

elizarov October 16 2013, 06:21:45 UTC
high performance serialization это когда заточено под твои конкретные нужды. Ну вот, например, для передачи миллионов котировок в секунду у нас всё с делано быстро и без ОbjectOutputStream. А для передачи бизнес объектов между узлами кластера OOS это самое то.

Reply

ext_1168151 October 16 2013, 10:36:34 UTC
ну в этом смысле единственный use case приходящий на ум - это ad-hoc persistence для кэша (хэшмапы). но ключевое слово тут - ad-hoc. а вот бизнес объекты так гонять... нафиг-нафиг.. я лишаюсь network level integration api на ровном месте, приобретаю букет среиализованных класс-дескрипторов и прочих подарков OOS... понятно что лет 7 назад так все делали.... но тож 7 лет назад.

Reply

elizarov October 22 2013, 07:02:22 UTC
Это интересные аргументы в духе Android документации на java.io.Serializable. Не используйте! "Она лишает вас network level integration api на ровном месте" ;) Кто тебя чего лишает? Нужен network level integration api -- делай. Использование java serialization _в_других_целях_ никак этому не мешает.

Reply


Видео будет? ext_2262021 January 4 2014, 10:09:12 UTC
Извините, может я чего-то не догнал, но будет ли видео в свободном доступе?

Reply

Re: Видео будет? vissarion February 22 2014, 09:21:49 UTC

Leave a comment

Up