Compile Protobuf dan Protobuf Java di Centos 7

Protobuf? Apaan sih sebenernya? Kok gak pernah denger?

Oke oke. Jadi ceritanya ni protobuf adalah sebuah software / library yang dikembangin oleh google, yang tujuannya untuk mempermudah pembuatan program yang memakai RPC (remote procedure call). Protobuf ini mirip mirip dengan apache thrift. Untuk installnya, ikutin aja script berikut:

#!/bin/bash
# dependencies
# Java JDK
yum install "Development Tools"
yum install libtool

# clone protobuf
git clone https://github.com/google/protobuf.git
cd protobuf
./autogen.sh
./configure
make
make check
sudo make install

# compile protobuf java
cd java
yum install maven
mvn test
mvn install
mvn package
 
# compile grpc java
git clone https://github.com/grpc/grpc-java.git
cd grpc-java
./gradlew build
./gradlew install

# compile grpc java compiler
cd compiler
../gradlew java_pluginExecutable >& log.javacompiler
sudo ln -s /home/protobuf/grpc-java/compiler/build/binaries/java_pluginExecutable/protoc-gen-grpc-java /usr/local/bin/

Setelah protobuf udah tercompcompile dengan benar, maka akan ada file protoc dan file protoc-gen-grpc-java.Langkah berikutnya adalah membuat file .proto. Contoh filenya adalah seperti berikut

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;
}

Untuk menggunakannya, cukup menggunakan script berikut:

cd
mkdir out
protoc hello_world.proto --grpc-java_out=out --java_out=out

Setelah itu, di folder out akan ada file *.java yang dapat dipakai untuk membuat program menggunakan RPC 😀

 

Tutorial ini seharusnya bisa jalan di linux apapun, asalkan memiliki arsitektur 64 bit. Saat dicoba compile di Ubuntu 32 bit, ada error ketika gradlew dijalankan.

Leave A Comment