Uygulama programlama Arayüzü
Bir bilgisayar programında , uygulama programlama arabirimi ( API ), İtalyanca " uygulama programlama arabirimi "nde, farklı bilgisayarlar arasında veya farklı yazılımlar arasında veya bunlar arasında belirli bir iletişim sorununu çözmek için tasarlanmış bir dizi prosedürü (genellikle belirli araçlarla gruplandırılmış) belirtir. farklı yazılım bileşenleri [1] ; Genellikle bu terim bir programlama dilinin [2] yazılım kitaplıklarını belirtir , ancak daha doğru olarak API, kitaplıkların belirli bir bilgi alışverişi sorununun üstesinden gelmek için kullanıldığı yöntemdir [3] .
Özellikler
API'ler için çeşitli tasarım modelleri vardır. Maksimum yürütme hızı için tasarlanan arabirimler genellikle bir dizi işlev , prosedür , değişken ve veri yapısından oluşur . ECMAScript / JavaScript gibi ifadeleri değerlendirmek için kullanılan yorumlayıcılar gibi başka modeller de vardır . İyi bir API, bir "kara kutu", yani programcının API'nin nasıl çalıştığını daha düşük bir seviyede bilmekten kaçınmasını sağlayan bir soyutlama seviyesi sağlar. Bu, API'ye dayanan kodu değiştirmeden API içindeki işlevleri yeniden tasarlamanıza veya geliştirmenize olanak tanır.
API yayını ile ilgili iki politika vardır:
- Bazı şirketler kıskançlıkla API'lerini saklar. Örneğin Microsoft , yalnızca kayıtlı Xbox geliştiricilerine resmi API'ler sağlar . Bunun nedeni, korsanlığı sınırlamak için konsol için oyun yazabilecek kişi sayısını kısıtlamayı amaçlamasıdır .
- Diğer şirketler API'leri herkese açık olarak dağıtır. Örneğin, Microsoft'un kendisi, Windows platformu için yazılım yazmak için Microsoft Foundation Classes (MFC) dahil olmak üzere Windows API'si hakkında halka bilgi sağlar .
Bir işletim sisteminin standart API'leri gibi bazı API'ler ayrı bir kitaplık olarak uygulanır ve işletim sistemiyle birlikte dağıtılır. Diğer API'ler, yazılım yayıncılarının API'yi doğrudan uygulamaya entegre etmesini gerektirir. Bu, önceki örnekte başka bir ayrım yapar.
Microsoft Windows API'leri işletim sistemiyle birlikte sağlanır ve herkes bunları kullanabilir. Video oyun konsolları gibi gömülü sistemler için yazılımlar genellikle API'lerin uygulama ile entegre edildiği kategoriye girer. Resmi Playstation API belgeleri ilginç bir okuma olsa da, ayrı bir kitaplık veya geliştirici kiti biçiminde ilgili uygulama olmadan neredeyse işe yaramaz.
Erişimi ve kullanımı için ücret ödenmesini gerektirmeyen bir API'ye "açık" denir. GPL lisansı altında dağıtılan yazılımlar gibi ücretsiz yazılımlar tarafından sağlanan API'ler , yazılımın kaynağına erişebildiğiniz ve nasıl çalıştığını anlayabildiğiniz için tanım gereği açıktır . Bir API için bir " referans uygulaması " olsa bile ( Windows API için Microsoft Windows gibi ), alternatif bir uygulamanın oluşturulmasını engelleyen hiçbir şey yoktur. Örneğin, Windows API'sinin çoğu, Wine adlı yazılım tarafından bir Unix sisteminde sağlanabilir .
Genel olarak, uyumlu bir API üretmek için bir API'nin uygulanmasını analiz etmek, yasaların ihlalidir. Bu tekniğe tersine mühendislik denir . Bu davalardaki yasal durum belirsizdir, bu nedenle sorunu tersine mühendislik faaliyeti başlamadan önce ele almak daha iyidir. Örneğin, bir API'nin kendisi bir patent içerebilir .
Amaç
Amaç , genellikle donanım ve programcı arasında veya düşük ve yüksek seviyeli yazılım arasında daha yüksek düzeyde bir soyutlama elde etmek, böylece programlama işini basitleştirmektir . Aslında, API, programcıların program için gerekli tüm işlevleri her seferinde sıfırdan, yani düşük bir seviyeden yeniden yazmaktan kaçınmasına ve böylece daha geniş kod yeniden kullanımı kavramına girmesine izin verir . Bu nedenle API'lerin kendileri orta düzeyde bir soyutlamayı temsil eder: belirli bir API sağlayan yazılıma API uygulaması denir.
Posix
API'lerin birçok çeşidi olduğundan, 1985 yılında bir standart oluşturmak için bir proje oluşturuldu. Bu standartları kapsayan aile, adı Richard Stallman tarafından IEEE'nin ezberlemesi kolay bir isim talebi üzerine oluşturulan Posix ("Portable Operating System Interface for Unix"in kısaltması) adını alır.
Kullanım örneği
Çeşitli soyutlama seviyelerine sahip bir ekrana " Merhaba dünya " kelimelerini yazan bir uygulama düşünebilirsiniz :
- Hepsini kendin yaz:
- Bir kağıda H, e, l, l, o, W, o, r, l, d harflerinin şekillerini çizin.
- Harflerin her birinin şekline sahip siyah beyaz karelerden oluşan bir matris hazırlayın.
- CPU'yu bu matrisi video kartının çerçeve arabelleğine yerleştirecek şekilde programlamanın bir yolunu bulun .
- Çerçeve arabelleği içeriğinden doğru sinyali üretmek için video kartını hazırlayın .
- Görevin bir kısmını gerçekleştirmek için
bir işletim sistemi kullanın:
- İşletim sistemi tarafından sağlanan "font" adlı bir veri yapısını belleğe yükleyin.
- İşletim sisteminin boş bir pencere göstermesini sağlayın.
- Yüklenen yazı tipini kullanarak işletim sisteminin pencereye "Merhaba Dünya" metnini çizmesini sağlayın.
- Tüm işler için (sırasıyla işletim sistemini kullanan) bir uygulama kullanın:
- "Merhaba Dünya" kelimelerini içeren bir HTML belgesi yazın .
- Belgeyi bir web tarayıcısıyla açın .
Açıkçası, ilk seviye yaklaşımı birçok adım gerektirir ve bunların her biri sonraki seviyelerden çok daha karmaşıktır. İlk yaklaşımın diğer bir dezavantajı, ekranda belirli bir miktarda bilgi görüntülemeniz gerekiyorsa onu kullanmanın pratik olmamasıdır; ikinci yaklaşımda işlem çok daha basittir ve üçüncüde "Merhaba Dünya" yazmak yeterlidir. Tipik olarak, daha yüksek seviyeli API'lerin kullanılması bir miktar esneklik kaybı içerir; örneğin, kenarları yanıp sönen metni bir nokta etrafında döndürmek web tarayıcısı düzeyinde çok zor olabilirken, bu görev daha düşük bir düzeyde kolayca yapılabilir. Bu fark, bir API kullanılarak karşılaşılabilecek tipik bir değiş tokuş örneğidir.
API örnekleri
- Bilgisayarın BIOS'una yapılan çağrılar için arayüz
- HTML gibi çeşitli uygulamaların Belge Nesne Modelleri
- Tek UNIX Spesifikasyonu
- Microsoft'un Windows API'si _
- Java 2 Enterprise Edition Java EE API'si
- SCSI cihazları için ASPI arayüzü
- Macintosh macOS Sunucusu için Karbon ve Kakao API'leri
- API ve Web hizmeti
- Ortak Nesne İstek Aracısı Mimarisi ( CORBA )
- Entegre Ağlar için Java API'leri ( JAIN )
- Basit Ağ Yönetim Protokolü ( SNMP )
- Evrensel Tak ve Çalıştır ( UPnP )
- Google Inc.'den Google API'leri
- DirectX ve OpenGL'ye alternatif olarak AMD tarafından geliştirilen Mantle , düşük seviyeli API'ler
- Java Telefon API'si , dağıtılmış çağrı merkezlerini yönetmek için Java API'si.
Notlar
- ^ Martin Reddy, C++ için API tasarımı , Morgan Kaufmann, 2011, ISBN 978-0-12-385004-1 , OCLC 704559821 . 16 Mayıs 2022'de alındı .
- ^ İzlenecek yol: Docs.Microsoft.com'da Windows API'sini (Visual Basic) Çağırma , 20 Temmuz 2015. Erişim tarihi : 13 Şubat 2019 .
- ^ API vs Kütüphane (Fark Nedir?) , Rapidapi.com'da .
İlgili öğeler
Dış bağlantılar
- API (bilgisayar bilimi) , Sapienza.it üzerinde , De Agostini .