API və ABI haqqında
API (Application Programming Interface) və ABI (Application Binary Interface) proqramlaşdırma dünyasında iki əsas konseptdir, lakin onların funksiyaları və istifadələri fərqlidir. Proqramçılar üçün əsas məqsədlərdən biri proqram təminatlarının bütün Linux distrolarında və bütün dəstəklənən arxitekturalarda işləməsidir. İdeal olaraq, hazırlanmış proqram təminatının portativ olması və konkret paylama və ya arxitekturadan asılı olmaması gözlənilir.Sistem səviyyəsində daşınmanın iki fərqli tərifi var. Bunlardan birincisi Application Programming Interface (API), digəri isə Application Binary Interface (ABI) dir.
API
API-lər proqramların mənbə kodu səviyyəsində bir-biri ilə əlaqə saxlamasına imkan verən əvvəlcədən başa düşülən interfeyslər kimi müəyyən edilə bilər.Ümumiyyətlə, hər bir API müxtəlif interfeyslər (funksiya çağırışları və s.) vasitəsilə daha mürəkkəb və aşağı səviyyəli detalları ehtiva edən prosesin abstraksiyasını təmin edir.
Belə bir abstraksiya vasitəsilə istifadə edilən API təmin edən proqram komponentləri yenilənsə və əsas əməliyyatlarla bağlı metodlar dəyişdirilsə belə, eyni interfeys olduğu müddətcə digər tətbiqlər üçün mənbə kodu səviyyəsində hər hansı dəyişiklik etməyə ehtiyac qalmayacaq. API səviyyəsində təmin edilir.
ABI
API mənbə kodu səviyyəsində bir interfeys təyin edərkən, ABI xüsusi bir arxitektura üçün proqram komponentləri arasında obyekt kodu (ikili) interfeysləri təyin edir.
ABI proqram komponentləri arasında ikili uyğunluğu təmin edir. Bu uyğunluq qorunduğu müddətcə, hətta qarşılıqlı əlaqədə olan proqram komponentlərinin versiyaları dəyişsə belə, onlar yenidən kompilyasiyaya ehtiyac olmadan əvvəlki kimi işləməyə davam edəcəklər.
Funksiyaların necə çağırılacağı, parametrlərin necə ötürülməsi, registrlərin necə istifadə edildiyi, sistem çağırışlarının necə yerinə yetirildiyi, tətbiqlərin əlaqələndirilməsi və ikili obyekt fayl formatı kimi məsələlər ABI daxilində araşdırılır. Bütün arxitekturalar üçün ümumi ABI yaratmaq mümkün deyil (Java Virtual Machine kimi həllər ayrıca başlıq altında qiymətləndirilə bilər).
Proqram təminatının hazırlanması prosesi zamanı ABI öz varlığını hiss etdirmir. İstifadə olunan alətlər silsiləsindəki alətlər (kompilyator, əlaqələndirici və s.) hədəf platforma üçün uyğun ABI ilə kod istehsal edir.
API (Application Programming Interface)
API, proqramların bir-biri ilə əlaqə qurmasına imkan verən bir interfeysdir. API-lər, proqramçıların müəyyən funksiyaları, kitabxanaları və xidmətləri istifadə etmələrini asanlaşdırır. API-lər adətən aşağıdakıları ehtiva edir:
- Funksiyaların siyahısı: Hər bir funksiya üçün parametr və qaytarma dəyərləri.
- Protokollar: Məlumat mübadiləsi üçün istifadə olunan qaydalar.
- İstifadə nümunələri: API-nin necə istifadə olunacağına dair nümunələr.
Məsələn, bir veb xidmətin API-si, proqramçıların o xidmətlə məlumat mübadiləsi etməsinə imkan tanıyır.
ABI (Application Binary Interface)
ABI, iki proqramın bir-biri ilə, xüsusilə binar səviyyədə, necə qarşılıqlı əlaqədə olacağını müəyyən edən qaydalardır. Bu, bir proqramın digər bir proqramın və ya əməliyyat sisteminin komponentləri ilə düzgün işləməsi üçün lazımdır. ABI aşağıdakılara aiddir:
- Dəyişənlərin təmsili: Məlumatların necə saxlanacağı.
- Funksiya çağırışı: Funksiya çağırışlarının necə ediləcəyi (məsələn, hansı registrlərin istifadə olunacağı).
- Məlumat strukturları: Məlumatların təşkilati quruluşları.
ABI, proqramların bir-biri ilə uyğunluğunu təmin edir, xüsusilə fərqli versiyalar və platformalar arasında.
Qısaca
- API proqramların qarşılıqlı əlaqəsi üçün yüksək səviyyəli interfeysdir.
- ABI isə proqramların binar səviyyədə necə qarşılıqlı əlaqədə olduğunu müəyyən edir.
Hər iki termin, proqramlaşdırma və sistem inteqrasiyasında mühüm əhəmiyyət kəsb edir.