Anasayfa Makale API Nedir, Ne İşe Yarar?

API Nedir, Ne İşe Yarar?

Direct3D, OpenAL, Winsock, OpenGL veya OpenCL. Muhtemelen bunlardan en az birini daha önce internet dünyasında görmüşsünüzdür. Görmediyseniz bile teknolojik bir cihaz kullanıyorsanız bu API’lerden birini kullanan yazılımlarla çalışmış, oyunlar oynamış olmalısınız.

API, dünyanın dört bir yanındaki programcıların işlerini kolaylaştıran yazılım parçalarıdır. Yani aslında bunları dolaylı yoldan da olsa sürekli olarak kullanıyoruz. Peki nedir bu API?

API Nedir?

Bilgi işlem dünyasında arayüz, bir bilgi işlem sisteminin iki veya daha fazla yönü arasında oluşturulan köprüyü temsil eder. Bu köprü, donanım (örneğin USB) veya yazılım şeklinde olabilir.

Esasen arayüz, bilgi işlem elemanlarının birbirlerine bilgi göndermesini sağlar; bazen tek yönlü olarak (örneğin bir USB soketi kullanarak bir dizüstü bilgisayara giriş sinyalleri gönderen bir fare) köprü görevi görür. Ancak arabirim olarak da tabir ettiğimiz arayüzler genelde iki yönlü olarak çalışır.

Uygulama Programlama Arayüzü (Application Programming Interface) anlamına gelen API, web uygulaması, işletim sistemi, veri tabanı, donanımlar, grafikler ve yazılım kütüphanesi için kullanılabilir. Birazdan detaylarına değineceğimiz üzere, API sadece uygulama geliştirmek için değildir.

API nedir

Bir API söz konusu olduğunda, perde arkasında veri aktarımından çok daha fazlası gerçekleşir. Hangi veri taleplerinin yapılabileceğine ilişkin kurallar burada belirlenir, taleplerin nasıl yapılacağını tanımlanır ve verilerin hangi formatta olması gerektiği bildirilir. Özetle bir aracı görevi gören API’ler birçok önemli işlevi yerine getirir, programlamayı çok daha kolay hale getirmemize yardımcı olur.

API’ler sayesinde bilgisayar sisteminin iş işleyişi ve tüm arka plan ayrıntıları programcıdan gizlenir, sadece ihtiyaç duyulan araçlara basit bir şekilde erişim sağlanır. Bazı programlama arayüzleri çok geniş kapsamlıyken, bazıları daha kısıtlı bir amaca hizmet edecek şekilde daha özel rollere sahiptir.

API Türleri

Grafikler

PC oyunları oynuyorsanız 3D grafikler oluşturmak için kullanılan öncü API’lere aşina olmalısınız; OpenGL, Direct3D ve Vulkan. Bunlar herhangi bir render kodu için temel iskele görevi görerek programcıların karmaşık görselleri nispeten kolay bir şekilde oluşturmasına olanak tanır.

Grafik API’leri, her şeyin nasıl biçimlendirilmesi ve yapılandırılması gerektiğine dair belirli kuralları ortaya koyar ve rutin matematik algoritmalarını işlemek için basit talimatlar sunar. Bunların hepsi yıllar içinde önemli ölçüde güncellendi ve hesaplama gölgelendiricileri sayesinde güzel görüntüler oluşturmaktan daha fazlasını yapmak için kullanılabiliyor.

Bilgisayarlar dışındaki oyun platformları da API’lerden yararlanıyor: Microsoft Xbox için Direct3D’nin değiştirilmiş bir versiyonunu kullanırken, Nintendo (Switch) ve Sony (PlayStation) kendi API’lerini kullanıyor. Ancak bunların her ikisi de işin sonunda OpenGL’ye dayanıyor. Eğer telefonda oyun oynuyorsanız, yine aynı şekilde Apple ürünlerine özel olan Metal gibi çeşitli grafik API’leri mevcut.

1990’larda bazı ekran kartı üreticilerinin kendi API’lerine sahip olduğunu hatırlarsınız; 3dfx’in Glide ve S3 Graphics’in S3D API’leri vardı. Bunun nedeni OpenGL’nin nispeten yeni olması ve üreticilerin ihtiyaç duyduğu özellik seti ve performanstan yoksun olmasıydı.

Bir dönem Glide, programlaması kolay olduğu ve 3dfx’in Voodoo mimarisini mümkün olan en iyi şekilde kullandığı için grafik API’lerinin lideriydi. Glide ve S3D çok kısa ömürlü oldu çünkü açık kaynaklı değil, oldukça özel API’lerdi. Aslında Direct3D de açık kaynak kodlu değil, ancak Windows ile sınırlı olması dışında herhangi bir GPU üreticisi kendi ürünlerinde desteklemek için sürücüler yaratabiliyor.

Bununla birlikte, tescilli grafik API’leri bugün hala çeşitli alanlarda kullanılmakta. NVIDIA’nın CUDA API’si şirket içi GPU’lara özel olsa da 3D render yerine genel amaçlı hesaplama işlerine yönelik.

AMD, 2013 yılında Battlefield oyunlarının geliştiricileriyle işbirliği yaparak ‘düşük seviyeli’ bir API oluşturmak için çalışmaya başladı. AMD’nin Mantle için hedefi, Direct3D ve OpenGL’den daha az CPU bağımlı olmasının yanı sıra daha fazla programlanabilirlik sunmasıydı. Projenin geliştirilmesi 2015 yılında durduruldu ve kırmızı takımın çalışmalarını Vulkan’dan sorumlu kuruluş olan Khronos Group’a ücretsiz olarak devretmesi nedeniyle 2019 yılına kadar tamamen rafa kaldırıldı.

Diğer Alanlar

Oyunlar sadece görsel şeylerden ibaret değildir: ses, ağ ve girdi yönetimi için kodlanması gereken şeyler vardır. Direct3D aslında DirectX adı verilen ve yukarıda bahsedilen tüm oyun öğeleri için API’ler ve yazılım kütüphaneleri içeren büyük bir koleksiyonun parçası. Örneğin DirectInput oyun kollarından, joysticklerden ve direksiyonlardan gelen komutları yönetmekte. Örneğin ses için OpenAL gibi, bunların OpenGL muadilleri de var.

Ek olarak kameralar, mikrofonlar, IR sensörleri, dokunsal geri bildirim, dokunmatik ekranlar ve daha birçok donanım için API’ler kullanılır. Donanımla iletişimden bahsetmişken, programcıların telefonların tipik olarak sahip olduğu çok sayıda yeteneğe erişmesine ve bunları kullanmasına olanak tanıyan çok sayıda API vardır. Örneğin, neredeyse her modern telefonda bir ivmeölçer bulunur; hareketi üç boyutlu olarak algılayan küçük bir çip. Dolayısıyla bir uygulama telefonun hangi yöne baktığını bilmek istiyorsa, programcılar bu bilgiyi kolayca elde etmek için bir API kullanabilir.

Yıldız gözlemi gibi artırılmış gerçeklik uygulamaları, bu tür API’leri kullanacak yazılımlara iyi bir örnektir. Telefonu gece gökyüzüne doğrulttuğunuzda hangi yıldızlara baktığınızı gösteren bir uygulama ise kamera, ivmeölçer, GPS sistemi, dokunmatik ekran vb. için bir API kullanır.

Bir uygulamayı Twitter veya Facebook gibi herhangi bir sosyal medya platformuyla entegre edecekseniz yine devreye API’ler girer. Web tabanlı yüzlerce programlama arayüzü var. İsimlerini bilmeseniz bile bu araçlar aracılığıyla oluşturulmuş bir platform, bir program kullanmışsınızdır.

Bilgi İşlemin Olduğu Her Yerde

Bilgi işlemin olduğu yerde mutlaka API’ler vardır. Oldukça özel iki API sınıfı var: Remote ve Web. Web aslında Remote’un bir alt kümesi. Bunlar, bir sistemde çalışan ancak başka bir sistemdeki verilere erişen ve bunları işleyen uygulamalar için tasarlanmakta. Örneğin şu anda bu makaleyi okurken kullandığınız tarayıcı her iki API’yi de kullanan uygulamalardan biri.

Arabirimlerin bazıları tamamen kapalı kutudur, özel API olarak da bilinir. Yalnızca geliştirici kuruluş tarafından kendi dahili uygulamaları için kullanılabilir. Öte yandan onaylanmış kullanıcılara kiralanan, yarı özel API olarak bilinen seçenekler de var. Burada API sahibinin uygulama tarafından kontrol edilen verileri takip etmesi sağlanır. Uber ve Lyft gibi araç çağırma uygulamalarını denediniz mi? Burada Private Remote API’ler kullanılıyor.

Bilgisayarlarda kullandığımız uygulamaların çoğu herkese açık (Public) API’leri temel alır. Windows tabanlı PC‘ler Windows API (genellikle sadece WinAPI olarak adlandırılıyor) ve macOS, iOS, Linux ve Android gibi sistemler farklı arayüzlerle yazılır. İşletim sistemlerini milyonlarca kişi kullandığından dolayı halka açık programlama arabirimlerinden oluşmakta. Tıpkı DirectX gibi, bunlar da veri depolamadan sistem hizmetleri ve güvenliğe kadar her şeyin yanı sıra ortak kullanıcı arayüzü öğeleri, ağ oluşturma ve program yönetimi gibi sayısız hizmet için kütüphaneler içerir.

API’lerin Önemi

Sonuç olarak, uygulama programlama arayüzleri teknolojinin olduğu hemen her yerde kendine yer buluyor. Eğer kodlama ile ilgileniyorsanız zaten bu işlere aşina olmalısınız ve API’lerin size sağladığı kolaylıkları biliyorsunuzdur.

Öte taraftan, bir oyuncu veya bir ofis çalışanı olsanız bile API’ler hakkında bilgi sahibi oldunuz. Örneğin en popüler oyunlardan olan Red Dead Redemption 2, Direct3D ve Vulkan API’leriyle çalıştırılabiliyor. Her iki arayüz ile de oyunu test edebilirsiniz. Sisteminize bağlı olarak, bir bir API diğerine kıyasla size daha iyi kare hızları veya daha tutarlı bir kararlılık sağlayabilir. Bazı oyun geliştiricileri yalnızca tek bir API’den faydalanıyor, ancak onları da anlıyoruz zira iş yükü çok artıyor.

Uzun lafın kısası, gündelik olarak hayatınızı kolaylaştıran hemen her şeyde API’ler var. Eğer bu arayüzler oluşturulmasaydı kullandığınız yazılımların sayısı çok daha az olurdu. Bunun dışında, uyumluluk ve stabilite sorunları yaşanırdı.

Yorum yok

Bir yanıt bırak

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

Exit mobile version