ماذا يعني في جافا. لغة برمجة جافا: من أين تبدأ التعلم

16.04.2019

لغة برمجة جافا هي لغة برمجة موجهة للكائنات تم إنشاؤها بواسطة جيمس جوسلينج ومهندسين آخرين في شركة صن مايكروسيستمز. تم تطويره في عام 1991 كجزء من "المشروع الأخضر"، وتم الإعلان عنه رسميًا في 23 مايو 1995، في SunWorld، وتم إصداره في نوفمبر. تم تطوير Java في الأصل كبديل لـ C++ (على الرغم من أن مجموعة الميزات تشبه Objective C) والمعروفة باسم شجرة البلوط (على اسم الشجرة الموجودة خارج مكتب جوسلينج). اقرأ المزيد عن تاريخ جافايمكن العثور عليها في المقالة حول نظام Java الأساسي، والذي يتضمن اللغة وJava Virtual Machine وJava API. Java مملوكة لشركة Sun Microsystems؛ جافا هي علامة تجارية لشركة صن مايكروسيستمز.

كانت هناك أربعة أهداف رئيسية عند إنشاء لغة جافا:

  • لغة كائنية التوجه.
  • مستقلة عن منصة الهدف(الى حد ما).
  • يجب أن يحتوي على كائنات ومكتبات للعمل على الشبكة.
  • وهو مصمم لتنفيذ التعليمات البرمجية من مصادر بعيدة بشكل آمن.

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

منصة مستقلة

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

استخدم التطبيق الأول للغة آلة افتراضية تفسيرية لتحقيق قابلية النقل، ولا تزال العديد من التطبيقات تستخدم هذا النهج حتى اليوم. ومع ذلك، تنتج هذه التطبيقات برامج تعمل بشكل أبطأ من البرامج المجمعة بالكامل التي ينتجها مترجم C++ النموذجي ومترجمات لغة Java الأحدث، لذلك تعاني اللغة من سمعة مكتسبة لكونها "بطيئة". في التطبيقات الأحدث، يقوم Java VM بإنشاء برامج تعمل بشكل أسرع بكثير باستخدام العديد من التقنيات.

الطريقة الأولى هي ببساطة الترجمة مباشرة إلى كود الآلة، مثل المترجم التقليدي، وتخطي الخطوة الكاملة لتحويل البرنامج إلى كود ثانوي. وهذا يحقق إنتاجية أكبر، ولكن على حساب فقدان قابلية نقل البرامج وقابليتها للنقل. هناك طريقة أخرى، JIT، أو JIT، تقوم بتجميع Java bytecode في كود الجهاز أثناء تشغيل البرنامج. حتى أن الأجهزة الافتراضية الأكثر تعقيدًا استخدمت عمليات إعادة التجميع الديناميكية، حيث يمكن لـ VJM تحليل سلوك البرنامج وإعادة ترجمة الأجزاء المهمة من البرنامج بشكل انتقائي وتحسينها. تسمح هاتان التقنيتان للبرنامج بالاستفادة من سرعة كود الجهاز دون فقدان إمكانية النقل.

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

ومع ذلك، أصبحت Java المستقلة عن النظام الأساسي ناجحة جدًا لخوادم التطبيقات مثل خدمات الويب أو servlets أو Enterprise Java Beans.

تأمين تنفيذ التعليمات البرمجية عن بعد

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

وفقًا لمعظم الناس، فإن تقنية Java مناسبة تمامًا لجميع هذه الأغراض. لكن اللغة لا تخلو من عيوبها.

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

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

هناك أشخاص يعتقدون أنه بالنسبة لبعض المشاريع، فإن النهج الموجه للكائنات يجعل العمل أكثر صعوبة، وبالنسبة للآخرين يكون أسهل. هذه الشكوى ليست فريدة من نوعها للغة Java لأنها تمتد إلى لغات أخرى موجهة للكائنات.

مثال لبرنامج "hello World" في Java:

فئة عامة HelloWorld ( public static void main(String args) ( System.out.println("Hello World!"); ) )

تعليمات التحكم:
دورات
بينما (تعبير منطقي) (بيان (عبارات) ) do ( بيان (عبارات) ) بينما (تعبير منطقي)؛ for (التهيئة ؛ شرط الإنهاء ؛ زيادة expr) (البيان (البيانات))
العوامل الشرطية
إذا (تعبير منطقي) (بيان (عبارات) ) إذا (تعبير منطقي) (بيان (عبارات) ) آخر (بيان (عبارات) )
خيار
إذا (تعبير منطقي) (بيان (عبارات) ) آخر إذا (تعبير منطقي) (بيان (عبارات) ) آخر إذا (تعبير منطقي) (بيان (عبارات) ) آخر (بيان (عبارات) ) تبديل (تعبير عدد صحيح) (حالة الحالة ثابتة عدد صحيح expr: فاصل البيان (البيانات) ... الافتراضي: فاصل البيان (البيانات)
اصطياد الأخطاء
حاول (البيان (البيانات) ) قبض (نوع الاستثناء) (البيان (البيانات) ) قبض (نوع الاستثناء) (البيان (البيانات) ) أخيرًا (البيان (البيانات) )
أنواع البيانات الأساسية

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

تم إنشاء لغة Java في عام 1995، وعلى مدار 22 عامًا من وجودها، فازت بقلوب الملايين من المبرمجين. كيف فعلها؟ لماذا لم يظهر أحد خلال هذه الفترة؟ استبدال يستحق؟ لفهم ذلك، دعونا نتحدث عن ميزات لغة جافا.

عند إطلاق اللغة، وضعت شركة Sun Microsystems 5 نماذج للنجاح المحتمل:

  1. البساطة والتوجيه الموضوعي وسهولة الفهم؛
  2. الموثوقية والسلامة.
  3. قابلية النقل واستقلالية النظام الأساسي؛
  4. أداء عالي;
  5. قابلية التفسير والتدفق والديناميكية.

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

بساطة

تم توريث بناء جملة اللغة من C++. اليوم، مقارنة بـ Python أو Groove أو Go، من الصعب وصفها بأنها بسيطة، ولكن مظهرها التطوري جعل من الممكن جذب انتباه مطوري لغة C.

يبدو برنامج Hello World القياسي كما يلي:

الفراغ العام الثابت الرئيسي (وسائط السلسلة)
{
System.out.println("مرحبا بالعالم");
}

هذا النوع من البناء لا يزيد من سرعة الكتابة، لكنه سهل القراءة والفهم وإعادة الإنتاج.

مصداقية

يتم ضمان الموثوقية من خلال مبدأين:

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

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

أمان

بالإضافة إلى الحفاظ على الشكل العام للبنيات، فقدت Java رسميًا خطرين محتملين، مقارنةً بـ C++: المؤشرات والوراثة المتعددة. في الواقع، يتم الحفاظ على كلتا الوظيفتين، ولكن يتم تقديمهما في شكل مختلف: يتم استخدام القيم بدلاً من المؤشرات، وتشارك الواجهات، بدلاً من الفئات، في الميراث المتعدد. ومع ذلك، فإن هذه الميزة في برمجة جافا تقضي تقريبًا على الضرر المحتمل الناتج عن إهمال المطور.

راحة

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

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

أداء

إن خصوصية Java المرتبطة بالترجمة إلى كود ثانوي لها أيضًا تأثير إيجابي على أداء المنتجات النهائية. من حيث سرعة التنفيذ، فإن البرامج المماثلة في Java تكون أقل بمقدار 1.5-2 مرة من البرامج في C/C++، بينما تتفوق على JavaScript وRuby وPython.

النظام البيئي المتطور

على مدى 22 عاما من الحياة، اكتسبت اللغة العشرات من IDEs والأطر، ومئات المجتمعات والمنتديات، وآلاف المكتبات والمكونات الإضافية. كل هذا له تأثير مفيد على عتبة الدخول في المهنة والطلب وجودة المنتجات المنتجة باستخدام جافامنتجات.

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

لغة جافا. مقدمة.

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

من المستحيل أن نتذكر أن الإذاعة الوطنية العامة خصصت برنامجًا مدته عشر دقائق للغة برمجة. ما إذا كان هذا جيدًا أم سيئًا يعتمد على وجهة نظرك. واستثمار 100 مليون دولار في إنتاج برمجيات تم إنشاؤها باستخدام لغة برمجة معينة؟! تحدثت شركات التليفزيون CNN وCNBC ووسائل الإعلام الأخرى، وما زالت تتحدث، عن كيف يمكن للغة جافا أن تفعل ذلك.

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

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

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

لغة جافا كأداة برمجة

باعتبارها لغة برمجة، أوفت Java بوعودها الإعلانية. مما لا شك فيه أن هذا هو واحد من أفضل اللغات، في متناول المبرمجين الجادين. تمتلك Java القدرة على أن تصبح لغة برمجة رائعة، ولكن ربما فات الأوان الآن. عندما يظهر لغة جديدةالبرمجة، تحدث على الفور مشكلة غير سارةتوافقه مع البرامج التي تم إنشاؤها مسبقًا. علاوة على ذلك، حتى لو كان من الممكن إجراء تغييرات على هذه البرامج دون التدخل في نصوصها، فمن الصعب على مبدعي اللغة التي تلقى ترحيبًا حارًا من قبل الجمهور، مثل جافا، أن يقولوا صراحة: "نعم، ربما نكون قد صنعنا خطأ في تطوير الإصدار X، ولكن الإصدار Y سيكون أفضل." ونتيجة لذلك، وفي انتظار المزيد من التحسينات، يجب أن نذكر أن بنية لغة جافا لن تتغير بشكل كبير في المستقبل القريب.

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

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

لكن مكتبات الرسومات, واجهة المستخدموالوصول إليها الكائنات البعيدةهذه اللغات مختلفة تماما. في الوقت الحالي، لم تعد Microsoft تدعم لغة J++، حيث قامت بتطوير لغة جديدة، C#، والتي لها العديد من أوجه التشابه مع Java، ولكنها تستخدم جهازًا افتراضيًا مختلفًا. لا يغطي هذا الكتاب لغة J++ أو لغة C#.

فوائد لغة جافا

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

2) ميزة أخرى هي أن يشبه بناء جملة لغة Java بناء جملة لغة C++ والمبرمجين أولئك الذين يعرفون اللغات C وC++، تعلمها سهل. صحيح بالنسبة للمبرمجين الذين يتحدثون اللغة البصرية الأساسية، قد يكون بناء الجملة هذا غير مألوف.

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

3) جافا أيضًا - لغة موجهة للكائنات بالكامل، حتى أكثر من C++. جميع الكيانات في لغة جافا هي كائنات، باستثناء بعض الأنواع البدائية، مثل الأرقام. (نظرًا لأن البرمجة الموجهة للكائنات من السهل تطوير مشاريع معقدة، فقد حلت محل البرامج القديمة برمجة منظمة. إذا لم تكن على دراية بالبرمجة كائنية التوجه، فإن الفصول من 3 إلى 6 ستزودك بكل شيء معلومات ضروريةعنه.)

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

4) يتم استبعاد إمكانية تخصيص الذاكرة وتحريرها بشكل صريح.
يتم تحرير الذاكرة في Java تلقائيًا باستخدام آلية جمع البيانات المهملة. يتم ضمان المبرمج ضد الأخطاء المتعلقة بالاستخدام غير السليم للذاكرة.

5) تم تقديم المصفوفات الحقيقية وتم حظر حساب المؤشر.
الآن لا يستطيع المبرمجون من حيث المبدأ مسح البيانات من الذاكرة بسبب الاستخدام غير الصحيح للمؤشرات.

6) تم القضاء على إمكانية الخلط بين عامل التخصيص وعامل مقارنة المساواة.
الآن لا يمكنك حتى تجميع عبارة if(ntries = 3). . . (قد لا يلاحظ مبرمجو Visual Basic أي مشكلة هنا على الإطلاق، حيث أن هذا الخطأ هو مصدر معظم الارتباك في C وC++).

7) يتم استبعاد الميراث المتعدد. لقد تم استبداله بمفهوم جديد - واجهة مستعارة من لغة Objective C.
تمنح الواجهة المبرمج كل ما يمكنه الحصول عليه تقريبًا من الميراث المتعدد، مع تجنب التعقيدات التي تنشأ عند إدارة التسلسل الهرمي للفئات.

مميزات لغة جافا

بسيط
قابل للتفسير
وزعت
موثوق
آمن
آلة مستقلة
وجوه المنحى
أداء عالي
متعدد الخيوط
متحرك
مستقلة عن هندسة الكمبيوتر

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

بسيط

أردنا إنشاء نظام سهل البرمجة ولا يتطلب تدريبًا إضافيًا ويأخذ في الاعتبار ممارسات ومعايير البرمجة المعمول بها. لذلك، على الرغم من أننا اعتبرنا لغة C++ غير مناسبة لهذه الأغراض، فقد تم تصميم Java لتكون متشابهة قدر الإمكان لتسهيل الوصول إلى النظام. تفتقر Java إلى العديد من الميزات الأقل استخدامًا والغامضة والمبهمة لـ C++ والتي نعتقد أنها تضر أكثر مما تنفع.

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

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

ومع ذلك، هناك نوع ثالث من بيئة البرمجة يسمح لك بإنشاء برامج باستخدام تقنية السحب والإفلات.

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

وجوه المنحى

ببساطة، البرمجة الموجهة للكائنات هي طريقة برمجة تركز على البيانات (أي الكائنات) ووسائل الوصول إليها. لاستخدام تشبيه النجارة، يركز الحرفي الموجه بشكل أساسي على الكرسي الذي يصنعه ويهتم بشكل ثانوي فقط بالأدوات اللازمة لتصنيعه؛ وفي الوقت نفسه، لا يفكر النجار غير الموجه إلا في أدواته. الخصائص الموجهة للكائنات في Java وC++ هي نفسها بشكل أساسي.

لقد أثبت التوجه الكائني قيمته بالفعل على مدار الثلاثين عامًا الماضية، ومن المستحيل تخيل لغة برمجة حديثة بدونه. في الواقع، فإن الميزات الموجهة للكائنات في لغة Java قابلة للمقارنة مع لغة C++. والفرق الرئيسي بينهما هو آلية الميراث المتعددة، والتي تمتلكها لغة جافا القرار الأفضلوكذلك في نموذج metaclass للغة Java.

يوفر الانعكاس (الفصل 5) وتسلسل الكائنات (الفصل 12) كائنات وأدوات متينة لإنشاء واجهات مستخدم رسومية من مكونات جاهزة.

إذا لم يسبق لك البرمجة باستخدام لغة كائنية التوجه، فاقرأ الفصول من 4 إلى 6 بعناية. تقدم هذه الفصول أساسيات البرمجة الشيئية وتبين مزاياها مقارنة باللغات التقليدية الموجهة نحو الإجراءات مثل لغة C أو Basic عند تطوير المشاريع المعقدة.

وزعت

تحتوي Java على مكتبة كبيرة من البرامج لنقل البيانات استنادًا إلى TCP/IP (بروتوكول التحكم في الإرسال/بروتوكول الإنترنت)، مثل HTTP (بروتوكول نقل النص التشعبي) أو FTP (بروتوكول نقل الملفات). يمكن للتطبيقات المكتوبة بلغة Java فتح الكائنات والوصول إليها عبر الشبكة باستخدام وتعد عناوين URL (موقع الموارد الموحد) سهلة مثل شبكه محليه.

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

يتم دعم Servlets بواسطة العديد من البرامج المشهورة خوادم الويب. (ستتم تغطية الشبكات في المجلد 2.) يتم توفير الاتصال بين الكائنات الموزعة في Java من خلال آلية استدعاء الطريقة عن بعد (يتم تناولها أيضًا في المجلد 2).

موثوق

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

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

إذا كنت قد قمت بالبرمجة مسبقًا باستخدام Visual Basic أو COBOL، والتي لا تستخدم المؤشرات بشكل صريح، فقد لا تفهم سبب أهمية ذلك. مبرمجو C أقل حظًا بكثير. إنهم بحاجة إلى مؤشرات للوصول إلى السلاسل والمصفوفات والكائنات وحتى الملفات. عند البرمجة في Visual Basic، لا شيء من هذا مطلوب، ولا داعي للقلق بشأن تخصيص الذاكرة لهذه الكيانات. ومن ناحية أخرى، يصعب جدًا تنفيذ العديد من هياكل البيانات بلغة لا تحتوي على مؤشرات. بالنسبة للبنيات العادية مثل السلاسل والمصفوفات، ليست هناك حاجة للمؤشرات. تتجلى القوة الكاملة للمؤشرات فقط عندما يكون من المستحيل الاستغناء عنها، على سبيل المثال، عند الإنشاء القوائم ذات الصلة. مبرمج Java خالٍ إلى الأبد من المؤشرات السيئة والتخصيصات السيئة وتسرب الذاكرة.

آمن

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

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

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

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

تحتوي صفحة ويب الأمان الخاصة بشركة Sun على عنوان URL التالي: http://java.sun.com/sfaq/.

دعونا ندرج بعض المواقف التي يمنعها نظام أمان لغة Java.

1) تجاوز سعة المكدس لبرنامج قابل للتنفيذ، والذي كان سببه "الدودة" سيئة السمعة التي انتشرت على الإنترنت.

2) تلف مناطق الذاكرة الموجودة خارج المساحة المخصصة للعملية.

3) القراءة والكتابة ملفات محليةعند استخدام مُحمل فئة آمن، مثل متصفح الويب، الذي يرفض الوصول إلى الملفات.

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

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

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

الهندسة المعمارية مستقلة

يقوم المترجم بإنشاء ملف كائن، لا يعتمد تنسيقه على بنية الكمبيوتر - يمكن تنفيذ البرنامج المترجم على أي معالجات يتحكم فيها نظام تنفيذ برنامج Java. للقيام بذلك، يقوم مترجم لغة Java بإنشاء أوامر bytecode مستقلة عن بنية الكمبيوتر المحددة. تم تصميم الرمز الثانوي بحيث يمكن تفسيره بسهولة على أي جهاز أو ترجمته إلى رمز يعتمد على الجهاز بسرعة.

ليس فكرة جديدة. منذ أكثر من 20 عاما وفي نظام التنفيذ لغة باسكال، الذي طوره نيكلاوس ويرث، واستخدم نظام UCSD Pascal نفس التقنية. يوفر استخدام الرموز الثانوية مكاسب كبيرة في تنفيذ البرنامج (على الرغم من أن التجميع المتزامن يعوض ذلك في كثير من الحالات). لقد قام مطورو لغة Java بعمل ممتاز في تطوير مجموعة من تعليمات البايت كود التي تعمل بشكل مثالي على معظم أجهزة الكمبيوتر الحديثة، ويمكن ترجمتها بسهولة إلى تعليمات الآلة الحقيقية.

آلة مستقلة

على عكس C وC++، لا تحتوي مواصفات Java على جوانب خاصة بالتنفيذ. يتم تحديد حجم أنواع البيانات الأساسية والعمليات الحسابية عليها بدقة.

على سبيل المثال، النوع int في Java يعني دائمًا عددًا صحيحًا بطول 32 بت. في لغات C وC++، يمكن أن يعني نوع int إما عددًا صحيحًا 16 بت أو 32 بت، بالإضافة إلى عدد صحيح بحجم عشوائي، حسب اختيار مطور مترجم معين. القيد الوحيد هو الحجم اكتب كثافة العملياتلا يمكن أن يكون أصغر من حجم نوع int القصير و حجم أكبراكتب كثافة العمليات طويلة. حجم ثابت أنواع رقميةيتيح لك تجنب العديد من المشاكل المرتبطة بتشغيل البرامج أجهزة كمبيوتر مختلفة. يتم تخزين البيانات الثنائية ونقلها بتنسيق ثابت، مما يتجنب أيضًا سوء الفهم المرتبط بترتيب البايت المختلف على منصات مختلفة (تعارض "النهاية الكبيرة/النهاية الصغيرة"). يتم حفظ السلاسل بتنسيق Unicode القياسي.

تحدد المكتبات، التي تعد جزءًا من النظام، واجهة مستقلة عن الآلة. على سبيل المثال، توفر اللغة فئة مجردة Window وتطبيقاته لأنظمة التشغيل Unix وWindows وMacintosh.

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

ومع ذلك، كانت هذه مجرد البداية. في العديد من التطبيقات، يعد استقلال الآلة أكثر أهمية من تعقيد واجهة المستخدم الرسومية. هذه هي التطبيقات التي استفادت من إصدار Java 1.0. ومع ذلك، فقد تم الآن إعادة تصميم مجموعة أدوات واجهة المستخدم الرسومية (GUI) بالكامل ولم تعد تعتمد على واجهة المستخدم الموجودة على الكمبيوتر المضيف. نسخة جديدةأكثر فائدة، وفي رأينا، أكثر جاذبية للمستخدم من سابقاتها.

قابل للتفسير

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

قد يكون هذا ميزة عند تطوير التطبيقات، ولكن الاقتباس أعلاه مبالغة واضحة. على أية حال، فإن مترجم Java المضمن في JSDK (Java Software Development Kit) بطيء جدًا. (بعض المترجمين من الدرجة الثالثة، مثل تلك التي تقدمها شركة IBM، أسرع بكثير.) تعد سرعة إعادة الترجمة مجرد عامل واحد في كفاءة بيئة البرمجة. عند مقارنة سرعة بيئات برمجة Java وVisual Basic، قد تشعر بخيبة أمل.

أداء عالي

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

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

على الرغم من أن المترجمين المتزامنين ما زالوا أبطأ من المترجمين المعتمدين على الآلة، إلا أنهم على أية حال أسرع بكثير من المترجمين الفوريين، حيث يوفرون تسريعًا يصل إلى 10 أو حتى 20 ضعفًا لبعض البرامج. تتحسن هذه التقنية باستمرار وقد تصل في النهاية إلى سرعات لن يتجاوزها المترجمون التقليديون أبدًا. على سبيل المثال، يمكن للمترجم المتزامن تحديد أي جزء من التعليمات البرمجية يتم تنفيذه في كثير من الأحيان وتحسينه من أجل سرعة التنفيذ.

متعدد الخيوط

يوفر تفاعلًا أفضل وتنفيذًا للبرنامج.

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

متحرك

في العديد من النواحي، تعد لغة Java أكثر ديناميكية من لغة C أو C++. لقد تم تصميمه للتكيف بسهولة مع البيئة المتغيرة باستمرار. يمكن إضافة أساليب وكائنات جديدة بحرية إلى المكتبات دون التسبب في أي ضرر. تسهل لغة Java الحصول على معلومات حول تقدم البرنامج.

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

جافا والإنترنت

فكرة بسيط - المستخدمينقم بتنزيل Java bytecodes من الإنترنت وتنفيذها على أجهزتهم. تسمى برامج Java التي تعمل ضمن متصفحات الويب بالتطبيقات الصغيرة. لاستخدام التطبيق الصغير، تحتاج إلى متصفح ويب يدعم لغة Java ويمكنه تفسير الرموز الثانوية. الكود المصدري للغة جافا مرخص لشركة Sun، التي تصر على بقاء اللغة نفسها وبنية مكتباتها الأساسية دون تغيير. لسوء الحظ، في الواقع كل شيء ليس هكذا. إصدارات مختلفة من Netscape و متصفح الانترنتيدعم إصدارات مختلفةلغة جافا، وبعض هذه الإصدارات قديمة إلى حد كبير. يؤدي هذا الوضع المؤسف إلى خلق عقبات بشكل متزايد أمام تطوير التطبيقات الصغيرة التي تستفيد من أحدث إصدار من لغة Java. لحل هذه المشكلة، قامت شركة Sun بتطوير برنامج Java Plug-in الذي يسمح لك بإنشاء أكبر قدر ممكن البيئة الحديثةلتشغيل برامج Java المعتمدة على متصفحي Netscape وInternet Explorer.

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

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

في التين. 1.1 مبين مثال جيدصفحة ويب ديناميكية تقوم بإجراء حسابات معقدة وتستخدم برنامجًا صغيرًا لعرض الجزيئات. لفهم بنية الجزيء بشكل أفضل، يمكنك تدويره أو تكبيره باستخدام الماوس. لا يمكن تنفيذ مثل هذه التلاعبات على الأجهزة الثابتة صفحات الانترنتلكن التطبيقات الصغيرة تجعل هذا ممكنًا. (يمكن العثور على هذا التطبيق الصغير على http://jmol.sourceforge.net.)

أرز. 1.1. التطبيق الصغير جمول

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

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

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

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

مقدمة

هذا العمل مخصص لواحدة من لغات البرمجة الواعدة اليوم - لغة جافا. يمكن دون مبالغة تسمية التكنولوجيا المسماة "Java" بأنها ثورية في صناعة تطوير البرمجيات.

يمكن تنفيذ الفرز بلغات برمجة أخرى مثل PHP وC++ وغيرها. إنها أكثر ربحية في جافا. وتناقش التفاصيل أدناه. الجدة تكمن في حقيقة أن برنامج الفرز ل لغة معينةوفي هذا التفسير.

ولإنجاز المهمة، تم اقتراح خوارزمية لكتابة البرنامج. ثم تم تنفيذ هذه الخوارزمية في جافا.

وصف لغة البرمجة جافا

ميزات جافا العامة

تم اختيار لغة جافا لكتابة برنامج الفرز. Java هي لغة برمجة كائنية التوجه طورتها شركة Sun Microsystems منذ عام 1991 وتم إصدارها رسميًا في 23 مايو 1995. في البداية، كانت لغة البرمجة الجديدة تسمى أوك (جيمس جوسلينج) وتم تطويرها من أجلها مستهلكى الكترونيات، ولكن تم تغيير اسمها لاحقًا إلى Java وبدأ استخدامها لكتابة التطبيقات الصغيرة والتطبيقات وبرامج الخادم.

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

إحدى المزايا الرئيسية للغة Java هي استقلالها عن النظام الأساسي ونوع الكمبيوتر الذي يتم تنفيذ البرامج عليه. وبالتالي، يمكن تشغيل نفس الكود تحت أنظمة التشغيل Windows، Linux، FreeBSD، Solaris، أبل ماكإلخ. يصبح هذا مهمًا جدًا عند تحميل البرامج عبر شبكة عالميةالإنترنت وتستخدم على منصات مختلفة. يمكن أن تعمل لغة برمجة Java ليس فقط مع النصوص والرسومات الثابتة، ولكن أيضًا مع الكائنات الديناميكية المختلفة.

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

علاوة على ذلك، فإن Java هي لغة موجهة للكائنات بالكامل، حتى أكثر من لغة C++. جميع الكيانات في لغة جافا هي كائنات، باستثناء بعض الأنواع البدائية، مثل الأرقام.

من المهم أيضًا أن يكون تطوير البرامج الخالية من الأخطاء في Java أسهل بكثير من C++.

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

وللقيام بذلك تم عمل ما يلي:

لقد تخلص المطورون من إمكانية تخصيص الذاكرة وتحريرها بشكل صريح.

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

إدخال المصفوفات الحقيقية وحظر المؤشرات.

الآن لا يستطيع المبرمجون مسح البيانات من الذاكرة بسبب الاستخدام غير الصحيح للمؤشرات.

تم القضاء على إمكانية الخلط بين عامل التعيين وعامل مقارنة المساواة. عادةً ما تؤدي مشكلة العلامة "=" في كثير من الأحيان في C وC++ إلى أخطاء منطقية، والتي ليس من السهل اكتشافها. وخاصة في البرامج الكبيرة

يتم استبعاد الميراث المتعدد تماما. تم استبداله بمفهوم جديد - واجهة تم استعارة فكرتها من لغة Objective C.

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

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

من هو مخترع لغة البرمجة جافا؟

تم إنشاء Java في أوائل التسعينيات من قبل فريق من المبرمجين بقيادة جيمس جوسلينج لشركة Sun Microsystems. تم إنشاء Java في الأصل للتطوير في أجهزة محمولةأوه. ولكن عندما تم إصدار Java 1.0 في عام 1996، تحول التركيز الرئيسي للغة إلى الاستخدام على الإنترنت. جلبت Java مزيدًا من التفاعل مع المستخدمين من خلال السماح للمطورين بإنشاء صفحات متحركة. بمرور الوقت، أصبحت Java لغة برمجة ناجحة سواء للإنترنت أو في مجالات أخرى.

وبعد مرور 20 عامًا، لا تزال Java مذهلة لغة شعبيةمع أكثر من 6.5 مليون مطور حول العالم.

لماذا تختار جافا؟

تم إنشاء Java بناءً على عدة مبادئ أساسية:

1. سهولة الاستخدام.

أساسيات Java مأخوذة من C++. على الرغم من قوة لغة C++، إلا أن هذه اللغة لديها بناء جملة معقد إلى حد ما ولا تناسب الجميع متطلبات جافا. على مر السنين، قامت Java بتحسين أفكار C++، مما يجعلها لغة برمجة قوية وبسيطة.

2. الموثوقية.

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

3. الأمن.

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

4. استقلالية المنصة.

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

تم دمج فريق Sun Microsystems بنجاح المبادئ الرئيسية. ترجع شعبية Java إلى موثوقيتها وأمانها وسهولة استخدامها وسهولة نقلها.

من أين تبدأ في تعلم جافا؟

1. قم بتثبيت JDK

لبدء البرمجة بلغة Java، تحتاج إلى التنزيل والتثبيت تطوير جافاعدة مطور جافا، جدك). بمجرد تثبيت JDK على جهاز الكمبيوتر الخاص بك، يمكنك البدء فورًا في كتابة برنامجك الأول.

2. حدد بيئة تطوير متكاملة

IDE - بيئة التطوير المتكاملة. هناك العديد من الأدوات المختلفة المتاحة لتطوير تطبيقات Java. هدفهم هو مساعدتك في كتابة تطبيق Java. هناك العديد من بيئات تطوير Java، لكننا نوصي بـ NetBeans - المثالي للمبتدئين. يمكنك التركيز على أمرين فقط من أوامر NetBeans لتحقيق أهدافك.

3. الخطوات الأولى

حتما، البرنامج الأول لأي مبتدئ هو برنامج بسيط"Hello World"، والذي يعرض هذا الاسم ببساطة. سيوضح لك هذا البرنامج البسيط كيفية تجميع تطبيق وتشغيله في بيئة تطوير مثل NetBeans.

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

أو، إذا كنت من النوع الذي يحب الغوص مباشرة، فيمكنك أن تبدأ تدريبك بشكل أكثر طموحًا. كلما تعمقت في أعماق اللغة، كلما تعلمت أكثر. يمكن القيام بذلك عن طريق البدء فورًا في كتابة تطبيق Java.

4. كيفية اختيار أول تطبيق جافا لك

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

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

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

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

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

5. طريقة أخرى

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