جافا (لغة برمجة)

جافا هي لغة برمجة عالية المستوى ، متعددة الأغراض ، آمنة من حيث الذاكرة ، وموجهة للكائنات . تهدف إلى تمكين المبرمجين من كتابة الكود مرة واحدة وتشغيله في أي مكان (WORA)، [ 17 ] مما يعني أن كود جافا المُترجم يمكن تشغيله على جميع المنصات التي تدعم جافا دون الحاجة إلى إعادة ترجمته. [ 18 ] عادةً ما تُترجم تطبيقات جافا إلى بايت كود يمكن تشغيله على أي آلة جافا افتراضية (JVM) بغض النظر عن بنية الحاسوب الأساسية . [ 19 ] يشبه بناء جملة جافا بناء جملة لغتي C و C++ ، ولكنه يحتوي على عدد أقل من الإمكانيات منخفضة المستوى مقارنةً بهما. يوفر وقت تشغيل جافا إمكانيات ديناميكية (مثل البرمجة الانعكاسية (reflection) وتعديل الكود أثناء التشغيل) غير متوفرة عادةً في لغات البرمجة المُترجمة التقليدية.

اكتسبت لغة جافا شعبية واسعة بعد فترة وجيزة من إصدارها، وظلت لغة برمجة شائعة منذ ذلك الحين. [ 20 ] احتلت جافا المرتبة الثالثة بين لغات البرمجة الأكثر شيوعًا في عام 2022.وفقًا لموقع GitHub . [ 21 ] على الرغم من استمرار شعبيتها الواسعة، فقد شهد استخدام لغة جافا انخفاضًا تدريجيًا في السنوات الأخيرة مع ازدياد شعبية لغات أخرى تستخدم JVM . [ 22 ]

صُممت لغة جافا بواسطة جيمس جوسلينج في شركة صن مايكروسيستمز . أُصدرت في مايو 1995 كمكون أساسي لمنصة جافا الخاصة بصن. أصدرت صن مُجمّعات جافا الأصلية والمرجعية ، والآلات الافتراضية ، ومكتبات الفئات بموجب تراخيص احتكارية . في مايو 2007، وامتثالًا لمواصفات عملية مجتمع جافا ، أعادت صن ترخيص معظم تقنيات جافا الخاصة بها بموجب ترخيص GPL-2.0 فقط . تقدم أوراكل ، التي استحوذت على صن في عام 2010، آلة جافا الافتراضية الخاصة بها HotSpot . مع ذلك، فإن التنفيذ المرجعي الرسمي هو OpenJDK JVM، وهو برنامج مفتوح المصدر يستخدمه معظم المطورين، وهو JVM الافتراضي لجميع توزيعات لينكس تقريبًا .

اعتبارًا من مارس 2026 ،Java 26 هو الإصدار الحالي.

تاريخ

دوق ، تميمة جافا
جيمس جوسلينج ، مبتكر لغة جافا، في عام 2008

بدأ جيمس جوسلينج ومايك شيريدان وباتريك نوتون مشروع لغة جافا في يونيو 1991. [ 23 ] سُميت اللغة في البداية أوك (Oak) نسبةً إلى شجرة بلوط كانت تقف خارج مكتب جوسلينج. لاحقًا، عُرف المشروع باسم جرين (Green) ، ثم أُعيد تسميته أخيرًا إلى جافا (Java) ، نسبةً إلى قهوة جافا ، وهي نوع من القهوة من إندونيسيا . [ 24 ] صمم جوسلينج لغة جافا ببنية نحوية مشابهة لبنية لغة C / C++، والتي ستكون مألوفة لمبرمجي الأنظمة والتطبيقات. [ 25 ]

أصدرت شركة صن مايكروسيستمز أول تطبيق عام للغة جافا باسم Java 1.0 في عام 1996. [ 26 ] وقد وعدت هذه النسخة بوظيفة "اكتب مرة واحدة، شغّل في أي مكان " (WORA)، موفرةً بيئات تشغيل مجانية على المنصات الشائعة . وبفضل مستوى أمانها العالي وإمكانية ضبط إعدادات الأمان، سمحت بفرض قيود على الوصول إلى الشبكة والملفات. وسرعان ما أضافت متصفحات الويب الرئيسية إمكانية تشغيل تطبيقات جافا المصغّرة داخل صفحات الويب، وسرعان ما اكتسبت جافا شعبية واسعة. أعاد آرثر فان هوف كتابة مُصرّف جافا 1.0 بلغة جافا ليتوافق تمامًا مع مواصفات لغة جافا 1.0. [ 27 ] مع ظهور جافا 2 (التي صدرت مبدئيًا باسم J2SE 1.2 في ديسمبر 1998-1999 ) ، احتوت الإصدارات الجديدة على تكوينات متعددة مصممة لأنواع مختلفة من المنصات. تضمنت J2EE تقنيات وواجهات برمجة تطبيقات لتطبيقات المؤسسات التي تعمل عادةً في بيئات الخوادم، بينما تميزت J2ME بواجهات برمجة تطبيقات مُحسّنة لتطبيقات الأجهزة المحمولة. وتمت إعادة تسمية إصدار سطح المكتب إلى J2SE. في عام 2006، ولأغراض التسويق، أعادت شركة صن تسمية إصدارات J2 الجديدة إلى Java EE و Java ME و Java SE على التوالي. 

في عام ١٩٩٧، تواصلت شركة صن مايكروسيستمز مع هيئة المعايير ISO/IEC JTC 1 ، ولاحقًا مع منظمة Ecma الدولية، لإضفاء الطابع الرسمي على لغة جافا، لكنها سرعان ما انسحبت من العملية. [ ٢٨ ] [ ٢٩ ] [ ٣٠ ] ولا تزال جافا معيارًا فعليًا ، يُدار من خلال عملية مجتمع جافا . [ ٣١ ] في وقت من الأوقات، أتاحت صن معظم تطبيقات جافا الخاصة بها مجانًا، على الرغم من كونها برامج احتكارية . وحققت صن إيرادات من جافا من خلال بيع تراخيص منتجات متخصصة مثل نظام جافا للمؤسسات.

في 13 نوفمبر 2006، أصدرت شركة صن جزءًا كبيرًا من آلة جافا الافتراضية (JVM) كبرمجيات حرة ومفتوحة المصدر (FOSS)، بموجب شروط رخصة GPL-2.0 فقط . وفي 8 مايو 2007، أكملت صن العملية، فأتاحت جميع الشيفرة الأساسية لآلة جافا الافتراضية (JVM) بموجب شروط توزيع البرمجيات الحرة /مفتوحة المصدر، باستثناء جزء صغير من الشيفرة التي لم تكن صن تمتلك حقوق نشرها. [ 32 ]

صرح نائب رئيس شركة صن، ريتش غرين، بأن دور صن الأمثل فيما يتعلق بلغة جافا هو الترويج لها . [ 33 ] بعد استحواذ شركة أوراكل على شركة صن مايكروسيستمز في الفترة 2009-2010، وصفت أوراكل نفسها بأنها الراعي لتقنية جافا، ملتزمةً التزامًا راسخًا بتعزيز مجتمع قائم على المشاركة والشفافية. [ 34 ] لم يمنع هذا أوراكل من رفع دعوى قضائية ضد جوجل بعد ذلك بفترة وجيزة لاستخدامها جافا داخل حزمة تطوير البرامج لنظام أندرويد (انظر قسم أندرويد ).

في 2 أبريل 2010، استقال جيمس جوسلينج من شركة أوراكل . [ 35 ]

في يناير 2016، أعلنت شركة أوراكل أن بيئات تشغيل جافا المستندة إلى JDK 9 ستتوقف عن دعم إضافة المتصفح. [ 36 ]

يعمل برنامج جافا على معظم الأجهزة بدءًا من أجهزة الكمبيوتر المحمولة وحتى مراكز البيانات ، ومن أجهزة ألعاب الفيديو وحتى أجهزة الكمبيوتر العملاقة العلمية . [ 37 ]

توصي شركة أوراكل (وغيرها) بشدة بإزالة الإصدارات القديمة وغير المدعومة من جافا، وذلك بسبب المشكلات الأمنية التي لم يتم حلها في الإصدارات القديمة. [ 38 ]

مبادئ

كانت هناك خمسة أهداف رئيسية في إنشاء لغة جافا: [ 18 ]

  1. يجب أن يكون بسيطاً، وموجهاً نحو الكائنات ، ومألوفاً.
  2. يجب أن يكون قويًا وآمنًا.
  3. يجب أن يكون التصميم محايدًا من الناحية المعمارية وقابلًا للنقل.
  4. يجب أن يتم تنفيذه بأداء عالٍ.
  5. يجب أن يكون قابلاً للتفسير ، ومتشابكاً ، وديناميكياً .

الإصدارات

اعتبارًا من يونيو 2026 [ 39 ] يتم دعم إصدارات Java 8 و11 و17 و21 و25 كإصدارات دعم طويل الأمد (LTS).

أصدرت أوراكل آخر تحديث عام مجاني لإصدار Java 8 LTS القديم في يناير 2019 للاستخدام التجاري، مع أنها ستستمر في دعم Java 8 بتحديثات عامة للاستخدام الشخصي إلى أجل غير مسمى. ويواصل موردون آخرون، مثل Adoptium ، تقديم إصدارات مجانية من OpenJDK ذات الدعم طويل الأمد (LTS). وقد تتضمن هذه الإصدارات تصحيحات أمنية إضافية وإصلاحات للأخطاء. [ 40 ] 

الإصدارات الرئيسية من جافا، بالإضافة إلى تواريخ إصدارها:

إصدارتاريخ
JDK بيتا1995
JDK 1.023 يناير 1996 [ 41 ]
JDK 1.119 فبراير 1997
J2SE 1.28 ديسمبر 1998
J2SE 1.38 مايو 2000
J2SE 1.46 فبراير 2002
J2SE 5.030 سبتمبر 2004
جافا إس إي 611 ديسمبر 2006
جافا إس إي 728 يوليو 2011
Java SE 8 (LTS)18 مارس 2014
جافا إس إي 921 سبتمبر 2017
جافا إس إي 1020 مارس 2018
Java SE 11 (LTS)25 سبتمبر 2018 [ 42 ]
جافا إس إي 1219 مارس 2019
جافا إس إي 1317 سبتمبر 2019
جافا إس إي 1417 مارس 2020
جافا إس إي 1515 سبتمبر 2020 [ 43 ]
جافا إس إي 1616 مارس 2021
Java SE 17 (LTS)14 سبتمبر 2021
جافا إس إي 1822 مارس 2022
جافا إس إي 1920 سبتمبر 2022
جافا إس إي 2021 مارس 2023
Java SE 21 (LTS)19 سبتمبر 2023 [ 44 ]
جافا إس إي 2219 مارس 2024
جافا إس إي 2317 سبتمبر 2024
جافا إس إي 2418 مارس 2025 [ 45 ]
Java SE 25 (LTS)16 سبتمبر 2025 [ 46 ]
جافا إس إي 2617 مارس 2026 [ 47 ]

الطبعات

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

تُنظَّم الفئات في واجهات برمجة تطبيقات جافا في مجموعات منفصلة تُسمى حزمًا . تحتوي كل حزمة على مجموعة من الواجهات والفئات والحزم الفرعية والاستثناءات ذات الصلة .

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

نظام التنفيذ

جافا JVM والرمز البايتي

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

توفر المكتبات القياسية طريقة عامة للوصول إلى الميزات الخاصة بالمضيف مثل الرسومات والترابط والشبكات .

يُسهّل استخدام البايت كود العالمي عملية النقل. مع ذلك، فإنّ عبء ترجمة البايت كود إلى تعليمات الآلة يجعل البرامج المُفسَّرة تعمل في أغلب الأحيان ببطءٍ أكبر من البرامج التنفيذية الأصلية . وقد طُرحت مُجمِّعات JIT (التجميع الفوري) التي تُترجم البايت كود إلى لغة الآلة أثناء التشغيل منذ المراحل الأولى. في الواقع، يُعد مُجمِّع Hotspot في جافا مُجمِّعين في مُجمِّع واحد، حيث يسمح GraalVM ( المُضمَّن في جافا 11 على سبيل المثال، والذي أُزيل بدءًا من جافا 16) بالتجميع المُتدرِّج . [ 52 ] جافا نفسها مُستقلة عن المنصة، ويتم تكييفها مع المنصة المُحدَّدة التي ستعمل عليها بواسطة آلة جافا الافتراضية (JVM)، التي تُترجم بايت كود JVM إلى لغة الآلة الخاصة بالمنصة. [ 53 ]

أداء

تُعرف البرامج المكتوبة بلغة جافا بأنها أبطأ وتستهلك ذاكرة أكبر من تلك المكتوبة بلغة سي++ . [ 54 ] [ 55 ] ومع ذلك، تحسّنت سرعة تنفيذ برامج جافا بشكل ملحوظ مع إدخال الترجمة الفورية في عامي 1997/1998 لجافا  1.1 ، [ 56 ] وإضافة ميزات لغوية تدعم تحليلًا أفضل للتعليمات البرمجية (مثل الفئات الداخلية، وفئة StringBuilder، والتأكيدات الاختيارية، وما إلى ذلك)، وتحسينات في آلة جافا الافتراضية، مثل اعتماد HotSpot كآلة جافا الافتراضية لشركة Sun في عام 2000. مع جافا  1.5، تحسّن الأداء بإضافة الحزمة java.util.concurrent، بما في ذلك تطبيقات ConcurrentMaps غير المُقفلة ومجموعات أخرى متعددة النوى، وتحسّن أكثر مع جافا 1.6. 

غير JVM

توفر بعض المنصات دعمًا مباشرًا للأجهزة للغة جافا؛ فهناك وحدات تحكم دقيقة يمكنها تشغيل بايت كود JVM في الأجهزة بدلاً من آلة جافا الافتراضية البرمجية، [ 57 ] ويمكن أن تحتوي بعض المعالجات القائمة على ARM على دعم للأجهزة لتنفيذ بايت كود JVM من خلال خيار Jazelle الخاص بها ، على الرغم من أن الدعم قد تم إسقاطه في الغالب في التطبيقات الحالية لـ ARM.

إدارة الذاكرة التلقائية

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

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

قد تحدث عملية جمع البيانات المهملة في أي وقت. من الناحية المثالية، تحدث عندما يكون البرنامج في وضع الخمول. ومن المؤكد أنها ستُفعّل إذا لم تكن هناك ذاكرة حرة كافية في الكومة لتخصيص كائن جديد؛ وهذا قد يتسبب في توقف البرنامج مؤقتًا. لا يمكن إدارة الذاكرة بشكل صريح في جافا، ولكن من الممكن جعل آلة جافا الافتراضية (JVM) تقوم بجمع البيانات المهملة يدويًا [ 61 ] .

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

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

تحتوي لغة جافا على أنواع متعددة من جامعات البيانات المهملة. منذ جافا 9، يستخدم HotSpot جامع البيانات المهملة Garbage First Garbage Collector (G1GC) كجامع افتراضي. [ 63 ] ومع ذلك، توجد أيضًا عدة جامعات بيانات مهملة أخرى يمكن استخدامها لإدارة الذاكرة، مثل جامع البيانات المهملة Z Garbage Collector (ZGC) الذي تم تقديمه في جافا 11، وShenandoah GC الذي تم تقديمه في جافا 12 ولكنه غير متوفر في إصدارات OpenJDK التي تنتجها أوراكل. يتوفر Shenandoah بدلاً من ذلك في إصدارات OpenJDK من جهات خارجية، مثل Eclipse Temurin . بالنسبة لمعظم تطبيقات جافا، يُعد G1GC كافيًا. في الإصدارات السابقة من جافا، مثل جافا 8، كان يُستخدم Parallel Garbage Collector كجامع بيانات مهملة افتراضي.

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

بناء الجملة

تم إنشاء مخطط التبعية هذا لفئات Java Core باستخدام jdeps و Gephi .

تأثرت بنية لغة جافا بشكل كبير بلغتي C++ و C. على عكس C++، التي تجمع بين بنية البرمجة الهيكلية والعامة والموجهة للكائنات، فقد بُنيت جافا كلغة موجهة للكائنات بشكل شبه حصري. [ 18 ] يُكتب كل الكود داخل فئات، وكل عنصر بيانات هو كائن، باستثناء أنواع البيانات الأولية (مثل الأعداد الصحيحة، والأعداد العشرية، والقيم المنطقية ، والأحرف)، والتي لا تُعتبر كائنات لأسباب تتعلق بالأداء.

على عكس لغة C++، لا تدعم لغة Java تحميل المعاملات الزائد [ 64 ] أو الوراثة المتعددة للفئات، على الرغم من دعم الوراثة المتعددة للواجهات . [ 65 ]

تستخدم لغة جافا التعليقات بطريقة مشابهة لتلك المستخدمة في لغة C++. توجد ثلاثة أنماط مختلفة للتعليقات: نمط السطر الواحد الذي يُشار إليه بشرطتين مائلتين ( //)، ونمط الأسطر المتعددة الذي يُفتح بـ /*ويُغلق بـ */، ونمط تعليقات Javadoc الذي يُفتح بـ /**ويُغلق بـ */. يُمكّن نمط تعليقات Javadoc المستخدم من تشغيل ملف Javadoc التنفيذي لإنشاء توثيق للبرنامج، ويمكن لبعض بيئات التطوير المتكاملة (IDEs) مثل Eclipse قراءته ، مما يسمح للمطورين بالوصول إلى التوثيق داخل بيئة التطوير.

مرحبا بالعالم

فيما يلي مثال على برنامج "Hello, World!" باستخدام صيغة جافا التقليدية:

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

قدمت Java 25 صيغة مبسطة للفئة الرئيسية والطريقة الرئيسية، مما يتيح للمستخدمين كتابة برامج Java صغيرة بإيجاز: [ 66 ] [ 67 ]

void main () {IO.println ( " Hello World!" ) ;}

صفوف خاصة

تطبيق صغير

كانت تطبيقات جافا الصغيرة عبارة عن برامج مضمنة في تطبيقات أخرى، وخاصة في صفحات الويب التي تُعرض في متصفحات الويب. تم إيقاف واجهة برمجة تطبيقات تطبيقات جافا الصغيرة مع إصدار جافا  9 في عام 2017. [ 68 ] [ 69 ]

سيرفلت

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

تم استبدال واجهة برمجة تطبيقات Java servlet إلى حد ما (ولكن لا تزال تستخدم في الخلفية) بتقنيتين قياسيتين من Java لخدمات الويب:

تستخدم التطبيقات النموذجية لهذه الواجهات البرمجية على خوادم التطبيقات أو حاويات Servlet برنامج servlet قياسيًا للتعامل مع جميع التفاعلات مع طلبات واستجابات HTTP التي تفوض إلى أساليب خدمة الويب لمنطق الأعمال الفعلي.

صفحات خادم جافا

صفحات جافا سيرفر ( JSP ) هي مكونات جافا إي إي (Java EE) من جانب الخادم، تُنشئ استجابات، عادةً صفحات HTML ، لطلبات HTTP من العملاء . تُضمّن صفحات JSP كود جافا في صفحة HTML باستخدام المحددات<% الخاصة `<html> ` و`<html> %>`. تُجمّع صفحة JSP إلى تطبيق جافا سيرفلت (Servlet) ، وهو تطبيق جافا مستقل بذاته، عند الوصول إليها لأول مرة. بعد ذلك، يُنشئ تطبيق السيرفلت المُنشأ الاستجابة. [ 70 ]

تطبيق سوينغ

Swing هي مكتبة واجهة مستخدم رسومية لمنصة Java SE. تتيح Swing إمكانية تحديد مظهر مختلف من خلال نظام المظهر القابل للتخصيص . توفر شركة Sun نسخًا مشابهة لـ Windows و GTK+ و Motif. كما توفر Apple مظهر Aqua لنظام macOS . في حين اعتُبرت التطبيقات السابقة لهذه المظاهر غير كافية، تعالج Swing في Java SE 6 هذه المشكلة باستخدام إجراءات رسم عناصر واجهة المستخدم الرسومية الأصلية للمنصات الأساسية. [ 71 ]

تطبيق JavaFX

JavaFX هي منصة برمجية لإنشاء تطبيقات سطح المكتب وتطبيقات الويب الغنية التي تعمل على مجموعة واسعة من الأجهزة. تهدف JavaFX إلى استبدال Swing كمكتبة واجهة المستخدم الرسومية (GUI) القياسية لـ Java SE ، ولكن منذ JDK 11، لم تعد JavaFX جزءًا من JDK الأساسي، بل أصبحت متاحة كوحدة نمطية منفصلة. [ 72 ] تدعم JavaFX أجهزة الكمبيوتر المكتبية ومتصفحات الويب على أنظمة Microsoft Windows و Linux و macOS . لا تدعم JavaFX مظهر وتجربة نظام التشغيل الأصلي. [ 73 ]

الأدوية الجنيسة

في عام ٢٠٠٤، أُضيفت الأنواع العامة إلى لغة جافا كجزء من J2SE 5.0. قبل إدخال الأنواع العامة، كان يجب أن يكون لكل تعريف متغير نوع محدد. بالنسبة لفئات الحاويات، على سبيل المثال، تُشكل هذه مشكلة لأنه لا توجد طريقة سهلة لإنشاء حاوية تقبل أنواعًا محددة فقط من الكائنات. إما أن تعمل الحاوية على جميع الأنواع الفرعية لفئة أو واجهة، Objectأو يجب إنشاء فئة حاوية مختلفة لكل فئة مُضمنة. تسمح الأنواع العامة بالتحقق من النوع في وقت الترجمة دون الحاجة إلى إنشاء العديد من فئات الحاويات، التي تحتوي كل منها على رمز متطابق تقريبًا. بالإضافة إلى تمكين كتابة رمز أكثر كفاءة، يتم منع حدوث بعض استثناءات وقت التشغيل، عن طريق إصدار أخطاء وقت الترجمة. إذا منعت جافا جميع أخطاء النوع في وقت التشغيل ClassCastException، فستكون آمنة من حيث النوع .

في عام 2016، ثبت عدم سلامة نظام أنواع جافا ، إذ يُمكن استخدام الأنواع العامة لإنشاء فئات وأساليب تسمح بتعيين نسخة من فئة ما لمتغير من فئة أخرى غير مرتبطة بها. يقبل المُصرّف هذا النوع من التعليمات البرمجية، لكنه يفشل أثناء التشغيل بسبب استثناء تحويل الفئة. [ 74 ]

نقد

تشمل الانتقادات الموجهة إلى جافا تنفيذ الأنواع العامة [ 75 ] ، والسرعة [ 54 ] ، ومعالجة الأعداد غير الموقعة [ 76 وتنفيذ العمليات الحسابية ذات الفاصلة العائمة [ 77 ] ، وتاريخ الثغرات الأمنية في تطبيق آلة جافا الافتراضية الأساسي HotSpot [ 78 ] . وقد انتقد المطورون تعقيد وكثرة التعليمات البرمجية في واجهة برمجة تطبيقات استمرارية جافا (JPA)، وهي جزء قياسي من Java EE. وقد أدى ذلك إلى زيادة اعتماد تجريدات عالية المستوى مثل Spring Data JPA، التي تهدف إلى تبسيط عمليات قواعد البيانات وتقليل التعليمات البرمجية المتكررة. ويشير الانتشار المتزايد لهذه الأطر إلى وجود قيود على سهولة استخدام تطبيق JPA القياسي في تطوير جافا الحديث.

مكتبات الفئات

مكتبة فئات جافا هي المكتبة القياسية ، التي طُوّرت لدعم تطوير التطبيقات بلغة جافا. وتُشرف عليها شركة أوراكل بالتعاون مع جهات أخرى من خلال برنامج عملية مجتمع جافا . [ 79 ] يمكن للشركات أو الأفراد المشاركين في هذه العملية التأثير على تصميم وتطوير واجهات برمجة التطبيقات (APIs). وقد أثارت هذه العملية جدلاً واسعاً خلال العقد الثاني من الألفية الثانية. [ 80 ] تتضمن مكتبة الفئات ميزات مثل:

الوثائق

Javadoc هو نظام توثيق شامل، أنشأته شركة Sun Microsystems . يوفر للمطورين نظامًا منظمًا لتوثيق أكوادهم. تبدأ تعليقات Javadoc بعلامة نجمة إضافية، أي أن الفواصل هي /**و */، بينما تُفصل التعليقات العادية متعددة الأسطر في Java بعلامتي /*و */، وتبدأ التعليقات أحادية السطر بـ //. [ 88 ]

التطبيقات

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

تُقدَّم حزمة أوراكل في توزيعتين مختلفتين: بيئة تشغيل جافا (JRE) التي تحتوي على أجزاء منصة جافا SE اللازمة لتشغيل برامج جافا، وهي مُخصَّصة للمستخدمين النهائيين، ومجموعة تطوير جافا (JDK) المُخصَّصة لمطوري البرامج، وتتضمن أدوات تطوير مثل مُصرِّف جافا ، وجافادوك ، وجار ، ومُصحِّح الأخطاء . كما أصدرت أوراكل أيضًا GraalVM ، وهو مُصرِّف ومُفسِّر جافا ديناميكي عالي الأداء.

OpenJDK هو تطبيق آخر لـ Java SE مرخص بموجب رخصة جنو العمومية (GPL). بدأ تطويره عندما بدأت شركة Sun بنشر شفرة مصدر Java بموجب رخصة GPL. ومنذ Java SE 7، أصبح OpenJDK التطبيق المرجعي الرسمي لـ Java.

يهدف جافا إلى جعل جميع تطبيقاتها متوافقة. تاريخيًا، اشترطت شركة صن في ترخيصها لاستخدام علامة جافا التجارية أن تكون جميع التطبيقات متوافقة . وقد نتج عن ذلك نزاع قانوني مع مايكروسوفت بعد أن ادعت صن أن تطبيق مايكروسوفت لا يدعم استدعاء الأساليب عن بُعد (RMI) أو واجهة جافا الأصلية (JNI)، وأنه أضاف ميزات خاصة بالمنصة. رفعت صن دعوى قضائية عام 1997، وفي عام 2001، حصلت على تسوية بقيمة 20  مليون دولار أمريكي، بالإضافة إلى أمر قضائي يُلزم صن بتنفيذ شروط الترخيص. [ 89 ] ونتيجة لذلك، توقفت مايكروسوفت عن تضمين جافا مع نظام ويندوز .

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

الاستخدام خارج منصة جافا

تتطلب لغة برمجة جافا وجود منصة برمجية حتى يتم تنفيذ البرامج المترجمة.

توفر شركة أوراكل منصة جافا لاستخدامها مع جافا. أما حزمة تطوير البرامج لنظام أندرويد (Android SDK) فهي منصة برمجية بديلة، تُستخدم بشكل أساسي لتطوير تطبيقات أندرويد بنظام واجهة المستخدم الرسومية الخاص بها.

أندرويد

تُعدّ لغة جافا ركيزة أساسية في نظام أندرويد ، وهو نظام تشغيل مفتوح المصدر للأجهزة المحمولة . على الرغم من أن أندرويد، المبني على نواة لينكس ، مكتوبٌ بلغة سي في الغالب، إلا أن حزمة تطوير البرامج (SDK) الخاصة بأندرويد تستخدم لغة جافا كأساس لتطبيقات أندرويد، لكنها لا تستخدم أيًا من واجهات المستخدم الرسومية القياسية، أو بيئة التشغيل، أو بيئة التشغيل، أو غيرها من معايير جافا المُعتمدة. [ 90 ] لغة البايت كود التي تدعمها حزمة تطوير البرامج (SDK) الخاصة بأندرويد غير متوافقة مع بايت كود JVM، وتعمل على آلة افتراضية خاصة بها، مُحسّنة للأجهزة ذات الذاكرة المحدودة مثل الهواتف الذكية وأجهزة الكمبيوتر اللوحية . اعتمادًا على إصدار أندرويد، يتم تفسير البايت كود إما بواسطة آلة دالفيك الافتراضية أو يتم تجميعه إلى كود أصلي بواسطة بيئة تشغيل أندرويد .

لا يوفر نظام أندرويد مكتبة Java SE القياسية كاملةً، مع أن حزمة تطوير البرامج (SDK) الخاصة به تتضمن تطبيقًا مستقلًا لمجموعة كبيرة منها. وهو يدعم Java  6 وبعض  ميزات Java 7، ويقدم تطبيقًا متوافقًا مع المكتبة القياسية ( Apache Harmony ).

الجدل

أدى استخدام تقنية جافا في نظام أندرويد إلى نزاع قانوني بين أوراكل وجوجل. في 7 مايو/أيار 2012، قضت هيئة محلفين في سان فرانسيسكو بأنه إذا كان من الممكن حماية واجهات برمجة التطبيقات (APIs) بحقوق النشر، فإن جوجل تكون قد انتهكت حقوق أوراكل باستخدام جافا في أجهزة أندرويد. [ 91 ] وفي 31 مايو/أيار 2012، أصدر قاضي المحكمة الجزئية ويليام ألسوب حكمًا يقضي بعدم جواز حماية واجهات برمجة التطبيقات بحقوق النشر، [ 92 ] إلا أن محكمة الاستئناف الأمريكية للدائرة الفيدرالية نقضت هذا الحكم في مايو/أيار 2014. [ 93 ] وفي 26 مايو/أيار 2016، أصدرت المحكمة الجزئية حكمًا لصالح جوجل، معتبرةً أن انتهاك حقوق النشر لواجهة برمجة تطبيقات جافا في أندرويد يُعد استخدامًا عادلًا. [ 94 ] وفي مارس/آذار 2018، نقضت محكمة الاستئناف هذا الحكم، وأحالت القضية إلى المحكمة الفيدرالية في سان فرانسيسكو لتحديد التعويضات. [ 95 ] قدمت جوجل التماسًا إلى المحكمة العليا للولايات المتحدة في يناير 2019 للطعن في الحكمين اللذين أصدرتهما محكمة الاستئناف لصالح أوراكل. [ 96 ] في 5 أبريل 2021، قضت المحكمة بأغلبية 6 أصوات مقابل صوتين لصالح جوجل، بأن استخدامها لواجهات برمجة تطبيقات جافا يُعد استخدامًا عادلًا . ومع ذلك، رفضت المحكمة البت في مسألة حقوق التأليف والنشر لواجهات برمجة التطبيقات، واختارت بدلًا من ذلك تحديد حكمها من خلال اعتبار واجهة برمجة تطبيقات جافا قابلة لحقوق التأليف والنشر "لغرض النقاش فقط". [ 97 ]

انظر أيضاً

مراجع

  1. بينستوك، أندرو (20 مايو 2015). "20 عامًا من الابتكار في جافا" . فوربس . مؤرشف من الأصل في 14 مارس 2016. تم الاطلاع عليه في 18 مارس 2016 .
  2. "JDK 26" .
  3. ١ ٢ ٣ ٤ باربرا ليسكوف مع جون جوتاج (٢٠٠٠). تطوير البرامج بلغة جافا - التجريد، والمواصفات، والتصميم الموجه للكائنات . الولايات المتحدة الأمريكية، أديسون ويسلي. ISBN 978-0-201-65768-5.
  4. تشودري، هاري هـ. (28 يوليو 2014). "اجتياز مقابلة برمجة جافا :: أكثر من 2000 سؤال وجواب في مقابلات جافا" . مؤرشف من الأصل في 29 سبتمبر 2023. تم الاطلاع عليه في 29 مايو 2016 . 
  5. أضافت Java 5.0 العديد من ميزات اللغة الجديدة ( حلقة for المحسنة ، والتحويل التلقائي ، والوسائط المتغيرة ، والتعليقات التوضيحية )، بعد أن تم تقديمها في لغة C# المماثلة (والمنافسة).أُرشف بتاريخ 19 مارس 2011 في أرشيف الإنترنت (Wayback Machine) .أُرشف بتاريخ 7 يناير 2006 في أرشيف الإنترنت (Wayback Machine) .
  6. جوسلينج، جيمس؛ ماكجيلتون، هنري (مايو 1996). "بيئة لغة جافا" . مؤرشف من الأصل في 6 مايو 2014. تم الاطلاع عليه في 6 مايو 2014 .
  7. جوسلينج، جيمس؛ جوي، بيل؛ ستيل، جاي؛ براخا، جلعاد. "مواصفات لغة جافا، الطبعة الثانية" . مؤرشف من الأصل في 5 أغسطس 2011. تم الاطلاع عليه في 8 فبراير 2008 .
  8. "دليل لغات البرمجة: Modula-3" . Computerworld. مؤرشف من الأصل في 5 يناير 2009. تم الاطلاع عليه في 9 يونيو 2010 .
  9. صرّح نيكلاوس ويرث في مناسبات عامة عديدة، منها محاضرة ألقاها في متحف البوليتكنيك بموسكو في سبتمبر/أيلول 2005 (توجد عدة روايات مباشرة مستقلة باللغة الروسية، منها رواية مصحوبة بتسجيل صوتي: فيليبوفا، إيلينا (22 سبتمبر/أيلول 2005). "محاضرة نيكلاوس ويرث في متحف البوليتكنيك بموسكو" . مؤرشف من الأصل في 1 ديسمبر/كانون الأول 2020. تم الاطلاع عليه في 20 نوفمبر/تشرين الثاني 2011 ).) أن فريق تصميم Sun Java قد حصل على ترخيص مصادر مترجم Oberon قبل عدة سنوات من إصدار Java وقام بفحصها: التماسك (النسبي)، وسلامة النوع، وجمع القمامة، وعدم وجود وراثة متعددة للفئات - كل هذه الميزات الرئيسية للتصميم العام مشتركة بين Java و Oberon. 
  10. يشير باتريك نوتون إلى لغة Objective-C باعتبارها مؤثرة بقوة على تصميم لغة برمجة Java، ويذكر أن المشتقات المباشرة البارزة تشمل واجهات Java (المشتقة من بروتوكول Objective-C ) وفئات التغليف الأولية.أُرشف بتاريخ 13 يوليو 2011 في أرشيف الإنترنت (Wayback Machine) .
  11. بحث TechMetrix (1999). "تاريخ جافا" (ملف PDF) . تقرير خوادم تطبيقات جافا . مؤرشف من الأصل (ملف PDF) في 29 ديسمبر 2010. استمر المشروع تحت اسم green ، واستندت اللغة إلى نموذج قديم من لغة باسكال UCSD ، مما يتيح إمكانية توليد كود تفسيري.
  12. "حوار مع جيمس جوسلينج" . مجلة ACM Queue . المجلد 2، العدد 5. رابطة آلات الحوسبة . 31 أغسطس 2004. مؤرشف من الأصل في 16 يوليو 2015. تم الاطلاع عليه في 9 يونيو 2010 .  
  13. فريق لغة جافا. حول "المندوبين" من مايكروسوفت (ورقة بيضاء). جافا سوفت، صن مايكروسيستمز. مؤرشف من الأصل في 27 يونيو 2012. في صيف عام 1996، كانت صن تصمم النموذج الأولي لما يُعرف الآن بنموذج الأحداث في AWT وبنية مكونات JavaBeans. ساهمت بورلاند بشكل كبير في هذه العملية. لقد درسنا لغة دلفي أوبجكت باسكال بعناية فائقة، وقمنا ببناء نموذج أولي عملي لمراجع الأساليب المرتبطة لفهم تفاعلها مع لغة برمجة جافا وواجهات برمجة التطبيقات الخاصة بها.
  14. "مواصفات الكنيسة (شكر وتقدير)" (ملف PDF) . شركة كراي. 1 أكتوبر 2015. مؤرشف (ملف PDF) من الأصل في 5 فبراير 2016. تم الاطلاع عليه في 14 يناير 2016 .
  15. "مقدمة توثيق غامباس" . موقع غامباس الإلكتروني. مؤرشف من الأصل بتاريخ 9 أكتوبر 2017. تم الاطلاع عليه بتاريخ 9 أكتوبر 2017 .
  16. "أسئلة وأجوبة فيسبوك: اختراق يُدخل الكتابة الثابتة إلى عالم PHP" . إنفوورلد . 26 مارس 2014. مؤرشف من الأصل في 13 فبراير 2015. تم الاطلاع عليه في 11 يناير 2015 .
  17. "اكتب مرة واحدة، وشغّل في أي مكان؟" . مجلة الكمبيوتر الأسبوعية . 2 مايو 2002. مؤرشف من الأصل في 13 أغسطس 2021. تم الاسترجاع في 27 يوليو 2009 .
  18. 1 2 3 "1.2 أهداف تصميم لغة برمجة جافا" . أوراكل. 1 يناير 1999. مؤرشف من الأصل في 23 يناير 2013. تم الاطلاع عليه في 14 يناير 2013 .
  19. https://arxiv.org/pdf/1908.11685 لغة برمجة جافا
  20. ميلانسون، مايك (9 أغسطس 2022). "لا تسمّوها عودة: لماذا لا تزال جافا هي البطلة؟" . جيت هاب . مؤرشف من الأصل في 25 أغسطس 2023. تم الاطلاع عليه في 15 أكتوبر 2023 .
  21. «أفضل لغات البرمجة» . حالة أوكتوفيرس . جيت هاب . مؤرشف من الأصل في 2 أغسطس 2023. تم الاطلاع عليه في 15 أكتوبر 2023 .
  22. ماكميلان، روبرت (1 أغسطس 2013). "هل تفقد جافا بريقها؟" . مجلة وايرد . مؤرشف من الأصل في 15 فبراير 2017. تم الاطلاع عليه في 15 أكتوبر 2023 .
  23. بايوس، جون (حوالي 1998). "تقنية جافا: السنوات الأولى" . شبكة مطوري صن . صن مايكروسيستمز . مؤرشف من الأصل في 20 أبريل 2005. تم الاطلاع عليه في 22 أبريل 2005 .
  24. مورفي، كيرون (4 أكتوبر 1996). "لماذا قرروا تسميتها جافا؟" . جافا وورلد . مؤرشف من الأصل في 13 يوليو 2020. تم الاطلاع عليه في 13 يوليو 2020 .
  25. كابوتز، هاينز؛ ذات مرة على شجرة بلوط. مؤرشف في 13 أبريل 2007، في أرشيف الإنترنت . أرتيما. تم الاسترجاع في 29 أبريل 2007.
  26. "جافا سوفت تُصدر جافا 1.0" . مؤرشف من الأصل في 10 مارس 2007. تم الاطلاع عليه في 13 مايو 2018 .
  27. البرمجة الكائنية باستخدام جافا: الأساسيات والتطبيقات . دار نشر تاتا ماكجرو هيل للتعليم. ص 34. 
  28. "مجموعة دراسة جافا - JSG" . open-std.org . مؤرشف من الأصل في 25 أغسطس 2006. تم الاطلاع عليه في 2 أغسطس 2006 .
  29. "لماذا لم يتم توحيد لغة جافا مرتين" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 13 يناير 2014. تم الاطلاع عليه بتاريخ 3 يونيو 2018 .
  30. "ما هي ECMA - ولماذا تهتم بها مايكروسوفت؟" . ZDNet . مؤرشف من الأصل في 6 مايو 2014. تم الاطلاع عليه في 6 مايو 2014 .
  31. "موقع عملية مجتمع جافا" . Jcp.org. 24 مايو 2010. مؤرشف من الأصل في 8 أغسطس 2006. تم الاطلاع عليه في 9 يونيو 2010 .
  32. "JAVAONE: Sun – الجزء الأكبر من جافا مفتوح المصدر" . GrnLight.net. مؤرشف من الأصل في 27 مايو 2014. تم الاطلاع عليه في 26 مايو 2014 .
  33. "دور صن المتطور كمروج لجافا" . أورايلي ميديا . مؤرشف من الأصل في 15 سبتمبر 2010. تم الاطلاع عليه في 2 أغسطس 2009 .
  34. "أوراكل وجافا" . oracle.com . شركة أوراكل. مؤرشف من الأصل في 31 يناير 2010. تم الاطلاع عليه في 23 أغسطس 2010. لطالما كانت أوراكل داعمًا رئيسيًا وفاعلًا للغة جافا منذ ظهورها عام 1995 ، وتضطلع بدور جديد كراعٍ لتقنية جافا مع التزام راسخ بتعزيز مجتمع قائم على المشاركة والشفافية.
  35. جوسلينج، جيمس (9 أبريل 2010). "حان وقت المضي قدمًا..." على طريق جديد . مؤرشف من الأصل في 5 نوفمبر 2010. تم الاطلاع عليه في 16 نوفمبر 2011 .
  36. الموضوع، داليبور. "الانتقال إلى ويب خالٍ من الإضافات" . مؤرشف من الأصل في 16 مارس 2016. تم الاطلاع عليه في 15 مارس 2016 .
  37. "تعرّف على تقنية جافا" . أوراكل. مؤرشف من الأصل بتاريخ 24 نوفمبر 2011. تم الاطلاع عليه بتاريخ 21 نوفمبر 2011 .
  38. "لماذا يجب عليّ إزالة الإصدارات القديمة من جافا من نظامي؟" . أوراكل. مؤرشف من الأصل في 12 فبراير 2018. تم الاطلاع عليه في 24 سبتمبر 2021 .
  39. "خارطة طريق دعم Oracle Java SE" . أوراكل. 13 سبتمبر 2021. مؤرشف من الأصل في 1 يونيو 2026. تم الاطلاع عليه في 3 يونيو 2026 .
  40. "دعم تيمورين™؛ أدوبتيوم" . adoptium.net . مؤرشف من الأصل في 29 مارس 2024. تم الاطلاع عليه في 29 مارس 2024 .
  41. "جافا سوفت تُصدر جافا 1.0" . sun.com . مؤرشف من الأصل بتاريخ 10 مارس 2007. تم الاطلاع عليه بتاريخ 5 فبراير 2008 .
  42. شاندير، شاراط. "تقديم Java SE 11" . oracle.com . مؤرشف من الأصل في 26 سبتمبر 2018. تم الاطلاع عليه في 26 سبتمبر 2018 .
  43. شاندير، شاراط (15 سبتمبر 2020). "وصول جافا 15!" . أوراكل . مؤرشف من الأصل في 16 سبتمبر 2020. تم الاسترجاع في 15 سبتمبر 2020 .
  44. "JDK 21" . openjdk.org . مؤرشف من الأصل في 20 سبتمبر 2023. تم الاطلاع عليه في 20 سبتمبر 2023 .
  45. "JDK 24" .
  46. "JDK 25" .
  47. "JDK 26" .
  48. "نظرة عامة على بطاقة جافا" . شبكة أوراكل التقنية . أوراكل. مؤرشف من الأصل في 7 يناير 2015. تم الاطلاع عليه في 18 ديسمبر 2014 .
  49. "منصة جافا، الإصدار المصغر (جافا ME)" . شبكة أوراكل التقنية . أوراكل. مؤرشف من الأصل في 4 يناير 2015. تم الاطلاع عليه في 18 ديسمبر 2014 .
  50. "Java SE" . شبكة أوراكل التقنية . أوراكل. مؤرشف من الأصل في 24 ديسمبر 2014. تم الاطلاع عليه في 18 ديسمبر 2014 .
  51. "منصة جافا، الإصدار المؤسسي (جافا EE)" . شبكة أوراكل التقنية . أوراكل. مؤرشف من الأصل في 17 ديسمبر 2014. تم الاطلاع عليه في 18 ديسمبر 2014 .
  52. "نظرة معمقة على مُجمِّع جافا JIT الجديد – Graal | Baeldung" . www.baeldung.com . 6 أغسطس 2021. مؤرشف من الأصل في 28 أكتوبر 2021. تم الاطلاع عليه في 13 أكتوبر 2021 .
  53. هل تعتمد آلة جافا الافتراضية (JVM) على المنصة أم أنها مستقلة عنها؟ ما هي ميزة استخدام JVM، وكون جافا لغة مترجمة؟ مقابلة مع مبرمج. مؤرشفة من الأصل في 19 يناير 2015. تم الاطلاع عليها في 19 يناير 2015 .
  54. 1 2 جيلوفيتش، ديجان. "لماذا ستكون جافا دائمًا أبطأ من سي++" . مؤرشف من الأصل في 11 فبراير 2008. تم الاسترجاع في 15 فبراير 2008 .
  55. هوندت، روبرت. "التعرف على الحلقات في لغات C++/Java/Go/Scala" (ملف PDF) . مؤرشف (PDF) من الأصل بتاريخ 16 نوفمبر 2011. تم الاطلاع عليه بتاريخ 12 يوليو 2012 .
  56. "سيتم دمج مُترجم جافا الفوري من سيمانتك في صن جيه دي كيه 1.1" . مؤرشف من الأصل في 28 يونيو 2010. تم الاطلاع عليه في 1 أغسطس 2009 .
  57. سالسيتش، زوران؛ بارك، هيجونغ؛ تايخ، يورغن؛ مالك، أفيناش؛ نديم، محمد (22 يوليو 2017). "Noc-HMP: معالج متعدد النوى غير متجانس للأنظمة المدمجة مصمم باستخدام SystemJ". معاملات ACM في أتمتة تصميم الأنظمة الإلكترونية . 22 (4): 73. doi : 10.1145/3073416 . ISSN 1084-4309 . S2CID 11150290 .  
  58. 1 2 3 Bloch 2018 ، ص 26-28 ، §البند 7: إزالة مراجع الكائنات القديمة.
  59. "NullPointerException" . أوراكل. مؤرشف من الأصل في 6 مايو 2014. تم الاسترجاع في 6 مايو 2014 .
  60. "الاستثناءات في جافا" . Artima.com. مؤرشف من الأصل في 21 يناير 2009. تم الاطلاع عليه في 10 أغسطس 2010 .
  61. "النظام (Java SE 25 وJDK 25)" . أوراكل . تم الاطلاع عليه في 14 يناير 2026 .{{cite web}}: CS1 maint: url-status ( link )
  62. والتر، أ. (2010). نحو اعتماد تطبيقات جافا للمشاريع الحساسة للسلامة. وقائع مؤتمر البرمجيات والأنظمة المضمنة في الوقت الحقيقي، ERTS2 ، 1-7.
  63. "تحسينات أداء الآلة الافتراضية لـ Java HotSpot™" . Oracle.com. مؤرشف من الأصل بتاريخ 29 مايو 2017. تم الاطلاع عليه بتاريخ 26 أبريل 2017 .
  64. "تحميل المعاملات الزائد (سي شارب مقابل جافا)" . سي شارب لمطوري جافا . مايكروسوفت. مؤرشف من الأصل في 7 يناير 2015. تم الاطلاع عليه في 10 ديسمبر 2014 .
  65. "الوراثة المتعددة للحالة والتنفيذ والنوع" . دروس جافا . أوراكل. مؤرشف من الأصل في 9 نوفمبر 2014. تم الاطلاع عليه في 10 ديسمبر 2014 .
  66. كريل، بول (16 سبتمبر 2025). "JDK 25: الميزات الجديدة في Java 25" . إنفوورلد . تم الاطلاع عليه في 9 أكتوبر 2025 .
  67. بريسلر، رون؛ لاسكي، جيم؛ بيرمان، جافين (11 يوليو 2025). "JEP 512: ملفات المصدر المضغوطة وطرق المثيل الرئيسية" . OpenJDK . تم الاسترجاع في 9 أكتوبر 2025 .
  68. "واجهات برمجة التطبيقات والميزات والخيارات المهملة" . أوراكل. مؤرشف من الأصل في 19 يونيو 2019. تم الاطلاع عليه في 31 مايو 2019 .
  69. "Applet (Java Platform SE 7)" . وثائق . أوراكل. مؤرشف من الأصل في 2 أغسطس 2020. تم الاطلاع عليه في 1 مايو 2020 .
  70. "ما هي صفحة JSP؟ - دليل Java EE 5" . docs.oracle.com . مؤرشف من الأصل في 2 أغسطس 2020. تم الاطلاع عليه في 1 مايو 2020 .
  71. "مسار: إنشاء واجهة مستخدم رسومية باستخدام JFC/Swing (دروس جافا)" . docs.oracle.com . مؤرشف من الأصل في 29 أبريل 2020. تم الاطلاع عليه في 1 مايو 2020 .
  72. «تمت إزالة JavaFX 11 من JDK 11، وستتوفر كوحدة مستقلة» . InfoWorld . 20 سبتمبر 2018. مؤرشف من الأصل في 14 أكتوبر 2020. تم الاطلاع عليه في 13 أكتوبر 2020 .
  73. "البدء باستخدام JavaFX: برنامج Hello World بأسلوب JavaFX" . دروس JavaFX 2 والوثائق . أوراكل. مؤرشف من الأصل في 2 أغسطس 2020. تم الاطلاع عليه في 1 مايو 2020 .
  74. "أنظمة أنواع جافا وسكالا غير سليمة" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 28 نوفمبر 2016. تم الاطلاع عليه بتاريخ 20 فبراير 2017 .
  75. أرنولد، كين (27 يونيو 2005). "الأدوية الجنيسة تُعتبر ضارة" . java.net. مؤرشف من الأصل في 10 أكتوبر 2007. تم الاطلاع عليه في 10 سبتمبر 2015 .
  76. أوينز، شون ر. "جافا و unsigned int، unsigned short، unsigned byte، unsigned long، إلخ. (أو بالأحرى، عدم وجودها)" . مؤرشف من الأصل في 20 فبراير 2009. تم الاسترجاع في 4 يوليو 2011 .
  77. كاهان، ويليام (1 مارس 1998). "كيف تُضرّ الأعداد العشرية في جافا الجميع في كل مكان - ورشة عمل ACM لعام 1998 حول جافا (ستانفورد)" (ملف PDF) . قسم الهندسة الكهربائية وعلوم الحاسوب، جامعة كاليفورنيا في بيركلي. مؤرشف (ملف PDF) من الأصل في 5 سبتمبر 2012. تم الاطلاع عليه في 4 يونيو 2011 .
  78. "هل تحققت من جافا؟" . مؤرشف من الأصل في 21 سبتمبر 2012. تم الاطلاع عليه في 23 ديسمبر 2011 .
  79. كادينهيد، روجرز (20 نوفمبر 2017)، فهم كيفية عمل برامج جافا ، مؤرشف من الأصل في 13 أغسطس 2021 ، تم استرجاعه في 26 مارس 2019
  80. وولف، نيكي (26 مايو 2016). "جوجل تفوز بمعركة قانونية استمرت ست سنوات مع أوراكل بشأن حقوق ملكية كود أندرويد" . صحيفة الغارديان . ISSN 0261-3077 . مؤرشف من الأصل في 26 مارس 2019. تم الاطلاع عليه في 26 مارس 2019 . 
  81. 1 2 بلوخ 2018 ، ص. 1–4 ، § 1 مقدمة.
  82. ^ "java.nio (منصة Java SE 8)" . docs.Oracle.com .
  83. "شبكات جافا" . docs.oracle.com .
  84. "HttpClient (Java SE 11 & JDK 11)" . docs.oracle.com .
  85. "نظرة عامة على إطار عمل المجموعات" . وثائق جافا . أوراكل. مؤرشف من الأصل في 31 ديسمبر 2014. تم الاطلاع عليه في 18 ديسمبر 2014 .
  86. "نظرة عامة على أمان جافا" . وثائق جافا . أوراكل. مؤرشف من الأصل في 3 يناير 2015. تم الاطلاع عليه في 18 ديسمبر 2014 .
  87. "مسار: التدويل" . دروس جافا . أوراكل. مؤرشف من الأصل في 31 ديسمبر 2014. تم الاسترجاع في 18 ديسمبر 2014 .
  88. "كيفية كتابة تعليقات التوثيق لأداة Javadoc" . شبكة أوراكل التقنية . أوراكل. مؤرشف من الأصل في 18 ديسمبر 2014. تم الاطلاع عليه في 18 ديسمبر 2014 .
  89. نيكولاي، جيمس (24 يناير 2001). "صن ومايكروسوفت تُسوّيان دعوى قضائية بشأن جافا" . جافا وورلد . خدمة أخبار IDG . مؤرشف من الأصل في 14 يوليو 2020. تم الاطلاع عليه في 13 يوليو 2020 .
  90. فان جورب، جيلز (13 نوفمبر 2007). "جوجل أندرويد: الانطباعات الأولية والانتقادات" . جافالوبي . مؤرشف من الأصل في 28 أغسطس 2008. تم الاطلاع عليه في 7 مارس 2009. بصراحة، لا أفهم لماذا تنوي جوجل تجاهل الكم الهائل من التطبيقات الموجودة. يبدو لي هذا مثالًا سيئًا على "لم يُخترع هنا". في النهاية، سيؤدي هذا إلى إبطاء التبني. هناك بالفعل عدد كبير جدًا من منصات جافا لعالم الهواتف المحمولة، وهذه منصة أخرى.
  91. مولين، جو (7 مايو 2012). "إدانة جوجل بانتهاك حقوق الملكية الفكرية في محاكمة أوراكل؛ مشاكل قانونية مستقبلية تلوح في الأفق" . القانون والفوضى . آرس تكنيكا. مؤرشف من الأصل في 8 مايو 2012. تم الاسترجاع في 8 مايو 2012 .
  92. مولين، جو (31 مايو 2012). "جوجل تفوز بحكم حاسم بشأن واجهة برمجة التطبيقات، وقضية أوراكل تنهار" . آرس تكنيكا . مؤرشف من الأصل في 12 مارس 2017. تم الاطلاع عليه في 1 يونيو 2012 .
  93. روزنبلات، سيث (9 مايو 2014). "المحكمة تنحاز إلى أوراكل ضد أندرويد في استئناف براءة اختراع جافا" . سي نت . مؤرشف من الأصل في 10 مايو 2014. تم الاطلاع عليه في 10 مايو 2014 .
  94. مولين، جو (26 مايو 2016). "جوجل تتفوق على أوراكل - أندرويد يستخدم واجهات برمجة تطبيقات جافا استخدامًا عادلًا" . آرس تكنيكا . مؤرشف من الأصل في 20 يناير 2017. تم الاطلاع عليه في 26 مايو 2016 .
  95. فاريفار، سايروس (27 مارس 2018). ""لم يكن استخدام جوجل لحزم واجهة برمجة تطبيقات جافا عادلاً"، هذا ما قضت به محكمة الاستئناف . آرس تكنيكا . مؤرشف من الأصل في 24 سبتمبر 2019. تم الاطلاع عليه في 6 أغسطس 2019 .
  96. لي، تيموثي (23 أبريل 2019). "جوجل تطلب من المحكمة العليا نقض حكم كارثي بشأن حقوق الطبع والنشر لواجهات برمجة التطبيقات" . آرس تكنيكا . مؤرشف من الأصل في 23 أبريل 2019. تم الاطلاع عليه في 23 أبريل 2019 .
  97. " Google LLC v. Oracle America, Inc 593 US ____ (2021)" (ملف PDF) . مؤرشف (PDF) من الأصل في 5 أبريل 2021. تم الاطلاع عليه في 6 أبريل 2021 .

فهرس

  • بلوخ، جوشوا (2018). جافا الفعّالة: دليل لغة البرمجة (  الطبعة الثالثة). أديسون-ويسلي. ISBN 978-0-13-468599-1.
  • جوسلينج، جيمس؛ جوي، بيل ؛ ستيل، جاي إل. الابن ؛ براخا، جلعاد (2005). مواصفات لغة جافا (  الطبعة الثالثة). أديسون-ويسلي. ISBN 0-321-24678-0أُرشف من الأصل في 14 فبراير 2012. تم الاطلاع عليه في 8 فبراير 2019 .
  • جوسلينج، جيمس؛ جوي، بيل؛ ستيل، جاي؛ براخا، جلعاد؛ باكلي، أليكس (2014). مواصفات لغة جافا® (ملف PDF) (إصدار جافا SE 8  ). مؤرشف (ملف PDF) من الأصل بتاريخ 21 أكتوبر 2014. تم الاطلاع عليه بتاريخ 18 نوفمبر 2014 .
  • ليندهولم، تيم؛ يلين، فرانك (1999). مواصفات آلة جافا الافتراضية (  الطبعة الثانية). أديسون-ويسلي. ISBN 0-201-43294-3أُرشف من الأصل في 25 سبتمبر 2011. تم الاطلاع عليه في 8 فبراير 2019 .