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.