كيفية تحديد بادئات لأسماء الحزم.

تعيين الأسماء

تستخدم جافا الحزم لتحديد مساحات الأسماء بشكل غير رسمي، في حين أن الهدف C++ يحتوي على مساحات أسماء C++ ، بينما لا يحتوي الهدف C على أي منها. للحفاظ على تفرُّد الاسم عند استخدام الفئات من حِزم متعدّدة، يُضيف J2ObjC نسخة من الحزمة موضوعها جمل إلى اسم النوع. على سبيل المثال، تمت إعادة تسمية java.util.Map إلى JavaUtilMap.

ولسوء الحظ، يمكن أن تقلل أسماء الحزم المُغطاة بالجمل من سهولة قراءة الرمز الذي يتم إنشاؤه، خاصة مع أسماء الحزم الطويلة. على سبيل المثال، يمكنك العثور على التعليقات التوضيحية التجريبية من Google Guava في حزمة com.google.common.annotations، كما أن قراءة ComGoogleCommonAnnotationsBeta أصعب من قراءة Beta.

تعريف بادئة الحزمة

إن اصطلاح "الهدف ج" لتحديد مساحات الاسم غير الرسمية هو استخدام بادئة مشتركة، وعادةً ما تكون حرفان كبيران. يستخدم نظام التشغيل iOS Foundation "NS" (من NeXTStep) مثلاً. لتبسيط الاسم التجريبي لـ Google Guava، يمكن لبادئة مثل "GG" تحسين إمكانية القراءة من خلال الإشارة إلى Beta بالاسم GGBeta.

تتيح J2ObjC لمطوّري البرامج تحديد بادئاتهم الخاصة لربطها بأسماء الحزم. ويتم هذا في سطر الأوامر باستخدام --prefix package=prefix. لاختصار جميع أسماء الفئات في حزمة Beta، سيتم استخدام "--prefix com.google.common.annotations=GG". يجب توفير بيان بادئة منفصل لكل حزمة.

تحديد بادئة واحدة لحزم متعددة

غالبًا ما تتضمن المكتبات الأصغر حجمًا أسماء فئات جافا غير متعارضة، ولذلك يمكنها مشاركة بادئة واحدة مع مواصفات حزمة أحرف البدل. على سبيل المثال، يمكن لجميع حزم Joda-Time مشاركة بادئة JT نفسها باستخدام --prefix 'org.joda.time.*=JT'. إن حرف البدل الوحيد المعتمد هو '*'، والذي يتطابق مع طريقة سطر أوامر الأوامر مع أسماء الملفات.

تحديد بادئات حزم متعددة

لتبسيط تحديد عدة تعريفات لبادئات، يمكن استخدام ملف الخصائص مع وسيطة "--prefixes file":

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>

فصول مسبقة في وقت التشغيل

ونظرًا لأن التطبيق المكتمل يحتوي على فئات تحتوي على بادئات، فلا يمكن تحديد موقعها باستخدام اسم فئة جافا الأصلي بشكل تلقائي. ومع ذلك، إذا كان التطبيق يحتوي على ملف باسم prefixes.properties في حزمة الموارد له مع البادئات المستخدمة في الترجمة، فسيعثر Class.forName(javaName) على الفئة المعينة.

لإضافة prefixes.properties أعلاه إلى تطبيق iOS في Xcode، افتح علامة التبويب "مراحل الإصدار" لهدف الإصدار ووسع قسم "نسخ موارد الحزمة" وأضف ملف prefixes.properties إلى تلك القائمة. تتضمن موارد جافا معلومات إضافية حول كيفية تعيين مفاهيم موارد جافا إلى موارد iOS.