Google Protocol Buffers pour Java

Le Protocol Buffers (ou Protobuf) est un format de données créé et utilisé par Google. Il se présente comme une solution alternative au XML, comme langage d’échanges de données entre système d’informations hétérogènes. Il existe actuellement des API pour ce format en C++ et Java. Google annonce des performances bien supérieures à l’utilisation du XML (aussi bien DOM que le véloce Sax). Son poids de fichier serait 3 à 10 fois plus faible que XML et son parsage de 20 à 100 fois plus rapide. Et tout ceci en Open Source 😉 .

Vidéo de présentation en Anglais, par Google:

Au lieu de refaire un tutorial, je vous conseille de lire le tutorial de Google, qui est très complet.

Celui s’articulera autour d’un nouveau format de fichier, définissant la structure d’un objet: les fichiers .proto que l’on pourrait comparer à des fichiers WSDL (pour les Web Services).

package tutorial;
 
option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";
 
message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
 
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
 
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
 
  repeated PhoneNumber phone = 4;
}
 
message AddressBook {
  repeated Person person = 1;
}

Grâce aux API fournies par Google, vous pourrez créer des automates afin de sérialiser et désérialiser aisément ces données. L’utilisation des protocoles buffers passant pas l’utilisation des automates n’en fait pas encore un outil souple car lié à une structure donnée et unique. Une modification du modele de données entraine une regeneration de l’automate.Parions sur l’arrivée prochaine de taches ant permettant d’améliorer le confort du développeur, mais aussi d’une interopérabilité avec l’univers DotNet.

Sources:

  • Od.

    De ce que j’ai pu lire, concernant l’optimisation de la bande passante il existe, à mon avis, des alternatives tout aussi performantes, voire meilleures (WBXML, Hessian, …) pour ce qui est du transfert d’info hierarchisées.

    Donc, sauf incompréhension de ma part (ce qui ne serait pas étonnant 😉 le principal avantage de ce protocole serait pour la sérialisation de données sur un file system ?

    Maintenant de la à ce que ca devienne un standard il va y avoir du chemin, les dév de Google se seront au moins fait plaisir 😉

  • l’avantage de protobuf est sa vitesse de sérialisation/deserialisation d’objet, son interopérabilité (Java, C++, Python, et on susure C#) mais aussi son côté ouvert.
    Google l’utilise déjà pour ses propres besoins.

    Toutefois, je ne connais pas WBXML, Hessian. Cela mérite que je m’y intéresse!

  • Pingback: 5 Fresh Minutes IT – Java & IT » Le nouveau langage Go de Google est un « Killer Language » ?()

  • Pingback: Le nouveau langage Go de Google est il un “Killer Language” ? – 5.FreshMinutes.IT – Java & IT()