पैकेज के नामों के लिए प्रीफ़िक्स का इस्तेमाल करने का तरीका.

नाम मैपिंग

Java अनौपचारिक तौर पर नेमस्पेस तय करने के लिए, पैकेज का इस्तेमाल करता है; जबकि Objective C++ में C++ नेमस्पेस है, Objective C इसमें नहीं है. एक से ज़्यादा पैकेज वाली कक्षाओं का इस्तेमाल करने पर, नाम को यूनीक बनाए रखने के लिए, J2ObjC, पैकेज के नाम को टाइप के नाम के साथ जोड़ता है. उदाहरण के लिए, java.util.Map का नाम बदलकर JavaUtilMap कर दिया गया है.

माफ़ करें, ऊंट के आकार वाले पैकेज के नामों से, जनरेट किया गया कोड पढ़ने में आसान हो सकता है. ऐसा खास तौर पर, पैकेज के लंबे नामों के साथ होता है. उदाहरण के लिए, Google ग्वावा का बीटा एनोटेशन com.google.common.annotations पैकेज में है और ComGoogleCommonAnnotationsBeta को Beta के मुकाबले पढ़ना मुश्किल है.

पैकेज के बारे में जानकारी देना

अनौपचारिक नेमस्पेस के बारे में बताने के लिए, ऑब्जेक्टिव-सी कन्वेंशन में, शेयर किए गए प्रीफ़िक्स का इस्तेमाल किया जाता है. आम तौर पर, इन अपरकेस में दो अपरकेस अक्षर होते हैं. उदाहरण के लिए, iOS फ़ाउंडेशन फ़्रेमवर्क "Ns" (NeXTStep से) का इस्तेमाल करता है. Google ग्वावा के बीटा नाम को आसान बनाने के लिए, "GG" जैसे प्रीफ़िक्स को Beta के तौर पर GGBeta के तौर पर इस्तेमाल करके, पढ़ने में आसान बनाया जाएगा.

J2ObjC, पैकेज के नामों पर मैप करने के लिए, अपने प्रीफ़िक्स तय करने वाले डेवलपर की मदद करता है. ऐसा --prefix package=prefix का इस्तेमाल करके कमांड लाइन पर किया जाता है. Beta के पैकेज में सभी क्लास के नाम को छोटा करने के लिए, "--prefix com.google.common.annotations=GG" का इस्तेमाल किया जाएगा. हर पैकेज के लिए एक अलग प्रीफ़िक्स एलान ज़रूरी है.

एक से ज़्यादा पैकेज के लिए एक ही सफ़िक्स तय करना

अक्सर छोटी लाइब्रेरी में Java क्लास के नाम होते हैं जो आपस में मेल नहीं खाते. इसलिए, वे वाइल्डकार्ड पैकेज की खास बातों के साथ एक ही प्रीफ़िक्स शेयर कर सकते हैं. उदाहरण के लिए, Joda-Time के सभी पैकेज, --prefix 'org.joda.time.*=JT' का इस्तेमाल करके एक जैसे JT प्रीफ़िक्स शेयर कर सकते हैं. वाइल्डकार्ड वर्ण '*' ही इस्तेमाल किया जा सकता है, जो कमांड-लाइन शेल की तरह ही फ़ाइल नामों से मेल खाता हो.

एक से ज़्यादा पैकेज के बारे में जानकारी देना

प्रीफ़िक्स प्रॉपर्टी के बारे में बताने के लिए, "--prefixes फ़ाइल" आर्ग्युमेंट के साथ प्रॉपर्टी फ़ाइल का इस्तेमाल किया जा सकता है:

cat prefixes.properties
com.google.common.annotations: GG
com.google.common.base: GG

# While GG can be used for all packages, let's mix it up.
com.google.common.collect: GC
com.google.common.io: GIO        # A prefix can be more than two characters,
com.google.common.net: GuavaNet  # a lot more!
...
j2objc --prefixes prefixes.properties <args>

रनटाइम के दौरान प्रीफ़िक्स की गई कक्षाएं

पूरा हो चुके ऐप्लिकेशन में प्रीफ़िक्स वाली क्लास होती हैं, इसलिए डिफ़ॉल्ट रूप से उन्हें मूल Java क्लास का नाम इस्तेमाल करके नहीं ढूंढा जा सकता. हालांकि, अगर ऐप्लिकेशन के संसाधन बंडल में प्रीफ़िक्स प्रॉपर्टी नाम की कोई फ़ाइल है, जिसमें अनुवाद के लिए इस्तेमाल किए गए प्रीफ़िक्स शामिल हैं, तो Class.forName(javaName) को मैप की गई क्लास मिलेगी.

Xcode में किसी iOS ऐप्लिकेशन में ऊपर दी गई prefixs.property जोड़ने के लिए, बिल्ड टारगेट का बिल्ड फ़ेज़ टैब खोलें. इसके बाद, कॉपी किए गए बंडल के संसाधनों के सेक्शन को बड़ा करें और उस सूची में prefixs.Properties फ़ाइल जोड़ें. Java रिसॉर्स में इस बारे में ज़्यादा जानकारी दी गई है कि Java रिसॉर्स कॉन्सेप्ट, iOS रिसॉर्स पर कैसे मैप करते हैं.