Подтвердить что ты не робот

Десериализация Java в С++

Я работаю над приложением C++, которое должно обрабатывать различные типы сообщений. Один из типов - serialized Java objects (для которого нет источника).
Мне интересно, знает ли кто-нибудь о библиотеке С++ в строках jdeserialize?
Для тех, кто не знаком с этим, jdeserialize в основном разбирает сериализованные объекты и строит график.
Он отлично работает, и я экспериментировал с ним - используя JNI для управления взаимодействием с основной программой.
Это работает правильно, но громоздко. Я обеспокоен тем, что это будет головная боль обслуживания.

4b9b3361

Ответ 1

Java ABI не совместим с С++, поэтому вы не можете этого сделать. Объекты представлены в памяти по-разному (и это определенно не единственное важное различие, но этого должно быть достаточно).

Ответ 2

Я думаю, что лучший подход - написать код сначала в Java, а затем преобразовать этот код в С++. Для более быстрого запуска, заимствуя знания из Java сначала, и поэтапную реализацию, и эмуляцию некоторых функций (нет необходимости десериализовать ArrayList). Возможно, будет выполнен исходный код Jdeserialize, упомянутый @user888379. В любом случае вы, вероятно, захотите также десериализовать объекты в Java, для структурного сравнения с кодом С++.

Ответ 3

Я бы десериализовал его в JVM JVM, а затем использовал Java-методы для перевода данных в формат, который вам понадобится для вашей программы на С++. Есть достаточно различий между Java и С++, что даже если вы можете сделать это непосредственно на С++, вам нужно будет симулировать хороший кусок среды Java, чтобы иметь смысл данных.

Сериализованные объекты Java редко представляют собой одиночные объекты, они часто становятся "веб-сайтами" связанных объектов, таких как объект, содержащий карту, с несколькими строками в качестве ключей, которые ссылаются на who-know-what as values. И это только один встроенный атрибут.