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

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

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

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

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

غاية

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

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

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

تمت مقارنة بناء البرامج باستخدام واجهات برمجة التطبيقات باستخدام ألعاب بناء المكعبات، مثل مكعبات ليغو . تعتبر خدمات البرامج أو مكتبات البرامج مماثلة للمكعبات؛ يمكن ضمها معًا عبر واجهات برمجة التطبيقات الخاصة بها، مما يؤدي إلى تكوين منتج برمجي جديد. [6] تسمى عملية الضم بالتكامل . [3]

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

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

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

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

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

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

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

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

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

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

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

لقطة شاشة لوثائق واجهة برمجة التطبيقات على الويب التي كتبتها وكالة ناسا

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

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

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

أنواع

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

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

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

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

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

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

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

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

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

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

Linux و Berkeley Software Distribution هي أمثلة لأنظمة التشغيل التي تنفذ واجهات برمجة التطبيقات POSIX. [29]

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

تختلف واجهة برمجة التطبيقات عن واجهة التطبيق الثنائية (ABI) في أن واجهة برمجة التطبيقات تعتمد على الكود المصدر بينما تعتمد واجهة التطبيق الثنائية على الكود الثنائي . على سبيل المثال، توفر POSIX واجهات برمجة التطبيقات بينما توفر Linux Standard Base واجهة تطبيق ثنائية. [31] [32]

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

تسمح واجهات برمجة التطبيقات عن بعد للمطورين بالتلاعب بالموارد عن بعد من خلال البروتوكولات ، والمعايير المحددة للاتصال التي تسمح لتقنيات مختلفة بالعمل معًا، بغض النظر عن اللغة أو المنصة. على سبيل المثال، تسمح واجهة برمجة تطبيقات Java Database Connectivity للمطورين بالاستعلام عن العديد من أنواع قواعد البيانات المختلفة بنفس مجموعة الوظائف، بينما تستخدم واجهة برمجة تطبيقات استدعاء الطريقة عن بعد في Java بروتوكول الطريقة عن بعد في Java للسماح باستدعاء الوظائف التي تعمل عن بعد، ولكنها تبدو محلية للمطور. [33] [34]

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

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

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

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

عند استخدامها في سياق تطوير الويب ، يتم تعريف واجهة برمجة التطبيقات عادةً على أنها مجموعة من المواصفات، مثل رسائل طلب بروتوكول نقل النص التشعبي (HTTP)، إلى جانب تعريف لهيكل رسائل الاستجابة، عادةً بتنسيق لغة ترميز قابلة للتوسيع ( XML ) أو تدوين كائنات JavaScript ( JSON ). قد يكون أحد الأمثلة واجهة برمجة تطبيقات شركة شحن يمكن إضافتها إلى موقع ويب يركز على التجارة الإلكترونية لتسهيل طلب خدمات الشحن وتضمين أسعار الشحن الحالية تلقائيًا، دون الحاجة إلى إدخال مطور الموقع جدول أسعار الشاحن في قاعدة بيانات الويب. في حين أن "واجهة برمجة تطبيقات الويب" كانت مرادفة تاريخيًا لخدمة الويب ، إلا أن الاتجاه الأخير (ما يسمى بالويب 2.0 ) كان يبتعد عن خدمات الويب القائمة على بروتوكول الوصول إلى الكائنات البسيط ( SOAP ) والهندسة المعمارية الموجهة للخدمات (SOA) نحو موارد ويب أكثر مباشرة على غرار نقل الحالة التمثيلية (REST) ​​والهندسة المعمارية الموجهة للموارد (ROA). [37] يرتبط جزء من هذا الاتجاه بحركة الويب الدلالي نحو إطار وصف الموارد (RDF)، وهو مفهوم لتعزيز تقنيات هندسة الأنطولوجيا المستندة إلى الويب . تسمح واجهات برمجة تطبيقات الويب بدمج واجهات برمجة تطبيقات متعددة في تطبيقات جديدة تُعرف باسم mashups . [38] في مجال الوسائط الاجتماعية، سمحت واجهات برمجة تطبيقات الويب لمجتمعات الويب بتسهيل مشاركة المحتوى والبيانات بين المجتمعات والتطبيقات. بهذه الطريقة، يمكن نشر المحتوى الذي تم إنشاؤه في مكان واحد بشكل ديناميكي وتحديثه إلى مواقع متعددة على الويب. [39] على سبيل المثال، تتيح واجهة برمجة تطبيقات REST الخاصة بـ Twitter للمطورين الوصول إلى بيانات Twitter الأساسية وتوفر واجهة برمجة تطبيقات البحث طرقًا للمطورين للتفاعل مع بيانات البحث والاتجاهات على Twitter. [40]

تصميم

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

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

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

السياسات الرئيسية لإصدار واجهة برمجة التطبيقات هي: [44]

  • خاص : واجهة برمجة التطبيقات مخصصة للاستخدام الداخلي للشركة فقط.
  • الشريك : يمكن فقط لشركاء الأعمال المحددين استخدام واجهة برمجة التطبيقات. على سبيل المثال، تسمح شركات تأجير المركبات مثل Uber و Lyft للمطورين المعتمدين من جهات خارجية بطلب الرحلات مباشرة من داخل تطبيقاتهم. يسمح هذا للشركات بممارسة مراقبة الجودة من خلال اختيار التطبيقات التي يمكنها الوصول إلى واجهة برمجة التطبيقات، ويوفر لها مصدر دخل إضافي. [45]
  • عامة : واجهة برمجة التطبيقات متاحة للاستخدام من قبل الجمهور. على سبيل المثال، تجعل Microsoft واجهة برمجة تطبيقات Windows عامة، وتصدر Apple واجهة برمجة التطبيقات Cocoa ، بحيث يمكن كتابة البرامج لمنصاتها . لا يمكن الوصول إلى جميع واجهات برمجة التطبيقات العامة بشكل عام من قبل الجميع. على سبيل المثال، يستخدم مزودو خدمات الإنترنت مثل Cloudflare أو Voxility واجهات برمجة تطبيقات RESTful للسماح للعملاء والبائعين بالوصول إلى معلومات البنية الأساسية الخاصة بهم، وإحصائيات DDoS، وأداء الشبكة أو عناصر التحكم في لوحة المعلومات. [46] يتم منح الوصول إلى مثل هذه واجهات برمجة التطبيقات إما من خلال "رموز واجهة برمجة التطبيقات" أو التحقق من حالة العميل. [47]

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

إن العامل المهم الذي يجعل واجهة برمجة التطبيقات عامة هو "استقرار الواجهة". إن التغييرات التي تطرأ على واجهة برمجة التطبيقات ـ على سبيل المثال إضافة معلمات جديدة إلى استدعاء وظيفة ـ قد تؤدي إلى كسر التوافق مع العملاء الذين يعتمدون على واجهة برمجة التطبيقات تلك. [48]

عندما تكون أجزاء من واجهة برمجة التطبيقات المعروضة علنًا عرضة للتغيير وبالتالي غير مستقرة، فيجب توثيق هذه الأجزاء من واجهة برمجة تطبيقات معينة صراحةً على أنها "غير مستقرة". على سبيل المثال، في مكتبة Google Guava ، يتم تمييز الأجزاء التي تعتبر غير مستقرة، والتي قد تتغير قريبًا، بتعليق Java @Beta . [49]

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

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

التوثيق

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

تعتبر الوثائق أمرًا بالغ الأهمية لتطوير التطبيقات وصيانتها باستخدام واجهة برمجة التطبيقات. [53] توجد وثائق واجهة برمجة التطبيقات تقليديًا في ملفات التوثيق ولكن يمكن أيضًا العثور عليها في وسائل التواصل الاجتماعي مثل المدونات والمنتديات ومواقع الأسئلة والأجوبة. [54]

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

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

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

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

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

في عام 2010، رفعت شركة أوراكل دعوى قضائية ضد جوجل لتوزيعها تطبيقًا جديدًا للغة جافا مضمنًا في نظام التشغيل أندرويد. [59] لم تحصل جوجل على أي إذن لإعادة إنتاج واجهة برمجة تطبيقات جافا، على الرغم من منح الإذن لمشروع OpenJDK المماثل. حكم القاضي ويليام ألسوب في قضية أوراكل ضد جوجل بأن واجهات برمجة التطبيقات لا يمكن حمايتها بحقوق الطبع والنشر في الولايات المتحدة وأن انتصار أوراكل كان ليوسع نطاق حماية حقوق الطبع والنشر على نطاق واسع ليشمل "مجموعة وظيفية من الرموز" ويسمح بحماية أوامر البرامج البسيطة بحقوق الطبع والنشر:

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

تم نقض حكم ألسوب في عام 2014 بعد الاستئناف أمام محكمة الاستئناف للدائرة الفيدرالية ، على الرغم من أن مسألة ما إذا كان مثل هذا الاستخدام لواجهات برمجة التطبيقات يشكل استخدامًا عادلاً ظلت دون حل. [62] [63]

في عام 2016، وبعد محاكمة استمرت أسبوعين، قررت هيئة محلفين أن إعادة تنفيذ جوجل لواجهة برمجة تطبيقات جافا يشكل استخدامًا عادلاً ، لكن أوراكل تعهدت باستئناف القرار. [64] فازت أوراكل في استئنافها، حيث حكمت محكمة الاستئناف للدائرة الفيدرالية بأن استخدام جوجل لواجهات برمجة التطبيقات لا يؤهل للاستخدام العادل. [65] في عام 2019، استأنفت جوجل أمام المحكمة العليا للولايات المتحدة بشأن أحكام قابلية حقوق النشر والاستخدام العادل، ومنحت المحكمة العليا المراجعة. [66] وبسبب جائحة كوفيد-19 ، تأخرت جلسات الاستماع الشفوية في القضية حتى أكتوبر 2020. [67]

وقد قضت المحكمة العليا في هذه القضية لصالح جوجل. [68]

أمثلة

انظر أيضا

مراجع

  1. ^ Reddy, Martin (2011). API Design for C++. Elsevier Science. ص. 1. ISBN 9780123850041.
  2. ^ ab Lane, Kin (10 أكتوبر 2019). "مقدمة إلى واجهات برمجة التطبيقات: تاريخ واجهات برمجة التطبيقات". Postman . تم الاسترجاع في 18 سبتمبر 2020. عندما تسمع الاختصار "API" أو نسخته الموسعة "واجهة برمجة التطبيقات"، فإنه يشير دائمًا تقريبًا إلى نهجنا الحديث، حيث نستخدم HTTP لتوفير الوصول إلى البيانات القابلة للقراءة آليًا بتنسيق JSON أو XML، وغالبًا ما يشار إليها ببساطة باسم "واجهات برمجة تطبيقات الويب". كانت واجهات برمجة التطبيقات موجودة منذ فترة طويلة تقريبًا مثل الحوسبة، لكن واجهات برمجة تطبيقات الويب الحديثة بدأت في التبلور في أوائل العقد الأول من القرن الحادي والعشرين.
  3. ^ ab Pedro, Bruno (2024). بناء منتج واجهة برمجة التطبيقات: تصميم وتنفيذ وإصدار وصيانة منتجات واجهة برمجة التطبيقات التي تلبي احتياجات المستخدم. Packt Publishing. ص. 4. ISBN 9781837638536.
  4. ^ Biehl, Matthias (2016). RESTful API Design . API-University Press. ص. 10. ISBN 9781514735169.
  5. ^ abc Clarke, Steven (2004). "قياس قابلية استخدام واجهة برمجة التطبيقات". Dr. Dobb's . تم الاسترجاع في 29 يوليو 2016 .
  6. ^ جين، بريندا؛ ساهني، سوراب؛ شيفات، أمير (2018). "مقدمة". تصميم واجهات برمجة تطبيقات الويب: بناء واجهات برمجة تطبيقات يحبها المطورون. أوريلي ميديا. رقم ISBN 9781492026877.
  7. ^ Geewax, JJ (2021). أنماط تصميم API. Manning. ص. 6. ISBN 9781638350330.
  8. ^ جاكوبسون، دانييل؛ برايل، جريج؛ وودز، دان (2011). واجهات برمجة التطبيقات: دليل استراتيجي. أوريلي ميديا. ص. 4. رقم ISBN 9781449321642.
  9. ^ ab Database architectures – a feasibility workshop (Report). واشنطن العاصمة: وزارة التجارة الأمريكية، المكتب الوطني للمعايير. أبريل 1981. ص 45-47. hdl :2027/mdp.39015077587742. LCCN  81600004. NBS special publication 500-76 . تم الاسترجاع في 18 سبتمبر 2020 .
  10. ^ اي بي سي دي بلوخ ، جوشوا (8 أغسطس 2018). تاريخ موجز ومبهج لواجهة برمجة التطبيقات (الكلام). كيوكون. سان فرانسيسكو: إنفوك . تم الاسترجاع في 18 سبتمبر 2020 .
  11. ^ ab Cotton, Ira W.; Greatorex, Frank S. (December 1968). "Data structures and techniques for remote computer graphics". AFIPS '68: Proceedings of the December 9–11, 1968, Fall Joint Computer Conference . AFIPS 1968 Fall Joint Computer Conference. المجلد الأول. سان فرانسيسكو، كاليفورنيا: رابطة آلات الحوسبة. ص 533-544. doi :10.1145/1476589.1476661. ISBN 978-1450378994. OCLC  1175621908.
  12. ^ "واجهة برنامج التطبيق" . قاموس أكسفورد الإنجليزي (الطبعة الإلكترونية). مطبعة جامعة أكسفورد . (يشترط الاشتراك أو العضوية في المؤسسة المشاركة.)
  13. ^ Date, CJ (2019). EF Codd and Relational Theory: A Detailed Review and Analysis of Codd's Major Database Writings. Lulu.com. ص. 135. ISBN 978-1684705276.
  14. ^ Date, CJ; Codd, EF (January 1975). "The relationshipal and network approach: Comparison of the application programming interfaces". في Randall Rustin (محرر). وقائع ورشة عمل ACM-SIGMOD لعام 1974 حول وصف البيانات والوصول إليها والتحكم فيها . ورشة عمل SIGMOD لعام 1974. المجلد 2. آن أربور، ميشيغان: رابطة آلات الحوسبة. ص 83-113. doi :10.1145/800297.811532. ISBN 978-1450374187. OCLC  1175623233.
  15. ^ كارل، مالامود (1990). تحليل شبكات نوفيل. فان نوستراند راينولد. ص 294. ISBN 978-0442003647.
  16. ^ أب جين ، بريندا. ساهني، سوراب. شيفات، أمير (2018). تصميم واجهات برمجة تطبيقات الويب. أورايلي وسائل الإعلام. رقم ISBN 9781492026877.
  17. ^ فيلدينج، روي (2000). الأنماط المعمارية وتصميم هياكل البرمجيات القائمة على الشبكات (دكتوراه) . تم الاسترجاع في 18 سبتمبر 2020 .
  18. ^ Dotsika, Fefie (أغسطس 2010). "واجهات برمجة التطبيقات الدلالية: التوسع نحو الويب الدلالي". المجلة الدولية لإدارة المعلومات . 30 (4): 335-342. doi :10.1016/j.ijinfomgt.2009.12.003.
  19. ^ Odersky, Martin; Spoon, Lex; Venners, Bill (10 December 2008). "دمج سكالا وجافا". www.artima.com . تم الاسترجاع في 29 يوليو 2016 .
  20. ^ دي فيغيريدو، لويز هنريكي؛ إيروسالمشي, روبرتو ; فيلهو، فالديمار سيليس (1994). “تصميم وتنفيذ لغة لتوسيع التطبيقات”. TeCGraf Grupo de Tecnologia Em Computacao Grafica : 273–284. سيتيسيركس 10.1.1.47.5194 . S2CID  59833827 . تم الاسترجاع 29 يوليو 2016 . 
  21. ^ Sintes, Tony (13 July 2001). "Just what is the Java API however?". JavaWorld . تم الاسترجاع في 2020-07-18 .
  22. ^ وينترز، تيتوس؛ توم مانشريك؛ هيروم رايت، محررون (2020). هندسة البرمجيات في جوجل: الدروس المستفادة من البرمجة بمرور الوقت . سيباستوبول، كاليفورنيا: أوريلي ميديا. رقم ISBN 9781492082798. OCLC  1144086840.
  23. ^ ماسترانجلو، لويس؛ بونزانيلي، لوكا؛ موتشي، أندريا؛ لانزا، ميشيل؛ هاوسويرث، ماتياس؛ نيستروم، ناثانيال (2015-10-23). ​​"الاستخدام على مسؤوليتك الخاصة: واجهة برمجة تطبيقات جافا غير الآمنة في البرية". وقائع مؤتمر ACM SIGPLAN الدولي لعام 2015 حول البرمجة الموجهة للكائنات والأنظمة واللغات والتطبيقات . OOPSLA 2015. نيويورك، نيويورك، الولايات المتحدة: رابطة آلات الحوسبة. ص. 695-710. doi :10.1145/2814270.2814313. ISBN 978-1-4503-3689-5.
  24. ^ إيمري، ديفيد. "المعايير وواجهات برمجة التطبيقات والواجهات والارتباطات". Acm.org. مؤرشف من الأصل في 2015-01-16 . تم الاسترجاع في 2016-08-08 .
  25. ^ "F2PY.org". F2PY.org . تم الاسترجاع في 2011-12-18 .
  26. ^ فاولر، مارتن. "انعكاس السيطرة".
  27. ^ فياض، محمد. "أطر عمل التطبيقات الموجهة للكائنات".
  28. ^ Lewine, Donald A. (1991). POSIX Programmer's Guide. O'Reilly & Associates, Inc. p. 1. ISBN 9780937175736تم الاسترجاع بتاريخ 2 أغسطس 2016 .
  29. ^ ويست، جويل؛ ديدريك، جيسون (2001). "توحيد معايير المصدر المفتوح: صعود لينكس في عصر الشبكات" (PDF) . المعرفة والتكنولوجيا والسياسة . 14 (2): 88-112. doi :10.1007/PL00022278 . تم الاسترجاع في 2 أغسطس 2016 .
  30. ^ Microsoft (أكتوبر 2001). "الدعم لنظام التشغيل Windows XP". Microsoft. ص. 4. مؤرشف من الأصل في 2009-09-26.
  31. ^ "مقدمة LSB". Linux Foundation. 21 يونيو 2012. تم الاسترجاع في 2015-03-27 .
  32. ^ Stoughton, Nick (أبريل 2005). "تحديث المعايير" (PDF) . USENIX . تم الاسترجاع في 2009-06-04 .
  33. ^ Bierhoff, Kevin (23 أبريل 2009). "توافق بروتوكول واجهة برمجة التطبيقات في البرامج الموجهة للكائنات" (PDF) . معهد أبحاث البرمجيات بجامعة كارنيجي ميلون . تم الاسترجاع في 29 يوليو 2016 .
  34. ^ ويلسون، م. جيف (10 نوفمبر 2000). "كن ذكيًا مع الوكلاء وRMI". JavaWorld . تم الاسترجاع في 2020-07-18 .
  35. ^ Henning, Michi; Vinoski, Steve (1999). Advanced CORBA Programming with C++ . Addison-Wesley . ISBN 978-0201379273تم الاسترجاع بتاريخ 16 يونيو 2015 .
  36. ^ "API-fication" (تحميل PDF) . www.hcltech.com . أغسطس 2014.
  37. ^ بن سليمان، جمال؛ شهرام دوستدار؛ أميت شيث (2008). "خدمات المزج: الجيل الجديد من تطبيقات الويب". IEEE Internet Computing، المجلد 12، العدد 5. معهد مهندسي الكهرباء والإلكترونيات. ص 13-15. مؤرشف من الأصل في 2011-09-28 . تم الاسترجاع في 2019-10-01 .
  38. ^ نيكولاي، جيمس (2008-04-23)، "ما هو إذن مزيج المؤسسات، على أية حال؟"، عالم الكمبيوتر
  39. ^ بار، بن (21 مايو 2009). "تطور واجهة برمجة تطبيقات الوسائط الاجتماعية". ماشابل . تم الاسترجاع في 26 يوليو 2016 .
  40. ^ "احصل على الاتجاهات/المكان". developer.twitter.com . تم الاسترجاع في 2020-04-30 .
  41. ^ بارناس، دي إل (1972). "حول المعايير التي يجب استخدامها في تحليل الأنظمة إلى وحدات" (PDF) . اتصالات جمعية الحوسبة الآلية . 15 (12): 1053-1058. doi :10.1145/361598.361623. S2CID  53856438.
  42. ^ جارلان، ديفيد؛ شو، ماري (يناير 1994). "مقدمة إلى هندسة البرمجيات" (PDF) . التقدم في هندسة البرمجيات وهندسة المعرفة . 1. تم الاسترجاع في 8 أغسطس 2016 .
  43. ^ دي تيرناي، جيريك (10 أكتوبر 2015). "نظام بيئي للأعمال: خلق خندق اقتصادي". BoostCompanies . تم الاسترجاع في 2016-02-01 .
  44. ^ Boyd, Mark (2014-02-21). "Private, Partner or Public: Which API Strategy Is Best for Business؟". ProgrammableWeb . تم الاسترجاع في 2 أغسطس 2016 .
  45. ^ Weissbrot, Alison (7 July 2016). "واجهات برمجة تطبيقات خدمات السيارات موجودة في كل مكان، ولكن ما الفائدة منها بالنسبة لتطبيقات الشركاء؟". AdExchanger .
  46. ^ "وثائق واجهة برمجة تطبيقات Cloudflare v4". cloudflare . 25 فبراير 2020 . تم الاسترجاع في 27 فبراير 2020 .
  47. ^ ليو، زيل (17 يناير 2018). "واجهات برمجة تطبيقات خدمة السيارات موجودة في كل مكان، ولكن ما الفائدة منها بالنسبة لتطبيقات الشركاء". مجلة سماشينج . تم الاسترجاع في 27 فبراير 2020 .
  48. ^ ab Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). دراسة تجريبية حول تطور توثيق واجهة برمجة التطبيقات. محاضرات في علوم الكمبيوتر. المجلد 6603. المؤتمر الدولي حول المناهج الأساسية لهندسة البرمجيات. ص 416-431. doi :10.1007/978-3-642-19811-3_29. ISBN 978-3-642-19810-6تم الاسترجاع بتاريخ 22 يوليو 2016 .
  49. ^ "guava-libraries – Guava: Google Core Libraries for Java 1.6+ – Google Project Hosting". 2014-02-04 . تم الاسترجاع في 2014-02-11 .
  50. ^ Oracle. "كيف ومتى يتم إيقاف استخدام واجهات برمجة التطبيقات". وثائق Java SE . تم الاسترجاع في 2 أغسطس 2016 .
  51. ^ Mendez, Diego; Baudry, Benoit; Monperrus, Martin (2013). "Emprical evidence of large-scale diversity in API use of object-oriented software". 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM) . ص. 43-52. arXiv : 1307.4062 . doi :10.1109/SCAM.2013.6648183. ISBN 978-1-4673-5739-5. S2CID  6890739.
  52. ^ تاكاناشي، دين (19 فبراير 2020). "أكاماي: مجرمو الإنترنت يهاجمون واجهات برمجة التطبيقات في شركات الخدمات المالية". فينتشر بيت . تم الاسترجاع في 27 فبراير 2020 .
  53. ^ Dekel, Uri; Herbsleb, James D. (مايو 2009). "تحسين قابلية استخدام وثائق واجهة برمجة التطبيقات من خلال دفع المعرفة". معهد أبحاث البرمجيات، كلية علوم الكمبيوتر . CiteSeerX 10.1.1.446.4214 . 
  54. ^ بارنين، كريس؛ ترود، كريستوف (مايو 2011). "قياس توثيق واجهة برمجة التطبيقات على الويب". وقائع ورشة العمل الدولية الثانية حول الويب 2.0 لهندسة البرمجيات . ص 25-30. doi :10.1145/1984701.1984706. ISBN 9781450305952. S2CID  17751901 . تم الاسترجاع في 22 يوليو 2016 . {{cite book}}: |journal=تم تجاهله ( مساعدة )
  55. ^ Maalej, Waleed; Robillard, Martin P. (April 2012). "أنماط المعرفة في توثيق مرجع واجهة برمجة التطبيقات" (PDF) . معاملات معهد مهندسي الكهرباء والإلكترونيات في هندسة البرمجيات . تم الاسترجاع في 22 يوليو 2016 .
  56. ^ Monperrus, Martin; Eichberg, Michael; Tekes, Elif; Mezini, Mira (3 ديسمبر 2011). "ما الذي ينبغي للمطورين أن يكونوا على علم به؟ دراسة تجريبية حول توجيهات توثيق واجهة برمجة التطبيقات". هندسة البرمجيات التجريبية . 17 (6): 703-737. arXiv : 1205.6363 . doi :10.1007/s10664-011-9186-4. S2CID  8174618.
  57. ^ "التعليقات التوضيحية". Sun Microsystems . مؤرشف من الأصل في 2011-09-25 . تم استرجاعه في 2011-09-30 ..
  58. ^ Bruch, Marcel; Mezini, Mira; Monperrus, Martin (2010). "Mining subclassing directives to improve framework reuse". 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010) . ص. 141–150. CiteSeerX 10.1.1.434.15 . doi :10.1109/msr.2010.5463347. ISBN  978-1-4244-6802-7. S2CID  1026918.
  59. ^ "Oracle and the End of Programming As We Know It". DrDobbs. 2012-05-01 . تم الاسترجاع في 2012-05-09 .
  60. ^ "لا يمكن حماية واجهات برمجة التطبيقات بحقوق الطبع والنشر كما يقول القاضي في قضية أوراكل". TGDaily. 2012-06-01 . تم الاسترجاع في 2012-12-06 .
  61. ^ "Oracle America, Inc. vs. Google Inc" (PDF) . Wired . 2012-05-31 . تم الاسترجاع في 2013-09-22 .
  62. ^ "Oracle Am., Inc. v. Google Inc., No. 13-1021, Fed. Cir. 2014".
  63. ^ روزنبلات، سيث (9 مايو 2014). "المحكمة تقف إلى جانب أوراكل بشأن أندرويد في استئناف براءة اختراع جافا". سي نت . تم الاسترجاع في 10 مايو 2014 .
  64. ^ "جوجل تتفوق على أوراكل – أندرويد يستخدم "الاستخدام العادل" لواجهات برمجة تطبيقات جافا". Ars Technica . 2016-05-26 . تم الاسترجاع في 2016-07-28 .
  65. ^ ديكر، سوزان (27 مارس 2018). "أوراكل تفوز بإحياء قضية بمليار دولار ضد جوجل". بلومبرج بيزنس ويك . تم الاسترجاع في 27 مارس 2018 .
  66. ^ لي، تيموثي (25 يناير 2019). "جوجل تطلب من المحكمة العليا إلغاء حكم كارثي بشأن حقوق الطبع والنشر الخاصة بواجهة برمجة التطبيقات". Ars Technica . تم الاسترجاع في 8 فبراير 2019 .
  67. ^ vkimber (2020-09-28). "Google LLC v. Oracle America, Inc". LII / معهد المعلومات القانونية . تم الاسترجاع في 2021-03-06 .
  68. ^ "المحكمة العليا للولايات المتحدة، رقم 18-956، شركة جوجل المحدودة، مقدم الالتماس ضد شركة أوراكل أمريكا المحدودة" (PDF) . 5 أبريل 2021.

قراءة إضافية

  • تاينا بوتشر (16 نوفمبر 2013). "أشياء ذات مشاعر قوية: حالة واجهة برمجة تطبيقات تويتر". ثقافة الحوسبة (3). ISSN  2047-2390.يزعم أن "واجهات برمجة التطبيقات بعيدة كل البعد عن كونها أدوات محايدة" وتشكل جزءًا أساسيًا من البرمجة المعاصرة، والتي يُنظر إليها على أنها جزء أساسي من الثقافة.
  • ما هي واجهة برمجة التطبيقات (API)؟ - في رأي المحكمة العليا الأمريكية ، جوجل ضد أوراكل 2021 ، ص 3-7 - "لكل مهمة، يوجد كود كمبيوتر ؛ واجهة برمجة التطبيقات (API) (المعروفة أيضًا باسم واجهة برمجة التطبيقات) هي الطريقة لاستدعاء " كود الكمبيوتر " (التعليمات - مثل الوصفة - وليس تعليمات الطهي، هذه تعليمات الآلة ) ليتم تنفيذها"
  • موري، الابتكار والتغيير – كوري أوندريكا \ 28 فبراير 2014 \ "... اقترح واجهة برمجة تطبيقات عامة للسماح لأجهزة الكمبيوتر بالتحدث مع بعضها البعض". (رابط النص)
  • Forrester: صناعة تكنولوجيا المعلومات: قضية API: Google v. Oracle – 20 مايو 2021 – تنسيق المحتوى: صوت مع نص – الطول 26:41
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=API&oldid=1252039384"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate