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

Question: هل تٌصمم التطبيقات الهاتف المحمول باستخدام البايثون؟

واجهة لبرمجة التطبيقات أو بيئة برمجة التطبيقات  وصفٌ العناصر البرمجيّة حسب وظائفها، و مدخلاتها و مخرجاتها.[1][2][3] الهدف الرئيسيّ منها توفير قائمة من الوظائف المستقلّة تماماً عن الآلية التي نفّذت بها، لتتيح للآخرين التواصل معها من خلال أيّ آلية أخرى.
الأنواع
هناك نوعان من ال(API):
أحدهما يعتمد على لغة البرمجة ؛ بمعنى أنه متاحٌ فقط في لغة برمجة معينة، ويقوم على استخدام syntax وعناصر هذه اللغة لجعله ملائما للإستخدام في هذا السياق.
و الأخر مستقل عن اللغة وهذا يعني أنه مكتوب بطريقة تتيح له أن يستخدم في العديد من لغات البرمجة (عادةً an assembly/C-level interface)  وهذا النمط مطلوب في أنواع الواجهات البرمجية API المستخدمة في service غير المرتبطة بعملية معينة process، أو نظام تشغيل وعادة ما تكون متاحة كروتين منفصل.
مثال عن النوع الثاني هو على سبيل المثال ،الموقع الذي يعرض أماكن تواجد المطاعم في مكان ما يتيح للمستخدم بوضع مجموعة معلومات إضافية على نفس خريطة الموقع التي جلبت من خرائط جوجل (خرائط جوجل)، وذلك بسبب ان خرائط جوجل تحتوي على هذا النوع والذي يسمح بعمل هذا الشيء.واجهة برمجة التطبيقات الخاصة بخرائط جوجل تتحكم بماهية المعلومات التي يمكن للمستخدم استغلالها وما الذي يستطيع ان يعمل بهاوكذلك ليس على الخرائط الخاصة لجوجل فقط بل أنها تستخدم في العديد من المهام الأخرى مثل ربطها بموقع إلكتروني لإتاحة فرصة عملية الشراء من خلال الموقع بالفيزا او كروت الــ ATM.
الإستعمالات
إنشاء واستخدام واجهات برمجة التطبيقات هو موضوع رئيسي في البرمجة المعاصرة.تستفيد التطبيقات عادة من العديد من واجهات البرمجة؛ المنفذة من طرف المكتبات البرمجية التي يمكن أن تستخدم بدورها واجهات برمجة أخرى.
في البنيات الخدمية يمكن للتطبيقات أن تعتمد على الميزات التي تقدمها برامج طرف ثالث عن طريق واجهات برمجة منفذة من طرف خدمات الويب.
واجهة البرمجة تسمح على سبيل المثال للبرنامج بالوصول إلى الخدمات التي يقدمها نظام التشغيل الذي يستضيف البرنامج. واجهة socket هي مثال كلاسيكي من واجهة البرمجة، تسمح للبرنامج من استغلال إمكانيات طبقة الشبكة لنظام التشغيل.
السوق
في صناعة البرمجيات المعاصرة، تستخدم تطبيقات الكمبيوتر عادة العديد من برامج طرف ثالث على سبيل المثال نظام التشغيل، المكتبات القياسية و نظام خوادم التطبيقات. كل من هذه المنتجات لديها واجهة البرمجة الخاصة بها. وبالتالي، كل مبرمج يشارك في تطوير هذه المنتجات، فهو يشارك أيضا، بوعي أو لا، في تجارة واجهات البرمجة.من وجهة نظر تجارية، الواجهات البرمجية هي عبارة عن عقد يصف فيه المقاول وظائف العرض الذي يقدمه و ميزاته و حدوده.
البناء عن طريق تجميع البرامج يتطلب أن تعرف الشركة المصنعة كيفية تفاعل الأجزاء المكونة له، و الذي يقوم بعملية التجميع لا يحتاج إلى معرفة تفاصيل عمل كل جزء طالما أنه يعرف واجهة برامجها و هي الحد الأدنى الذي يحتاج المبرمج إلى معرفته ليكون قادر على استخدام البرمجيات الأخرى. أما لإستعمال وظيفة، فمن الضروري أن يعرف إسمها، متغيراتها و نوع النتيجة.
يتم توزيع واجهات البرمجة في السوق كمنتج برمجيات عادي يتم تحسينه بشكل منتظم. تنفيذ الوظائف التي تستعمل عن طريق واجهات البرمجة يمكن أن يتغير بشكل منتظم أيضا، مع الحفاظ على الواجهة وفقا للعقد.
أمثلة لواجهات برمجة التطبيقات
جراف API للفيسبوك (Graph API Facebook)
API جوجل مابس (Google Maps API)
أمثلة على حسب مجال التطبيق
الرسومات ثلاثية الأبعاد 3D: برنامج OpenGL، دايركت ثري دي (جزء من DirectX)، مانتل (أدفانسد مايكرو دفايسز)
التعامل مع وثائق  SAX، DOM: XML
الولوج إلى قواعد البيانات: ODBC، JDBC
رسم الخرائط ونظم المعلومات الجغرافية
وظائف واجهات البرمجة بلغة جافا
قد يكون لواجهات البرمجة وظائف متعددة. على سبيل المثال،في J2EE، هناك الوظائف التالية:
API إتصال متزامن / غير متزامن
API للإتصالات (الدلائل وقواعد البيانات وتخطيط موارد المؤسسات)
API إدارة المعاملات
API إدارة البريد الإلكتروني
API  تسلسل XML
API تحليل XML
API إدارة سجلات XML (مثل ebXML)
ويمكن استخدام واجهات برمجة التطبيقات لتبسيط الوصول إلى واجهات برمجة تطبيقات أخرى.
يوفر JAXP API سهولة الوصول إلى تطبيقات مختلفة من  SAX و DOM
البيانات المنقولة
يمكن لواجهات البرمجة أن تحمل و تسير بيانات وصفية.
في الواجهات التي توفرها نظم تخطيط موارد المؤسسات
أمثلة:API بيانات 9i Oracle و البيانات الوصفية العلائقية SAP.
في لغات البرمجة
مثال جافا: API للوصول و معالجة البيانات المسجلة في مصدر بيانات.
نظم القرار
مثال: البيانات الوصفية في API ل SAS
في قواعد البيانات العلائقية
مثال: DB2 مكعب
في تطبيقات الهندسة المعرفية
مثال: تحميل  Loading metadata to Livelink using Bulk Loader API's
مراجع


تصنيف:واجهات برمجة التطبيقات