Java هو الاسم العام للغة البرمجة كائنية التوجه Java ومنصة Java التي أطلقتها شركة Sun Microsystems في مايو 1995. تم تطويره بشكل مشترك من قبل جيمس جوسلينج وزملائه وتم إطلاقه رسميًا في عام 1995.
تنقسم لغة جافا إلى ثلاثة أنظمة:
في يونيو 2005، تم عقد مؤتمر JavaOne، وأصدرت SUN Java SE 6. بحلول هذا الوقت، تمت إعادة تسمية إصدارات مختلفة من Java لإزالة الرقم "2": تمت إعادة تسمية J2EE إلى Java EE، وتمت إعادة تسمية J2SE إلى Java SE، وتمت إعادة تسمية J2ME إلى Java ME.
وفي عام 2009، استحوذت شركة أوراكل على شركة صن.
في عام 2018، أعلنت مؤسسة Eclipse Foundation مفتوحة المصدر أنه سيتم إعادة تسمية JavaEE (Enterprise Edition) إلى JakartaEE (جاكرتا).
بناء جملة لغة Java قريب جدًا من لغة C ولغة C++، مما يسهل على معظم المبرمجين التعلم والاستخدام. من ناحية أخرى، تتجاهل Java ميزات C++ التي نادرًا ما تستخدم، والتي يصعب فهمها، والمربكة، مثل التحميل الزائد للمشغل، والوراثة المتعددة، والإرسال التلقائي. على وجه الخصوص، لغة جافا لا تستخدم المؤشرات، ولكن المراجع. كما أنه يوفر آلية إدارة إعادة تدوير الذاكرة تلقائيًا حتى لا يضطر المبرمجون إلى القلق بشأن إدارة الذاكرة.
توفر لغة Java العناصر الأولية مثل الفئات والواجهات والميراث. من أجل البساطة، فهي تدعم فقط الميراث الفردي بين الفئات، ولكنها تدعم الميراث المتعدد بين الواجهات، وتدعم آلية التنفيذ بين الفئات والواجهات (الكلمة الأساسية هي "التنفيذ"). تدعم لغة Java الارتباط الديناميكي بشكل كامل، بينما تستخدم لغة C++ الارتباط الديناميكي فقط للوظائف الافتراضية. باختصار، لغة جافا هي لغة برمجة كائنية التوجه خالصة.
تدعم لغة Java تطوير تطبيقات الإنترنت. ومن بين واجهات برمجة تطبيقات Java الأساسية، توجد واجهة برمجة تطبيقات الشبكة (java net)، والتي توفر مكتبات فئة لبرمجة تطبيقات الشبكة، بما في ذلك URL وURLConnection وSocket وServerSocket وما إلى ذلك. تعد آلية RMI (تنشيط الطريقة عن بعد) الخاصة بـ Java أيضًا وسيلة مهمة لتطوير التطبيقات الموزعة.
تعد آلية الكتابة القوية في Java ومعالجة الاستثناءات وجمع البيانات المهملة تلقائيًا وما إلى ذلك ضمانات مهمة لمتانة برامج Java. يعد تجاهل المؤشرات خيارًا ذكيًا لـ Java. آلية التحقق من أمان Java تجعل Java أكثر قوة.
تُستخدم Java عادةً في بيئات الشبكات، ولهذا السبب، توفر Java آلية أمان لمنع هجمات التعليمات البرمجية الضارة. بالإضافة إلى ميزات الأمان العديدة للغة Java، تمتلك Java آلية الوقاية الأمنية (classLoader) للفئات التي يتم تنزيلها عبر الشبكة، مثل تخصيص مساحات أسماء مختلفة لمنع استبدال الفئات المحلية بنفس الاسم، وفحص رمز البايت، وتوفير آلية إدارة الأمن (فئة SecurityManager) يسمح لتطبيقات Java بإعداد حراس الأمن.
يتم تجميع برامج Java (الملفات ذات اللاحقة java) في تنسيق رمز بايت محايد للهندسة المعمارية (الملفات ذات فئة اللاحقة) على نظام Java الأساسي، ويمكن بعد ذلك تشغيلها على أي نظام يقوم بتنفيذ منصة Java هذه. هذا النهج مناسب لبيئات الشبكات غير المتجانسة وتوزيع البرامج.
تأتي قابلية النقل هذه من حيادية البنية، بالإضافة إلى ذلك، تنظم Java أيضًا طول كل نوع بيانات أساسي بشكل صارم. نظام Java نفسه أيضًا قابل للنقل بدرجة كبيرة، ويتم تنفيذ مترجم Java في Java، ويتم تنفيذ بيئة تشغيل Java في ANSI C.
كما ذكرنا سابقًا، يتم تجميع برامج Java في تنسيق bytecode على نظام Java الأساسي ويمكن بعد ذلك تشغيلها على أي نظام يقوم بتنفيذ نظام Java الأساسي هذا. في وقت التشغيل، يقوم مترجم Java في نظام Java الأساسي بتفسير وتنفيذ هذه الرموز الثانوية، ويتم تحميل الفئات المطلوبة أثناء التنفيذ في بيئة التشغيل أثناء مرحلة الاتصال.
بالمقارنة مع لغات البرمجة النصية عالية المستوى المفسرة، تعد Java بالفعل عالية الأداء. في الواقع، مع تطور تقنية المترجم JIT (Just-In-Time)، أصبحت سرعة تشغيل Java تقترب أكثر فأكثر من لغة C++.
في لغة Java، يعد مؤشر الترابط كائنًا خاصًا يجب إنشاؤه بواسطة فئة Thread أو أحفاده (الأحفاد). عادةً ما تكون هناك طريقتان لإنشاء مؤشر ترابط: أولاً، استخدم المُنشئ من النوع Thread(Runnable) لتغليف كائن يقوم بتنفيذ واجهة Runnable في مؤشر ترابط؛ وثانيًا، اشتقاق فئة فرعية من فئة Thread وتجاوز طريقة التشغيل، الكائن تم إنشاؤها باستخدام هذه الفئة الفرعية وهو موضوع. تجدر الإشارة إلى أن فئة Thread قامت بتنفيذ واجهة قابلة للتشغيل، لذا فإن أي مؤشر ترابط له طريقة تشغيل خاصة به، وتحتوي طريقة التشغيل على الكود الذي سيتم تشغيله بواسطة مؤشر الترابط. يتم التحكم في نشاط الخيط من خلال مجموعة من الطرق. تدعم لغة Java التنفيذ المتزامن لسلاسل رسائل متعددة وتوفر آلية مزامنة بين سلاسل رسائل متعددة (تتم مزامنة الكلمة الأساسية).
أحد أهداف تصميم لغة Java هو التكيف مع البيئات المتغيرة ديناميكيًا. يمكن تحميل الفئات التي تتطلبها برامج Java ديناميكيًا في بيئة التشغيل، أو يمكن تحميل الفئات المطلوبة عبر الشبكة. وهذا يسهل أيضًا ترقيات البرامج. بالإضافة إلى ذلك، تتمتع الفئات في Java بتمثيل وقت التشغيل ويمكنها إجراء فحص نوع وقت التشغيل.
تحاول لغة Java التأكد من أن ذاكرة النظام أعلى من 1 جيجا. الأدوات الأخرى هي كما يلي:
بعد تثبيت الأدوات المذكورة أعلاه، يمكننا إخراج برنامج Java الأول "Hello World!"
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
في الفصل التالي سوف نقدم كيفية تكوين بيئة تطوير جافا.