0Pricing
Java Academy · درس

module-info.java

التصريح عن وحدة

module-info.java درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

نظام الوحدات

يتيح Java Platform Module System (JPMS)، الذي قُدّم في Java 9، تجميع الحزم في وحدات مسماة ذات تبعيات وحدود صريحة.

يوجد التصريح في ملف خاص هو: module-info.java.

لماذا نستخدم الوحدات

قبل ظهور الوحدات، كان classpath مجموعة مسطحة وغير منظمة من ملفات JAR. وكان بإمكان أي طرف الوصول إلى أي فئة عامة، ولا تظهر التبعيات المفقودة إلا في وقت التشغيل.

تضيف الوحدات تغليفًا قويًا وتهيئة موثوقة يجري التحقق منهما في وقت الترجمة ووقت التشغيل.

موضع module-info

يوجد module-info.java في جذر شجرة المصدر، فوق أدلة الحزم. ويُترجم إلى module-info.class في جذر الوحدة.

يوجد ملف واحد فقط لكل وحدة.

تصريح أدنى

تحتوي أبسط وحدة على اسم فقط. ووفقًا للعرف، تستخدم الأسماء أسلوب reverse-DNS، مثل أسماء الحزم.

module com.example.app {
}

التصريح بتبعية

استخدم requires للاعتماد على وحدة أخرى. تتطلب كل وحدة ضمنيًا java.base، لذلك لا تعلن عن هذه التبعية أبدًا.

module com.example.app {
    requires java.sql;
    requires java.logging;
}

إتاحة حزمة

تكون حزم الوحدة مخفية افتراضيًا. استخدم exports لجعل الأنواع العامة في حزمة ما مرئية للوحدات الأخرى.

module com.example.app {
    exports com.example.app.api;
}

التغليف المحكم

أي حزمة لا تضع لها export تكون غير قابلة للوصول تمامًا من خارج الوحدة، حتى أصنافها العامة. وهذا هو الفرق الكبير عن عالم مسار الأصناف.

تبقى الحزم الداخلية داخلية، ويفرض JVM ذلك.

قواعد تسمية الوحدات

تتبع أسماء الوحدات القواعد المعجمية نفسها التي تتبعها الحزم: معرّفات تفصل بينها نقاط. اختر اسمًا مستقرًا وفريدًا عالميًا، لأن الوحدات الأخرى تعتمد عليه بالاسم.

إعادة تسمية وحدة تُعد تغييرًا يكسر توافق المستهلكين معها.

مثال أكثر اكتمالًا

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

module com.example.orders {
    requires java.logging;
    requires com.example.payments;

    exports com.example.orders.api;
}

ترجمة وحدة

تُجري الترجمة باستخدام الخيارات الداعمة للوحدات. يخبر الخياران --module-source-path و-d المترجم بمكان وجود المصادر والمخرجات.

  • javac -d out --module-source-path src $(find src -name '*.java')
  • java --module-path out --module com.example.app/com.example.app.Main

مسار الوحدات

تُحلّ الوحدات من مسار الوحدات (--module-path)، وهو البديل المعياري لمسار الأصناف. يقرأ المشغّل واصف كل وحدة لبناء رسم بياني للتبعيات قبل التشغيل.

تحقق سريع

تذكّر مستوى الرؤية الافتراضي للحزم.

مراجعة

تعلّمت أساسيات module-info.java:

  • واصف واحد لكل وحدة في جذر المصدر
  • يعلن requires عن التبعيات؛ أما java.base فمضمّن ضمنيًا
  • يكشف exports عن حزمة؛ أما كل ما عداها فيكون مغلفًا
  • تُبنى الوحدات وتُشغّل باستخدام --module-path و--module

التالي: توجيها requires وexports بالتفصيل.

الأسئلة الشائعة

هل درس «module-info.java» مجاني؟

نعم — نص درس «module-info.java» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «module-info.java»؟

التصريح عن وحدة تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «module-info.java»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. module-info.java
  2. requires وexports
  3. الخدمات مع provides/uses
  4. الترحيل إلى الوحدات
← العودة إلى Java Academy