SDK Nedir ve SDK ile API Arasındaki Fark Nedir?

Yayınlanan: 2021-09-19

API'ler, farklı yazılım bileşenleri arasındaki iletişimi temsil ederken, SDK'lar, belirli bir görev için API'leri içeren bir araç setinin tamamını temsil eder.

Bir geliştirici ekosistemi, bir SDK ve bir API olmak üzere iki temel araç üzerinde çalışır. Bugün, geliştirici topluluğu modern yazılım geliştirme sürecinde her ikisini de yoğun bir şekilde kullandığından, temel farklılıkları anlamak çok önemlidir.

Geliştirme ortamı bu iki bileşen tarafından desteklenmektedir. SDK'lar ve API'ler, üçüncü taraf API'lerin ve web iletişiminin uygulanması için temel sürücülerdir.

Esasen, hem SDK hem de API, uygulamanızın genel işlevselliğini ve performansını iyileştirmeye yarar. Ancak hem kurum içi ekipler hem de son kullanıcılar için deneyimi geliştirmek için bu araçların nasıl çalıştığını, nasıl farklı olduklarını ve yazılım geliştirme sürecine nasıl yardımcı olduklarını öğrenmek kaçınılmazdır.

Bu araçların her birine daha yakından bakalım.

SDK nedir?

SDK, "devkit" olarak da adlandırılan "Software Development Kit"in kısaltmasıdır. SDK, platformlara özgü bir dizi yazılım oluşturma aracıyla tanımlanır. Bu araçlar, hata ayıklayıcıları, derleyicileri, kod kitaplıklarını (yani çerçeve) veya bir işletim sistemine yönelik rutinleri ve alt rutinleri içerir.

Tipik bir SDK'nın yapı taşları şunları içerir:

  • Hata Ayıklayıcı : Bir hata ayıklayıcı, geliştiricilerin program kodundaki hataları belirlemesini ve düzeltmesini sağlar.
  • Derleyici : Derleyici, programlama dili ifadelerini işleyen ve bunları makine tarafından anlaşılabilir dile veya işlemci tarafından kullanılan "koda" çeviren bir programdır.
  • Kod örnekleri , bir uygulamanın veya web sayfasının daha net bir resmini veren programlama görevlerini veya senaryoları açıklar.
  • Rutinler ve alt rutinler : Bir rutin veya alt rutin, tüm program kodunun herhangi bir yerinde çağrılabilen ve yürütülebilen bir yöntem, işlev, prosedür, alt program veya koddur. Örneğin, dosyayı kaydet seçeneği bir rutin aracılığıyla yürütülür.
  • Kod kitaplığı : Bir kod kitaplığı, geliştiricilerin yeniden icat etmek yerine mevcut kaynakları (örn. kod dizileri) kullanmalarına olanak tanır.
  • Test ve analitik araçlar : Bu araçlar, bir test ve üretim ortamında uygulamanın performansını değerlendirir.
  • Belgeler : Geliştiriciler, geliştirme süreci sırasında belgelenmiş talimatlara (gerektiği gibi) başvururlar.

Uygulamalar API olmadan etkileşimde bulunamaz, geçiş yapamaz, çalışamaz veya işbirliği yapamadığından, genellikle bir SDK'nın kendi kitinde en az bir API'si vardır.

SDK Nasıl Çalışır?

SDK'lar, geliştiricilerin yazılım uygulamalarını kolaylıkla oluşturmaları için gerekli bir araç paketi sağlar.

Örneğin, Facebook, Google'ın Android'i ve Apple'ın iOS'u için SDK sağlar. Bu SDK'lar, Facebook'u Android veya iOS uygulamanıza entegre etmeye yardımcı olan açık kaynaklı kitaplıklar olarak işlev görür. Ayrıca Microsoft, büyük ölçekli uygulamalar için .NET çerçeve SDK'sı sunar. Windows için uygulamalar geliştirmek için gerekli örnekleri, araçları ve kitaplıkları içerir.

Artık SDK'ların temel özelliklerine aşina olduğunuza göre, SDK'ların çalışmasını anlayalım.

  • Başlangıçta, platformunuz için gerekli olan "kiti" satın alır, indirir ve kurarsınız. Bu, kurucu parçaları, talimat setlerini ve örnekleri içeren dosyaların indirilmesini kapsayabilir.
  • Ardından, yeni bir uygulama geliştirmek için gerekli tüm araçlara, entegre geliştirme ortamına (IDE) erişebilirsiniz. Bunun ardından geliştiriciler uygulamalarını kodlamaya başlayabilir. Bir derleyicinin rolü bu aşamada belirginleşir.
  • Son olarak, yeni uygulamayı test etmek için yönergeleri, belgeleri, kod örneklerini ve analiz araçlarını kullanabilirsiniz.

Bu adımları tamamladıktan sonra SDK yolculuğunuza başlayabilirsiniz.

SDK türleri

Web ve mobil uygulama geliştirmeleri, SDK'ların öncülüğünde çalışır. Bazı yaygın SDK türlerine bakalım.

  • Platform SDK'ları : Bu SDK'lar, herhangi bir platform için uygulama geliştirme için gerekli olan temel bileşenlerdir. Örneğin, Windows 10 SDK, Windows 10 Store uygulamaları geliştirmek için kullanılır.
  • Uzantı SDK'ları : Bunlar, geliştirme ortamını genişletmek ve özelleştirmek için kullanılan isteğe bağlı SDK'lardır. Ancak, belirli bir platform için uygulama geliştirmek için bir zorunluluk değildirler.
  • Programlama diline özgü SDK'lar : Bu tür SDK'lar, belirli dillerde programlar geliştirmek için kullanılır. Örneğin, Java programlama dilini kullanarak uygulama geliştirmek için Java Developer Kit (JDK) kullanılır.
  • Analytics SDK'ları : Bu SDK'lar, kullanıcı davranışları, eylemleri vb. gibi verileri toplar. Örneğin, Google'ın Analytics SDK'sı.
  • Para Kazanma SDK'ları : Bu tür SDK'lar, geliştiriciler tarafından mevcut uygulamalardan çıkan reklamları dağıtmak için kullanılır. Yalnızca gelir elde etmek amacıyla yerine konurlar.

SDK'nın Avantajları

SDK'lar, geliştirici topluluğu için çeşitli avantajlar sunar. Öncelikle yazılım geliştirme kitlerinin verimli kullanımı ile uygulama geliştirmek için çok uğraşmalarına gerek kalmaz.

  • Hazır parçalara erişim : SDK, önceden hazırlanmış parçalara kolay erişim sağlayarak yazılım geliştirmede harcanan zamanı azaltır. Örneğin, Android harita SDK'sı, uygulamanızda çeşitli konum hizmetlerini yapılandırmanıza ve dağıtmanıza olanak tanır. SDK, kurucu parçalara kolay erişim sağlar ve bunları uygulamada bir araya getirir (örneğin boylam, enlem gibi konum koordinatları, belirli bir konumdaki hizmetler).
  • Sorunsuz entegrasyonlar : SDK'lar, farklı yazılım ve uygulamalarla daha sorunsuz entegrasyonlar sunar. Ayrıca, uygun belgeler aracılığıyla gerekli bilgilere doğrudan erişim sağlarlar.
  • Geliştiricilere kısayollar sağlayın : SDK'lar, geliştirme döngüsünü kısalttığı için geliştiricilerin kod dizilerini yeniden kullanmalarına olanak tanır. Bu, geliştiricilere kritik görevlere odaklanmak için yeterli zaman verir.
  • Yerleşik destek : SDK'lar, eksiksiz belgeler dahil olmak üzere yerleşik kod uzmanlığı (destek) ile etkinleştirilir. Bu nedenle, geliştiricilerin sorgularını çözmek için alandaki uzmanlara bakmaları gerekmez.
  • Karşılanabilirlik : Yukarıda belirtilen faktörler, yazılım geliştirme ve dağıtım sonrası aşamalarda yapılan aşırı harcamaları ortadan kaldırmaya yardımcı olur.

Şimdi aracı API bileşenine geçelim.

API nedir?

API, 'Uygulama Programlama Arayüzü'nün kısaltmasıdır. Platformların, cihazların veya uygulamaların birbirine bağlandığı ve birbirleriyle iletişim kurduğu bir dizi kuralı detaylandırır. API, bir SDK'nın parçası olabilir veya bağımsız olarak var olabilir. Her iki senaryoda da, çeşitli uygulamalar arasında sistemik eşzamanlılık kurar.

Geliştiriciler, etkili API'ler oluşturmak için ücretsiz olmayan (tescilli) veya bulut tabanlı yazılımın faydasını en üst düzeye çıkarır. Daha sonra, kullanıcıların yerleşik API'ler aracılığıyla erişebilecekleri hizmetlerden yararlanabilirler.

API, iki taraf arasındaki bir anlaşmaya benzer. Bilgilerin nasıl iletilmesi gerektiğine dair yönergelerle birlikte anında bilgi alışverişi sunar.

Bazı API'lerin "arayüz" sağladığı bilinmektedir, bu nedenle "API" ve "arayüz" genel olarak aynı varlıklar olarak kabul edilir.

Anahtar bileşenler

API'nin iki temel bileşeni vardır:

API bileşenleri

  • Teknik özellikler: Bir API'nin spesifikasyonları , API entegrasyonu için protokollerle (yani diğer platformlar, uygulamalar ile) ilgili bilgilere atıfta bulunur. API'nin etkin kullanımını sağlamak için iyi belgelenmeleri gerekir.
  • Arayüz: Arayüz, API'lere erişim için bir yol sağlar. Bir web API ise bir anahtar kelime ile veya ayrı bir arayüz üzerinden erişilebilir.

Şimdi tipik bir API'nin nasıl çalıştığına bakalım.

API Nasıl Çalışır?

API'ler, çeşitli uygulama grupları arasında sorunsuz diyaloga izin verir.

Kullanıcılarınızın çevrimiçi olarak yiyecek arayabilecekleri ve satın alabilecekleri bir bakkal satış uygulamanız olduğu bir örneği düşünün. Uygulamanız bu hizmeti zaten sağlıyor. Diyelim ki kullanıcılar aynı zamanda bir şehir içinde belirli bir lokasyondaki marketleri de aramak istiyor. Böyle bir durumda, uygulamanızı şehirde faaliyet gösteren yerleşik market hizmet sağlayıcıları ile entegre edebilirsiniz. Coğrafi konum API'sini dağıtarak, kullanıcıların ayrı bir coğrafi konum uygulaması hakkında endişelenmeden bakkal merkezleri aramasına olanak tanırsınız.

Teknik açıdan bakıldığında, bir API çağrısı aşağıdaki adımları takip eder:

API nasıl çalışır?

  • Bir uygulama kullanıcısı, bir istek oluşturarak uygulamanızdan görevi başlatır.
  • API, web sunucusuna bir çağrı yaparak isteği iletir. API, istek tipik olarak API uç noktasına ulaşmayı hedeflediğinden, isteğin nereye gönderileceğinin farkındadır. Sunucu URL'si uç noktayı tanımlar.
  • Son olarak, veritabanı veya üçüncü taraf uygulaması istenen hizmeti sağladığında görev gerçekleştirilir.

API Türleri

REST (Temsili Durum Aktarımı): REST API'leri, API'nin aşağıdakiler gibi bir dizi ilkeye uyması gereken en popüler API türlerinden biridir:

  • İstemci-sunucu mimarisi: Sunucuda yapılan değişiklikler istemciyi etkilememelidir
  • İstemci ve sunucu arasında HTTP, CRUD (Oluştur, Oku, Güncelle, Sil) ve JSON aracılığıyla iletişim.
  • Durumsuzluk: Herhangi iki istek arasında istemcinin durumunun sunucuda depolanması yoktur.

REST genellikle veri aktarmak için kullanılır. Örneğin, Facebook API, bir Facebook kullanıcısının adını, konumunu ve profil resmini başka bir uygulamaya almak için kullanılır.

RPC (Uzaktan Yordam Çağrısı): Başka bir sistemde kod yürütmek için kullanılır. İstemcinin yalnızca veri talep ettiği REST'in aksine, RPC yöntemleri çağırır. İstekler, XML veya JSON biçimlerinde gönderilebilir ve bunlara XML-RPC ve JSON-RPC'ler denir. İsteği gönderen, yöntem yürütüldükten sonra diğer sistemden bir yanıt bekler.

Örneğin, bir ödeme ağ geçidi API'si, bir kredi kartı numarasının kimliğini doğrular (kodu sonunda yürütür) ve arayan uygulamaya bir başarı veya başarısızlık yanıtı gönderir.

SOAP (Simple Object Access Protocol) API'leri : Gelişmiş veri gizliliği ve güvenliği gerektiren durumlarda kullanılan web tabanlı API'lerdir. HTTP, SMTP, TCP/IP gibi web tabanlı protokoller üzerinden iletişim kurabilirler.

SOAP bir dizi protokoldür, REST ise bir mimari modeldir. Bu, SOAP tabanlı protokolleri kullanarak RESTful API'ler oluşturmayı mümkün kılar.

API Avantajları

API'ler hem gruplar hem de sıradan kullanıcılar ve geliştirme uzmanları için faydalıdır. Geliştiriciler, ajans sistemlerini güncellemek ve ajansın iş potansiyelini genişletmek için iş paydaşlarıyla bağlantı kurabilir.

Avantajlar geliştirici perspektifini getirebilse de, API'ler hem geliştirici deneyimini hem de son kullanıcı deneyimini güçlendirir. API'lerin sunduğu bazı avantajlara göz atalım.

  • Entegrasyon : API'ler, genel uygulamayı veya ürün performansını iyileştirirken farklı yazılım uygulamalarını birbirine bağlar.
  • Geliştirme döngüsünü kolaylaştırın: API'ler, geliştiricilerin yazılım geliştirme döngüsünü kısaltmasına yardımcı olur. API otomasyonu, bilgisayarlar manuel bir görev gücü yerine işi yönetmek için kullanıldığından anahtarı tutar. API'ler, şirketlerin iş akışlarını bir kerede güncellemelerine olanak tanır.
  • Verimlilik : API erişimiyle, bir kez oluşturulan içerik kolayca paylaşılabilir ve çeşitli kanallar arasında yeniden dağıtılabilir.
  • Kişiselleştirme : API'ler özelleştirmeleri etkinleştirir. Herhangi bir kullanıcı veya şirket, içeriği veya hizmetleri ihtiyacına göre kişiselleştirerek bundan yararlanabilir.

SDK ve API arasındaki fark

İki bileşen arasındaki farkı örneklerle anlayalım.

Facebook, hem profesyonel geliştiriciler hem de aktif kullanıcılar için araçlar sunan bir çözüm paketi sunar. Hem API'si hem de SDK'sı vardır. Bu araçların her ikisi de farklı işlevler gerçekleştirme hakkına sahiptir ve kullanım durumuna özeldir. API'lerle başlayacağız.

Facebook API'leri

Üçüncü taraf geliştiricilerle ortaklaşa olarak, Facebook API'leri Facebook'a bağlanır ve bir kullanıcı hakkında gerekli verilere erişir. Bu, uygulama işlevlerini kişiselleştirmek için kullanılır.

Örneğin, bir film rezervasyonu uygulaması, Facebook kimliğinizi kullanarak uygulamada oturum açmanıza izin vermek için Facebook API'sini kullanır. Adınız ve profil bilgileriniz, kullanıcının gerçekliğini sağlamak ve ayrı bir kullanıcı adı ve şifreyi hatırlamaktan kaçınmanızı sağlamak için film rezervasyon uygulamasıyla paylaşılır. Ayrıca, film rezervasyon uygulamasının, Facebook özet akışınıza göz atarken size alakalı reklamlar göstermesine olanak tanır.

API'nin USP'lerinden biri, bir Graph API gezgini ile nasıl birleştiğini içerir. Graph API hizmeti, kullanıcılar, hesaplar, güncellemeler, gruplar ve daha fazlası arasında ilişkisel veriler oluşturur.

 GET graph.facebook.com/me?fields=posts.limit(5){message}

Burada daha iyi anlamak için örnek bir API yayınını gözlemliyoruz. Yukarıdaki arama, yayınladığınız en fazla beş gönderiyi ve her bir gönderi için metni alacaktır.

Başka bir örnek alalım.

 GET graph.facebook.com/me?fields=posts.limit(5){message,privacy{value}}

Yukarıdaki API sorgusu, yayınladığınız her gönderinin metin ve gizlilik ayarlarını döndürür.

Her iki API de Graph API altında çalışır ve böylece analitik oluşturmaya (yani ilişkisel veriler) yardımcı olur.

Yukarıdaki örnek basit bir kullanım örneği olsa da, bir restoran sahibinin restoranında bir partiye katılan kullanıcıları listelemek istediği başka bir senaryo düşünün. Sahibi, bir Facebook API çağrısı kullanabilir ve partide tıklanan fotoğraflara ve etiketlenen Facebook kullanıcılarına erişerek işlev sırasında mevcut olan kullanıcıların bir listesini oluşturabilir.

Ek olarak, restoran yetkilileri ayrıca kullanıcıların sosyal hesaplarının bir listesine sahip olabilir ve bunları gelecekteki promosyonlar için kullanabilir. API'ler olmadan, bu tür işlevlerden yararlanmak, geliştirmek zahmetli olabilir. Ardından, Facebook SDK'larına bakacağız.

Facebook SDK'ları

Facebook tarafından sağlanan SDK'lar, "uygulama oluşturma" için özel olarak tasarlanmıştır. Örneğin, Facebook uygulamasında oynayabileceğiniz birçok oyun var. Bunlar Facebook içinde çalışacak şekilde tasarlanmıştır ve bu uygulamaları oluşturmak için bir SDK'ya ihtiyacınız vardır.

iOS için Facebook SDK'sına bakalım. Özellikle iOS için Facebook uygulamalarının geliştirilmesine izin verir.

iOS için Facebook SDK'sını açıklayan aşağıdaki kod parçasını göz önünde bulundurun:

 /** * For more details, please take a look at: * developers.facebook.com/docs/reference/ios/current/class/FBSDKAppEvents */ - (void)applicationDidBecomeActive:(UIApplication *)application { [FBSDKAppEvents activateApp]; }

Yukarıdaki örnek, uygulama aktivasyonlarıyla ilgili olayları günlüğe kaydetmek için kullanılır.

Çağrının yapısı her iki durumda da değişir. Bir API, mevcut kaynaklar ve işlevler aracılığıyla önceden tanımlanmış bir eylemi gerçekleştirir. Aksine, SDK önce işlevi tanımlar ve ardından kaynağı ve işlevi çağırır.

Bir SDK ve API Arasında Seçim Yapma

API'ler, temelde farklı platformların eşzamanlı olarak nasıl birlikte çalışabileceğini ana hatlarıyla belirtir. Protokoller ve spesifikasyonlar aracılığıyla uygulama entegrasyonuna yardımcı olurlar. Bu nedenle, bir SDK'nın kritik bileşenlerinden biridir. Ancak API'ler, sıfırdan uygulamalar oluşturmak için kullanılamaz.

SDK'lar, bir programlama diline veya platformuna özgü yeni bir uygulama veya yazılım oluşturmayı kolaylaştırır. Bir SDK, genellikle harici olarak iletişim kurmak için en az bir API'ye sahiptir.

iOS gibi belirli bir platformda çalışacak bir uygulama oluşturuyorsanız, o platform için SDK'yı kullanın. Facebook gibi diğer web uygulamalarıyla iletişim kurmak için o uygulamanın API'sini kullanın.

Çözüm

Özetle, bir SDK ile API arasındaki fark aşağıdaki önermelerde vurgulanır:

  • SDK'lar genellikle API'ler içerir, ancak hiçbir API, SDK'ları içermez.
  • Evin ayakta durmasını sağlayan bir evin temeli gibi, SDK'lar da uygulamaların oluşturulmasını sağlar.
  • API'ler, dış dünya ile iletişime izin veren telefon hatlarına benzer şekilde, SDK'lar içindeki uygulamaların işleyişine ve iletişimine karar verir.