وحدات Java 9

وحدات Java 9 هي واحدة من أكبر التغييرات في هيكلة جافا. هنا سأقدم مقدمة عامة موجزة حول “نظام وحدات جافا 9”.

وحدات جافا 9

سنتناول فيما يلي مواضيع حول نظام وحدات جافا 9.

  1. مقدمة
  2. Java SE 9: مشروع Jigsaw
  3. مشاكل النظام الحالي لجافا؟
  4. مزايا نظام وحدات جافا SE 9
  5. مقارنة بين JDK 8 و JDK 9
  6. ما هي وحدة جافا 9؟
  7. أم وحدة نظام جافا 9
  8. مقارنة تطبيقات جافا 8 و جافا 9

مقدمة

قامت شركة أوراكل بتأجيل إصدار جافا 9 من مارس 2017 إلى سبتمبر 2017. كما نعلم، جافا SE 8 جاءت مع ثلاث ميزات رئيسية جديدة (بالإضافة إلى بعض التحسينات والميزات الجديدة).

  1. تعبيرات Lambda
  2. API للتدفقات
  3. API للتواريخ

بنفس الطريقة، ستأتي جافا SE 9 مع ثلاث ميزات رئيسية جديدة (بالإضافة إلى بعض التحسينات والميزات الجديدة):

  1. نظام وحدات جافا (مشروع Jigsaw)
  2. جافا REPL
  3. مشروع تفصيل عملة التصنيع

في هذه المقالة، سنناقش أساسيات مشروع أوراكل جيغسو.

جافا SE 9: مشروع جيغسو

سيقدم مشروع جيغسو مفهومًا جديدًا تمامًا لجافا SE 9: نظام الوحدات جافا. إنه مشروع كبير ومرموق جدًا من شركة أوراكل في إصدار جافا SE 9. في البداية، بدأوا هذا المشروع كجزء من إصدار جافا SE 7. ومع التغييرات الكبيرة، تم تأجيله إلى جافا SE 8 ثم تم تأجيله مرة أخرى. الآن هو على وشك الإصدار مع جافا SE 9 في سبتمبر 2017. الأهداف الرئيسية لمشروع جيغسو:

  • الـ JDK المركب
    كما نعلم، نظام JDK الحالي كبير جدًا. لذلك قرروا تقسيم JDK نفسه إلى وحدات صغيرة للحصول على عدد من الفوائد (سنناقشها قريبًا في الأقسام القادمة).- الشيفرة المصدر المركبة
    ملفات jar الحالية لشيفرة المصدر كبيرة جدًا، خاصة rt.jar كبيرة جدًا أليس كذلك. لذلك سيتم تقسيم شيفرة جافا إلى وحدات أصغر.- صور التشغيل المركبة
    الهدف الرئيسي لهذه الميزة هو “إعادة هيكلة صور التشغيل لـ JDK و JRE لاستيعاب الوحدات”.- تغليف معظم واجهات برمجة التطبيقات الداخلية
    الهدف الرئيسي لهذه الميزة هو “جعل معظم واجهات برمجة التطبيقات الداخلية لـ JDK غير متاحة افتراضيًا، ولكن ترك بعض واجهات برمجة التطبيقات الداخلية الحرجة والمستخدمة على نطاق واسع متاحة”.- نظام وحدات منصة جافا
    الهدف الرئيسي لهذه الميزة هو “السماح للمستخدم بإنشاء وحداتهم لتطوير تطبيقاتهم”.- jlink: أداة الربط جافا
    الهدف الرئيسي لأداة jlink هو “السماح للمستخدم بإنشاء تطبيقات قابلة للتنفيذ لتطبيقاتهم”.

إذا لم تفهم هذه الأشياء بوضوح، لا تقلق. سنناقش هذه المفاهيم بتفصيل ومع بعض الأمثلة المفيدة في الأقسام القادمة وأيضًا في مشاركاتي القادمة.

مشاكل النظام الحالي لجافا؟

في هذا القسم، سنناقش “لماذا نحتاج إلى نظام الوحدة Java SE 9” وهذا يعني مشاكل نظام Java الحالي. لدى أنظمة Java SE 8 أو الإصدارات السابقة مشاكل التالية في تطوير أو تقديم تطبيقات Java Based.

  • نظرًا لأن JDK كبير جدًا، فمن الصعب قليلاً تقليله للأجهزة الصغيرة. قدمت Java SE 8 3 أنواع من الملامح المضغوطة لحل هذه المشكلة: compact1 وcompact2 وcompact3. ولكنها لا تحل هذه المشكلة.
  • ملفات JAR مثل rt.jar وما إلى ذلك كبيرة جدًا لاستخدامها في الأجهزة الصغيرة والتطبيقات.
  • نظرًا لأن JDK كبير جدًا، فإن تطبيقاتنا أو أجهزتنا لا تستطيع دعم أداء أفضل.
  • لا يوجد تغليف قوي في النظام الحالي لـ Java لأن محدد الوصول “public” مفتوح للغاية. يمكن للجميع الوصول إليه.
  • نظرًا لأن JDK و JRE كبيرين جدًا، فمن الصعب اختبار التطبيقات وصيانتها.
  • نظرًا لأن المحدد العام مفتوح للغاية، فإنهم لا يمكنهم تجنب الوصول إلى بعض واجهات البرمجة الداخلية غير الحرجة مثل sun.*، *.internal.* وما إلى ذلك.
  • نظرًا لأن المستخدم يمكنه الوصول أيضًا إلى واجهات برمجة التطبيقات الداخلية، فإن الأمان هو مشكلة كبيرة أيضًا.
  • التطبيق كبير جدًا.
  • من الصعب قليلاً دعم تقليل التشابك بين المكونات.

لحل جميع هذه المشاكل، تعتزم شركة Oracle Corp إطلاق نظام الوحدة Java في إصدار Java SE 9.

مزايا نظام الوحدة Java SE 9

نظام الوحدة Java SE 9 سيوفر الفوائد التالية:

  • بما أن Java SE 9 ستقسم JDK و JRE و JARs إلخ إلى وحدات أصغر، يمكننا استخدام أي وحدات نريد. لذا فمن السهل جدًا تحجيم تطبيق Java للأجهزة الصغيرة.
  • سهولة الاختبار والصيانة.
  • يدعم أداءً أفضل.
  • بما أن العام ليس مجرد عام، يدعم التغليف القوي للغاية. (لا داعي للقلق، إنه مفهوم كبير. سنستكشفه قريبًا مع بعض الأمثلة المفيدة).
  • لم نعد نستطيع الوصول إلى واجهات برمجة التطبيقات الداخلية غير الحيوية بعد الآن.
  • يمكن للوحدات إخفاء التفاصيل غير المرغوب فيها والداخلية بشكل آمن للغاية، يمكننا الحصول على أمان أفضل.
  • التطبيق صغير للغاية لأنه يمكننا استخدام فقط الوحدات التي نريد.
  • من السهل دعم التقارن الأقل بين المكونات.
  • من السهل دعم مبدأ المسؤولية الفردية (SRP).

سنستكشف جميع هذه المفاهيم واحدة تلو الأخرى قريبًا.

قارن بين JDK 8 و JDK 9

نحن نعلم ما يحتويه برنامج JDK. بعد تثبيت برنامج JDK 8، يمكننا رؤية عدة دلائل مثل bin، jre، lib، إلخ في مجلد Java Home. ومع ذلك، قامت Oracle Corp بتغيير هيكل هذا المجلد بشكل مختلف كما هو موضح أدناه. هيكل مجلد JDK 8: هيكل مجلد JDK 9: هنا لا يحتوي JDK 9 على JRE. في JDK 9، يتم فصل JRE في مجلد توزيع منفصل. يحتوي برنامج JDK 9 على مجلد جديد يسمى “jmods”. يحتوي على مجموعة من وحدات Java 9 كما هو موضح أدناه. في JDK 9، لا يوجد rt.jar ولا tools.jar ملاحظة:- حتى اليوم، يحتوي مجلد “jmods” على 95 وحدة. قد تزيد في الإصدار النهائي. مجلد “jmods” متاح في ${JAVA_HOME}/jmods. يُعرف هذا باسم وحدات JDK.

ما هي وحدة Java 9؟

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.

أم النظام الجديد لوحدات Java 9

حاليًا، يحتوي نظام وحدة Java 9 على 95 وحدة في Early Access JDK. قامت Oracle Corp بفصل JARs JDK ومواصفات Java SE إلى مجموعتين من الوحدات.

  • جميع وحدات JDK تبدأ بـ “jdk.*”
  • جميع وحدات مواصفات Java SE تبدأ بـ “java.*”

يحتوي نظام وحدة Java 9 على وحدة “java.base”. وتعرف باسم وحدة الأساس. إنها وحدة مستقلة ولا تعتمد على أي وحدات أخرى. بشكل افتراضي، جميع الوحدات الأخرى تعتمد على هذه الوحدة. لهذا السبب، تعرف وحدة “java.base” أيضًا بأم الوحدات في Java 9. إنها الوحدة الافتراضية لجميع وحدات JDK ووحدات المستخدم المحددة.

قارن تطبيقات Java 8 و Java 9

لقد قمنا بتطوير العديد من تطبيقات جافا باستخدام جافا 5 و 6 و 7 أو 8. نحن نعرف كيفية ظهور تطبيقات جافا 8 أو الإصدارات السابقة ومحتواها. بإيجاز، قدمت تطبيقات جافا 8 في مخطط كما هو موضح أدناه: في تطبيقات جافا 8 أو الإصدارات السابقة، يعتبر المكون على مستوى الأعلى مجموعة. يقوم بتجميع مجموعة من الأنواع ذات الصلة في مجموعة. كما يحتوي أيضًا على مجموعة من الموارد. لا يوجد الكثير من الفارق في تطبيقات جافا 9. لقد قدمت فقط مكونًا جديدًا يُسمى “الوحدة”، والذي يُستخدم لتجميع مجموعة من الحزم ذات الصلة في مجموعة. ومكون جديد آخر هو وصف الوحدة (“module-info.java”). هذا كل شيء. بقية التطبيق هو نفسه كما في الإصدارات السابقة كما هو موضح أدناه. مثلما لدى تطبيقات جافا 8 حزمًا كمكونات على مستوى عالٍ، تطبيقات جافا 9 لديها الوحدة كمكونات على مستوى عالٍ. ملاحظة: – كل وحدة جافا 9 تحتوي على وحدة واحدة فقط ووصف وحدة واحد. على عكس حزم جافا 8، لا يمكننا إنشاء عدة وحدات في وحدة واحدة. بإيجاز، يمكنني القول إن وحدة جافا 9 تحتوي على المكونات الرئيسية التالية:

  • وحدة واحدة
  • اسم الوحدة
  • وصف الوحدة
  • مجموعة من الحزم
  • مجموعة من الأنواع والموارد

هنا الموارد قد تكون module-info.java (وصف الوحدة) أو أي خصائص أخرى أو ملفات XML. لقد ناقشنا الكثير من النظرية في هذه المقالة. أعتقد أن هذا يكفي لفهم أساسيات نظام وحدة جافا 9. سنبدأ بتطوير بعض الوحدات الأساسية في مقالتي القادمة. سأناقش بعض المفاهيم النظرية الأخرى أو مصطلحات نظام وحدة جافا 9 حسب الحاجة. هذا هو كل شيء عن موضوع “مقدمة إلى نظام وحدة جافا 9”. سنناقش بعض مفاهيم نظام وحدة جافا SE 9 الأخرى في مقالاتي القادمة. يرجى ترك تعليق إذا أعجبتك مقالتي أو إذا كان لديك أي مشكلات / اقتراحات / أخطاء نوعية. شكرًا لقراءة دروسي. استمتع بتعلم جافا SE 9! المرجع: مشروع جيغسو

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules