1 العنصر الأول: سلسلة تعلم لغة الجافا من الصفر " تعريف ".

1 - ما هي  الجافا؟


الجافا هي لغة برمجة يستخدمها المطورون لإنشاء تطبيقات على أجهزة الكمبيوتر والويب والهواتف الذكية كالاندرويد. أصدرت شركة Sun Microsystems أول تطبيق لـ Java 1.0 في عام 1995. ووعدت انهاستسهل عملية كتابة البرامج  مرة  واحدة والعمل  في اكثر من بيئة  مما  يميز الجافا انها تترجم المدخلات الى لغة الالة على شكل  bytecode ، وتوفير أوقات التشغيل بدون تكلفة على المنصات الشعبية. يمكن استخدامه لإنشاء تطبيقات كاملة قد تعمل على كمبيوتر واحد أو توزيعها على الخوادم والعملاء في الشبكة.
Free Java Resources for Students
أوراكل كوربوريشن هي المالك الحالي للتنفيذ الرسمي لمنصة Java SE ، بعد حصولها على Sun Microsystems في 27 يناير 2010. وفقا لأوراكل ، اعتبارًا من عام 2016 ، تعد Java واحدة من أشهر لغات البرمجة المستخدمة ، خاصة تطبيقات الويب الخادم العميل ، مع 9 مليون مطور.

2- لما اخترنا  الجافا ؟


جافا "بسيطة ، وكائنية التوجه". من المؤكد أن بناء الجملة والتنظيم في البرنامج أبسط بكثير من اللغات المتنافسة ، مثل "C ++" و "C".

     -لماذا تختار لغة برمجة Java؟؟


Why would you choose the Java programming languageجافا "قوية وآمنة". اتخذ المصمم العديد من قرارات التصميم لتجنب ضعف لغات البرمجة الأخرى. وكان من بين تلك القرارات إدراج الكتابة القوية ، والمبنية في مجموعة من عمليات التحقق من القيود ، وإدارة فعالة للذاكرة. يتم توفير طبقات متعددة من التدقيق في بنية اللغة. تتراوح عمليات التحقق من الأمان من التحقق من المستوى المنخفض إلى أن الشفرات الثنائية قانونية ، والتحكم عالي المستوى في الوصول إلى الملفات وموارد النظام الأخرى.

جافا هي "بنية محايدة ، تفسر والمحمولة". يتم تصنيف برامج Java إلى bytecode التي لا تحتوي على تبعيات على هندسة آلة معينة. لكي تعمل على نظام معين ، كل ما تحتاجه هو مترجم Java فقط.

يتم تنفيذ جافا بـ "الأداء العالي". بعض جوانب جافا فعالة للغاية ، ولكن السرعة الخام لم تصل إلى مستوى بعض اللغات منخفضة المستوى الشائعة ، باستثناء بعض الحالات المحدودة.




       -جافا برمجة الموضوع!!


جافا "مترابطة وديناميكية". جعل التصميم من السهل إنشاء برامج ذات مؤشرات ترابط متعددة. هذا هو سبب واحد لشعبية جافا في التطبيقات الشبكية. إن حقيقة أن برامج التشغيل يمكن أن يتم تعديلها ديناميكيًا كان لها العديد من الأرباح للمطورين ، بسبب المرونة الكبيرة التي يوفرها ذلك.
Java Thread Programming
جافا لديها دعم مجتمع نشط كبير. خبراء جافا من جميع أنحاء العالم مستعدون لمشاركة معلومات قيمة حول مواقع الويب المختلفة التي توفر دعم المجتمع. إن تقديم واستشارة نصائح تطوير تطبيقات Java من الخبراء مجاناً ساعد في إنشاء شبكة من أكبر وأغنى مجتمع.










3 - هل منصة الجافا مستقلة ؟؟


جافا هي منصة محايد لأن نفس كود جافا سيتم تشغيله على منصات متعددة (أنظمة التشغيل) دون تعديل ، شريطة ألا تضع الشفرة أي مطالب محددة على النظام ، مع الحفاظ على صحة الشعار ، "كتابة مرة واحدة ، تشغيل في أي مكان". تتكون استقلالية منصة جافا في معظمها من Java Virtual Machine (JVM) ، وهي آلة افتراضية جيدة التحديد وقوية.

كيف يعمل هذا ؟ أولاً ، تكتب ملف مصدر Java وترجمه. عند ترجمة التعليمات البرمجية المصدر Java ، النتائج هي ملف .class يحتوي على bytecode. الرمز البايت هو نفسه بغض النظر عن النظام الأساسي الذي تستخدمه ، بشرط أن تستخدم Java Virtual Machine (JVM) الذي يعتمد على النظام الأساسي في الطبيعة. هذا JVM يحول رمز البايت إلى رمز الآلة وفقا لهيكل آلة الكمبيوتر الأصلي الخاص بك مثل x86 ، ARM الخ. Java Virtual Machine (JVM) هي من نوع مختلف ، وفقا لهندسة نظام الكمبيوتر ، وهذا يعني أن X 86 JVM ستكون مختلفة بالنسبة ARM JVM .

How Java compiler works
مناهج الاستقلالية The Platform Independence هي ميزة مهمة جدا في Java. يعني ذلك أنه يمكنك التطوير على نظام تشغيل واحد وتشغيله على نظام تشغيل آخر (Windows ، Linux ، OS X ، BSD ، أنظمة مدمجة متنوعة) دون إجراء الكثير من التعليمات البرمجية. هذا يعني أنه يمكنك أنظمة العميل المتنوعة ، مع إصدار واحد فقط من رمز العميل



4 - ممعنى virtual machine ؟


Java Virtual Machine او jvm هي مواصفات توفر بيئة تشغيل يمكن فيها تنفيذ جافا bytecode . كما يوحي الاسم ، يعمل JVM كآلة أو معالج "افتراضي". تتكون استقلالية منصة جافا في معظمها من Java Virtual Machine . يجعل JVM هذا ممكنًا . ينفذ JVM العملية التالية:


  • كود الاحمال
  • يتحقق رمز
  • ينفذ الكود

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


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


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


Java Virtual Machine Architecture



كل تطبيق Java يعمل داخل نسخة تشغيل من بعض التنفيذ الملموس للمواصفات المجردة للجهاز الظاهري Java. هناك ثلاثة مفاهيم لـ JVM: المواصفات والتنفيذ والمثيل.


  • المواصفة: وثيقة تصف ما هو مطلوب من تنفيذ JVM.

  • التنفيذ: يعرف بـ JRE (بيئة تشغيل Java Run Time).

  • المثيل: كلما قمت بتشغيل ملف فئة java ، يتم إنشاء مثيل لـ JVM.


JVM Architecture

كما هو موضح في الصورة ، تنقسم JVM إلى ثلاثة أنظمة فرعية رئيسية:


  • النظام الفرعي محمل Class
  • منطقة بيانات وقت التشغيل
  • محرك التنفيذ

           -النظام الفرعي محمل Class


يحتوي الجهاز الظاهري Java على هندسة Load Class مرنة تسمح لتطبيق Java بتحميل الفئات بطرق مخصصة. في JVM ، يتم تحميل كل فئة بواسطة مثيل java.lang.ClassLoader. A classloader هو ملف فئة Java خاص مسئول عن تحميل الفئات الأخرى إلى Java Virtual Machine. إذا تم استدعاء فئة Java وتحتاج إلى تنفيذ على Java Virtual Machine ، فسيتم استخدام مكون Java خاص ، يسمى classloader ، للعثور على فئة Java المهمة ، وسحب فصل Java من نظام الملفات ، وتنفيذ الشفرة bytecode من هذا الملف الطبقي على Java Virtual Machine.

JVM Architecture classloader

يقوم Java Sub Loader Subsystem بتحميل الروابط وتهيئة ملف الفئة عندما تشير إلى فئة للمرة الأولى في وقت التشغيل. وهو مسؤول عن تحميل ملفات الصف من نظام الملفات أو الشبكة أو أي مصدر آخر. هناك ثلاثة محمل دراسي افتراضي يستخدم في برنامج تحميل فئة Java و Bootstrap و Extension و System أو Application.


         -حزم التمهيد لتحميل class

عند بدء تشغيل JVM ، يتم تشغيل جزء خاص من التعليمات البرمجية للجهاز يقوم بتحميل loadloader النظام. يُعرف رمز الجهاز هذا باسم Classloader Bootstrap / Primordial. هي عبارة عن تعليمات خاصة بنظام الماكينة والتي تنطلق من عملية تحميل الطبقات بالكامل. يعتني برنامج حماية bootstrap أيضًا بتحميل كل الكود المطلوب لدعم بيئة تشغيل جافا الأساسية (JRE) ، بما في ذلك الفئات في java.util وحزم java.lang.

          -تمديد ClassLoader

يحمّل لودر الفئة الإضافي الفئات من دلائل ملحق JRE ، مثل دلائل lib / ext. ملحق ClassLoader يفوض طلب تحميل الفئة إلى الأصل الخاص به ، Bootstrap وإذا كان غير ناجح ، يقوم بتحميل فئة الدليل jre / lib / ext directory أو أي دليل آخر يشير إلى خاصية النظام java.ext.dirs. تمديد ClassLoader في JVM يتم تنفيذه بواسطة sun.misc.Launcher $ ExtClassLoader.

          -نظام / فئة التطبيق لودر

يعتبر برنامج تحميل فئة النظام / التطبيق مسؤولاً عن تحميل Classpath مستوى التطبيق ، المسار المذكور البيئة متغير إلخ.

          -الربط Classloader

الربط هو عملية دمج الـ bytecodes المحملة في نظام Java Runtime System بحيث يمكن استخدام النوع الذي تم تحميله بواسطة JVM. وهي تتضمن التحقق من هذه الطبقة أو الواجهة وإعدادها ، الطبقة العليا المباشرة ، واجهاتها الفائقة المباشرة ، ونوع عنصرها (إذا كان نوع الصفيف) ، إذا لزم الأمر.




JVM Architecture classloader linking




  • التحقق: سيتحقق مدقق Bytecode مما إذا كان الرمز البايت الذي تم إنشاؤه مناسبًا أم لا في حالة فشل التحقق ، فسنحصل على خطأ في التحقق

  • التحضير: سيتم تخصيص كل ذاكرة المتغيرات الثابتة وتعيينها بقيم افتراضية.

  • حل: يتم استبدال كافة مراجع الذاكرة الرمزية بالمراجع الأصلية من "منطقة الأسلوب".


           -التهيئة


هذه هي المرحلة النهائية من تحميل الفصل ، وهنا سيتم تعيين كل متغير ثابت مع القيم الأصلية وسيتم تنفيذ كتلة ثابتة.

                  -مجالات بيانات وقت التشغيل

يقوم Java Virtual Machine (JVM) بتعريف مناطق بيانات وقت التشغيل المختلفة التي يتم استخدامها أثناء تنفيذ البرنامج. يتم إنشاء بعض مناطق البيانات هذه على بدء تشغيل Java Virtual Machine ويتم إتلافها فقط عند إنهاء Java Virtual Machine. مناطق البيانات الأخرى هي لكل موضوع. يتم إنشاء مناطق البيانات لكل مؤشر ترابط عند إنشاء مؤشر ترابط وتدميرها عند إنهاء مؤشر الترابط.


JVM Architecture classloader Runtime Data Areas

     -منطقة الأسلوب

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

       -منطقة الكومة

الكومة هي مكان ذاكرة حيث يتم تخزين الكائنات ومتغير مثيلها. في كل مرة يتم فيها إنشاء كائن في Java ، ينتقل إلى منطقة الذاكرة المعروفة باسم الكومة.

       -منطقة المكدس

المكدس هو مكان الذاكرة حيث يتم تخزين الأساليب والمتغيرات المحلية. يتم تخزين المراجع المتغيرة (إما مراجع بدائية أو كائنات) في المكدس

       -تسجيل الكمبيوتر الشخصي

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

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

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

      -محرك التنفيذ

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


  • مترجم
  • JIT مترجم
  • جامع القمامة
  • مترجم

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

               -JIT مترجم

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

         -جامع القمامة

مجموعة البيانات المهملة (GC) هي العملية التي تهدف إلى تحرير الذاكرة المشغولة التي لم يعد يتم الرجوع إليها بواسطة أي كائن Java يمكن الوصول إليه ، وهي جزء أساسي من نظام إدارة الذاكرة الديناميكية في Java virtual (JVM's). تقوم كافة كائنات Java تلقائيًا بإمساك الذاكرة التي يحتاجونها عند إنشائها ، وعندما لا يعود الكائن بحاجة ، تسترد عملية جمع بيانات garbage Java الذاكرة. وهذا يعني ، جامع القمامة تعقب الكائنات الحية وكل شيء آخر يعين القمامة. المزيد عن .... Java Basbage Collection Basics

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

تسمح لك الطرق المحلية باستخدام الرمز من اللغات الأخرى مثل C أو C ++ في شفرة java. يمكنك استخدامها عندما لا توفر جافا الوظائف التي تحتاجها.

          -مكتبات الطريقة الأصلية
مكتبات الطريقة الأصلية هي مجموعة من المكتبات الأصلية المطلوبة لمحرك التنفيذ.

5 اول برنامج لي ع الجافا !!


المثال الأكثر شيوعًا لبرنامج Java الأول هو Hello World الشهير! برنامج. قبل الذهاب إلى أول برنامج جافا الخاص بك يجب عليك تنزيل وتثبيت JDK (Java Development Kit) بشكل صحيح. سيرشدك الرابط التالي إلى تنزيل JDK وتثبيته على نظامك.


كتابة برنامح hello World 


يجب أن تتبع ثلاث خطوات لتشغيل برنامج Java الأول بالكامل.


  • قم بإنشاء ملف مصدر
  • ترجمة الملف المصدر
  • تشغيل البرنامج

قم بإنشاء ملف مصدر بامتداد .java
في محرر النصوص (على سبيل المثال: المفكرة في Windows) ، قم بإنشاء ملف جديد واحفظه كـ "HelloWorld.java". HelloWorld هو اسم صفك وستحتاج إلى أن يكون اسم الفصل هو نفس اسم ملفك. انسخ المصدر التالي إلى ملف HelloWorld.java.

 
public class HelloWorld {
   public static void main(String[] args) {
      System.out.println("Hello, World");
   }
}

ترجمة الملف المصدر إلى ملف .class
المحول البرمجي هو تطبيق يقوم بترجمة البرامج من لغة Java إلى لغة أكثر ملاءمة للتنفيذ على الكمبيوتر. من أجل تجميع ملف java ، انتقل إلى المجلد الذي حفظته HelloWorld.java واكتب javac HelloWorld.java.

 
C:\> javac HelloWorld.java

إذا لم تكن هناك أخطاء في التعليمات البرمجية ، فإن الخطوة التالية هي تشغيل البرنامج.

تشغيل البرنامج
بعد تجميع HelloWorld.java بنجاح ، ستحصل على ملف HelloWorld.class في نفس الدليل. لتشغيل البرنامج ، في نفس الدليل ، أدخل الأمر التالي في الموجه:

 
C:\> java HelloWorld
"Hello, World"

فقط بعد الضغط على مفتاح enter ، ستحصل على الرسالة "Hello، World" في السطر التالي. تهانينا! اكتمل أول برنامج جافا بنجاح!

المسار و Classpath
قبل أن تقوم بترجمة وتشغيل أول برنامج Java ، يجب أن تقوم بتعيين متغيرات بيئة جافا مثل Path و ClassPath. Path هو متغير بيئة يتم استخدامه بواسطة موقع ملفات bin (ملفات تنفيذ ثنائية) example- java.exe ، javac.exe وما إلى ذلك. Classpath هو متغير بيئة يتم استخدامه بواسطة برنامج التحويل البرمجي Java للعثور على موقع ملف .class الخاص بك (الذي يتم إنشاؤه بعد تجميع ملف مصدر جافا الخاص بك). قبل أن تبدأ أول برنامج Java الخاص بك ، انظر فقط إلى ...... Java Path و ClassPath.


الى  هنا انتهى تقديم الجافا اتمنى ان يكون الدرس  مفيذا 

Post a Comment

0 Comments