यहां एक उदाहरण दिया गया है, जिसमें अपने प्रोजेक्ट में प्रोटोकॉल बफ़र को शामिल करने का तरीका बताया गया है.
यहां एक सामान्य प्रोटोकॉल बफ़र परिभाषा, geo.proto
दी गई है:
syntax = "proto2";
message Location {
optional string name = 1;
optional double latitude = 2;
optional double longitude = 3;
}
और हमारा मुख्य Java प्रोग्राम, 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());
}
}
सबसे पहले, एक छोटा "प्रोजेक्ट" सेटअप:
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
इसके बाद, प्रोटोकॉल बफ़र जनरेट करने के लिए j2objc_protoc
का इस्तेमाल करें. --java_out
के साथ Java कोड जनरेट करें और
--j2objc_out
के साथ Objective-C कोड. हर फ़्लैग के साथ तय की गई वैल्यू, इसके लिए आउटपुट डायरेक्ट्री है
टारगेट की भाषा. दोनों आउटपुट भाषाएं एक ही निर्देश में जनरेट की जा सकती हैं.
$J2OBJC_HOME/j2objc_protoc --java_out=java --j2objc_out=objc geo.proto
ls java Geo.java
ls objc Geo.h Geo.m
जनरेट की गई Java प्रोटोकॉल फ़ाइलों को कंपाइल करना ज़रूरी है, ताकि Hello
में उनके रेफ़रंस का समाधान हो सके.
javac
का इस्तेमाल करके ऐसा किया जाता है. इसलिए, नीचे दिए गए चरण में, उसका Objective-C में अनुवाद नहीं किया जाता.
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
क्लासपाथ में कंपाइल किए गए java प्रोटोकॉल जोड़कर, Java सोर्स का सामान्य तरीके से अनुवाद करें.
$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
अब हमारे पास अपने सभी Objective-C सोर्स हैं, जिन्हें कंपाइल और लिंक किया जा सकता है. आपको libprotobuf_runtime.a लाइब्रेरी का इस्तेमाल करके, प्रोटोबफ़ रनटाइम को शामिल किया जा सकता है.
$J2OBJC_HOME/j2objcc -lprotobuf_runtime -o hello objc/*.m
./hello Hello name: "CN Tower" latitude: 43.6412 longitude: -79.3884