كيف تفكر كعالم كمبيوتر: نسخة جافـا

English

تنصيب JDK واستعمالها لترجمة وتشغيل البرامج

إن تنصيب JDK من أسهل ما يكون: بعد تنزيلها من موقع أوراكل أو http://download.cnet.com انقر على ملف التنصيب مرتين ثم تابع مع معالج التثبيت، مثل أي برنامج عادي.

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

الJDK هي اختصار ل Java Development Kit أي: أدوات تطوير برامج جافا، وهي مجموعة من الأدوات اللازمة لترجمة برامج جافا وتشغيلها. كما تحتوي على أدوات لفك تجميع البرامج (decompiling) وأدوات لتوليد توثيق الشفرة المصدرية وغيرها.

نحن نعلم أن أي برنامج بلغة جافا يجب كتابته في ملف نصي عادي لكن يجب أن يكون امتداده .java بدلاً من .txt وهذه هي المرحلة الأولى في حياة البرنامج: مرحلة كتابة الشفرة المصدرية (source code) وحفظها.

المرحلة التالية هي ترجمة البرنامج أو تجميعه (compile)؛ حيث نستخدم مترجم جافا المسمى javac.exe. ويكون ناتج ترجمة البرنامج هو ملف (أو ملفات) تحوي الbyte code وتكون هذه الملفات بامتداد .class.

بعد ذلك تأتي مرحلة تشغيل البرنامج: حيث نستخدم الJVM (Java Virtual Machine) وأحياناً تدعى JRE اختصاراً لJava Runtime Environment أي بيئة تشغيل جافا، وهذه عبارة عن برنامج اسمه java.exe نستخدمها لتفسير الbyte code وتشغيل البرامج. السؤال الآن هو: أين أجد هذه الأدوات؟ والإجابة تعتمد على مسار التنصيب الذي اخترته أثناء عملية تثبيت الJDK. افتراضياً ستجد هذه الأدوات في المسار التالي

C:\Program Files\Java\jdk1.7.0\bin
لاحظ أن اسم المجلد jdk1.7.0 يعني أنه يحتوي على JDK الإصدار 1.7.0 (النسخة 7.0)، أما إذا كنت مثلي تملك JDK6 update 26 فسيكون المسار كما يلي:
C:\Program Files\Java\jdk1.6.0_26\bin
في ذلك المجلد ستجد javac.exe وjava.exe وجميع الأدوات الأخرى.

سأشرح لك الآن كيفية كتابة برنامج Hello World وتشغيله باستخدام JDK. تابع معي:

برنامج Hello World!

أولاً، نختار مجلداً يكون بمثابة "ساحة العمليات" أو "الورشة" التي سنعمل فيها. أنا سأختار C:\JavaWork.

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

class Hello {

    public static void main (String[] args) {
        System.out.println ("Hello, world!");
    }
}
ثم احفظ الملف بأي اسم بشرط أن تكتب الامتداد .java في آخره، ويجب أن تحدد خيار "جميع الملفات" في حقل "حفظ بنوع". انظر الصورة

قبل ثالثاً، يجب أن تعلم أن هذه الطريقة تتطلب منك استخدام "موجه الأوامر" - "command prompt". لن أشرح جميع تعليمات موجه الأوامر، بل سأقتصر على تلك التي نحتاجها في مثالنا فقط. إذا أردت أن تتعلم المزيد عنه، ابحث عن الكتب التي تشرح دوس أو البرمجة الدفعية وما شابه.

ثالثاً، افتح موجه الأوامر: ابدأ -> تشغيل -> واكتب cmd ثم اضغط Enter. (إذا لم يكن الأمر تشغيل موجوداً في قائمة ابدأ عندك استعمل الاختصار (زر ويندوز + R) أو اكتب cmd في مربع البحث في قائمة ابدأ إذا كنت من مستخدمي ويندوز فيستا أو سيفن).
انتقل باستخدام الأمر cd إلى مجلد العمليات المطلوب، الأمر cd يعني Change Directory أي تغيير المجلد، ويتم استخدامه كما يلي:

cd C:\JavaWork
وذلك إذا كان المجلد على نفس السواقة التي كنا فيها قبل الانتقال؛ أما إذا أردنا الانتقال من C:\Users\Saied مثلاً إلى D:\JavaWork فيجب أن نكتب:
D:
ثم
cd JavaWork
بعد الانتقال إلى المجلد تتغير إشارة الجاهزية التي تدلنا على المجلد الذي نحن فيه حالياً وتصبح كالتالي:
C:\JavaWork>_
كما في الصورة:

إن تعليمة ترجمة برنامج جافا هي:
javac HelloProgram.java
ستلاحظ أن كتابة التعليمة السابقة ستعطيك خطأ:
'javac' is not recognized as an internal or external command, operable program or batch file.
لماذا؟ لأن موجه الأوامر لم يتمكن من العثور على مترجم جافا (javac)، فهو ليس أمراً داخلياً مثل cd ولا أمراً خارجياً، كما أنه حاول البحث عن برنامج باسم javac ولم يعثر عليه. أين بحث عنه؟ بحث عنه في:
المجلد الحالي أو ما يسمى بمجلد العمل (Working Directory) وفي حالتنا هذه يكون هذا المجلد هو مجلد JavaWork.
كما بحث عنه ضمن مجلدات أخرى، منها System32 ومجلد Windows ومجلدات أخرى سنتكلم عنها لاحقاً. كما سأعلمك إضافة المجلد الحاوي على أدوات جافا إلى قائمة مجلدات البحث حتى يتعرف موجه الأوامر على مترجم جافا مباشرة.

أما الآن فسنتبع أسلوباً آخر للحل:

لنذهب إلى مجلد C:\Program Files\Java\jdk1.6.0_26\bin ونشغل مترجم جافا من هناك. ويمكن أن نكتب:

cd "C:\Program Files\Java\jdk1.6.0_26\bin"
للانتقال إلى ذلك المجلد. لاحظ اننا وضعنا المسار بين علامتي تنصيص وذلك لوجود فراغ بين كلمتي Program و Files.
لا تنسى تغيير اسم jdk1.6.0_26 بما يتناسب مع النسخة التي تملكها. كما لا تنسى أن تكتب C: قبل تلك التعليمة إذا كان مجلد JavaWork عندك على السواقة D:
C:

cd "C:\Program Files\Java\jdk1.6.0_26\bin"

بعد أن أصبحنا في مجلد bin يمكننا استدعاء مترجم جافا لترجمة برنامجنا (HelloProgram.java) وذلك كما يلي:

javac C:\JavaWork\HelloProgram.java
إذا فتحت مجلد JavaWork الآن ستجد ملفاً باسم Hello.class فيه. (إذا لم يظهر الملف فهذا يعني وجود خطأ في عملية الترجمة)
لتشغيل البرنامج نكتب الأمر التالي في موجه الأوامر
java C:\JavaWork\Hello
حيث Hello هو اسم الصنف الذي يحوي العملية main وليس اسم الملف الذي يحتوي على الbyte code ولذلك لا يجب إضافة الامتداد .class إليه.

ماذا وجدت؟ لقد طبعت عبارة Hello, World! على شاشة موجه الأوامر. مبروك! كل هذا التعب لأجل هذه الجملة!!.
لا تزعل، لأنك ستعتاد على موجه الأوامر بعد فترة وسيصبح الموضوع روتينياً، وربما تعجبك هذه الطريقة أكثر من غيرها.

بقي الآن أن أذكر فكرتين مهمتين وهما: ماذا لو احتوى برنامجي على أخطاء؟ والفكرة الثانية هي ضبط إعدادات النظام حتى تتمكن من استدعاء مترجم جافا من أي مجلد بدون الحاجة للانتقال إلى مجلد jdk1.6.0_26\bin. كما أن هذا يعني عدم الحاجة لكتابة المسار الكامل للبرنامج عند ترجمته، أي أن الأمر

javac C:\JavaWork\HelloProgram.java
سيصبح هكذا:
javac HelloProgram.java
وأمر التشغيل:
java C:\JavaWork\Hello
سيصبح هكذا
java Hello
لنبدأ بالفكرة الأولى:

قراءة رسائل الخطأ من شاشة موجه الأوامر

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

HelloProgram.java:3: ';' expected
		System.out.println("Hello, World!")
						   ^
1 error

HelloProgram.java هو اسم الملف الذي يحتوي على الخطأ. الرقم 3 هو رقم السطر. ';' expected هو نوع الخطأ أو سببه.
يبين السطر الثاني التعليمة المكتوبة في السطر 3 (السطر الذي يحوي الخطأ) كما يوجد سهم صغير يشير إلى مكان الخطأ بالضبط.
آخر سطر يبين عدد الأخطاء الكلية الموجودة في البرنامج.

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

ضبط إعدادات النظام لاستدعاء مترجم جافا مباشرة

جرب كتابة notepad في موجه الأوامر.. ستفتح المفكرة. لماذا؟ أليست المفكرة برنامجاً، ألا نحتاج إلى الانتقال إلى المجلد الذي يحويها قبل أن نتمكن من تشغيلها؟ لم لا نحصل على رسالة 'notepad' is not recognized as an internal or external command, operable program or batch file. كما يحدث عندما نكتب javac؟

السبب هو أن برنامج المفكرة موجود في مجلد System32، وهذا المجلد موجود ضمن قائمة من المجلدات الأخرى التي يبحث فيها ويندوز عن البرامج عند استدعائها من موجه الأوامر.

طبعاً نحن لن ننسخ مترجم جافا إلى مجلد System32، بل سنضيف المجلد jdk1.6.0_26\bin إلى قائمة مجلدات البحث الخاصة بنظام ويندوز. تابع الخطوات:

  1. اذهب إلى خصائص النظام. (الاختصار هو: زر ويندوز+pause أو انقر باليمين على جهاز الكمبيوتر واختر خصائص)
  2. بالنسبة لمستخدمي فيستا وسيفن: انقر على Advanced system settings الموجودة في العمود الجانبي.
  3. انقر على علامة التبويب خيارات متقدمة.
  4. انقر على زر Environment Variables....
  5. في مربع الحوار الناتج ستجد مجموعتين من المتغيرات: الأولى خاصة بالمستخدم الحالي، والثانية متغيرات النظام. نحن سنغير في الثانية حتى يتمكن جميع مستخدمي الجهاز من الاستفادة من هذه التغييرات:
  6. انزل قليلاً حتى تجد متغير Path. حدده وانقر زر Edit.... سيظهر مربع صغير فيه جميع المجلدات التي يبحث فيها ويندوز عن البرامج عند استدعائها من موجه الأوامر، كما تستفيد من هذه القائمة برامج أخرى.

  7. اضغط زر home على لوحة المفاتيح حتى تنتقل إلى بداية السطر، ثم أضف مسار مترجم الجافا متبوعاً بفاصلة منقوطة: مثلاً

    C:\Program Files\Java\jdk1.6.0_26\bin;
    
    (لا تحذف المسارات المكتوبة من قبل، بل أضف المسار إلى بداية السطر فقط، وإذا ضغطت أحد الأزرار وأدى ذلك إلى حذف مسارات المجلدات المكتوبة، فقط انقر على Cancel ثم انقر على Edit... مرة أخرى)

  8. انقر على موافق ثم موافق ثم موافق ثم أغلق نافذة خصائص النظام.

إذا رجعنا الآن إلى نافذة موجه الأوامر وانقلنا إلى أي مجلد، ولنفرض أننا نريد الذهاب إلى مجلد اسمه New Folder موجود على السواقة D:، نكتب التعليمة التالية أولاً للانتقال إلى السواقة D:

D:
ثم نستخدم تعليمة cd للانتقال إلى المجلد المطلوب:
cd "New Folder"
ثم جربنا استدعاء مترجم جافا:
javac
سنلاحظ أن المترجم يعمل وسيطبع لنا الكثير من الأسطر التي تبين كيفية استعمال المترجم، وجميع الخيارات الممكن استعمالها معه.

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