إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    محمل الكلاسات في جافا Class Loader

    في البداية, سبق و شرحنا طريقة عمل الكود الذي نكتبه بلغة جافا بشكل عام في دورة جافا و قلنا أنه كالتالي.

    إذاً عندما تقوم بكتابة ملفات java يتم ترجمتها لترميز ثماني (byte-code) بواسطة المترجم (Compiler) فتصبح بصيغة class بطريقة معينة بحيث تستطيع فيها آلة جافا الإفتراضية JVM قراءة الكلاس و إستخدامه لاحقاً.

    سنتحدث في هذا المقال عن طريقة تحميل الكلاسات بدقة أكثر في آلة جافا الإفتراضية.

     

    طلب تحميل كلاس في جافا

    يتم طلب تحميل كلاس معين عند أول إستخدام للكلاس من الكود, و يكون أول إستخدام للكلاس عن طريق إستخدام أي شيء ثابت (static) في الكلاس و يشمل ذلك الكونستركتور (constructor), و السبب الذي يعود وراء عدم تحميل آلة جافا الإفتراضية لجميع الكلاسات عند تشغيل البرنامج هو أن عملية تحميل الكلاس قد تتطلب تنزيل بيانات من الإنترنت و غيرها من العمليات التي تستغرق وقت و تسبب بطئ و قد لا يتم إستخدام الكلاس أصلاً.

    يمكن طلب تحميل الكلاس يدوياً بإستخدام الدالة ()loadClass.

     

    تحميل الكلاس في جافا

    عندما تتلقى آلة جافا الافتراضية طلب تحميل كلاس معين تستخدم نظام محملي الكلاسات (Class loaders), و يتكون هذا النظام من ثلاثة محملين مترابطين مع بعضهم و وظيفتهم هي العثور على بيانات الكلاس byte-code من خلال البحث عنه بإستخدام إسمه الكامل متضمناً أسماء الحزم الواقع فيها (مثلاً java.lang.String) و تحويلها للكائن java.lang.Classو هم كالتالي:

    • محمل الكلاسات التمهيدي (BootStrap ClassLoader):
    • يقوم محمل الكلاسات التمهيدي بتحميل الكلاسات الأساسية في لغة جافا و المتواجدة في المسار jre/lib, و هو مكتوب بالـ Native code و مضمن داخل آلة جافا الافتراضية.
    • محمل الكلاسات الملحق (Extension ClassLoader):
    • هو إبن للمحمل التمهيدي و مهمته هي تحميل كلاسات ملحقات آلة جافا الافتراضية و الموجودة في المسار jre/lib/ext.
    • محمل كلاسات التطبيق (Application ClassLoader):
    • هو إبن للمحمل الملحق و مهمته هي تحميل الكلاسات الموجودة في مسار الكلاسات classpath, و هو الذي يقوم بتحميل الكلاسات التي نكتبها في برامجنا.

    طريقة تحميل الكلاس من أول محمل للكلاسات كالتالي:

    1. يتم معرفة إن كان الكلاس قد تم تحميله مسبقاً أم لا.
    2. إن لم يتم تحميله يقوم محمل الكلاسات بطلب تحميل الكلاس من محمل الكلاسات الأب.
    3. إذا فشل الأب يحاول الإبن تحميل الكلاس.

    (المصدر GeeksForGeeks.org , تحت رخصة CC BY-SA 4.0)


    ربط الكلاس في لغة جافا Linking

    تتألف عملية ربط الكلاس بآلة جافا الإفتراضية ليتم تنفيذه من ثلاثة خطوات:

    1. التحقق من أن الترميز الثماني (bytecode) منطقي و مفهوم لآلة جافا الإفتراضية.
    2. تجهيز الكلاس من خلال حجز مساحة للمتغيرات الثابتة في الذاكرة و إعطاء القيم الإفتراضية لها.
    3. تحميل الكلاسات التي يشير إليها الكلاس المحمل, وهذه العملية لا تحدث دائماً.

    (المصدر javatutorial.net, تحت رخصة CC BY-NC-SA 4.0)


    التهيئة في لغة جافا Initialization

    في هذه المرحلة تقوم آلة جافا الإفتراضية بتنفيذ جميع العمليات الثابتة مثل تعيين قيم المتغيرات الثابتة (static variables) و تنفيذ البلوكات الثابتة (static blocks).

    class Example {
    
        //in the preparing phase x will contain the value 0
        //after the initializing phase x will contain the value 20 
        private int x = 20;
    
        static {
            System.out.println("this is a static block and will be executed in the initializing phase");
        }
    
    }
    


    بعد كل هذه العمليات يصبح الكلاس جاهزاً للإستخدام و يمكن إنشاء كائنات منه.

    يتضمن: Java , Programming

    آخر تحديث: 20-12-2021

    الكاتب

    رامي عبدالله

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

    تعليقات

    لا يوجد أي تعليق بعد

    أضف تعليق

    يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.
    إعلان
    دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
    دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
    تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
    دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
    دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
    دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن
      إعلان

      Eqla3Tech.com

      شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

      لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

      تقييم المقال

      لم تقم بتقييم المقال بعد!

      الدورات

      أدوات مساعدة

      الأقسام

      دورات
      مقالات أسئلة مشاريع كتب