MessagePack for Javaを使う

MessagePack

The MessagePack Project
http://msgpack.org/

MessagePackはシリアライズライブラリです。

バージョン0.5.1を使ってみます

ビルド

ビルドにはMavenが必要です。
ダウンロードしてパス通せば使えます。

Maven - Welcome to Apache Maven 
http://maven.apache.org/

あとはこれを打てばおっけー

$ git clone https://github.com/msgpack/msgpack.git
$ cd msgpack/java/
$ mvn package
$ mvn install

targetフォルダの中にmsgpack-0.5.1-devel.jarができてると思います

eclipseの設定

[環境設定][java][Build Path][Classpath Variables][New...]

$HOME/.m2/repository
を追加

eclipseでプロジェクト作成

普通にjavaプロジェクトを作成
libsフォルダを作成し、中にmsgpack-0.5.1-devel.jarを入れてビルドパスに追加する
.classpathを開き以下を追加する





コードを書く

import org.msgpack.MessagePack;
import org.msgpack.annotation.MessagePackMessage;

public class Main {

  /**
   * シリアライズするクラス
   * MessagePackMessageアノテーションをつけるだけでおっけー
   */
  @MessagePackMessage
  public static class Employee {

    // publicなフィールドでないとシリアライズされない
    public String name;

    // publicなフィ(ry
    public int age;

    public Employee() {
      // デフォルトコンストラクタないと怒られます
    }

    public Employee(String name, int age) {
      this.name = name;
      this.age = age;
    }
  }

  public static void main(String[] args) {
    Employee src = new Employee("taro", 25);

    // シリアライズ
    byte[] buffer = MessagePack.pack(src);

    // 表示してみる
    for (byte b : buffer) {
      System.out.print(Integer.toHexString(b & 0xFF) + " ");
    }
    System.out.println();

    // デシリアライズ
    Employee dst = MessagePack.unpack(buffer, Employee.class);

    // ちゃんと復元されたかな?
    System.out.println("name:" + dst.name);
    System.out.println("age:" + dst.age);
  }
}

実行

92 a4 74 61 72 6f 19 
name:taro
age:25

やったー!シリアライズされたー!