لماذا تعتبر Java Platform لغة مستقلة؟

نشرت: 2021-02-08

جدول المحتويات

مقدمة

اكتسبت Java شعبية كبيرة بين جميع لغات البرمجة الأخرى منذ ولادتها. والسبب في هذه الاستجابة الهائلة هو القدرة على توفير ميزات فريدة. سيكون بناء جملة Java مشابهًا تقريبًا لـ c ++ ولكنه يوفر ميزات بعيدة جدًا عن c ++.

أدى توفر البرمجة الشيئية (OOP) إلى جعل جافا تبرز عن جميع اللغات الأخرى المتبقية في ذلك الوقت. تم تطوير Java لاستخدام OOP في جوهرها وكان أحد الأسباب لكونها اللغة الأكثر استخدامًا. هذا المفهوم يزيد من قابلية إعادة الاستخدام والتنفيذ السلس. في هذه اللحظة ، قد يكون هناك سؤال في أذهاننا "لماذا يجب علينا استخدام كائن؟".

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

تلعب Java دورًا مهيمنًا في العديد من المجالات مثل تطوير التطبيقات وتطوير الويب وبناء أدوات البرمجيات. كما أن لديها عددًا كبيرًا من المكتبات التي تجعل الأمور أسهل. أيضًا ، يلعب توفر IDE دورًا مهمًا في جذب انتباه المطورين. كثيرًا ما يستخدم العديد من المطورين IDEs مثل Eclipse و IntelliJ و NetBeans.

حسنًا ، دعنا الآن نأتي إلى مناقشتنا.

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

تجميع الكود

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

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

يختلف بناء اللغة على مستوى الآلة باختلاف لغة البرمجة وكل نظام تشغيل. على سبيل المثال ، يُنشئ c / c ++ ملف exe. ليس هو نفسه لجهازين إذا كانا يعملان على نظام تشغيل مختلف.

وهنا تبرز المشكلة!

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

لكن Java تجعل الأمور أسهل ، ولديها حل لذلك. هيا بنا نبدأ.

Java عبارة عن منصة مستقلة

إذن ماذا يحدث عندما نقوم بتجميع التعليمات البرمجية في جافا؟

كلما أدخلنا عبارة "javac filename.java" أو نقوم بتجميع كود في java ، يقوم javac بتجميع الكود. ويقوم بإنشاء رمز وسيط يسمى Byte Code.

هذا هو المكان الذي تُحدث فيه Java فرقًا بين جميع لغات البرمجة المختلفة. يقوم بإنشاء ملف .class ، والذي يعتبر بمثابة رمز بايت. في حين أن لغات مثل c / c ++ ستنشئ رمزًا قابلاً للتنفيذ محليًا عندما يتم تجميعها وبالتالي تجعلها تعتمد على النظام الأساسي.

انتظر ، هذا مبكر جدًا للاحتفال. رمز البايت هذا غير قابل للتنفيذ. نحن بحاجة إلى مترجم لتنفيذ كود البايت هذا. ويقوم JVM بهذه المهمة. بشكل عام ، يوجد JVM في الذاكرة الرئيسية لجهاز الكمبيوتر الخاص بنا. تعمل Java Virtual Machine كمترجم ثم تقوم بتنفيذ رمز البايت الذي تم إنشاؤه بواسطة javac.

والآن انتهينا ، يتم تنفيذ الكود الخاص بنا بنجاح.

إذن ، كيف ستقوم جافا بإدارة كل ذلك بمفردها؟

وستكون الإجابة ، بسبب JVM. سيتم تشغيل رمز البايت الذي تم إنشاؤه بواسطة تجميع التعليمات البرمجية المصدر في أي نظام تشغيل ، ولكن يختلف JVM الموجود في الجهاز لكل نظام تشغيل. وهذه هي الطريقة التي تعتبر بها جافا لغة برمجة مستقلة عن النظام الأساسي.

لفهمها بشكل صحيح ، دعونا نفهم بنية وعمل JVM.

هندسة JVM

يعد JVM جزءًا من بيئة وقت تشغيل java وهو مسؤول عن تحويل ملف .java إلى ملف .class. عندما نقوم بتجميع كود جافا ، فإن JVM يستدعي الطريقة الرئيسية في الكود المصدري.

هندسة JVM

كلاس لودر

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

هناك 3 محمل فئة مدمجة inJVMm ، ومحمل فئة bootstrap ، ومحمل فئة التمديد ، ومحمل فئة التطبيقات.

مناطق الذاكرة في JVM

الطريقة / منطقة الفصل

يخزن معلومات مثل أسماء الفئات وأسماء الطرق والمتغيرات. إنه مورد مشترك لجميع الأساليب والمتغيرات في الفصل.

كومة

يخزن معلومات جميع البيانات المخزنة في منطقة الكومة.

حزمة اللغة JVM

يقوم بتخزين المعلومات في كتل تسمى أيضًا إطارات / إطارات المكدس ، والتي تخزن المعلومات الحالية عندما يكون هناك استدعاء وظيفة ، وتخزن المتغيرات المحلية ، كما أنها تلعب دورًا مهيمنًا في إدارة الخيط.

تسجيل الكمبيوتر

يقوم بتخزين عنوان التعليمات التي يتم تنفيذها حاليًا. إنه مفيد في حالة تنفيذ متعددة الخيوط.

مكدس الطريقة الأصلية

يخزن جميع المعلومات الخاصة بالطرق الأصلية المستخدمة.

محرك التنفيذ

سيقوم محرك التنفيذ بتنفيذ كود البايت ، ويزيل الذاكرة المخصصة للكائنات التي لا يمكن الوصول إليها أو التي لا يتم الرجوع إليها. سيقوم المترجم في محرك التنفيذ بتنفيذ كود البايت بقراءته في تدفق وتفسير سطراً بسطر.

يحتوي أيضًا على جزء مثير يسمى JIT compiler (Just In Time Compiler) ، حيث يقوم بإنشاء رمز قابل للتنفيذ أصلي للطرق ، لذلك إذا كانت هناك استدعاءات وظيفية متعددة ، فلن يحتاج JVM إلى تفسيرها مرة أخرى ، بدلاً من استخدام الكود القابل للتنفيذ الأصلي مباشرةً. ومن ثم فإنه يحسن أداء التنفيذ.

واجهة الطريقة الأصلية

تستخدم جافا هذه الواجهة للتفاعل مع التطبيقات المنفذة بلغات مختلفة مثل C / C ++. يكون التفاعل ثنائي الاتجاه ، حيث يمكن لـ JVM استدعاء تلك التطبيقات أو يمكن استدعاؤها بواسطة تلك التطبيقات.

مكتبات الطريقة الأصلية

إنه يتتبع مكتبات اللغة الأصلية ، والتي يمكن أن يستخدمها محرك التنفيذ.

الآن بعد أن فهمنا بنية JVM ، دعنا نعود إلى مناقشتنا. لذلك يختلف JVM هذا بالنسبة لأنظمة التشغيل المختلفة ، ولكن الناتج الناتج عن JVMs سيكون هو نفسه لنفس رمز البايت المقدم.

اقرأ أيضًا: أفكار وموضوعات مشروع Java

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

خاتمة

لقد مررنا ببعض الميزات الفريدة لجافا ، وفهمنا ما يحدث عندما نقوم بتجميع التعليمات البرمجية بلغات مثل C / C ++ ، وفهمنا الفرق بين الكود القابل للتنفيذ محليًا ورمز البايت. لقد مررنا في شرح سبب اعتبار جافا لغة مستقلة عن النظام الأساسي ، وفهمنا أن JVM هي السبب وراء استقلالية منصة جافا. لقد ألقينا نظرة على بنية JVM من أجل فهم أفضل.

الآن بعد أن أصبحت على دراية بالسبب الذي يجعل جافا مستقلة عن النظام الأساسي ، استكشف الميزات الفريدة الأخرى لجافا وابدأ في استخدامها!

إذا كنت مهتمًا بمعرفة المزيد حول Java ، تطوير البرامج الكاملة ، فراجع برنامج upGrad & IIIT-B's Executive PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، 9+ المشاريع ، والمهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

ما هي مزايا Java عن اللغات الأخرى؟

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

لماذا تعد Java مستقلة عن النظام الأساسي؟

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

ما هو جمع القمامة التلقائي في جافا؟

الجمع التلقائي للقمامة هو أسلوب لجمع القمامة يعمل من خلاله جامع القمامة تلقائيًا ، دون أن يضطر المبرمج إلى كتابة تعليمات برمجية له. في Java ، يتم جمع البيانات المهملة عن طريق وضع Java Virtual Machine في وضع خاص. سيتم تشغيل أداة تجميع القمامة عندما ترى فرصة للقيام بذلك. يستخدم بعض جامعي القمامة أسلوب stop-the-world ، ويجب أن يتوقف Java Virtual Machine عن تنفيذ البرنامج للقيام بجمع البيانات المهملة. جمع القمامة ليس مفهوماً سهلاً ، ولكن بمجرد أن تحصل عليه ، لن يكون هناك عودة إلى الوراء. وتعد عملية جمع القمامة في Java من أسهل ما يمكن فهمه.