Menggunakan Buffering Protokol

Berikut adalah contoh cepat untuk menunjukkan cara menyertakan buffering protokol dalam proyek 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 "proyek" penyiapan:

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. Buat kode Java dengan --java_out dan Kode Objective-C dengan --j2objc_out. Nilai yang ditentukan dengan setiap penanda adalah direktori {i>output<i} untuk bahasa target. Kedua bahasa output dapat dihasilkan 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 agar referensi ke file tersebut di Hello diselesaikan. Hal ini dilakukan menggunakan javac sehingga tidak diterjemahkan ke Tujuan C pada langkah berikutnya.

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 telah 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 ke 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