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.