- Application Programming Interface (API)
- Application Binary Interface (ABI)
Şimdi sırasıyla bu kavramları inceleyelim;
ABI ( Application Binary Interface )
ABI, yazılım bileşenleri arasında belirli bir mimari için amaç dosyalar (object file) arasında arayüz (interface) tanımlamaktadır. ABI demek ayrı ayrı derlenmiş modüllerin
bir arada çalışabileceklerine dair alt seviyeli ve detaylı teknik
kurallar bütünüdür. ABI uygulama bileşenleri arasında makine kodu
seviyesinde uyumluluğu sağlar. Bu uyum korunduğu müddetçe aralarında
etkileşim bulunan yazılım bileşenlerinin arka planı değişse de yeniden
derlenmeye ihtiyaç duymaksızın eskisi gibi kulanmaya devam ederler.
- Fonksiyonların nasıl çağrılacağı (calling convention),
- Parametrelerin nasıl geçirileceği,
- Yazmaçların kullanım şekilleri,
- Sistem çağrılarının gerçekleştirilme biçimi,
- Amaç dosyaların bağlanması (linklenmesi),
- Amaç (object dosya) formatı gibi konular ABI kavramı içerisinde değerlendirilebilir.
Yazılım geliştirme sürecinde ABI kavramı çok karşımıza çıkmaz.
Kullanılan geliştirme araçları hedef platform için belirlenen ABI
kurallarına uygun kod üretirler. Alt seviye işler yapanlar için bu
genelleme doğru değildir. Sistem düzeyinde kod geliştirmek isteyenlerin
üzerinde çalıştığı ve diğer çalışmasını istediği sistemlerin ABI
standartlarını bilmesi gerekir.
- Fonksiyonların nasıl çağrılacağı (calling convention),
- Parametrelerin nasıl geçirileceği,
- Yazmaçların kullanım şekilleri,
- Sistem çağrılarının gerçekleştirilme biçimi,
- Amaç dosyaların bağlanması (linklenmesi),
- Amaç (object dosya) formatı gibi konular ABI kavramı içerisinde değerlendirilebilir.
API ( Application Program Interface )
API,
uygulamaların kaynak kod seviyesinde birbirleriyle iletişim
kurabilmelerine imkan sağlayan, önceden kararlaştırılmış arayüzler (interface) olarak tanımlanabilir. Genellikle her bir API, daha karmaşık ve alt seviye detaylar içeren bir sürecin, çeşitli arayüzlerle (fonksiyon çağrıları gibi)
soyutlanmasını sağlar. Bu şekildeki bir soyutlama üzerinden kullanılan
API'yi hizmet olarak veren yazılım bileşenleri güncellense ve alt
tarafta yapılan işlemlerle ilgili yöntemler değiştirilmiş bile olsa, API
seviyesinde aynı arayüz sağlandığı müddetçe bu API'yi kullanan uygulamalar için bir değişiklik yapılmasına gerek olmayacaktır.
Kısaca bir yazılımın, kullandığı kütüphanelerin,servislerin sonraki versiyonlarında herhangi bir değişikliğe gitmek zorunda kalmadan problemsiz çalışabilmesini sağlayan bir arayüz tanımlanması API kavramının ürünüdür.