دورة جافا: الطريق لإحتراف البرمجة من الصفر

 


2. أدوات أساسية للبرمجة بلغة الجافا

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

في هذا الدرس إن شاء الله سوف نرى ماهي هذه الأدوات وكذلك كيفية استخدامها .

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

من هذا التقديم نستلخص اننا بحاجة لبرنامج نكتب فيه الأكواد (محرر نصوص)، ومترجم يترجم هذه الأكواد للغة يفهمها الحاسوب ،

 

محرر النصوص

المترجم

بيئة التطوير

تحميل ال JDK

IDE

اكليبس

إنشاء مشروع جديد على اكليبس

 

1.2 بيئة جافا متكاملة

1.1.2 محرر النصوص : Editor

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

المحرر : Editor، بهذا المحرر يمكنك مثلاً أن تصمم موقعا بأكمله من الصفر! كما يمكنك كتابة أكواد الجافا مباشرةً فيه.

أما أنظمة التشغيل الاخرى فهي أيضاً تحتوي على محرراتها فعلى سبيل المثال هناك vi على Unix، وكذلك على linux، هناك أيضاً Text edit على الماكنتوش...

بواسطة هذا البرنامج الصغير ( المحرر ) يمكنك كتابة برنامج جافا بأكمله بجميع أكواده، بعد ذلك يجب عليك حفظ هذا الكود في ملف بإمتداد : File.java. لكن هناك مشكلتين اساسيتين سوف لن يحلهما هذا المحرر البسيط؛ المشكلة الأولى هي أنك إن أردت كتابة برنامج كبير، فلن يتحقق لك ذلك إلا بمشقة الأنفس ! لماذا ؟ .. ببساطة لأن المحرر الذي يأتي مثلاً مدمجاً في الويندوز لا يحتوي على ألوان تفرق لك كلمات الكود لتسهيل قراءته وكذلك لتسهيل كتابته، ولا يحتوي على نوافذ متعددة تمكنك من كتابة أكواد عديدة في نفس النافذة مما يجعل كتابة برنامج كبير أمر شبه مستحيل!

المشكلة الثانية وهي أن كل ماكتبته لن يفيدك بشيء !.. ببساطة لأن كل ما كتبته هو عبارة عن نص لا يفهمه الحاسوب، وانما تفهمه أنت.

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

 

ملاحظة : لا ننسى أن هناك محررات نصوص تدعم لغات البرمجة المختلفة، ويمكنك بمساعدتها كتابة أكواد مفهومة وواضحة كما تساعدك كذلك على التحرير،

نذكر منها : notpad++، Jedit، UltraEdit ..

 

2.1.2 المترجم : Compiler

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

في حالة لغة جافا يقوم المترجم بترجمة النص المكتوب إلى ما يسمى بالبايتكود bytecode.

 

الكود المكتوب :source code

يكون على شكل :example.java

وهو الشكل النصي الذي يصف البرنامج ويساعد المبرمج على فهم أوامره (البرنامج).

يتكون من سلسلة للأوامر التي يجب على المترجم تنفيذها . هذه البرامج تكون مكتوبة بلغة برمجة معينة وهي الجافا يعني لهجة للكتابة

لا يمكن أن يتم تنفيذ الكود المكتوب مباشرة من الحاسوب بل يجب ترجمته

الكود المكتوب يمكن أن يترجم إلى شيء اسمه الكود الناتج :bytecode .

 

الكود الناتج : Bytecode

يكون على شكل : example.class

هو ناتج ترجمة الكود المكتوب .

يمثل البرنامج الحقيقي

خفي ويعني هذا أنه لا يمكن قرائته كنص مثلا

لا يمكن إعادة ترجمته للكود المكتوب, ربما حفاظا على حق صاحب البرنامج .

يمكن تنفيذه على أي نظام تشغيل يتوفر على java virtual machine

 

bytecode : هو عبارة عن مجموعة من الأوامر للجهاز الوهمي. عند ترجمة التعليمات البرمجية المصدر من بعض لغات البرمجة أو البيئات -- مثل جافا -- لا يتم إنشاء لغة الحاسوب مباشرة، وإنما رمز وسيط ( Bytecode ). هذا الرمز هو عادة مستقل عن الهاردوير وبالمقارنة مع شفرة المصدر -في كثير من الأحيان- يكون موجز ومتراص ( compact ).

إذاً مترجم الجافا ينتج ما يسمى كود ناتج محايد التركيبة : bytecode وهو يترجم فقط عند تنفيذه إما في اللحظة التي يلاحظ فيها أو في اللحظة التي ينفذ فيها, هذه العملية اسمها JIT : Just In Time Compiler.

عملية الترجمة تتم كالتالي : قمنا بكتابة برنامج بلغة الجافا في المحرر، بعد ذلك قمنا بحفظه كملف file.java، الأن تأتي عملية الترجمة، وتتم بمساعدة مترجمات عديدة متوفرة لأنظمة تشغيل مختلفة منها Javac، الذي يأتي مدمجاً مع JDK كما في الصورة التالية :

java-compiler

 

الشرط الأساسي الذي يجب أن يحققه الحاسوب الذي نقوم بالبرمجة عليه هو أن يتوفر على بيئة الجافا ( مثال على ذلك بسيط فأنت محتاج لمنزل ومدينة ودولة! لكي تعيش!، وكذلك جافا فهي تحتاج لمكان أو بيئة لكي تعيش هي الأخرى )

 

3.1.2 بيئة التطوير
كما قلنا فإن بيئة جافا هي أين تعيش جافا، فلابد لها من مكان لكي تبرمج أكوادها.. ولا يكفي وجود حاسوب "مع الأسف!" لكن يجب وجود بيئة معينة،هذه البيئة تم تطويرها من طرف Sun Microsystems وقامت هذه الشركة المطورة بتسميتها JDK Development Kit سنرى إذاً مما يتكون أساساً ال-JDK

java Development Kit أو أدوات تطوير جافا هي البيئة الكاملة لتطوير البرامج بلغة الجافا، من دون هذه البيئة لن يتمكن أي حاسوب من تطوير وتنفيذ أي برنامج مكتوب بلغة جافا.

وهو يحتوي على المكونات التالية :

JRE : Java Runtime Envirement ويعتبر المكان الذي تعيش فيه جافا! ففي هذه المنصة ( platform ) تنفذ البرامج التي قمنا بترجمتها. لكنه لا يعتبر مكان لتطوير البرامج وذلك لأنه لا يحتوي على المكتبات الخاصة لتطوير الجافا، وكذلك فإنه لا يعتبر أداة تدخل في تطوير الجافا كالمترجم مثلاً..

مترجم جافا : compiler : مترجم الجافا المدمج في JDK هو javac، وله دور ترجمة مصدر البرنامج للبايتكود Bytecode، مصدر البرنامج يكون بإمتداد .java، وهو عبارة عن أكواد java نقوم نحن بتحريرها في المحرر.

Java Archiver : يأتي برنامج jar مدمج مع أدوات تطوير جافا ( معنى jar بالانجليزية هو قلة أو جرة )، و هو الذي يقوم بإنتاج ملفات jar. ملف jar هو عبارة عن ملف zip يمكن أن يحتوي على بيانات وصفية Metadata، هذه الملفات تستعمل في المقام الأول لتوزيع واحتواء مكتبة جافا.

Javadoc : هي عبارة عن تعليقات بال إتش تي م ل تقوم بوصف ما تقوم به الكلاس والوظائف ( سوف نتعمق في هذا كله في فقرة خاصة )

 

من هنا نستنتج أن الجزء المسؤول عن تنفيذ الأكواد في بيئة التطوير هو JRE ولكي نكون أكثر دقة فإن جزء من ال-JRE بدوره هو المسؤول عن تنفيذ الأكواد، هذا الجزء يسمى Java Virtual Machine

java virtual machine

آلة جافا الافتراضية أو java virtual machine هي آلة افتراضية تستخدمها تكنولوجيا جافا لتمكن الحواسيب المختلفة من تشغيل البرامج المكتوبة بلغة جافا (من ويكيبيديا - إنتهى)
هي جزء من java runtime environment مسؤول عن تنفيذ الكود الناتج في الجافا أي bytecode، وأي برنامج بالجافا يتم تنفيذه في آلة افتراضية خاصة بة في الحالة العادية. الجزء الآخر من JRE هو مكتبة تحتوي على الكلاسات الأساسية . وهي مبرمجة بلغة السي والسي بلس بلس .
وهي موجودة لأغلب أنظمة التشغيل ومن أجزائها نجد :
  • - classloader وهي لتحميل الكلاسات .
  • - إدارة التخزين و garbage collection حيث أن الجافا تحتوي على إدارة لتنظيف الذاكرة والتخزين أوتوماتيكيا .
  • - excution engine ومعناها وحدة التنفيذ .
لمحة بسيطة عن garbage collection :
في لغات البرمجة كالسي بلس بلس نصف الأخطاء  تقريباً تكون بسبب توزيع أو تخصيص التخزين، وكما نعلم فإن لغة السي بلس بلس هي كذلك لغة برمجة غرضية التوجه والعمل بالكائنات أو objects يعني دائما خلق و مسح. لكن الجافا عندها الحل! وهو Java Runtime Environment فهو الذي يقوم بإدارة هذه الكائنات ومعناه أنها لا يجب أن تحرر ف garbage collector يقوم بمسحها .

 

JVM

كتلخيص لكل ما جاء في هذه الفقرة تظهر لنا الصورة التالية ما نحتاجه إن شاء الله للبداية في تطوير البرامج بلغة الجافا :

compilereditor

 

 

4.1.2 تحميل ال JDK

على الويندوز واللينوكس

ندخل للموقع التالي : JDK Downlaods

نختار JAVA كخيار لما نود تطويره كما هو موضح من الصورة التالية :

jdk

نختار بعد ذلك من قائمة نظم التشغيل، نظام التشغيل الخاص بنا، هناك ثلاث نسخ Solaris - unix، لنكس والويندوز :

operating-system

يجب أن ننتبه لما هو معلم باللون الوردي، بعد ذلك يتم تنصيب الJDK تنصيب عادي.

على الماك

على الماك فإن ال JDK هو مدمج مع نظام التشغيل OS X، لذلك فأبل وفرت عليك عناء تحميل بيئة التطور.

بعد عرضنا ثلاث مكونات لتكوين بيئة جافا متكاملة، وبعد تنصيب JDK نكون قن انتهينا من تنصيب مكون واحد، وبقي لنا تنصيب المترجم والمحرر.


2.2 Eclipse

1.2.2 IDE

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

إلا أنه لن يكون من السهل التعامل مع برنامجين، محرر مثلاً ومترجم! .. فيجيب عليك لكتابة برنامج معين أن تقوم بكتابته في المحرر ومن ثم إرساله للمترجم لكي يقوم بترجمته.

لكن أهناك طريقة لدمج المترجم مثلاً مع المحرر، ليصبح من السهل التعامل مع البرامج المكتوبة وترجمتها؟ إنه سؤال جيد خصوصاً وأن منه إنطلق تطوير ما يسمى ببيئة التطور المتكاملة ( Integrated Development Environement ) أو ما يصطلح عليه ب-IDE كإختصار للكلمة.

IDE يدمج المحرر والمترجم، لكن ليس هذا فقط ففبه إمكانيات أخرى كثيرة تجعل منه الأداة الوحيدة التي يحتاجها أي مبرمج، هذه الإمكانيات هي :

  1. محرر ( editor ) : وهو أين تكتب الاكواد
  2. مترجم ( Compiler ) : وهو الذي يترجم هذه الأكواد للغة يفهمها الحاسوب
  3. متعقب الأخطاء ( Debugger ) : وعبارة عن متعقب و "مصحح" للأخطاء ( في ويكيبيديا هناك كلمة مصحح مكان متعقب، وأظن في رأيي أنها ليست صحيحة، لأن متعقب الأخطاء له دور تعقب الأخطاء واظهارها ولكنه لا يقوم بتصحيح هذه الأخطاء )

 

لا نريد التعمق أكثر في في مكونات IDE، وذلك لأن ذلك لن ينفعنا كثيراً في دورتنا حول الجافا.

للإشارة فلا يجب أن ننسى أيضاً أن IDE لا يكفي لتطوير البرامج بلغة الجافا، بل يجب توفر JDK أو بالأحرى Java Virtual Machine كما رأينا في الفقرة السابقة.

هنا في الدورة سوف نتكلم عن واحد من  أقوى بيئات التطوير ( IDE ) وهو اكليبس ( Eclipse ).

كملاحظة بسيطة قبل التكلم عن اكليبس، هناك من عقب علي لانني لم استعمل Netbeans وهو عبارة عن بيئة تطوير متكاملة أيضاً، أود أن أوضح لماذا اخترت اكليبس :

  1. ليس هناك فرق كبير بين البرنامجين، يمكن إستعمال أياً شئت، لهذا فليس حكراً على أي شخص أن يتعلم اكليبس أو-neatbeans، فأي برنامج منهما هو مسير للدورة.
  2. أريد من الزوار الكرام التعود على برنامج اكليبس لأنه برنامج قوي ويتيح إمتدادات كثيرة، بمساعدتها يمكن فعل الكثير، فأغلب لغات البرمجة يمكن برمجتها من خلال هذا البرنامج. الشيء الذي لا يتوفر عليه netbeans.

 


2.2.2 اكليبس

برنامج اكليبس تم تصميمه من طرف Eclipse Foundation،  وهي عبارة عن شركة تم تصميمها من طرف IBM، مقرها في كندا، كما أنها مختصة فقط بتطوير الاكليبس.

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

التنصيب يتم عبر الرابط التالي : اكليبس

يمكنك تنصيب أي من نسخ الاكليبس الثلاته الأولى كما في الصورة :

eclipse-download

في يمين الشاشة سوف يظهر لك أوتوماتيكياً نظام التشغيل الخاص بك، شخصياً انصح بتحميل Eclipse For java EE Developers وذلك لأن به مدمجة أيضاً مكتبة جافا لاستخدمها في النسخة التجارية، لن نحتاجها الأن لكن ربما في المستقبل إن شاء الله. أما الدروس التي سوف نتناولها في هذه الدورة، يمكن عملها أيضاً بالنسختين الأخريتين.

إذاً إن كنت تريد تعلم java فقط لغرض معين وأنك لا تتخيل نفسك يوماً مبرمج جافا تمتهنها كحرفة! فربما تود تحميل النسخة الثالثة أو الاختيار الثالث.

في الفقرة التالية سوف نرى كيفية انشاء مشروع جديد على اكليبس

 

3.2.2 إنشاء مشروع جديد على اكليبس

الأن قمنا بتنصيب جميع اللوازم للبداية بالبرمجة بلغة الجافا؛ قمنا بتنصيب ال JDK وكذلك تنصيب الاكليبس، الأن لم يتبقى إلا البداية بالبرمجة!

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

إذاً ما نحتاجه عبارة عن مجلد، هذا المجلد يحتوي على الملفات التي بها الأكواد التي قمت ببرمجتها، ويحتوي كذلك على الملفات المهمة (كما سنرى في فقرة القراءة من سطر الإدخال)

دعنا إذاً نبدأ في إنشاء أول مشاريعنا على eclipse :

نضغط من القائمة الرئيسية أعلى البرنامج علي File -->  New --> Java Project

ستظهر لنا النافذة التالية : نقوم بكتابة إسم البرنامج ونضغط على Next كما موضح.

بعد ذلك يجب إضافة الكلاس للبرنامج ( المشروع )، لتحقيق ذلك نضغط على السهم على يسار المشروع الذي قمنا بانشائه كما مبين في الصورة التالية :

class

عند الضغط على السهم على يسار المشروع، يظهر لنا مجلد جديد إسمه src وكذلك مكتبة الكلاسات.

هنا نضغط بزر الفأرة الأيمن على مجلد src ونختار New --> Class لتظهر لنا هذه النافذة :

javaclass

نقوم بملء الفراغات كما مبين في الصورة أعلاه ( بعد الأشياء سنقوم بشرحها لاحقاً )

في وسط برنامج اكليبس نرى أن هناك كود جديد ظهر بهذا الشكل :

classcode

كما نرى كلمة FirstClass، وهو الإسم الذي اعطيناه للكلاس عند إنشائها، داخل الكود.

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

 

رأينا في هذه الفقرة الأدوات الأساسية للبرمجة بلغة الجافا، المترجم والمحرر وكذلك بيئة التطوير، كما رأينا كيف أن هناك بيئات تطوير متكاملة IDE تدمج المترجم والمحرر، في هذا الصدد

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

 

nextالدرس القادم : مميزات جافا

ما هي الأدوات التي سنحتاجها للبرمجة بلغة الجافا .