حزمة جافا

تُنظّم حزمة جافا فئات جافا في مساحات أسماء ، [ 1 ] مما يوفر مساحة اسم فريدة لكل نوع تحتوي عليه. يمكن للفئات الموجودة في نفس الحزمة الوصول إلى الأعضاء الخاصة بالحزمة والمحمية لبعضها البعض.

بشكل عام، يمكن أن تحتوي الحزمة على الأنواع التالية : الفئات، والواجهات ، والتعدادات، والسجلات، وأنواع التعليقات التوضيحية . تُمكّن الحزمة المطور من تجميع الفئات (والواجهات) معًا. ستكون هذه الفئات جميعها مرتبطة بطريقة ما - فقد تكون جميعها متعلقة بتطبيق معين أو تؤدي مجموعة محددة من المهام. كما يستخدم المبرمجون عادةً الحزم لتنظيم الفئات التي تنتمي إلى نفس الفئة أو التي توفر وظائف متشابهة.

استخدام الحزم

في ملف مصدر جافا، تُحدد الحزمة التي ينتمي إليها الصنف أو الأصناف الموجودة في هذا الملف باستخدام الكلمة packageالمفتاحية `package` . عادةً ما تكون هذه الكلمة المفتاحية هي الكلمة المفتاحية الأولى في ملف المصدر. لا يمكن أن يظهر أكثر من تعريف حزمة واحد في ملف المصدر.

package java.awt.event ;

لاستخدام فئات حزمة معينة داخل ملف مصدر جافا، من الملائم استيراد الفئات من الحزمة باستخدام importتعريف يُلغي نطاق مساحات أسماء الفئة. التعريف التالي

استيراد java.awt.event.* ;

يستورد جميع الفئات من java.awt.eventالحزمة، بينما الإعلان التالي

استيراد java.awt.event.ActionEvent ؛

يستورد هذا الأمر الفئة فقط ActionEventمن الحزمة. بعد أي من هذين التصريحين للاستيراد، ActionEventيمكن الإشارة إلى الفئة باستخدام اسمها البسيط:

ActionEvent myEvent = new ActionEvent ();

يمكن أيضًا استخدام الفئات مباشرةً دون الحاجة إلى تعريف استيراد، وذلك باستخدام الاسم الكامل للفئة. على سبيل المثال،

java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent ( ) ;

لا يتطلب إعلان استيراد مسبق.

توثيق جافا والتعليقات التوضيحية على مستوى الحزمة

تُكتب وثائق تشرح الحزمة ككل باستخدام لغة جافادوك في ملف يحمل اسم package-info.java تحديدًا . ويُستخدم هذا الملف أيضًا لوضع التعليقات التوضيحية التي تُطبق على جميع فئات الحزمة. [ 2 ]

الحزمة غير المسماة

إذا لم يتم استخدام تعريف الحزمة، فسيتم وضع الفئات في حزمة غير مسماة. ولا يمكن استيراد الفئات الموجودة في حزمة غير مسماة بواسطة الفئات الموجودة في أي حزمة أخرى. [ 3 ] وينصح دليل جافا الرسمي بعدم القيام بذلك.

بشكل عام، تُستخدم الحزم غير المسماة فقط للتطبيقات الصغيرة أو المؤقتة أو عند بدء عملية التطوير. أما فيما عدا ذلك، فإن الفئات والواجهات تنتمي إلى الحزم المسماة. [ 4 ]

حماية وصول الطرود

تكون العناصر والفئات العامة مرئية في كل مكان، بينما تكون العناصر الخاصة مرئية فقط في نفس الفئة. يمكن للفئات داخل حزمة الوصول إلى الفئات والعناصر المُعلنة باستخدام الوصول الافتراضي ( الخاص بالحزمة )، بالإضافة إلى عناصر الفئة المُعلنة باستخدام protectedمُعدِّل الوصول. يُفرض الوصول الافتراضي (الخاص بالحزمة) عندما لا يتم تعريف فئة أو عنصر على أنه عام publicأو protectedخاص private. في المقابل، لا يمكن للفئات في حزم أخرى الوصول إلى الفئات والعناصر المُعلنة باستخدام الوصول الافتراضي. مع ذلك، protectedيمكن الوصول إلى عناصر الفئة المُعلنة على أنها خاصة من الفئات في نفس الحزمة، وكذلك من الفئات في حزم أخرى تُعد فئات فرعية من الفئة المُعلنة. [ 5 ]

إنشاء ملفات JAR

يتم إنشاء ملفات JAR باستخدام أداة سطر الأوامر jar. الأمر

jar cf myPackage.jar *.class

يضغط هذا الأمر جميع ملفات .class في ملف JAR باسم myPackage.jar . يُشير الخيار 'c' في سطر الأوامر إلى إنشاء أرشيف جديد. أما الخيار 'f' فيُشير إلى إنشاء ملف. ويأتي اسم الملف مباشرةً قبل محتويات ملف JAR.

اصطلاحات تسمية الحزم

تُعرَّف الحزم عادةً باستخدام نمط تسمية هرمي ، حيث تُفصل بعض مستويات هذا التسلسل بنقاط ( تُنطق "دوت"). على الرغم من أن الحزم الأدنى في التسلسل الهرمي للتسمية تُشار إليها غالبًا باسم "حزم فرعية" للحزم المقابلة الأعلى في التسلسل الهرمي، إلا أنه لا توجد علاقة دلالية تُذكر بين الحزم. تُحدد مواصفات لغة جافا اصطلاحات تسمية الحزم لتجنب إمكانية وجود حزمتين منشورتين تحملان الاسم نفسه. تصف اصطلاحات التسمية كيفية إنشاء أسماء حزم فريدة، بحيث يكون للحزم واسعة الانتشار مساحات أسماء فريدة. وهذا يسمح بتثبيت الحزم وفهرستها بشكل منفصل وسهل وتلقائي..

بشكل عام، يبدأ اسم الحزمة باسم نطاق المستوى الأعلى للمؤسسة، ثم نطاق المؤسسة، ثم أي نطاقات فرعية، مرتبةً بترتيب عكسي. ويمكن للمؤسسة بعد ذلك اختيار اسم محدد لحزمتها. وتختلف المكونات اللاحقة لاسم الحزمة وفقًا لاتفاقيات التسمية الداخلية الخاصة بالمؤسسة. [ 6 ]

على سبيل المثال، إذا أنشأت مؤسسة كندية تُدعى MySoft حزمةً للتعامل مع الكسور، فإن تسمية هذه الحزمة ca.mysoft.fractionsتميزها عن حزمة مماثلة أخرى أنشأتها شركة أخرى. وإذا أنشأت شركة ألمانية تُدعى MySoft أيضًا حزمةً للكسور، ولكنها سمّتها de.mysoft.fractions، فإن الفئات في هاتين الحزمتين تُعرَّف في نطاق اسم فريد ومنفصل. ليس من الضروري أن يكون نطاق المستوى الأعلى (TLD) هو اسم دولة الشركة. على سبيل المثال، تستخدم العديد من الحزم نطاقات مستوى أعلى أخرى مثل org، com، إلخ. تضع مكتبة Java القياسية جميع الرموز في نطاقات الأسماء java.*، javax.*أو ، أو jdk.*، على الرغم من أن بعض الفئات المرتبطة بتقنيات أخرى قد توجد في نطاقات أسماء أخرى . قد لا تستخدم بعض المشاريع، مثل مشروع Lombok، نطاقات المستوى الأعلى على الإطلاق (جميع الرموز موجودة في نطاق الاسم lombok).

يُعدّ استخدام نطاقات المستوى الأعلى في أسماء الحزم اصطلاحًا مرتبطًا بشكل أساسي بلغة جافا، ولكنه نادرًا ما يُستخدم في لغات أخرى. في لغات أخرى مثل C++ و C#، يكفي إضافة اسم الشركة كبادئة لأسماء الحزم/مساحات الأسماء.

تم وصف الاصطلاحات الكاملة لإزالة الغموض عن أسماء الحزم وقواعد تسمية الحزم عندما لا يمكن استخدام اسم نطاق الإنترنت مباشرة كاسم حزمة في القسم 7.7 من مواصفات لغة جافا. [ 7 ]

الحزم الأساسية في Java SE 8

java.langالوظائف الأساسية للغة وأنواعها الرئيسية. يتم استيرادها ضمنيًا بواسطة كل برنامج.
java.utilفئات بنية بيانات المجموعة
java.ioعمليات الملفات
java.mathالعمليات الحسابية متعددة الدقة
java.nioإطار عمل الإدخال/الإخراج غير المحظور للغة جافا
java.netعمليات الشبكات، والمآخذ، وعمليات البحث عن أسماء النطاقات ، ...
java.securityتوليد المفاتيح، التشفير وفك التشفير
java.sqlاتصال قواعد بيانات جافا (JDBC) للوصول إلى قواعد البيانات
java.awtالتسلسل الهرمي الأساسي للحزم الخاصة بمكونات واجهة المستخدم الرسومية الأصلية
java.textيوفر فئات وواجهات للتعامل مع النصوص والتواريخ والأرقام والرسائل بطريقة مستقلة عن اللغات الطبيعية.
java.rmiيوفر حزمة إدارة المخاطر.
java.timeواجهة برمجة التطبيقات الرئيسية للتواريخ والأوقات واللحظات والمدد الزمنية.
java.beansتحتوي حزمة java.beans على فئات وواجهات متعلقة بمكونات JavaBeans.
java.appletتوفر هذه الحزمة فئات وأساليب لإنشاء التطبيقات المصغرة والتواصل معها.

الوحدات

في جافا 9 (التي صدرت في 21 سبتمبر 2017)، تم تطبيق دعم " الوحدات "، وهي نوع من مجموعات الحزم، نتيجة لجهود تطوير مشروع Jigsaw. كانت "الوحدات" تُسمى سابقًا "الحزم الفائقة" وكان من المخطط لها في الأصل أن تُضاف إلى جافا 7.

تصف الوحدات تبعياتها في تعريف موجود في ملف باسم module-info.java في جذر تسلسل ملفات مصدر الوحدة. منذ Java 9 ، أصبح بإمكان JDK التحقق من تبعيات الوحدات أثناء الترجمة والتشغيل. JDK نفسه مُصمم بنمط الوحدات لـ Java 9. [ 8 ] [ 9 ] على سبيل المثال، يتم تصدير غالبية مكتبة Java القياسية بواسطة الوحدة java.base.

على سبيل المثال، يُعلن تعريف الوحدة النمطية التالي أن الوحدة النمطية com.foo.bar تعتمد على وحدة نمطية أخرى com.foo.baz ، وتُصدّر الحزم التالية: com.foo.bar.alpha و com.foo.bar.beta :

module com.foo.bar { requires com.foo.baz ;صادرات كوم . فو . حاجِز . ألفا ; صادرات كوم . فو . حاجِز . بيتا ؛ }

انظر أيضاً

مراجع

  1. جيمس جوسلينج، بيل جوي، جاي ستيل، جلعاد براخا، مواصفات لغة جافا، الطبعة الثالثة ، رقم ISBN 0-321-24678-0، 2005. في المقدمة، ورد أن "الفصل 7 يصف بنية البرنامج، والذي يتم تنظيمه في حزم مشابهة لوحدات Modula".
  2. "الفصل 7. الحزم والوحدات النمطية" . docs.oracle.com . تم الاطلاع عليه بتاريخ 10-12-2021 .
  3. "الفصل 7. الحزم" . Docs.oracle.com . تم الاطلاع عليه بتاريخ 15-09-2013 .
  4. "إنشاء واستخدام الحزم (دروس Java™ > تعلم لغة Java > الحزم)" . docs.oracle.com .
  5. "التحكم في الوصول إلى أعضاء فئة (دروس Java™ > تعلم لغة Java > الفئات والكائنات)" . docs.oracle.com .
  6. اصطلاحات كتابة الكود في لغة برمجة جافا: 9. اصطلاحات التسمية
  7. "الحزم" . docs.oracle.com .
  8. "ملخص وحدة JDK" . شركة أوراكل . 23 أكتوبر 2015. مؤرشف من الأصل بتاريخ 8 ديسمبر 2015. تم الاطلاع عليه بتاريخ 29 نوفمبر 2015 .
  9. "Understanding Java 9 Modules". Oracle Corporation. October 1, 2017. Retrieved 2022-10-04.