API vs Library

Başlatan yamak, 30 Mayıs 2014, 15:25:42

yamak

Bu iki kavram arasında farkı tam olarak nedir.Mesela Library'e bazıları API de diyebiliyor.O sebebten kafam karıştı biraz bu ikisini neye göre ayırt ediyoruz.Mesela Stm32 Peripheral Library'e API denildiğini de duyuyorum.Hangisi doğru?

sseedat

#1
benim bildiğim ikiside aynı.Fakat api ye erişim, kütüphaneye göre biraz daha  ksıtlı diye birşeyler duymuştum
Görünmez bir mezarlıktır Zaman...

Burak B

#2
API = Application Programming Interface = Uygulama Geliştirme Arayüzü
Library = Kütüphane

Yani ikisi birebir aynı şey değil. Eğer kullanıcıya bir arayüz sağlıyor vede bu arayüzle ilgili methodlar, fonksiyonlar,libraryler ve programatik bir etkileşim sunuyorsanız buna API diyebilirsiniz. Mesela yaptığınız bir USB cihazın giriş çıkışlarını kontrol edebilecek bir platform sunarsanız buna API diyebilirsiniz. Çünkü kullanıcı bu platformu kullanarak sizin cihazınızla uygulamalar geliştirebilir.

Libraryler API' lerin bir parçasıdır diyebiliriz.


Link
Alıntı Yap

A library is a collection of functions / objects that serves one particular purpose. you could use a library in a variety of projects.

A framework is a collection of patterns and libraries to help with building an application.

An API is an interface for other programs to interact with your program without having direct access.

To put it another way, think of a library as an add-on / piece of an application , a framework as the skeleton of the application, and an API as an outward-facing part of said app.

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

yamak

#3
Hocam BSP gibi bişey mi?Mesela kullanıcının Stm32f4 Discovery'nin GPIO'larına,Usb'sine,Ivme olçere vs direkt erişebilieceği fonksiyonlar yazdım.Bu fonksiyon topluluğuna API diyebilirmiyiz.Örneği aşağıdaki gibi fonksiyonlar:
Board_Init(....);
Acc_Read(...);
Usb_Write(...);
Usb_Read(...)

Tagli

Merak edip biraz araştırdım. Konu StackOverflow'da da gündeme gelmiş. Orada dediklerine göre, API denen şey, kütüphane ile onu kullanan kullanıcı arasındaki arayüz. Bana mantıklı geldi, API'nın açılımı ile de uyumlu bu açıklama.

Alıntı YapLibraryler API' lerin bir parçasıdır diyebiliriz.
Yani bence tam tersi, API'ler kütüphanelerin bir parçası.
Gökçe Tağlıoğlu

Elektroemre

Peki 'Framework' bunlar arasında nerede konumlandırılabilir?

muhittin_kaplan

kütüphane topluluğu

yamak

Api,Framework,Sdk kavramlarini tam anlamiyla birisi aciklayabilirse guzel olur. Mesela Sdk ve Framework arasindaki fark ne. Ban gore ikisi de kutuphaneler toplulugu. Ornegin bazen Qt framework diyoruz bazen de qt sdk.Hangisi dogru?

barisertekin

Benim bir kütüpahenem olsun.
X kişi benden ürünkodu bilgisine göre adı ve fiyat bilgilerini temin etmek istedi. Ben bu işi yapacak bir web servis(API) yazarım. Adama veririm kullanır.
Sizin de dediğiniz gibi kütüphanemi kullanması için bir arayüz oluşturmuş olurum.

bkz : Difference between Web API and Web Service?

Framework : Kütüphaneler topluluğu

SDK : Yazılım geliştirmek için gereken araçlar + destek ve geliştirme dökümanları

Burak B

#9
Alıntı yapılan: Tagli - 30 Mayıs 2014, 19:47:16
Merak edip biraz araştırdım. Konu StackOverflow'da da gündeme gelmiş. Orada dediklerine göre, API denen şey, kütüphane ile onu kullanan kullanıcı arasındaki arayüz. Bana mantıklı geldi, API'nın açılımı ile de uyumlu bu açıklama.
Yani bence tam tersi, API'ler kütüphanelerin bir parçası.

Yani API daha yüzeyde duruyor. :) Kutu gibi düşünürsek hangisi diğerini barındırıyor diye sorsam ? Yada katmanlar şeklinde tanımlayacak olsak hangisi daha üstte durur. Yani kullanıcıya daha yakın ?
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Tesla.25

Çeşitli amaçlar için API yazarsın. Sonra bunları bir araya toplarsan Library elde edersin.

Burak B

#11
Win32 API bunun neresinde mesela ? Hangi library Win32 API' yi barındırıyor ? Yoksa Win32 API bazı DLL (Dynamic Link Library) 'lerin toplamıyla mı oluşuyor ? Yoksa Microsoft bu işi bilmiyor olabilir mi ?
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Tesla.25

Alıntı yapılan: ByteMaster - 30 Mayıs 2014, 23:45:55
Win32 API bunun neresinde mesela ? Hangi library Win32 API' yi barındırıyor ?

Windows sisteminde kullanlan çoğu library, Win32 'ye bulaşıyor diye biliyorum. X kütüphanesinde CreateWindow() demişsek, en alt seviyeye inip, Win32 API 'si sayesinde pencere oluşturmuş oluyoruz aslında.

Burak B

Alıntı yapılan: Tesla.25 - 30 Mayıs 2014, 23:47:53
Windows sisteminde kullanlan çoğu library, Win32 'ye bulaşıyor diye biliyorum. X kütüphanesinde CreateWindow() demişsek, en alt seviyeye inip, Win32 API 'si sayesinde pencere oluşturmuş oluyoruz aslında.

Evet, aynen öyle yani ilişkisel bir diagram çizmek gerekirse Win32 API nasıl görünür ? Tüm librarylerle etkileşime giren ve bunların ilişkilerini tanımlayan bir yapı oluşmaz mı ?

Bu durumda tekrar soruyorum API mi libraryden çıkar library mi API' den ? :)
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

barisertekin

#14
API library'i kullanmak için bir arayüzdür. Library'nin istenilen class'larına erişim sunar.

Alıntı Yap@Tesla25 Çeşitli amaçlar için API yazarsın. Sonra bunları bir araya toplarsan Library elde edersin.

Çeşitli amaçlar için fonksiyonları barındıran Class'lar yazarsın. Sonra bunları bir araya toplarsan Library elde edersin.

Bu library'leri direk erişime açmamak için ise Api yazarsın. Windows'un tüm kütüphanelerinin direk erişime açık olduğunu düşünsenize.
Sadece programlarımızı daha efektif çalıştırabilmemiz için yeterli olanları api'ler aracılığı ile kullanmamıza olanak tanıyorlar.