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

"/>
جافا (لغه)
Java - Java

جافا )لغة ـ(

جافا (لغة ـ)

 

تعني جافا Java بالإنكليزية القهوة، وهو الاسم الذي أطلق على لغة البرمجة في مشروع OAK في شركة SUN، وقد اختار الفريق المسؤول عن تصميم اللغة هذا الاسم خلال ذهابهم لاحتساء القهوة. كان المشروع يهدف إلى تصميم لغة برمجة يمكنها التعامل مع عدة أجهزة استهلاكية كهربائية، كأجهزة قارئ الفيديو وأفران الأمواج المكروية وما شابهها. وقد كانت الانطلاقة الحقيقية لجافا نتيجة ظهور تقانة الوِب Web وانتشارها الواسع. إذ أصبحت جافا، بعد انطلاقها، الوسيلةَ المثلى لتطوير بريمجات Applets تعطي صفحات الوب مظهراً جميلاً وتنفث فيها ديناميكية البريمجات هي برامج جافا صغيرة يمكن استدعاؤها من لغة تأشير النصوص الفائقة HTML (Hyper Text Markup Language)التي تفسرها المتصفحات لإظهار صفحات الوِب.

بيئة جافا البرمجية

ليست جافا لغة برمجة فقط، وإنما هي ثلاثة أشياء في وقت واحد:

- جافا هي لغة برمجة بالتأكيد، وتشبه كثيراً في مفرداتها وقواعدها لغةَ C المشهورة بين أغلب المبرمجين. إذ تُرى العبارات البرمجية نفسها في C وjava، عندما يتعلق الأمر بوظائف برمجية متكافئة. ولكن لغة جافا، في أساس تصميمها هي أيضاً لغة غرضية التوجه تشبه لغة Smalltalk.

- الوجه الأكثر خصوصية لجافا هو محيط التنفيذ الخاص بها والمسمى آلة جافا الافتراضية JVM: Java Virtual Machine. وهي مجموعة البرمجيات التي تقلِّد آلةً تسمح بتنفيذ برامج جافا. وهي تحوي وظائف عدة تميز جافا من باقي اللغات، كجمع بقايا الذاكرة garbage collection، وتعدد المسالك البرمجية multithreading، وإدارة المواردresource management. هذه «الآلة» هي ما يميز جافا من باقي لغات البرمجة ويسمح لها بتقديم وظائف مهمة لا تدخل عادة على مستوى لغة البرمجة، التي يضطر المبرمج إلى البحث عن طريقة للقيام بها بحسب نظام التشغيل الذي يتعامل معه.

- الوجه الثالث لجافا هو تلك المكتبة الكبيرة من الصفوف classes الملحقة بها والتي تسمح للمبرمج بكتابة برامج متعددة الوظائف بسهولة. فهناك على سبيل المثال مكتبات تتعامل مع عنوانات مورد نظامية Uniform Resource Locator  (ULR)، ومكتبات لبرمجة واجهات التطبيقات، ومكتبات لبرمجة الأغراض الموزعة. تُجمّع الصفوف في حزم برمجية package، وفي محيط تطوير جافا، عدد كبير من هذه الحزم القياسية تقدم وظائف كثيرة ومتنوعة.

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

الخصائص الأساسية للغة جافا

تتميز لغة جافا عن باقي اللغات بالخصائص الأساسية الآتية:

1- عدم الارتباط ببيئة التنفيذ

تنطبق على جافا مقولة: «اكتب مرة ونفذ أينما شئت»، إذ يولد مترجم اللغة ملفاً من نوع الصف class يحتوي على ترميز بلغة خاصة، هي لغة الآلة الافتراضية. يُدعى هذا الترميز bytecode، ولا يرتبط بالآلة أو بنظام التشغيل اللذين ولِّد عنهما طالما جرى التوليد باستخدام أدوات متوافقة مع مواصفات الآلة الافتراضية التي وضعتها شركة SUN. ولأن الترميز المولد لا يحوي أي تعليمات تتعلق بالنظام أو بالمعالج فهو قابل للنقل والتنفيذ في أي بيئة تتوافر فيها نسخة نظامية من آلة جافا الافتراضية. ولأن وحدة الترميز هي بايت bytecode، صار بالإمكان شحن برامج جافا الجاهزة للتنفيذ عبر الشبكة. إذ تقوم هذه الآلة الافتراضية بالتعامل مع الآلة ونظام التشغيل. فبالإمكان كتابة برنامج بلغة جافا يعمل على نظام Solaris من SUN وتنفيذه فوراً على حاسب يعمل ضمن بيئة Windows من دون الحاجة إلى إعادة الترجمة أو تعديل البرنامج الأصلي. هذه الخاصة مهمة جداً بالنسبة لمطوري البرامج والشركات التي كانت تتكبد مبالغ طائلة لنقل البرمجيات من بيئة إلى أخرى.

2- سهولة التعلم

بذل مصممو لغة جافا قصارى جهدهم، بهدف سهولة التعلم، للمحافظة على صيغة تشبه لغة C الشائعة جداً بين المبرمجين. ولكنهم حاولوا في الوقت ذاته أن يحدّوا من المشكلات المرتبطة بلغات C/C++. وقد وفّقوا في ذلك إلى حد كبير، فقد أصبح من المعروف لدى المبرمجين ذوي الخبرة أن لغات C/C++ تحوي مصادر كثيرة للأخطاء، ولاسيما تلك المتعلقة بحجز وتحرير الذاكرة الديناميكية. إذ أن الحرية المطلقة في استخدام المؤشرات pointers والتي تعدّ من أكبر ميزات تلك اللغات على الإطلاق، تؤدي إلى ظهور أخطاء في أثناء تنفيذ runtime errors من الصعوبة بمكان اكتشاف مصدرها.

كما ألغت جافا الوراثة المتعددة، لصعوبة فهمها واستخدامها بالشكل المناسب.

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

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

3- لغة غرضية التوجه

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

4- معرفة الشبكة

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

طقم مطوِّر جافا

يتضمن طقم مطوِّر جافا Java Developer’s Kit (JDK) الصفوف اللازمة لتطوير جميع برامج جافا، موزعةً في حزم برمجية قياسية، وهذه الصفوف مخزنة على شكل ملفات من نوع class. مع ملفات الترميز الأصلي source code لعدد لا بأس به من الصفوف.

ويتضمن JDK أيضاً مجموعةَ الأدوات الضرورية لترجمة هذه البرامج وتنفيذها واختبارها، إضافة إلى بيئة تنفيذ جافا التي تقوم بتشغيل البرامج ضمن الآلة الافتراضية.

البرنامج javac هو مترجم لغة جافا الذي يترجم ملفات البرامج النصية من نوع java، ويولد بالمقابل ملفات من نوع class تحوي ترميز جافا bytecode لغة الآلة الافتراضية، الذي سيتم تنفيذه لاحقاً. هذه هي مهمة البرنامج java الذي يقوم بتنفيذ الملفات التي ولدها المترجم. هناك أيضا أداة مهمة جداً تستخدم للأرشفة وهي jar،  وتستخدم لأرشفة ملفات الصفوف. الأداة الأخرى المهمة هي javadoc وتسمح بتوليد ملف التوصيف والتوثيق الخاص بواجهة برمجة جافا java API (Application Programming Interface).

النسخ المختلفة من جافا

تطورت جافا عبر ثلاث نسخ أساسية من طقم التطوير:

- عام 1995، النسخة 1.0 وتحتوي حزم الصفوف الأساسية الستة الآتية: lang, io, applet, awt, net, util

- عام 1997، النسخة 1.1 وفيها تضاعفت مكتبة الصفوف، وأضيفت تحسينات، بل وإعادة صياغة في بعض الأمور وخاصة واجهات التفاعل مع المستخدم ومعالجة أحداثها (الحزمة: awt.event).

- عام 1998، النسخة 1.2 وتعرف النسخة 1.2 أيضاً باسم جافا 2 java 2. وعدد الصفوف فيها يتجاوز ثلاثة أضعاف النسخة 1.1 (فيها ما يزيد على 1600 صف).

زهير دحروج

 

 الموضوعات ذات الصلة:

 

البرمجيات (هندسة ـ) ـ التأشير (لغات ـ).

 

 مراجع للاستزادة:

 

- H.M.DEITCH, P.J.DEITCH, Java: How to Program (Prentice -Hall Inc., USA 1999).


- التصنيف : التقنيات (التكنولوجية) - النوع : تقانة - المجلد : المجلد السابع، طبعة 2003، دمشق - رقم الصفحة ضمن المجلد : 411 مشاركة :

متنوع

بحث ضمن الموسوعة