Menggunakan Buffering Protokol

Berikut adalah contoh cepat untuk menunjukkan cara menyertakan buffering protokol dalam project Anda.

Berikut adalah definisi buffering protokol sederhana, geo.proto:

syntax = "proto2";

message Location {
  optional string name = 1;
  optional double latitude = 2;
  optional double longitude = 3;
}

Dan program Java utama kami, Hello.java:

class Hello {
  public static void main(String[] args) {
    Geo.Location.Builder locationBuilder = Geo.Location.newBuilder();
    locationBuilder.setName("CN Tower");
    locationBuilder.setLatitude(43.6412172);
    locationBuilder.setLongitude(-79.3884058);
    Geo.Location location = locationBuilder.build();
    System.out.println(location.toString());
  }
}

Pertama, sedikit penyiapan "project":

export J2OBJC_HOME=~/j2objc    # Change to where the j2objc distribution was unzipped.
ls $J2OBJC_HOME/j2objc         # Fix above definition until this command works.
mkdir java objc classes        # Output directories

Selanjutnya, gunakan j2objc_protoc untuk membuat buffering protokol. Membuat kode Java dengan --java_out dan kode Objective-C dengan --j2objc_out. Nilai yang ditentukan dengan setiap flag adalah direktori output untuk bahasa target. Kedua bahasa output dapat dibuat dalam perintah yang sama.

$J2OBJC_HOME/j2objc_protoc --java_out=java --j2objc_out=objc geo.proto
ls java
Geo.java
ls objc
Geo.h Geo.m

File proto Java yang dihasilkan harus dikompilasi sehingga referensi ke file tersebut dalam Hello dapat diselesaikan. Hal ini dilakukan menggunakan javac agar tidak diterjemahkan ke Objective C pada langkah berikut.

javac -source 1.8 -target 1.8 -bootclasspath $J2OBJC_HOME/lib/jre_emul.jar -cp $J2OBJC_HOME/lib/protobuf_runtime.jar -d classes java/*.java
ls classes/
Geo$1.class                 Geo$Location$Builder.class  Geo$LocationOrBuilder.class
Geo$Location$1.class        Geo$Location.class          Geo.class

Terjemahkan sumber Java seperti biasa, dengan menambahkan proto java yang dikompilasi ke classpath.

$J2OBJC_HOME/j2objc -cp classes:$J2OBJC_HOME/lib/protobuf_runtime.jar -d objc Hello.java
ls objc
Geo.h   Geo.m   Hello.h Hello.m

Sekarang kita memiliki semua sumber Objective-C untuk dikompilasi dan ditautkan. Anda harus menautkan library libprotobuf_runtime.a untuk menyertakan runtime protobuf.

$J2OBJC_HOME/j2objcc -lprotobuf_runtime -o hello objc/*.m
./hello Hello
name: "CN Tower"
latitude: 43.6412
longitude: -79.3884