Hallo Leute,
Ich habe eine Frage zur Verwendung des Interfaces Serializable.
Bisher haben wir serialisierbare Objekte ausschließlich für die Kommunikation zwischen Servern und Clients verwendet - also für Objekte, die direkt serialisiert und zeitnahe wieder deserialisiert werden.
Nun sollte ich in alle kürze ein kleines, internes Tool schreiben. Bestandteil dieses Tools ist es u.a., dass man das verwendete Objektnetz speichern und auch wieder laden kann.
Da ich keine Freigabe für die Verwendung von externen Bibliotheken habe, bin ich auf Java-Bordmittel angewiesen (Java Version 8 Update 51).
Die Serialisierung als XML kann leider nicht in frage, da ich dafür öffentliche, parameterloser Konstruktoren "hinterlegen" müsste, was die geforderte "Architektur" des Tools nicht gestattet.
Daher - und auch aus Zeitmangel - kam ich auf die Idee, die Objekt direkt zu serialisieren und in eine Datei zu pressen bzw. aus dieser Datei wieder zu deserialiseren.
Das funktioniert soweit tadellos (ich weiß, dass die API die Empfehlung ausspricht, man solle einen parameterlosen Konstruktor hinterlegen) und auch komplexe Objektnetze werden korrekt gespeichert und geladen.
Nun wurde mir jedoch die Befürchtung mitgeteilt, dass es damit Probleme geben könnte, wenn sich zwischen einem Speichern-Vorgang und einem Laden-Vorgang die JavaVersion ändern würde:
Bei uns ist das Problem, dass Java über ein zentrales Repository bereitgestellt wird. Also sowohl JRE, als auch JDK liegen an einer zentralen Stelle und werden auch zentral verwaltet. Wird also entschieden, dass wir eine andere Version verwenden, so ist diese Verwendung sofort wirksam. Die Verwendung einer eigenen JavaVersion ist nicht gestattet.
Jetzt ist meine Frage:
Kann folgende Situation eintreten?:
Ein Objektnetz wird in der Version A gespeichert und das Programm beendet. Java wird auf Version B geupdated; Nach einem Neustart kann das Objektnetz nicht mehr wiederhergestellt werden.
Entschuldigt bitte, wenn das eine blöde Frage ist - ich bin heute nicht wirklich auf der Höhe. Vielleicht habe ich daher auch eine naheliegendere Lösung einfach übersehen.
Beste Grüße
Ich habe eine Frage zur Verwendung des Interfaces Serializable.
Bisher haben wir serialisierbare Objekte ausschließlich für die Kommunikation zwischen Servern und Clients verwendet - also für Objekte, die direkt serialisiert und zeitnahe wieder deserialisiert werden.
Nun sollte ich in alle kürze ein kleines, internes Tool schreiben. Bestandteil dieses Tools ist es u.a., dass man das verwendete Objektnetz speichern und auch wieder laden kann.
Da ich keine Freigabe für die Verwendung von externen Bibliotheken habe, bin ich auf Java-Bordmittel angewiesen (Java Version 8 Update 51).
Die Serialisierung als XML kann leider nicht in frage, da ich dafür öffentliche, parameterloser Konstruktoren "hinterlegen" müsste, was die geforderte "Architektur" des Tools nicht gestattet.
Daher - und auch aus Zeitmangel - kam ich auf die Idee, die Objekt direkt zu serialisieren und in eine Datei zu pressen bzw. aus dieser Datei wieder zu deserialiseren.
Das funktioniert soweit tadellos (ich weiß, dass die API die Empfehlung ausspricht, man solle einen parameterlosen Konstruktor hinterlegen) und auch komplexe Objektnetze werden korrekt gespeichert und geladen.
Nun wurde mir jedoch die Befürchtung mitgeteilt, dass es damit Probleme geben könnte, wenn sich zwischen einem Speichern-Vorgang und einem Laden-Vorgang die JavaVersion ändern würde:
Bei uns ist das Problem, dass Java über ein zentrales Repository bereitgestellt wird. Also sowohl JRE, als auch JDK liegen an einer zentralen Stelle und werden auch zentral verwaltet. Wird also entschieden, dass wir eine andere Version verwenden, so ist diese Verwendung sofort wirksam. Die Verwendung einer eigenen JavaVersion ist nicht gestattet.
Jetzt ist meine Frage:
Kann folgende Situation eintreten?:
Ein Objektnetz wird in der Version A gespeichert und das Programm beendet. Java wird auf Version B geupdated; Nach einem Neustart kann das Objektnetz nicht mehr wiederhergestellt werden.
Entschuldigt bitte, wenn das eine blöde Frage ist - ich bin heute nicht wirklich auf der Höhe. Vielleicht habe ich daher auch eine naheliegendere Lösung einfach übersehen.
Beste Grüße