بسم الله الرحمن الرحيم
لغة الجافا ظهور لغة الجافا
جافا عبارة عن لغة برمجة عالية المستوى تم تطويرها خصيصا لصفحات مواقع الانترنت وتتلائم مع التطبيقات الخاصة بالشبكات . وكان قد تم ابتداعها بواسطة شركة صن مايكروسيستيمز عام 1991م ضمن مشروع باسم اواك Oak لعمل أنظمة للأدوات العامة مثل الفيديو والتلفزيون والثلاجة والغسالة والتلفون ولذا كان من ضمن أهدافها أن تكون سهلة , سريعة وتعمل على اكثر من بيئة ولذا بنيت اساسا على لة C++ للبرمجة طقاعدة لها ولكنها تتميز عنها بأنها اقل صعوبة .
ظهرت جافا أول مرة في عام 95 على متصفح تجريبي – هوت جافا – لعرض قدرات اللغة وكانت تتكون من 200 واجهة مختلفة لتطوير التطبيقات وأضيفت إلى عدد من الملاحق إلا أن إنطلاقتها كانت عندما قامت شركة" نتسكيب" بتبنيها في المتصفح "نتسكيب نافيجيتور 2.0 " عام 1996م ، وأصبحت تطبيقاتها شائعة على شبكة الويب . إلا أننا نرى أن جميع المتصفحات المتوفرة حاليا تدعم نكهات تلك اللغة باستخدام ما يسمى "آلة جافا افتراضية Java Virtual Machine " ، وهي مفسر Interpreter يفهم شيفرة برمجات جافا ويحولها آنيا إلى شيفرة تنفيذية في نظام التشغيل الذي يعمل ضمنه المتصفح .
واليوم وصل عدد واجهات تطوير التطبيقات في جافا إلى 1600 ومازالت إلى الآن في طور التطوير : وأكثر ما لفت انتباه المبرمجين أن هذه اللغة تأخذ تلقائيا البيئة التي تعمل ضمنها وتدعى هذه التقنية تقنية " سوينغ " أي انك عندما تقوم بتطوير جافا فإن هذه التطبيقات عندما تعمل ضمن ويندوز فإن عناصرها المختلفة تأخذ شكل ويندوز وعندما تعمل ضمن بيئة الماكنتوش فإنها تأخذ تلقائيا شكل واجهات الماكنتوش وهذه ناحية هامة جدا للمستخدم وللمبرمج .
وعد جافا
فكرة جافا كلغة تطوير و ما تعد به بسيط جدا : أكتب برنامجك مرة واحدة و قم بتشغيله على أي جهاز و ضمن أي نظام دون أن تقوم بتعديل سطر واحد فيه . فقبل ظهور جافا كان يجب كتابة كل برنامج لبيئة واحدة فقط ، و حتى يعمل هذا البرنامج ضمن بيئات أخرى كان يجب إعادة تولفه كي يعمل ضمن بيئات أخرى . و قد تمخض عن ذلك عدة نتائج كان أهمها : ظهور و سقوط عدد من نظم و بيئات التشغيل اعتمادا على عدد من التطبيقات المطورة لها : و تعدد نظم التشغيل ضمن المؤسسة الواحدة هو كابوس إداري بالنسبة لمد راء المعلوماتية .
قد نجم عن هذا التعدد في نظم التشغيل و البيئات المختلفة ضمن المؤسسة الواحدة مشكلة أكبر . فالمؤسسات اليوم تعتمد في إدارة أعمالها و حل الكثير من مشاكلها الإدارية باعتماد على تقنية المعلومات . و لنقل مثلا أنك في مؤسسة تستخدم نظم تشغيل مختلفة مثل يونكس ( و هو ما يستعمله المهندسون مثلا ) وويندوز ( و هو ما يستخدمه الإداريون ) ، و لنقل أن لديك ماكنتوش أيضا ( للمصممين و خلافه ) .
في مثل هذه البيئة لنقل أن الإدارة قررت استخدام نظام تقارير داخلي السؤال الأول الآن هو لأي نظام سنقوم بتطوير التطبيق ؟ في هذه الهالة ، إذا أردت تطوير التطبيق لبيئة ويندوز فقط فعليك وتغيير البنية التحتية للمؤسسة كاملة و إعادة تدريب الجميع على استخدام ويندوزبدلا من يونكس و ماكنتوش .
و قد يقول مبرمج شاطر " آه ، لنطور هذا التطبيق بلغة سي ، ثم نقوم بتوليفه بحيث يعمل على جميع البيئات التي نستخدمها . " فكرة جيدة و هناك الكثير ممن يفعلون ذلك . و لكن ها تدرك أن ذلك يعني تطوير برنامجك ثلاث مرات ؟ هل تتخيل حجم المورد و الجهد الذي يحتاجه عمل ذلك ؟ و من خلال لغة جافا قامت صن بحل هذه المشكلة كما قلنا من خلال السماح للمطورين بتطوير التطبيق مرة و تشغيله ضمن أي بيئة تشغيل طالما كانت هذه البيئة تحتوي على ما يدعى بآلة جافا الافتراضية ولكن هذا ليس كل شيء ، فوجود لغة تطوير تتمتع بهذه المرونة يعني أمرين :-
1-إعادة الاستخدام . و ما يعنيه ذلك هو أنه يمكنك استخدام البرمجيات و العناصر التي تتكون منها ضمن عدة بيئات مما يعني توفير الكثير من الوقت اللازم لكتابة برمجيات جديدة ، و بتالي حل مشاكل المؤسسات بسرعة أكبر .
2- إعادة استخدام المبرمجين . من النادر أن مبرمجا يتقن أكثر من لغة برمجة واحدة ، وهذا يعني الحاجة إلى وجود عدة مبرمجين في المؤسسة يتقن كل منهم مجموعة مختلفة من لغات البرمجة .و إذا أرد أن تتصور المشكلة فتخيل أنك تعمل في شركة يتكلم فيها كل واحد لغة مختلفة ولا يتقن إلا القليل من لغة الآخر . أشك أن الكثير يحدث في مثل هذه الشركة .
و عندما تؤسس لغة مثل جافا فإن توحيد اللغة سيؤدي إلى زيادة كبرى في فعالية المبرمجين و بتالي سرعة في حل المشكلات التي تواجهها . و إذا أضفنا إلى ذلك فوائد مثل إمكانية إعادة استخدام عناصر جافا في برمجيات جديدة فيمكننا أن نتصور الفوائد .
تطور جافا ، لمحة تاريخية
عندما ظهرت جافا في البداية أقتصر استخدامها على كتابة البرمجيات اللازمة لأتمتة الإنترنت . و لم تدعم الإصدار الأول منها أمور مثل القدرة على تعامل مع قواعد البيانات كجزء متكامل من عدة تطوير التطبيقات الخاصة بذلك الإصدار . و احتوت عدة جافا 1,0 على ثماني حزم ( الحزمة من جافا هي مجموعة من العمليات المرتبطة ببعضها ؛ مثلا حزمة التشبيك الموجودة في حزمة (java.net) تحتوي على جميع العمليات اللازمة للربط الشبكات و التعامل مع برتوكولات الإنترنت و الشبكة TCP/IP ) و باختصار فقد احتوى جافا 1,0 على الأدوات اللازمة لكتابة البرمجيات ، و إنشاء واجهات الاستخدام ؛ و التلاعب بالصور ؛ و فعاليات حفظ و استرداد البيانات من و إلى القرص الصلب .
و رغم هذه الإصدار فقد لعب دورا مهما في أتمتة الإنترنت و إدخال خواص التفاعلية على مواقع الإنترنت . و في ذلك الحين تمكن المبرمجون و مصممو الويب باستخدام برمجيات جافا ، و لغة تعليم النص المترابط (HTML) و لغة جافا سكربت من إنشاء مجموعة كبيرة من التطبيقات للإنترنت و شبكات الإنترنت ، و في ذلك الوقت أدرك الجميع أنه يمكن لجافا أن تحل محل لغات مثل (C++) و (Visual Basic) كلغة تطوير البرمجيات الموزعة .
وفي أواخر عام 1996 ظهر 1.1 من عدة تطوير التطبيقات لجافا . و رغم أن صن اختارت أن تجعل هذا الإصدار جزئيا فقد كانت هامة بشكل حيوي لتطوير اللغة حيث أرتفع فيها عدد الحزم من 8 إلى 23 حزمة . و لم تكن كل الحزم التي تمت إضافتها جديدة ، حيث بعضها قد توفر لاحقا كملاحق إضافية لها طورها شركاء صن ، و جعلتها صن جزءا من نواة النظام 1.1 و من هذه الحزم الجديدة :-
1- هيكلية حبيبات جافا (JavaBeans) و التي هي عبارة عن عناصر برمجة مستقلة عن بيئة التشغيل و قد شكلت هذه الحزمة دعما قويا لجافا و التي أصبحت بفضلها لغة حقيقة للتطوير بالعناصر ، بحيث يمكن مزج و إعادة استخدام العناصر، و توزيع التطبيقات الناتجة و خلافه .
2- الأصناف الداخلية و هي إضافة تقنية تمكن المبرمجين من تعريف عناصر جافا ( و التي يدعوها المبرمجين بالأصناف Classes ) ضمن أصناف أخرى . و هذا مهم لأن العناصر في برمجيات جافا يجب أن تكون هيكلية لتكون مرنة في معالجة المشكلة المراد حلها .
3- الخواص الدولية في جافا . حيث أصبح بإمكان عناصر جافا في هذا الإصدار تمييز موقع الجهاز الذي تعمل ضمنه ( أي موقعه في العالم ) و التصرف حسب ذلك حيث صار بإمكان برمجيات جافا تحديد موقعها ، و الوقت و التاريخ ، و اعتماد المقاييس المستخدمة في ذلك الموقع ، و هذه لإضافة هامة إذا أخذنا بعين الاعتبار أن لغة جافا صممت لوضع تطبيقات تتنقل عبر الإنترنت .
4- في عدة التطوير 1.1 تم تعزيز عناصر الإدخال و الخرج I/O بحيث تدعم إخراج و إدخال الحروف . و هذه ميزة هامة حيث أن العديد من البرمجيات المصممة بغير اللغة الإنجليزية تستخدم أساليب مختلفة لتشفير الحروف ، مثل الصينية و اليابانية و العربية ، حيث تستخدم هذه اللغات محارف آسكي ASCII غير تلك المستخدمة في اللغة الإنجليزية و قد فتح هذا التطتوير لدعم اللغة العربية في جافا بدءا من العام 1997 في الإصدار 1.1.6 .
5- في جافا 1.1 تم إضافة دعم التواصل مع قاعدة البيانات بإضافة JDBC و تتكون JDBC من مجموعة من العناصر اللازمة للتحكم بقواعد البيانات ، و تستخدم لغة البحث البنيوي (SQL) و هي اللغة التي ابتكرتها شركة (IBM) كلغة قياسية للتحكم بالبيانات في قواعد البيانات العلائقية .
6- و آخر تحديث في جافا 1.1 و هو أهمها كان تضمين تقنية تشغيل العمليات عن بعد (Remote Method Invocation RMI) و هي تقنية يمكن بواسطتها للبرمجيات ، و خصوصا تلك المكتوبة بـ لغة جافا ، التواصل سوية ، حتى و لو كانت تعمل ضمن بيئات مختلفة و في مواقع مختلفة . و قد أوردت هذه الإضافة إلى دعم جافا بشكل كبير كلغة لتطوير التطبيقات الموزعة ، حيث يمكن لتطبيق جافا يعمل ضمن جهاز مركزي في الرياض مثلا ، أن يتعامل مع تطبيق جافا أخر يعمل على نظام مركزي في لندن أو نيويورك مثلا ، دون أن يحتاج هذين التطبيقين لمعرفة تفاصيل النظام الذي يعمل ضمنه التطبيق الآخر .
جافا و ما بعد المراهقة
السنوات الأربعة الأولى من عمر جافا ، رغم أنها كانت مثمرة من حيث نمو عدد المطورين ، و دخول جافا إلى قلب المؤسسات الكبرى كأداة تطوير رئيسة ، فقد كانت حافلة بالمشاق ، مثل الصراع حول وضع معيار قياسي للغة مما أدى بالتالي إلى حدوث تشقق في صفوف جافا تمثل بإصدار عدد من الشركات العالمية مثل هيولت باركرد و أي بي إم و حتى مايكروسوفت إصداراتها الخاصة من عدة تطوير جافا مما أدى إلى حدوث حالة من عدم الاستقرار في التطبيقات المكتوبة بلغة جافا و عدم توافقيتها مع بعضها في كثير من الحالات . إضافة إلى تعثر صن ، و هي صانع للأجهزة و المعدات أساسا ، في تشجيع المطورين و العمل معهم بالشكل الكافي . أضف إلى ذلك كله فشل عدد من تطبيقات جافا المكتبية كالتي طرحتها كورل و لوتس في التغلغل في سوق المستخدمين و الحلول محل تطبيقات المستخدمة الشائعة مثل أوفيس وورد برفكت . كما فشلت أي بي إم في نشر نظام تشغيل للكمبيوترات الشبكية تم تطويره بجافا .
و لهذه الأسباب أتت جافا 2 و هي في الحقيقة الإصدار 1.2 من هذه اللغة ، و لكن صن أدخلت على جافا في هذا الإصدار الكثير من التعديلات التي لا يمكن القول بأنها جزئية . و تعبر عدة تطوير التطبيقات 2 لجفافا أول إصدار كامل المزايا من هذه اللغة .
و أهم سبب لذلك هو أن الإصدارات القديمة من عدة تطوير التطبيقات جافا كانت تحتوي على حزم جديدة تماما غير متوافقة أو أحدث من الحزم القديمة وواجهات تطوير التطبيقات الخاصة بها ، و بالتالي ، كان على المبرمجين و مدراء المعلوماتية أن يقوموا بتحديث كامل ما يستخدمونه ، بما في ذلك الكود القديم ، ليتوافق مع التحديث الجدد و عناصره . و قد كانت هذه أهم المشاكل التي تم تجاوزها في جافا 2 .
جافا 2 ، طور النضوج
عندما ظهرت جافا 2 لأول مرة في العام 95 كانت تتكون من 200 واجهة مختلفة لتطوير التطبيقات الإضافية إلى الملاحق ، و اليوم وصل عدد واجهات تطوير التطبيقات في جافا إلى 1600 . و في عدة التطوير 2 ، حدد مطورو جافا لأول مرة العناصر الأساسية التي تشكل نواة جافا . سواء أكانت مستخدمة ضمن البطاقات الذكية أو أجهزة الإيوانية العملاقة , و بكلمة أخرى فقد حدد المطورون 15 مكتبة أصناف تشكل النواة الأساسية للغة جافا . و هذه المكتبات هي على التوالي (applet, awt, beans, io, lang, math, net, rmi, security, sql, accessibility, swing, COBRA) و تمثل هذه الأصناف "روح" تقنية جافا و كل ما يحتاجه المطور لبناء تطبيقات متكاملة .