Связь Dalvik с Java SE - PullRequest
       8

Связь Dalvik с Java SE

4 голосов
/ 24 января 2011

Я планирую разработать приложение для Android, для которого требуется внутренний сервер для синхронизации данных с другими пользователями приложения. Я планирую написать этот сервер на стандартном Java, работающем на Unix-сервере.

Однажды я сделал это напрямую между двумя устройствами Android, в этом случае я просто сериализовал все данные, необходимые для отправки на обоих концах.

Однако я подозреваю, что формат, к которому сериализуется Dalvik, и формат Java SE несовместимы. Это тот случай? И если это так, каковы мои альтернативы? Одна вещь, которая пришла мне в голову, - это отправка необработанного xml через сокет, но, если есть лучшие альтернативы, я буду рад их услышать.

Спасибо.

Ответы [ 6 ]

6 голосов
/ 24 января 2011

Если вы работаете с сервером, вам следует полагаться на что-то более стандартное, например, XML или JSON. Я лично поддерживаю JSON. Не следует ожидать, что все ваши клиенты будут дружественными к Java. Почти каждое мобильное устройство поддерживает JSON. Посмотрите библиотеку Jackson , чтобы сгенерировать свой json. Затем вы можете снова использовать Джексона для десериализации вашего объекта.

Красота этого решения также глупо проста. Вы можете посмотреть на содержание, просто поместив запрос в браузере. Не так просто с двоичными данными.

3 голосов
/ 24 января 2011

Я успешно использовал сериализацию данных между устройствами Android и серверами.

Мне пришлось преобразовать класс TimeZone в строку и обратно, потому что класс TimeZone, в частности, не полностью совместим (он пытался передать что-то в пакете sun., который получил ClassNotFoundException на Android).

Кроме этого, я смог перенести объекты из java.util коллекций и карт и из java.sql типов данных и, конечно, java.lang типов String, Integer и т. Д.

2 голосов
/ 24 января 2011

Вы можете попробовать protobuf для сериализации. Говорят, что он более эффективен, и вас не будет беспокоить совместимость.

Вы также можете использовать некоторую форму сериализации XML (JAXB, XStream, XMLEncoder и т. Д.)

Разрешение этого вопроса намекает на то, что оно совместимо с .

1 голос
/ 24 января 2011

Посмотрите на этот тест. Kryo - это тот, который я использую.Он поддерживает создание пользовательской двоичной сериализации, которая может быть выполнена способом, подходящим как для Dalvik, так и для JSE.

Возможно, вы захотите взглянуть на связанный вопрос, который предоставляет дополнительное обсуждение и ссылки.

1 голос
/ 24 января 2011

Если ваш объектный граф довольно прост и если вам вообще нравится JSON, в Android включена поддержка JSON , и в Java SE будет легко получить поддержку. Я склонен считать JSON хорошей альтернативой, когда сериализация XML или Java кажется «тяжелой».

0 голосов
/ 24 января 2011

Буферы протокола были бы хорошим форматом по проводам для рассмотрения.

Я не могу говорить о сериализации Dalvik.

...