مقدمة
اعتبارًا من الآن ، تم تحديث إصدار JDK إلى 10. على الرغم من أن دورة حياة Java9 ليست سوى نصف عام ، أعتقد أن التغييرات التي قدمها هذا الإصدار لا تمحى. هذا هو أول ابتكار عميق في الهندسة المعمارية والاعتماد. دعنا نتعلم المزيد أدناه.
الوظائف المعيارية لها عدة أغراض:
1. بناء المشروع المعياري
في الواقع ، ليس من الصعب فهم modularization بحد ذاتها. استخدمنا Maven أو Gradle لبناء مشاريع مع الكثير من الوحدات النمطية. بعد ذلك ، لا يزال بإمكاننا بناء مشروعنا المعياري في Java9. كما هو مبين في الشكل:
انتبه إلى النقاط التالية:
1. يرجى إنشاء ملف وصف معياري يسمى الوحدة النمطية info.java تحت كل وحدة نمطية
2. تكوين تبعيات الوحدة النمطية في IDEA. هنا ، إذا كانت وحدة Project.portal تعتمد على وحدة الطالب.
ابحث عن رمز الخيار هذا: وقم بتعيينه مثل هذا لإضافة تبعيات:
إذا كنت بحاجة إلى تعيين تبعيات لمشاريع أخرى ، فيرجى تعيينها بهذه الطريقة.
2. خطوات التنفيذ
2.1. وحدة الطالب
2.1.1. اكتب الوحدة النمطية-java of students
نموذج الرمز:
استيراد com.bdqn.lyrk.student.service.SecondStudentService ؛ استيراد com.bdqn.lyrk.student.service.api.istudentservice ؛/** * الوصف المعياري ، موحد في دليل الجذر للملف المصدر هو: module-info. * .... * * [فتح] اسم الوحدة النمطية { * يتطلب [static | transitive] اسم الوحدة النمطية ؛ * تصدير اسم الحزمة [إلى اسم الوحدة النمطية] * اسم واجهة مقدمي الخدمات مع [فئة تنفيذ الواجهة ، ....] * يستخدم اسم الواجهة * *} * ** Author Chen.nie * date 2018/4/18 **/module student.service توفير isTudentService مع SecondStudentService ؛}2.1.2. تحديد الواجهة
حزمة com.bdqn.lyrk.student.service.api ؛ الواجهة العامة isTudentService {void study () ؛}2.1.3. تحديد فصول التنفيذ
package com.bdqn.lyrk.student.service ؛ import com.bdqn.lyrk.student.service.api.istudentservice ؛ public studentservice parerements istudentservice {Override public void study () {system.out.println ("Second Study") ؛ }}2.2. Project.portal وحدة
2.2.1. اكتب الوحدة النمطية info.java
استيراد com.bdqn.lyrk.student.service.api.istudentservice ؛ module project.portal {steaps isTudentService ؛ يتطلب الطالب العابر. الخدمات ؛}2.2.2. اكتب الطريقة الرئيسية
package com.bdqn.lyrk.portal ؛ import com.bdqn.lyrk.student.service.api.istudentservice ؛ import java.util.serviceloader ؛ public class main {public static void main (] studentservices.findfirst (). get (). study () ؛ }}بعد الجري ، يمكننا الحصول على النتائج المقابلة:
3. التكوينات الشائعة لملفات الوحدة النمطية info.java
3.1. حول الكلمات الرئيسية المفتوحة
فتح: إذا تم تحميل هذه الكلمة الرئيسية على الوحدة النمطية ، فإن الرؤية الفئة ضمن حزمة التصدير من خلال الصادرات هي الأعلى. يمكننا إنشاء كائنات وخصائص الوصول من خلال الانعكاس.
3.2. حول الصادرات الكلمات الرئيسية
بعد أن نحدد الوحدة النمطية ، يمكننا تحديد الحزم التي يمكن الوصول إليها من خلال الوحدات النمطية الأخرى ، وتلعب الكلمات الرئيسية الصادرات هذا الدور. يمكننا أيضًا التعاون لتحديد الوحدات النمطية التي يمكنها الوصول إلى محتويات الحزمة
بناء الجملة تصدير اسم الحزمة [إلى] اسم الوحدة النمطية
الصادرات <Packt> ؛ Exports <Cread> to <Module1> ، <module2> ... ؛
3.3. يفتح الكلمة الرئيسية
يفتح يشبه المفتوحة. إذا تمت إضافة الكلمة الرئيسية المفتوحة إلى الوحدة النمطية ، فإن حزم الصادرات التي تم تصديرها افتراضيًا في الوحدة النمطية تكون في شكل مفتوح.
الوحدة النمطية n {orports com.jdojo.claim.model ؛ يفتح com.jdojo.claim.model ؛}3.4. يتطلب كلمات رئيسية
تعلن هذه الكلمة الرئيسية عن التبعية بين الوحدة الحالية ووحدة أخرى. تشبه بعض الشيء التبعيات في مافن.
يتطلب <module> ؛ يتطلب <الوحدة النمطية> ؛ يتطلب الثابت <الوحدة النمطية> ؛ يتطلب ثابتًا <الوحدة النمطية> ؛ يتطلب ثابتًا <الوحدة النمطية> ؛
يمكن أيضًا إضافة المعدلات الثابتة لتتطلب عبارات ، مما يعني أن التبعية إلزامية في وقت الترجمة ، ولكن اختياري في وقت التشغيل. سيؤدي المعدل المتحول في بيان المتطلبات إلى تبعيات ضمنية للوحدات النمطية الأخرى التي تعتمد على الوحدة النمطية الحالية. يرجى الاطلاع على الشكل التالي:
هنا يمكننا إلقاء نظرة على ملف module-info.class تحت وحدة java.se:
/ * * حقوق الطبع والنشر (C) 2014 ، Oracle و/أو الشركات التابعة لها. جميع الحقوق محفوظة. * أوراكل الملكية/السرية. الاستخدام يخضع لشروط الترخيص. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ** * يحدد core java se api. * <p> * الوحدات النمطية التي تحدد Corba و Java EE APIs غير مطلوبة بواسطة * هذه الوحدة ، لكنها مطلوبة بواسطة * <a href = "java.se.ee-summary.html"> {code java.se.ee} </a>. * * <dl> * <dt style = "font-family: 'dejavu sans' ، arial ، helvetica ، sans serif"> اختياري لمنصة java se: </dt> * <dd> * <a href = "../ specs/jni/index.html"> java href = "../ specs/jvmti.html"> واجهة أداة جافا الافتراضية (jvm ti) </a> <br> * <a href = "../ specs/jdwp/jdwp-spec.html"> java debug protocol (jdwp) </a> * since 9 */module java.se {يتطلب java.compiler transitive ؛ يتطلب java.datatransfer متعدية. يتطلب java.desktop متعدية. يتطلب java.instrument. يتطلب java.logging متعدية. يتطلب java.management متعدية. يتطلب java.management transitive.rmi ؛ يتطلب java.naming متعدية. يتطلب java.prefs متعدية. يتطلب java.rmi متعدية. يتطلب java.scripting متعدية. يتطلب java.security.jgss transitive ؛ يتطلب java.security. يتطلب java.sql متعدية. يتطلب java.sql.rowset متعدية. يتطلب java.xml متعدية. يتطلب java.xml.crypto ؛في هذا الوقت ، نحتاج فقط
3.5. الاستخدامات والكلمات الرئيسية للمزود
يسمح Java باستخدام آليات مزود الخدمة التي تفصل بين مقدمي الخدمات ومستخدمي الخدمة. يسمح JDK 9 بتنفيذ خدماتها باستخدام البيانات وتقديم البيانات. استخدم العبارات لتحديد اسم واجهة الخدمة ، وستجدها الوحدة الحالية وتحميلها باستخدام فئة java.util.serviceloader. يرجى الرجوع إلى المثال السابق للرمز. ملاحظة: يجب أن تكون الفئات التي يوفرها المزود تحت نفس الوحدة ، ولا يمكن الرجوع إلى تنفيذ الوحدات الأخرى في الوقت الحاضر. على سبيل المثال: لا يمكن أن يوجد طالب الخدمات إلا تحت وحدة الطالب.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.