[Projet] Mon projet de sérialisation Java "universelle"
Bonjour,
Aujourd'hui je souhaiterais vous présenter mon projet universal-serializer (lien GitHub) pour sérialiser/désérialiser des objets Java à l'aide d'une interface commune Serializer.
L'objectif ? Simplifier le développement. En effet, lorsque vous utilisez des méthodes pour transformer vos objets d'un format vers un autre vous :
- Utilisez souvent plus d'une instruction
- Effectuez des recherches dans la JavaDoc pour trouver la méthode qui convient
- Pouvez oublier de fermer vos flux
Cet API gère actuellement plusieurs formats :
- Binaire, avec 2 implémentations : Sérialisation Java, Google Protocol Buffers
- Fichier, avec 2 implémentations : CSV, Excel (XLS et XLSX)
- Texte, avec 4 implémentations : JWT (JSON Web Tokens), XML (JAXB), Base64, Base64 URL
Présentation de l'interface Serializer :
- serialize(X myObject) : Y :fleche: Sérialise un objet Java vers un autre format (binaire, texte, ou fichier).
- deserialize(Y myData) : X :fleche: Désérialise un format de donnée vers un objet Java (opération inverse de serialize())
- sendTo(X myObject, OutputStream out) : void :fleche: Sérialise un objet Java et l'envoi dans un flux (utile pour du développement réseaux)
- receiveFrom(InputStream in) : X :fleche: Récupère un objet Java à partir d'un flux (utile pour du développement réseaux)
Voici un exemple d'utilisation pour chaque format :
Code:
1 2 3 4
| // Sérialisation Java
JavaSerializer<MyClass> s = new JavaSerializer<>();
byte[] byteArray = s.serialize(new MyClass(/* init */));
MyClass deserialized = s.deserialize(byteArray); |
Code:
1 2 3 4
| // Sérialisation Excel
ExcelSerializer<MyClass> s = new ExcelSerializer<>(MyClass.class /* , your FileOptions */);
Path path = s.serialize(new ArrayList<MyClass>());
List<MyClass> deserialized = s.deserialize(path); |
Code:
1 2 3 4 5
| // Sérialisation JWT
String SECRET = "546T78UINqqsvfzfs<vs<sdv_-('U87Y89YG87";
JwtSerializer<MyClass> s = new JwtSerializer<>(MyClass.class, Algorithm.HS256, SECRET);
String jsonWebToken = s.serialize(new MyClass(/* init */));
MyClass deserialized = s.deserialize(jsonWebToken); |
Questions :
:fleche: 1. Que pensez-vous de ce projet ? Vous semble-t-il suffisamment intéressant pour être utilisé dans vos projets ?
:fleche: 2. Quels sont les implémentations que vous souhaiteriez voir apparaitre dans l'API ? (Mis à part JSON, que je ne compte pas implémenter)
:fleche: 3. Si vous aviez à changer les dépendances du pom.xml, mettriez-vous des dépendances en optional true ?
Note : En ce qui concerne le nom du projet, j'ai pensé à une télécommande universelle :aie:
Merci pour vos retours :)