java ويندوز كلمات جديدة في جافا 9




تحميل جافا 64 بت ويندوز 7 (4)

واحدة من أكبر ميزات 9 جافا سوف يكون نظام وحدة تعريفها من قبل مشروع بانوراما. عند قراءة الشرائح من "بروجيكت جيغساو: وندر هود" في جافون 2015، لاحظت شفرة المصدر التالية:

// src/java.sql/module-info.java
module java.sql {
   exports java.sql;
   exports javax.sql;
   exports javax.transaction.xa;
}

ما يثير الاهتمام هنا هو أن الملف ينتهي في .java ويبدو أن استخدام اثنين من الكلمات الرئيسية الجديدة: module ، exports . ما الكلمات الرئيسية الأخرى التي سيتم تقديمها في جافا 9؟ كيف سيتم التعامل مع التوافق إلى الوراء (أي وظائف أو متغيرات اسمها module


هذا من المرجح أن لا قائمة كاملة، ولم يتم الانتهاء من أي من هذا إلى حد علمي، ولكن وجدت عدد قليل.

لدينا أيضا module ، exports ، provides ، uses ، with ، to ، requires ؛ أوضح هنا :

يمكن أن يحدد نظام الوحدة النمطية استخدامات الخدمات عن طريق مسح ملفات الفئة في عناصر الوحدة النمطية لاستدعاءات سيرفيسلودر :: طرق التحميل، ولكن هذا سيكون بطيئا وغير موثوق به. أن وحدة نمطية تستخدم خدمة معينة هو جانب أساسي من تعريف تلك الوحدة، وذلك لكلا من الكفاءة والوضوح ونحن نعرب عن أنه في إعلان وحدة مع شرط استخدام:

module java.sql {
    requires public java.logging;
    requires public java.xml;
    exports java.sql;
    exports javax.sql;
    exports javax.transaction.xa;
    uses java.sql.Driver;
}

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

module com.mysql.jdbc {
    requires java.sql;
    requires org.slf4j;
    exports com.mysql.jdbc;
    provides java.sql.Driver with com.mysql.jdbc.Driver;
}

...

module java.base {
    ...
    exports sun.reflect to
        java.corba,
        java.logging,
        java.sql,
        java.sql.rowset,
        jdk.scripting.nashorn;
}

أيضا view permits :

في أنظمة البرمجيات الكبيرة غالبا ما يكون من المفيد تحديد وجهات نظر متعددة من نفس الوحدة. يمكن أن يتم الإعلان عن عرض واحد للاستخدام العام من قبل أي وحدة أخرى، في حين أن آخر يوفر الوصول إلى الواجهات الداخلية المقصود فقط للاستخدام من قبل مجموعة مختارة من وحدات وثيقة الصلة.

على سبيل المثال مع جندي نريد أن com.sun.jndi.toolkit.url تكون مرئية فقط ل كوزنامينغ و كيربيروس وحدات، كما هو محدد في إعلان وحدة.

view jdk.jndi.internal {
    exports com.sun.jndi.toolkit.url.*;
    exports sun.net.dns.*;
    permits jdk.cosnaming;
    permits jdk.kerberos;

}

وبهذه الطريقة لدينا المزيد من المرونة لتحديد حدود الوحدة النمطية.

لقد سمعت أيضا ذكر optional .


يتم تلخيص الكلمات الرئيسية المضافة لإعلانات الوحدة النمطية في جافا 9 في الفقرة 3.9 من مواصفات لغة جافا، جافا سي 9 إديتيون :

وهناك تسلسل من عشرة أحرف أخرى هي كلمات رئيسية مقيدة: open ، module ، requires ، transitive ، exports ، opens ، to ، uses ، provides ، with . يتم ترميز تسلسل الأحرف هذه ككلمات رئيسية فقط حيث تظهر كمطاريف في الإنتاج مودولديكلاراشيون و مودولديركتيف (§7.7). يتم توصيفها كمعرفات في كل مكان آخر، للتوافق مع البرامج المكتوبة قبل جافا سي 9. هناك استثناء واحد: على الفور إلى يمين تسلسل الأحرف يتطلب في الإنتاج مودولديركتيف، يتم ترميز تسلسل الأحرف متعدية ككلمة رئيسية ما لم تكن يليه فاصل، وفي هذه الحالة يتم توصيفه كمعرف.

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

( view permits الكلمات الرئيسية في نموذج بانوراما في وقت مبكر، ولكن تم تبسيطها من الوجود منذ فترة طويلة.)


لجزء التوافق الخلفي من السؤال.

أعتقد JAVA9 / مشروع بانوراما هو تحول نموذجي في تكنولوجيا جافا. بحيث java9 لن تكون متوافقة مع الوراء، ولكن يمكنك بسهولة تحويل التبعية غير حدات الخاصة بك مع نسخة وحدات من نفس المكتبة. مفهوم "لا ألم، لا كسب" سوف تعمل هنا. كل شخص لديه لترقية / تحويل للاستفادة من جافا وحدات جديدة. إيد المطور، المساعد المساعد، بناء النظام وبالطبع غرود مستوى جافا المطور بحاجة إلى فهم أنظمة جافا جديدة.

يدافع JAVA9 عن التبعية النظيفة. كما أنها توفر طريقة العلامة التجارية الجديدة لتأمين التعليمات البرمجية الخاصة بك عن طريق وحدات خاصة. حتى انعكاس لا يمكن الوصول إلى وحدات لم تتعرض من قبل المكتبة / أبي المالك.

هناك نهجان لاستخدام ليب غير نمطية / واجهات برمجة التطبيقات.

  1. من أعلى إلى أسفل النهج
  2. نهج أسفل إلى أعلى (الكثير من الألم هنا لتنفيذ)

النهج الثاني جعل نظيفة جدا وحدة التبعية الهرمية.


الوحدة هي كلمة رئيسية جديدة تم تعريفها لتحديد الترابط بين الحزم. لماذا نحن بحاجة إلى وحدات؟ لأنه في وقت سابق

  1. فإن التغليف لم يكن طاهر. مع مساعدة من التفكير ومع تقنيات مماثلة يمكننا الوصول حتى المجال الخاص.
  2. جميع الفئات في جميع الجرار متاحة للجمهور.
  3. إذا كان كلاسلوادر لا يحصل على فئة كان عليه أن ننظر في الكثير من المناطق وتحميل الكثير من الملفات ذات الصلة وحتى بعد ذلك إذا لم يتم العثور على الفئة، فإنه رمي نوكلاسدفوندرورس في وقت التشغيل.

    لذلك لجميع الأسباب المذكورة أعلاه نحن بحاجة إلى آلية تسمح جفم لمعرفة هذا في وقت التشغيل. لتنفيذ وحدة نمطية، تحتاج إلى تعريف module-info.java . في تلك الحزمة

        module com.exporter{
    
         exports com.a;
         provides com.b.M;
          with com.b.MImpl; }

في حزمة أخرى،

module com.consume {
    requires com.a;
}

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





jigsaw