واجهة برمجة التطبيقات (API)

واجهة برمجة التطبيقات ( API ) هي اتصال بين أجهزة الكمبيوتر أو بين برامج الكمبيوتر . وهي نوع من واجهات البرامج ، تُقدّم خدمة لبرامج أخرى . [ 1 ] [ 2 ] يُطلق على الوثيقة أو المعيار الذي يصف كيفية إنشاء هذا الاتصال أو الواجهة اسم مواصفات واجهة برمجة التطبيقات . ويُقال إن نظام الكمبيوتر الذي يفي بهذا المعيار يُنفّذ أو يُتيح واجهة برمجة تطبيقات. وقد يُشير مصطلح واجهة برمجة التطبيقات إما إلى المواصفات أو إلى التنفيذ.

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

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

يُستخدم مصطلح واجهة برمجة التطبيقات (API) غالبًا للإشارة إلى واجهات برمجة تطبيقات الويب ، [ 3 ] التي تُتيح التواصل بين أجهزة الكمبيوتر المتصلة بالإنترنت . كما توجد واجهات برمجة تطبيقات للغات البرمجة ، ومكتبات البرامج ، وأنظمة تشغيل الكمبيوتر ، ومكونات الكمبيوتر المادية . ظهرت واجهات برمجة التطبيقات في أربعينيات القرن العشرين، على الرغم من أن المصطلح لم يتبلور إلا في ستينيات وسبعينيات القرن نفسه.

غاية

تتيح واجهة برمجة التطبيقات (API) لنظام برمجي التفاعل مع جهات خارجية. فهي تسمح لنظامين برمجيين بالتواصل عبر واجهة مشتركة باستخدام إشارات متفق عليها. [ 4 ] بعبارة أخرى، تربط واجهة برمجة التطبيقات كيانات برمجية ببعضها. وعلى عكس واجهة المستخدم ، فإن واجهة برمجة التطبيقات عادةً ما تكون غير مرئية للمستخدمين. فهي جزء "خفي" من النظام البرمجي، يُستخدم للتواصل بين الأجهزة. [ 5 ]

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

مجازياً، تربط واجهات برمجة التطبيقات البرامج مثل الكتل المتشابكة.

يُشبه بناء البرمجيات باستخدام واجهات برمجة التطبيقات (APIs) استخدام مكعبات البناء، مثل مكعبات الليغو . تُشبه خدمات البرمجيات أو مكتبات البرمجيات هذه المكعبات؛ إذ يمكن ربطها معًا عبر واجهات برمجة التطبيقات الخاصة بها، لتكوين منتج برمجي جديد. [ 7 ] تُسمى عملية الربط هذه بالتكامل . [ 4 ]

على سبيل المثال، لنفترض وجود مستشعر طقس مزود بواجهة برمجة تطبيقات (API). عند إرسال رسالة معينة إلى المستشعر، فإنه سيكتشف حالة الطقس الحالية ويرد بتقرير جوي. الرسالة التي تُفعّل المستشعر هي استدعاء لواجهة برمجة التطبيقات ، والتقرير الجوي هو استجابة منها . [ 8 ] قد يتكامل تطبيق التنبؤات الجوية مع عدد من واجهات برمجة تطبيقات مستشعرات الطقس، لجمع بيانات الطقس من جميع أنحاء منطقة جغرافية محددة.

غالبًا ما تُشبه واجهة برمجة التطبيقات (API) بالعقد . فهي تمثل اتفاقًا بين طرفين: مزود الخدمة الذي يقدم واجهة برمجة التطبيقات، ومطوري البرامج الذين يعتمدون عليها. إذا ظلت واجهة برمجة التطبيقات مستقرة، أو إذا تغيرت بطرق يمكن التنبؤ بها فقط، فإن ثقة المطورين بها ستزداد، مما قد يزيد من استخدامهم لها. [ 9 ]

تاريخ المصطلح

رسم تخطيطي من عام 1978 يقترح توسيع فكرة واجهة برمجة التطبيقات لتصبح واجهة برمجة عامة، تتجاوز برامج التطبيقات وحدها [ 10 ]

كان مصطلح API في البداية يصف واجهة مخصصة فقط للبرامج التي يتعامل معها المستخدم النهائي، والمعروفة باسم برامج التطبيقات . ولا يزال هذا الأصل ينعكس في اسم "واجهة برمجة التطبيقات". أما اليوم، فقد أصبح المصطلح أوسع نطاقًا، ليشمل أيضًا برامج الأدوات المساعدة وحتى واجهات الأجهزة . [ 11 ]

إن فكرة واجهة برمجة التطبيقات (API) أقدم بكثير من المصطلح نفسه. فقد عمل عالما الحاسوب البريطانيان موريس ويلكس وديفيد ويلر على مكتبة برمجية معيارية في أربعينيات القرن العشرين لجهاز EDSAC ، وهو حاسوب مبكر. كانت الإجراءات الفرعية في هذه المكتبة مخزنة على شريط ورقي مثقوب، ومنظمة في خزانة ملفات . احتوت هذه الخزانة أيضًا على ما أسماه ويلكس وويلر "فهرس المكتبة"، وهو عبارة عن ملاحظات حول كل إجراء فرعي وكيفية دمجه في البرنامج. واليوم، يُطلق على هذا الفهرس اسم واجهة برمجة التطبيقات (أو مواصفات واجهة برمجة التطبيقات أو وثائق واجهة برمجة التطبيقات) لأنه يُرشد المبرمج إلى كيفية استخدام (أو "استدعاء") كل إجراء فرعي يحتاجه. [ 11 ]

يحتوي كتاب ويلكس وويلر " إعداد البرامج للحاسوب الرقمي الإلكتروني" على أول مواصفات منشورة لواجهة برمجة التطبيقات (API). ويرى جوشوا بلوخ أن ويلكس وويلر "ابتكرا" واجهة برمجة التطبيقات ضمنيًا، لأنها أقرب إلى مفهوم تم اكتشافه منها إلى ابتكاره. [ 11 ]

على الرغم من أن الأشخاص الذين صاغوا مصطلح API كانوا يقومون بتنفيذ برامج على جهاز Univac 1108 ، إلا أن هدفهم من API كان جعل البرامج المستقلة عن الأجهزة ممكنة. [ 12 ]

ورد مصطلح "واجهة برمجة التطبيقات" (بدون لاحقة "-ing ") لأول مرة في ورقة بحثية بعنوان "هياكل البيانات وتقنيات رسومات الحاسوب عن بُعد" ، عُرضت في مؤتمر AFIPS عام 1968. [ 13 ] [ 11 ] استخدم مؤلفو هذه الورقة المصطلح لوصف تفاعل تطبيق ما - برنامج رسومات في هذه الحالة - مع بقية نظام الحاسوب. كان الهدف من واجهة التطبيق المتسقة (التي تتكون من استدعاءات روتينية فرعية بلغة فورتران ) هو تحرير المبرمج من التعامل مع خصائص جهاز عرض الرسومات، وتوفير استقلالية عن المكونات المادية في حال استبدال الحاسوب أو الشاشة. [ 12 ]

أُدخل مصطلح "واجهة برمجة التطبيقات" إلى مجال قواعد البيانات بواسطة سي جيه ديت [14] في ورقة بحثية نُشرت عام 1974 بعنوان "النهج العلائقي والشبكي : مقارنة واجهة برمجة التطبيقات " . [ 15 ] أصبحت واجهة برمجة التطبيقات جزءًا من إطار عمل ANSI/SPARC لأنظمة إدارة قواعد البيانات . تعامل هذا الإطار مع واجهة برمجة التطبيقات بشكل منفصل عن الواجهات الأخرى، مثل واجهة الاستعلام. لاحظ متخصصو قواعد البيانات في سبعينيات القرن الماضي إمكانية دمج هذه الواجهات المختلفة؛ إذ يمكن لواجهة تطبيق غنية بما يكفي أن تدعم الواجهات الأخرى أيضًا. [ 10 ]

أدت هذه الملاحظة إلى ظهور واجهات برمجة التطبيقات (APIs) التي تدعم جميع أنواع البرمجة، وليس فقط برمجة التطبيقات. وبحلول عام 1990، عرّف التقني كارل مالامود واجهة برمجة التطبيقات ببساطة بأنها "مجموعة من الخدمات المتاحة للمبرمج لأداء مهام معينة" . [ 16 ]

لقطة شاشة من وثائق واجهة برمجة تطبيقات الويب (Web API) التي كتبتها وكالة ناسا.

توسّع مفهوم واجهة برمجة التطبيقات (API) مجدداً مع ظهور استدعاءات الإجراءات عن بُعد وواجهات برمجة تطبيقات الويب . ومع انتشار شبكات الحاسوب في سبعينيات وثمانينيات القرن الماضي، رغب المبرمجون في استدعاء المكتبات الموجودة ليس فقط على حواسيبهم المحلية، بل أيضاً على حواسيب أخرى. وقد حظيت هذه الاستدعاءات بدعمٍ كبير من لغة جافا على وجه الخصوص. وفي تسعينيات القرن الماضي، ومع انتشار الإنترنت ، تنافست معايير مثل CORBA و COM و DCOM لتصبح الطريقة الأكثر شيوعاً لعرض خدمات واجهة برمجة التطبيقات. [ 17 ]

في أطروحته بعنوان "الأنماط المعمارية وتصميم بنى البرمجيات الشبكية" التي قدمها روي فيلدينغ في جامعة كاليفورنيا في إرفاين عام 2000، أوضح مفهوم نقل الحالة التمثيلية (REST) ​​ووصف فكرة "واجهة برمجة التطبيقات الشبكية" التي قارنها فيلدينغ بواجهات برمجة التطبيقات التقليدية "القائمة على المكتبات". [ 18 ] شهدت واجهات برمجة تطبيقات الويب XML و JSON انتشارًا تجاريًا واسعًا بدءًا من عام 2000 واستمر حتى عام 2021. وتُعد واجهة برمجة تطبيقات الويب الآن المعنى الأكثر شيوعًا لمصطلح واجهة برمجة التطبيقات. [ 3 ]

تضمنت شبكة الويب الدلالية، التي اقترحها تيم بيرنرز لي عام ٢٠٠١، "واجهات برمجة تطبيقات دلالية" أعادت تعريف واجهة برمجة التطبيقات كواجهة بيانات مفتوحة وموزعة بدلاً من كونها واجهة سلوك برمجية. [ ١٩ ] انتشرت الواجهات والوكلاء الاحتكاريون على نطاق أوسع من الواجهات المفتوحة، لكن فكرة واجهة برمجة التطبيقات كواجهة بيانات ترسخت. ولأن واجهات برمجة تطبيقات الويب تُستخدم على نطاق واسع لتبادل البيانات بجميع أنواعها عبر الإنترنت، فقد أصبح مصطلح "واجهة برمجة التطبيقات" مصطلحًا واسعًا يصف جزءًا كبيرًا من الاتصالات على الإنترنت. [ ١٧ ] وعند استخدامه بهذه الطريقة، يتداخل مصطلح "واجهة برمجة التطبيقات" في المعنى مع مصطلح " بروتوكول الاتصال" .

الأنواع

المكتبات والأطر

تُعد واجهة مكتبة البرامج أحد أنواع واجهات برمجة التطبيقات (API). تصف واجهة برمجة التطبيقات وتحدد "السلوك المتوقع" (المواصفات)، بينما تمثل المكتبة "التنفيذ الفعلي" لهذه المجموعة من القواعد.

يمكن أن يكون لواجهة برمجة التطبيقات الواحدة تطبيقات متعددة (أو لا شيء، لكونها مجردة) في شكل مكتبات مختلفة تشترك في نفس واجهة البرمجة.

يُتيح فصل واجهة برمجة التطبيقات (API) عن تنفيذها للبرامج المكتوبة بلغة برمجة معينة استخدام مكتبة مكتوبة بلغة أخرى. على سبيل المثال، نظرًا لأن لغتي Scala و Java تُترجمان إلى بايت كود متوافق ، يمكن لمطوري Scala الاستفادة من أي واجهة برمجة تطبيقات Java. [ 20 ]

يختلف استخدام واجهات برمجة التطبيقات (APIs) باختلاف نوع لغة البرمجة المستخدمة. فواجهة برمجة التطبيقات للغة إجرائية مثل Lua قد تتكون أساسًا من إجراءات بسيطة لتنفيذ التعليمات البرمجية، ومعالجة البيانات، أو التعامل مع الأخطاء، بينما توفر واجهة برمجة التطبيقات للغة كائنية التوجه ، مثل Java، مواصفات للفئات وأساليبها . [ 21 ] [ 22 ]ينص قانون هايروم على أنه "مع وجود عدد كافٍ من مستخدمي واجهة برمجة التطبيقات (API)، لا يهم ما تعد به في العقد: فجميع السلوكيات الملحوظة لنظامك سيعتمد عليها شخص ما." [ 23 ] في الوقت نفسه، تُظهر العديد من الدراسات أن معظم التطبيقات التي تستخدم واجهة برمجة التطبيقات تميل إلى استخدام جزء صغير منها. [ 24 ]

تُعدّ روابط اللغات أيضًا واجهات برمجة تطبيقات (APIs). فمن خلال ربط خصائص وإمكانيات لغة برمجة بواجهة مُنفّذة بلغة أخرى، يُتيح ربط اللغة استخدام مكتبة أو خدمة مكتوبة بلغة معينة عند التطوير بلغة أخرى. [ 25 ] وتُسهّل أدوات مثل SWIG وF2PY، وهو مُولّد واجهات من Fortran إلى Python ، إنشاء هذه الواجهات. [ 26 ]

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

علاوة على ذلك، يمكن أن يخرج تدفق التحكم العام للبرنامج عن سيطرة المتصل ويصبح في يد الإطار البرمجي من خلال عكس التحكم أو آلية مماثلة. [ 27 ] [ 28 ]

أنظمة التشغيل

يمكن لواجهة برمجة التطبيقات (API) تحديد الواجهة بين التطبيق ونظام التشغيل . [ 29 ] على سبيل المثال، يحدد معيار POSIX مجموعة من واجهات برمجة التطبيقات الشائعة التي تهدف إلى تمكين تطبيق مكتوب لنظام تشغيل متوافق مع معيار POSIX من أن يتم تجميعه لنظام تشغيل آخر متوافق مع معيار POSIX.

يُعد كل من نظام التشغيل لينكس وتوزيعة برامج بيركلي مثالين على أنظمة التشغيل التي تُنفذ واجهات برمجة تطبيقات POSIX. [ 30 ]

أبدت مايكروسوفت التزامًا قويًا بواجهة برمجة تطبيقات متوافقة مع الإصدارات السابقة، لا سيما ضمن مكتبة واجهة برمجة تطبيقات ويندوز (Win32)، ما يسمح بتشغيل التطبيقات القديمة على الإصدارات الأحدث من ويندوز باستخدام إعداد خاص بالملف التنفيذي يُسمى "وضع التوافق". [ 31 ] ولا يزال من غير الواضح مدى فائدة وصول مطوري مايكروسوفت إلى واجهات برمجة التطبيقات الداخلية لأنظمة تشغيل الشركة. وقد شبّه ريتشارد أ. شافير من مجلة "تكنولوجيك كمبيوتر ليتر" عام 1987 الوضع بمباراة بيسبول "تسيطر فيها مايكروسوفت على الملعب بأكمله"، [ 32 ] وأفادت التقارير أن كبار الموردين مثل لوتس ديفيلوبمنت وأشتون -تيت تلقوا معلومات حول نظام التشغيل MS-DOS 5.0 لم تكن متاحة لمطوري البرامج الأصغر حجمًا. [ 33 ] ومع ذلك، صرّح إد إسبر من أشتون-تيت في مقابلة عام 1987 أن بيل غيتس أخبره أن مطوريه اضطروا أحيانًا إلى إعادة كتابة البرامج استنادًا إلى واجهات برمجة التطبيقات القديمة. أشار غيتس في المقابلة إلى أن تطبيقات مايكروسوفت لأجهزة أبل ماكنتوش كانت أكثر نجاحًا من تلك الخاصة بنظام MS-DOS، لأن شركته لم تكن مضطرة لتخصيص موارد لنظام التشغيل Mac OS أيضًا . [ 34 ]

تختلف واجهة برمجة التطبيقات (API) عن واجهة التطبيق الثنائية (ABI) في أن واجهة برمجة التطبيقات تعتمد على شفرة المصدر، بينما تعتمد واجهة التطبيق الثنائية على الشفرة الثنائية . على سبيل المثال، يوفر معيار POSIX واجهات برمجة تطبيقات، بينما يوفر معيار Linux الأساسي واجهة تطبيق ثنائية. [ 35 ] [ 36 ]

واجهات برمجة التطبيقات عن بعد

تتيح واجهات برمجة التطبيقات عن بُعد للمطورين إمكانية التحكم في الموارد البعيدة عبر بروتوكولات ، وهي معايير محددة للاتصال تسمح لتقنيات مختلفة بالعمل معًا، بغض النظر عن اللغة أو النظام الأساسي. على سبيل المثال، تسمح واجهة برمجة تطبيقات اتصال قواعد البيانات في جافا للمطورين بالاستعلام عن أنواع متعددة من قواعد البيانات باستخدام نفس مجموعة الدوال، بينما تستخدم واجهة برمجة تطبيقات استدعاء الأساليب عن بُعد في جافا بروتوكول الأساليب عن بُعد في جافا للسماح باستدعاء الدوال التي تعمل عن بُعد، ولكنها تبدو محلية للمطور. [ 37 ] [ 38 ]

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

سيؤدي تعديل الكائن الوكيل أيضًا إلى تعديل مماثل للكائن البعيد. [ 39 ]

واجهات برمجة تطبيقات الويب

واجهات برمجة تطبيقات الويب (Web APIs) هي واجهات محددة يتم من خلالها التفاعل بين المؤسسة والتطبيقات التي تستخدم مواردها، وهي أيضاً اتفاقية مستوى الخدمة (SLA) لتحديد مزود الخدمة الوظيفية وعرض مسار الخدمة أو عنوان URL لمستخدمي واجهة برمجة التطبيقات. ويُعدّ نهج واجهة برمجة التطبيقات نهجاً معمارياً يتمحور حول توفير واجهة برمجية لمجموعة من الخدمات لتطبيقات مختلفة تخدم أنواعاً مختلفة من المستهلكين. [ 40 ]

عند استخدام واجهة برمجة التطبيقات (API) في سياق تطوير الويب ، تُعرَّف عادةً بأنها مجموعة من المواصفات، مثل رسائل طلب بروتوكول نقل النص التشعبي (HTTP)، بالإضافة إلى تعريف لبنية رسائل الاستجابة، وعادةً ما تكون بتنسيق لغة الترميز القابلة للتوسيع ( XML ) أو تدوين كائنات جافا سكريبت ( JSON ). على سبيل المثال، يمكن إضافة واجهة برمجة تطبيقات لشركة شحن إلى موقع ويب للتجارة الإلكترونية لتسهيل طلب خدمات الشحن وتضمين أسعار الشحن الحالية تلقائيًا، دون الحاجة إلى إدخال مطور الموقع جدول أسعار شركة الشحن في قاعدة بيانات الويب. في حين أن مصطلح "واجهة برمجة تطبيقات الويب" كان تاريخيًا مرادفًا تقريبًا لخدمة الويب ، إلا أن الاتجاه الحديث (ما يُعرف باسم Web 2.0 ) يتجه بعيدًا عن خدمات الويب القائمة على بروتوكول الوصول إلى الكائنات البسيط ( SOAP ) وهندسة الخدمات الموجهة (SOA) نحو موارد الويب المباشرة القائمة على نقل الحالة التمثيلية (REST) ​​وهندسة الموارد الموجهة (ROA). [ 41 ] يرتبط جزء من هذا الاتجاه بحركة الويب الدلالي نحو إطار وصف الموارد (RDF)، وهو مفهوم يهدف إلى تعزيز تقنيات هندسة الأنطولوجيا القائمة على الويب . تتيح واجهات برمجة تطبيقات الويب (Web APIs) دمج واجهات برمجة تطبيقات متعددة في تطبيقات جديدة تُعرف باسم التطبيقات المدمجة (Mashups) . [ 42 ] في مجال التواصل الاجتماعي، مكّنت واجهات برمجة تطبيقات الويب مجتمعات الويب من تسهيل تبادل المحتوى والبيانات بين المجتمعات والتطبيقات. وبهذه الطريقة، يمكن نشر المحتوى الذي يتم إنشاؤه في مكان واحد وتحديثه ديناميكيًا في مواقع متعددة على الويب. [ 43 ] على سبيل المثال، تتيح واجهة برمجة تطبيقات REST الخاصة بتويتر للمطورين الوصول إلى بيانات تويتر الأساسية، بينما توفر واجهة برمجة تطبيقات البحث (Search API) طرقًا للمطورين للتفاعل مع بيانات البحث والاتجاهات في تويتر. [ 44 ]

تصميم

يؤثر تصميم واجهة برمجة التطبيقات (API) بشكل كبير على استخدامها. [ 6 ] يصف مبدأ إخفاء المعلومات دور واجهات البرمجة في تمكين البرمجة المعيارية من خلال إخفاء تفاصيل تنفيذ الوحدات، بحيث لا يحتاج مستخدمو الوحدات إلى فهم التعقيدات الداخلية. [ 45 ] وبالتالي، يسعى تصميم واجهة برمجة التطبيقات إلى توفير الأدوات التي يتوقعها المستخدم فقط. [ 6 ] يمثل تصميم واجهات البرمجة جزءًا مهمًا من هندسة البرمجيات ، أي تنظيم البرمجيات المعقدة. [ 46 ]

سياسات الإصدار

تُعد واجهات برمجة التطبيقات (APIs) إحدى أكثر الطرق شيوعاً لدمج شركات التكنولوجيا. وتُعتبر الشركات التي توفر واجهات برمجة التطبيقات وتستخدمها أعضاءً في النظام البيئي للأعمال. [ 47 ]

تتمثل السياسات الرئيسية لإصدار واجهة برمجة التطبيقات (API) فيما يلي: [ 48 ]

  • خاص : واجهة برمجة التطبيقات مخصصة للاستخدام الداخلي للشركة فقط.
  • الشريك : لا يُسمح باستخدام واجهة برمجة التطبيقات (API) إلا لشركاء أعمال محددين. على سبيل المثال، تسمح شركات تأجير السيارات مثل أوبر وليفت لمطوري الطرف الثالث المعتمدين بطلب الرحلات مباشرةً من داخل تطبيقاتهم. وهذا يُمكّن الشركات من مراقبة الجودة من خلال تحديد التطبيقات التي يُمكنها الوصول إلى واجهة برمجة التطبيقات، كما يُوفر لها مصدر دخل إضافي. [ 49 ]
  • عام : واجهة برمجة التطبيقات (API) متاحة للاستخدام العام. على سبيل المثال، تُتيح مايكروسوفت واجهة برمجة تطبيقات ويندوز العامة، وتُصدر آبل واجهة برمجة تطبيقات كوكوا ، مما يُتيح كتابة البرامج لمنصاتها . مع ذلك، لا تكون جميع واجهات برمجة التطبيقات العامة متاحة للجميع. على سبيل المثال، يستخدم مُزودو خدمات الإنترنت مثل كلاود فلير وفوكسيليتي واجهات برمجة تطبيقات RESTful لتمكين العملاء والموزعين من الوصول إلى معلومات البنية التحتية، وإحصائيات هجمات DDoS، وأداء الشبكة، وعناصر التحكم في لوحة التحكم. [ 50 ] يُمنح الوصول إلى هذه الواجهات إما عن طريق "رموز API" أو التحقق من حالة العميل. [ 51 ]

الآثار المترتبة على واجهة برمجة التطبيقات العامة

يُعدّ "استقرار الواجهة" عاملاً مهماً عند إطلاق واجهة برمجة التطبيقات (API) للجمهور. فالتغييرات التي تُجرى على واجهة برمجة التطبيقات - على سبيل المثال، إضافة معلمات جديدة إلى استدعاء دالة - قد تُؤدي إلى عدم التوافق مع العملاء الذين يعتمدون على تلك الواجهة. [ 52 ]

عندما تكون أجزاء من واجهة برمجة تطبيقات (API) متاحة للعموم عرضة للتغيير وبالتالي غير مستقرة، يجب توثيق هذه الأجزاء من واجهة برمجة التطبيقات بشكل صريح على أنها "غير مستقرة". على سبيل المثال، في مكتبة جوجل جوافا ، يتم تمييز الأجزاء التي تُعتبر غير مستقرة، والتي قد تتغير قريبًا، باستخدام تعليق جافا@Beta . [ 53 ]

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

قد يحتوي كود العميل على استخدامات مبتكرة أو انتهازية لم يقصدها مصممو واجهة برمجة التطبيقات (API). بعبارة أخرى، بالنسبة لمكتبة ذات قاعدة مستخدمين كبيرة، عندما يصبح عنصر ما جزءًا من واجهة برمجة التطبيقات العامة، يمكن استخدامه بطرق متنوعة. [ 55 ] في 19 فبراير 2020، نشرت أكاماي تقريرها السنوي "حالة الإنترنت"، والذي يُظهر الاتجاه المتزايد للمجرمين الإلكترونيين لاستهداف منصات واجهة برمجة التطبيقات العامة في الخدمات المالية حول العالم. من ديسمبر 2017 إلى نوفمبر 2019، شهدت أكاماي 85.42 مليار هجوم لانتهاك بيانات الاعتماد. حوالي 20% منها، أو 16.55 مليار، استهدفت أسماء مضيفين مُعرّفة كنقاط نهاية لواجهة برمجة التطبيقات. من بين هذه الهجمات، استهدف 473.5 مليون منها مؤسسات قطاع الخدمات المالية. [ 56 ]

وثائق واجهة برمجة التطبيقات (API)

توضح وثائق واجهة برمجة التطبيقات (API) الخدمات التي تقدمها واجهة برمجة التطبيقات وكيفية استخدام تلك الخدمات، بهدف تغطية كل ما يحتاج العميل إلى معرفته للأغراض العملية.

تُعدّ الوثائق أساسية لتطوير وصيانة التطبيقات التي تستخدم واجهة برمجة التطبيقات (API). [ 57 ] عادةً ما توجد وثائق واجهة برمجة التطبيقات في ملفات التوثيق، ولكن يمكن العثور عليها أيضًا في وسائل التواصل الاجتماعي مثل المدونات والمنتديات ومواقع الأسئلة والأجوبة. [ 58 ]

غالبًا ما تُعرض ملفات التوثيق التقليدية عبر نظام توثيق، مثل Javadoc أو Pydoc، يتميز بمظهر وبنية متسقين. ومع ذلك، تختلف أنواع المحتوى المضمنة في التوثيق من واجهة برمجة تطبيقات إلى أخرى. [ 59 ]

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

تُغطي الوثائق أيضًا القيود والحدود المفروضة على كيفية استخدام واجهة برمجة التطبيقات (API). على سبيل المثال، قد تُشير وثائق إحدى وظائف واجهة برمجة التطبيقات إلى أن مُعاملاتها لا يُمكن أن تكون فارغة، وأن الوظيفة نفسها غير آمنة للاستخدام في بيئات متعددة الخيوط . [ 60 ] نظرًا لأن وثائق واجهة برمجة التطبيقات عادةً ما تكون شاملة، فإن تحديثها باستمرار يُمثل تحديًا للمطورين، كما يُمثل قراءتها بعناية تحديًا للمستخدمين، مما قد يُؤدي إلى ظهور أخطاء برمجية. [ 52 ]

يمكن إثراء وثائق واجهة برمجة التطبيقات (API) بمعلومات البيانات الوصفية مثل تعليقات جافا التوضيحية . ويمكن استخدام هذه البيانات الوصفية من قِبل المُصرّف والأدوات وبيئة التشغيل لتنفيذ سلوكيات أو معالجة مخصصة. [ 61 ]

من الممكن إنشاء وثائق واجهة برمجة التطبيقات (API) بطريقة تعتمد على البيانات. فمن خلال مراقبة العديد من البرامج التي تستخدم واجهة برمجة تطبيقات معينة، يمكن استنتاج الاستخدامات الشائعة، بالإضافة إلى العقود والتوجيهات المطلوبة. [ 62 ] بعد ذلك، يمكن استخدام القوالب لإنشاء لغة طبيعية من البيانات المستخرجة.

في عام ٢٠١٠، رفعت شركة أوراكل دعوى قضائية ضد جوجل لتوزيعها تطبيقًا جديدًا للغة جافا مُدمجًا في نظام التشغيل أندرويد. [ ٦٣ ] لم تحصل جوجل على أي إذن لإعادة إنتاج واجهة برمجة تطبيقات جافا، على الرغم من منح الإذن لمشروع OpenJDK المشابه. وقد حكم القاضي ويليام ألسوب في قضية أوراكل ضد جوجل بأن واجهات برمجة التطبيقات لا تخضع لحقوق النشر في الولايات المتحدة، وأن فوز أوراكل كان سيوسع نطاق حماية حقوق النشر ليشمل "مجموعة وظيفية من الرموز"، ويسمح بحماية أوامر البرامج البسيطة بحقوق النشر.

إن قبول ادعاء أوراكل يعني السماح لأي شخص باحتكار حقوق ملكية فكرية لنسخة واحدة من الشفرة البرمجية لتنفيذ نظام من الأوامر، وبالتالي منع الآخرين من كتابة نسخ مختلفة منها لتنفيذ كل أو جزء من نفس الأوامر. [ 64 ] [ 65 ]

تم نقض حكم ألسوب في عام 2014 عند استئنافه أمام محكمة الاستئناف للدائرة الفيدرالية ، إلا أن مسألة ما إذا كان استخدام واجهات برمجة التطبيقات (APIs) يُعد استخدامًا عادلًا ظلت دون حسم. [ 66 ] [ 67 ]

في عام ٢٠١٦، وبعد محاكمة استمرت أسبوعين، قررت هيئة محلفين أن إعادة تنفيذ جوجل لواجهة برمجة تطبيقات جافا يُعد استخدامًا عادلًا ، لكن أوراكل تعهدت باستئناف القرار. [ ٦٨ ] كسبت أوراكل الاستئناف، حيث قضت محكمة الاستئناف للدائرة الفيدرالية بأن استخدام جوجل لواجهات برمجة التطبيقات لا يندرج ضمن الاستخدام العادل. [ ٦٩ ] في عام ٢٠١٩، استأنفت جوجل أمام المحكمة العليا للولايات المتحدة بشأن كلٍ من أحكام حقوق النشر والاستخدام العادل، وقبلت المحكمة العليا إعادة النظر في القضية. [ ٧٠ ] بسبب جائحة كوفيد-١٩ ، تأجلت الجلسات الشفوية في القضية حتى أكتوبر ٢٠٢٠. [ ٧١ ]

حسمت المحكمة العليا القضية لصالح جوجل. [ 72 ]

أمثلة

انظر أيضاً

مراجع

  1. بيرون، برايان إي.؛ لوان، هوي؛ تشي، زيا؛ فيكتور، برايان جي.؛ جويال، كافين (2024). "تبسيط واجهات برمجة التطبيقات (APIs): إطلاق العنان لقوة نماذج اللغة الكبيرة وخدمات الذكاء الاصطناعي الأخرى القائمة على الويب في بحوث الخدمة الاجتماعية". arXiv : 2410.20211 [ cs.SE ].
  2. 1 2 ريدي، مارتن (2011). تصميم واجهة برمجة التطبيقات للغة C++ . دار نشر إلسيفير للعلوم. ص 1. ISBN  9780123850041.
  3. لين ، كين (10 أكتوبر 2019). "مقدمة إلى واجهات برمجة التطبيقات: تاريخ واجهات برمجة التطبيقات" . بوستمان . تم الاسترجاع في 18 سبتمبر 2020. عندما تسمع اختصار "API" أو نسخته الموسعة "واجهة برمجة التطبيقات"، فإنه يشير دائمًا تقريبًا إلى نهجنا الحديث، حيث نستخدم بروتوكول HTTP لتوفير الوصول إلى البيانات القابلة للقراءة آليًا بتنسيق JSON أو XML، والتي يُشار إليها غالبًا ببساطة باسم "واجهات برمجة تطبيقات الويب". كانت واجهات برمجة التطبيقات موجودة منذ نشأة الحوسبة تقريبًا، لكن واجهات برمجة تطبيقات الويب الحديثة بدأت في التبلور في أوائل العقد الأول من القرن الحادي والعشرين.
  4. 1 2 بيدرو، برونو (2024). بناء منتج واجهة برمجة تطبيقات: تصميم وتنفيذ وإصدار وصيانة منتجات واجهة برمجة التطبيقات التي تلبي احتياجات المستخدم . دار نشر Packt. ص 4. ISBN  9781837638536.
  5. بيهل، ماتياس (2016). تصميم واجهات برمجة تطبيقات RESTful . مطبعة جامعة API. ص 10. ISBN  9781514735169.
  6. 1 2 3 كلارك، ستيفن (2004). "قياس سهولة استخدام واجهة برمجة التطبيقات" . دكتور دوبس . تم الاسترجاع في 29 يوليو 2016 .
  7. جين، بريندا؛ ساهني، سوراب؛ شيفات، أمير (2018). "مقدمة". تصميم واجهات برمجة تطبيقات الويب: بناء واجهات برمجة تطبيقات يحبها المطورون . دار نشر أورايلي ميديا. رقم ISBN 9781492026877.
  8. جيواكس، جيه جيه (2021). أنماط تصميم واجهات برمجة التطبيقات . مانينغ. ص 6. ISBN  9781638350330.
  9. جاكوبسون، دانيال؛ برايل، جريج؛ وودز، دان (2011). واجهات برمجة التطبيقات: دليل استراتيجي . دار نشر أورايلي. ص 4. ISBN  9781449321642.
  10. 1 2 هياكل قواعد البيانات - ورشة عمل حول الجدوى (تقرير). واشنطن العاصمة: وزارة التجارة الأمريكية، المكتب الوطني للمعايير. أبريل 1981. الصفحات 45-47 . hdl : 2027/mdp.39015077587742 . LCCN 81600004. منشور خاص للمكتب الوطني للمعايير 500-76 . تاريخ الاسترجاع: 18 سبتمبر 2020 .  
  11. 1 2 3 4 بلوخ ، جوشوا (8 أغسطس 2018). تاريخ موجز ومعبر عن واجهة برمجة التطبيقات (الكلام). كيوكون. سان فرانسيسكو: إنفوك . تم الاسترجاع في 18 سبتمبر 2020 .
  12. 1 2 كوتون، إيرا دبليو؛ جريتوركس، فرانك إس. (ديسمبر 1968). "هياكل البيانات وتقنيات رسومات الحاسوب عن بُعد" . AFIPS '68: وقائع مؤتمر الحاسوب المشترك للخريف، 9-11 ديسمبر 1968. مؤتمر الحاسوب المشترك للخريف AFIPS 1968. المجلد الأول. سان فرانسيسكو، كاليفورنيا: جمعية آلات الحوسبة. الصفحات 533-544 . doi : 10.1145/1476589.1476661 . ISBN   978-1450378994. OCLC 1175621908 . 
  13. "واجهة برمجة التطبيقات" . قاموس أكسفورد الإنجليزي ( الطبعة الإلكترونية). مطبعة جامعة أكسفورد. (يشترط الاشتراك أو عضوية المؤسسة المشاركة .)
  14. ديت، سي جيه (2019). إي إف كود ونظرية العلاقات: مراجعة وتحليل مفصلان لكتابات كود الرئيسية حول قواعد البيانات . Lulu.com. ص 135. ISBN  978-1684705276.
  15. ديت، سي جيه؛ كود، إي إف (يناير 1975). "المناهج العلائقية والشبكية: مقارنة واجهات برمجة التطبيقات" . في راندال راستين (محرر). وقائع ورشة عمل ACM-SIGMOD لعام 1974 حول وصف البيانات والوصول إليها والتحكم فيها . ورشة عمل SIGMOD 1974. المجلد 2. آن أربور، ميشيغان: رابطة آلات الحوسبة. الصفحات 83-113 . doi : 10.1145/800297.811532 . ISBN   978-1450374187. OCLC 1175623233 . 
  16. كارل، مالامود (1990). تحليل شبكات نوفيل . فان نوستراند رينهولد. ص 294. ISBN  978-0442003647.
  17. 1 2 جين، بريندا؛ ساهني، سوراب. شيفات، أمير (2018). تصميم واجهات برمجة تطبيقات الويب . أورايلي وسائل الإعلام. رقم ISBN 9781492026877.
  18. فيلدينغ، روي (2000). الأنماط المعمارية وتصميم بنى البرمجيات القائمة على الشبكات (أطروحة دكتوراه) . تم الاطلاع عليه في 18 سبتمبر 2020 .
  19. دوتسيكا، فيفي (أغسطس 2010). "واجهات برمجة التطبيقات الدلالية: التوسع نحو الويب الدلالي". المجلة الدولية لإدارة المعلومات . 30 (4): 335-342 . doi : 10.1016/j.ijinfomgt.2009.12.003 .
  20. أوديرسكي، مارتن؛ سبون، ليكس؛ فينرز، بيل (10 ديسمبر 2008). "دمج لغتي سكالا وجافا" . www.artima.com . تاريخ الاسترجاع: 29 يوليو 2016 .
  21. دي فيغيريدو، لويز هنريكي؛ إيروساليمسكي، روبرتو ؛ فيلهو، فالديمار سيليس (1994). "تصميم وتنفيذ لغة لتوسيع التطبيقات" . وقائع الندوة البرازيلية الحادية والعشرين حول البرمجيات والأجهزة . الصفحات 273-284 . CiteSeerX 10.1.1.47.5194 . S2CID 59833827. تاريخ الاسترجاع: 29 يوليو 2016 .   
  22. سينتيس، توني (13 يوليو 2001). "ما هي واجهة برمجة تطبيقات جافا بالضبط؟" . جافا وورلد . تم الاسترجاع في 18 يوليو 2020 .
  23. وينترز، تيتوس؛ توم مانشريك؛ هايروم رايت، محرران. (2020). هندسة البرمجيات في جوجل: دروس مستفادة من البرمجة عبر الزمن . سيباستوبول، كاليفورنيا: أورايلي ميديا. ISBN 9781492082798. OCLC 1144086840 . 
  24. ماسترانجيلو، لويس؛ بونزانيلي، لوكا؛ موتشي، أندريا؛ لانزا، ميشيل؛ هاوسويرث، ماتياس؛ نيستروم، ناثانيال (23 أكتوبر 2015). "الاستخدام على مسؤوليتك الخاصة: واجهة برمجة تطبيقات جافا غير الآمنة في بيئات الاستخدام الفعلي". وقائع مؤتمر ACM SIGPLAN الدولي لعام 2015 حول البرمجة الكائنية والأنظمة واللغات والتطبيقات . نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 695-710 . doi : 10.1145/2814270.2814313 . ISBN  978-1-4503-3689-5.
  25. إيمري، ديفيد. "المعايير، وواجهات برمجة التطبيقات، والواجهات، والروابط" . Acm.org. مؤرشف من الأصل بتاريخ 16 يناير 2015. تم الاطلاع عليه بتاريخ 8 أغسطس 2016 .
  26. "F2PY.org" . F2PY.org . تم الاطلاع عليه بتاريخ 18-12-2011 .
  27. فاولر، مارتن. "انعكاس السيطرة" .
  28. فياض، محمد. "أطر عمل التطبيقات الموجهة للكائنات" .
  29. ليوين، دونالد أ. (1991). دليل مبرمج POSIX . أورايلي وشركاه، ص 1. ISBN  9780937175736تم الاطلاع عليه بتاريخ 2 أغسطس 2016 .
  30. ويست، جويل؛ ديدريك، جيسون (2001). "توحيد المصادر المفتوحة: صعود لينكس في عصر الشبكات" (ملف PDF) . المعرفة والتكنولوجيا والسياسة . 14 (2): 88-112 . doi : 10.1007/PL00022278 . تاريخ الاسترجاع: 2 أغسطس 2016 .
  31. مايكروسوفت (أكتوبر 2001). "دعم نظام التشغيل ويندوز إكس بي" . مايكروسوفت. ص 4. مؤرشف من الأصل بتاريخ 26-09-2009. 
  32. بارني، دوغلاس (2 نوفمبر 1987). "التوازن على حبل النجاح لشركة مايكروسوفت" . مجلة كمبيوتر وورلد . المجلد 21، العدد 44. ص. SR15 . تاريخ الاسترجاع: 8 يونيو 2025 .   
  33. بارني، دوغلاس (7 يوليو 1986). "المحسوبية والشركات الصغيرة" . مجلة كمبيوتر وورلد . المجلد 20، العدد 27. الصفحات 45، 50. تاريخ الاطلاع: 13 يناير 2026 .   
  34. غيتس، بيل؛ مانزي، جيم؛ إسبر، إد (2 نوفمبر 1987). "النقاش الكبير حول البرمجيات" . مجلة كمبيوتر وورلد (مقابلة). المجلد 21، العدد 44. أجراها بول جيلين. ص. SR7 . تاريخ الاسترجاع: 8 يونيو 2025 .   
  35. "مقدمة عن LSB" . مؤسسة لينكس. 21 يونيو 2012. مؤرشف من الأصل في 2015-04-02 . تم الاطلاع عليه في 2015-03-27 .
  36. ستوتون، نيك (أبريل 2005). "تحديث المعايير" (ملف PDF) . USENIX . تم الاطلاع عليه بتاريخ 4 يونيو 2009 .
  37. بيرهوف، كيفن (23 أبريل 2009). "الامتثال لبروتوكول واجهة برمجة التطبيقات في البرمجيات الموجهة للكائنات" (ملف PDF) . معهد كارنيجي ميلون لأبحاث البرمجيات . تم الاطلاع عليه بتاريخ 29 يوليو 2016 .
  38. ويلسون، إم. جيف (10 نوفمبر 2000). "التعامل الذكي مع الوكلاء وRMI" . جافا وورلد . تم الاسترجاع في 18 يوليو 2020 .
  39. هينينغ، ميتشي؛ فينوسكي، ستيف (1999). برمجة كوربا المتقدمة باستخدام لغة سي++ . أديسون-ويسلي . ISBN 978-0201379273تم الاطلاع عليه بتاريخ 16 يونيو 2015 .
  40. "التحويل إلى واجهة برمجة التطبيقات" (ملف PDF) . www.hcltech.com . أغسطس 2014.
  41. بنسليمان، جمال؛ شهرام داستدار؛ أميت شيث (2008). "دمج الخدمات: الجيل الجديد من تطبيقات الويب" . مجلة IEEE للحوسبة عبر الإنترنت . 12 (5). IEEE: 13-15 . Bibcode : 2008IIC....12e..13B . doi : 10.1109/MIC.2008.110 . تاريخ الاسترجاع: 1 أكتوبر 2019 .
  42. نيكولاي، جيمس (23 أبريل 2008)، "ما هو دمج المؤسسات إذن؟" ، بي سي وورلد ، مؤرشف من الأصل في 10 أكتوبر 2017 ، تم الاطلاع عليه في 17 سبتمبر 2017
  43. بار، بن (21 مايو 2009). "تطور واجهة برمجة تطبيقات وسائل التواصل الاجتماعي" . ماشابل . تم الاطلاع عليه بتاريخ 26 يوليو 2016 .
  44. "GET trends/place" . developer.twitter.com . تم الاطلاع عليه بتاريخ 30 أبريل 2020 .
  45. بارناس، د. ل. (1972). "حول المعايير المستخدمة في تقسيم الأنظمة إلى وحدات" (ملف PDF) . اتصالات رابطة مكائن ​​الحوسبة . 15 (12): 1053-1058 . doi : 10.1145/361598.361623 . S2CID 53856438 . 
  46. غارلان، ديفيد؛ شو، ماري (يناير 1994). "مقدمة في هندسة البرمجيات" (ملف PDF) . التطورات في هندسة البرمجيات وهندسة المعرفة . 1. تم الاطلاع عليه بتاريخ 8 أغسطس 2016 .
  47. دي تيرناي، غيريك (10 أكتوبر 2015). "النظام البيئي للأعمال: خلق ميزة تنافسية اقتصادية" . بوست كومبانيز . مؤرشف من الأصل في 17 سبتمبر 2016. تم الاطلاع عليه في 1 فبراير 2016 .
  48. بويد، مارك (21 فبراير 2014). "خاصة، شراكة أم عامة: أي استراتيجية لواجهة برمجة التطبيقات هي الأفضل للأعمال؟" . ProgrammableWeb . تم الاطلاع عليه في 2 أغسطس 2016 .
  49. فايسبروت، أليسون (7 يوليو 2016). "واجهات برمجة تطبيقات خدمات السيارات منتشرة في كل مكان، ولكن ما الفائدة التي تعود على تطبيقات الشركاء؟" . AdExchanger .
  50. "وثائق واجهة برمجة تطبيقات Cloudflare الإصدار 4" . Cloudflare . 25 فبراير 2020. تم الاطلاع عليه بتاريخ 27 فبراير 2020 .
  51. ليو، زيل (17 يناير 2018). "واجهات برمجة تطبيقات خدمات السيارات منتشرة في كل مكان، ولكن ما الفائدة التي تعود على تطبيقات الشركاء؟" . مجلة سماشينغ . تم الاطلاع عليه بتاريخ 27 فبراير 2020 .
  52. 1 2 شي، لين؛ تشونغ، هاو؛ شي، تاو؛ لي، مينغشو (2011). دراسة تجريبية حول تطور توثيق واجهات برمجة التطبيقات . المؤتمر الدولي حول المناهج الأساسية لهندسة البرمجيات. سلسلة محاضرات في علوم الحاسوب. المجلد 6603. الصفحات 416-431 . doi : 10.1007/978-3-642-19811-3_29 . ISBN   978-3-642-19810-6تم الاطلاع عليه بتاريخ 22 يوليو 2016 .
  53. google/guava: مكتبات جوجل الأساسية للغة جافا على جيت هاب
  54. أوراكل. "كيفية ووقت إيقاف واجهات برمجة التطبيقات" . وثائق Java SE . تم الاطلاع عليه في 2 أغسطس 2016 .
  55. مينديز، دييغو؛ بودري، بينوا؛ مونبيروس، مارتن (2013). دليل تجريبي على التنوع واسع النطاق في استخدام واجهات برمجة التطبيقات (API) للبرمجيات الموجهة للكائنات . المؤتمر الدولي الثالث عشر لعام 2013 التابع لمعهد مهندسي الكهرباء والإلكترونيات (IEEE) حول تحليل ومعالجة شفرة المصدر (SCAM). الصفحات 43-52 . arXiv : 1307.4062 . doi : 10.1109/SCAM.2013.6648183 . ISBN  978-1-4673-5739-5. S2CID 6890739 . 
  56. تاكاناشي، دين (19 فبراير 2020). "أكامي: مجرمو الإنترنت يهاجمون واجهات برمجة التطبيقات في شركات الخدمات المالية" . فينشر بيت . تم الاطلاع عليه بتاريخ 27 فبراير 2020 .
  57. ديكل، أوري؛ هيربسليب، جيمس د. (مايو 2009). "تحسين سهولة استخدام توثيق واجهة برمجة التطبيقات من خلال نشر المعرفة". معهد أبحاث البرمجيات، كلية علوم الحاسوب . Bibcode : 2009icse.confR..39D . CiteSeerX 10.1.1.446.4214 . 
  58. بارنين، كريس؛ ترويد، كريستوف (مايو 2011). "قياس توثيق واجهات برمجة التطبيقات على الويب" . وقائع ورشة العمل الدولية الثانية حول الويب 2.0 لهندسة البرمجيات . الصفحات 25-30 . doi : 10.1145/1984701.1984706 . ISBN  9781450305952S2CID 17751901. تم الاسترجاع في 22 يوليو 2016 . 
  59. معالج، وليد؛ روبيلارد، مارتن ب. (سبتمبر 2012). "أنماط المعرفة في وثائق مرجع واجهة برمجة التطبيقات" (ملف PDF) . معاملات IEEE في هندسة البرمجيات . 39 (9): 1264-1282 . doi : 10.1109/TSE.2013.12 . تاريخ الاسترجاع: 22 يوليو 2016 .
  60. مونبيروس، مارتن؛ إيشبيرغ، مايكل؛ تيكس، إليف؛ ميزيني، ميرا (3 ديسمبر 2011). "ما الذي ينبغي على المطورين الانتباه إليه؟ دراسة تجريبية حول توجيهات توثيق واجهة برمجة التطبيقات". هندسة البرمجيات التجريبية . 17 (6): 703-737 . arXiv : 1205.6363 . doi : 10.1007/s10664-011-9186-4 . S2CID 8174618 . 
  61. "التعليقات" . شركة صن مايكروسيستمز . مؤرشف من الأصل بتاريخ 25-09-2011 . تم الاطلاع عليه بتاريخ 30-09-2011 ..
  62. بروش، مارسيل؛ ميزيني، ميرا؛ مونبيروس، مارتن (2010). استخراج توجيهات الفئات الفرعية لتحسين إعادة استخدام الأطر البرمجية . المؤتمر السابع لجمعية مهندسي الكهرباء والإلكترونيات (IEEE) حول استخراج مستودعات البرمجيات (MSR 2010). الصفحات 141-150 . CiteSeerX 10.1.1.434.15 . doi : 10.1109/msr.2010.5463347 . ISBN   978-1-4244-6802-7. S2CID 1026918 . 
  63. "أوراكل ونهاية البرمجة كما نعرفها" . دكتور دوبس. 1 مايو 2012. تم الاطلاع عليه بتاريخ 9 مايو 2012 .
  64. «قاضٍ في قضية أوراكل: لا يمكن حماية واجهات برمجة التطبيقات بحقوق النشر» . تي جي ديلي. 1 يونيو 2012. مؤرشف من الأصل في 31 يوليو 2020. تم الاطلاع عليه بتاريخ 6 ديسمبر 2012 .
  65. "شركة أوراكل أمريكا ضد شركة جوجل" (ملف PDF) . مجلة وايرد . 31 مايو 2012. تاريخ الاطلاع: 22 سبتمبر 2013 .
  66. "Oracle Am., Inc. v. Google Inc., No. 13-1021, Fed. Cir. 2014" . Justia Law .
  67. روزنبلات، سيث (9 مايو 2014). "المحكمة تنحاز إلى أوراكل ضد أندرويد في استئناف براءة اختراع جافا" . سي نت . تم الاسترجاع في 10 مايو 2014 .
  68. "جوجل تتفوق على أوراكل - أندرويد يستخدم واجهات برمجة تطبيقات جافا استخدامًا عادلًا" . آرس تكنيكا . 26 مايو 2016. تاريخ الاسترجاع: 28 يوليو 2016 .
  69. ديكر، سوزان (27 مارس 2018). "أوراكل تفوز بإحياء قضية بمليارات الدولارات ضد جوجل" . بلومبرج بيزنس ويك . تم الاطلاع عليه في 27 مارس 2018 .
  70. لي، تيموثي (25 يناير 2019). "جوجل تطلب من المحكمة العليا نقض حكم كارثي بشأن حقوق الطبع والنشر لواجهات برمجة التطبيقات" . آرس تكنيكا . تم الاطلاع عليه في 8 فبراير 2019 .
  71. vkimber (2020-09-28). "Google LLC v. Oracle America, Inc" . معهد المعلومات القانونية (LII) . تم الاطلاع عليه بتاريخ 2021-03-06 .
  72. "المحكمة العليا للولايات المتحدة، رقم 18-956، شركة جوجل المحدودة، المدعية ضد شركة أوراكل أمريكا" (ملف PDF) . 5 أبريل 2021.

للمزيد من القراءة