Apa perbedaan antara API dan SDK?

174

Saya mencari melalui berbagai API dan SDK, ketika saya menyadari bahwa saya tidak bisa membedakan antara sesuatu yang disebut API dan sesuatu yang disebut SDK .

Keduanya, secara konseptual, merupakan cara bagi program Anda untuk berinteraksi dan mengontrol sumber daya yang disediakan oleh perangkat lunak lain, apakah perangkat lunak lain itu adalah layanan web, aplikasi pengguna akhir, layanan OS atau daemon, atau kernel driver perangkat.

Jadi, apa perbedaan semantik antara SDK dan API?

KeithS
sumber
3
SDK adalah Kit Pengembangan, biasanya perpustakaan sisi klien yang memfasilitasi penggunaan API. API hanyalah definisi dan / atau dokumentasi perpustakaan / layanan.
dietbuddha
lihat juga " Library vs framework vs API?
agas

Jawaban:

175

Saya pikir itu agak jatuh di sepanjang baris "Semua SDK adalah / mengandung API tetapi tidak semua API adalah SDK".

SDK tampaknya merupakan set lengkap API yang memungkinkan Anda untuk melakukan sebagian besar tindakan yang Anda perlukan untuk membuat aplikasi. Selain itu SDK dapat mencakup alat lain untuk mengembangkan untuk platform / item yang untuknya.

API di sisi lain hanyalah serangkaian metode terkait yang mungkin baik untuk tujuan tertentu.

Sebagai contoh, JDK (Java Development Kit) berisi API serta kompiler, runtime, dan alat lain-lain. Java API hanyalah semua pustaka yang membentuk bahasa inti yang bisa Anda gunakan tanpa bantuan.

Deduplicator
sumber
7
Saya ingin menambahkan bahwa SDK hanyalah contoh bagaimana Anda akan berinteraksi dengan API tersebut.
The Muffin Man
10
Saya pikir Anda mungkin telah membalikkan Nick itu. SDK adalah superset dari hal-hal, yang berisi (antara lain) API untuk berinteraksi dengan perpustakaan itu (bukan perpustakaan itu sendiri, tetapi antarmuka ke perpustakaan yang digunakan oleh pembuat kode menggunakan perpustakaan).
Danny Staple
7
SDK dapat menyertakan API, alat, dokumentasi, sampel, dan semua hal lain yang diperlukan.
gregmac
4
@regregac Apakah saya tidak menyampaikan fakta itu?
Dalam istilah praktis, akankah adil untuk mengatakan bahwa API kemungkinan besar hanya akan berisi definisi antarmuka yang harus diimplementasikan oleh kelas, sementara SDK akan berisi kelas dasar dengan sebagian besar fungsi standar sudah diprogram dalam?
Ben
85
  • API = Antarmuka Pemrograman Aplikasi
  • SDK = Kit Pengembangan Perangkat Lunak

Jadi perbedaan sebenarnya adalah, bahwa API tidak lebih atau kurang dari sebuah antarmuka untuk "beberapa layanan", sedangkan SDK adalah seperangkat alat / komponen / kelas untuk tujuan tertentu. SDK sebenarnya menyajikan Anda dengan API untuk antarmuka dengan. Tetapi Anda dapat menggunakan API tanpa memiliki komponen yang mendasarinya, misalnya ketika API diberikan melalui layanan web.

Contoh API:

Contoh SDK:

back2dos
sumber
3
+10 untuk "Anda dapat menggunakan API tanpa memiliki komponen yang mendasarinya". Btw, tautan kedua turun .......
Pacerier
24

API → antarmuka terdokumentasi (pada titik waktu tertentu, dan untuk audiens tertentu. Dokumentasi mungkin tidak lengkap dan / atau tidak tersedia untuk masyarakat umum dan ini mungkin sengaja, tetapi ini tidak mengurangi fakta bahwa itu dimaksudkan untuk didokumentasikan bagi pihak ketiga untuk menggunakannya.)

SDK → dokumentasi antarmuka (+ contoh & alat)

ZJR
sumber
4
Akhirnya seseorang yang menyebutkan dokumentasi!
gregmac
4
Tidak semua API didokumentasikan - terkadang Anda hanya perlu memeriksa / mencerminkan antarmuka.
JBRWilkinson
Bukankah "contoh" bagian dari API?
Pacerier
1
@Pacerier ... sama sekali tidak. Contoh mungkin menjadi bagian dari dokumentasi API , tetapi antarmuka belaka mungkin "tidak berdokumen", (yaitu dokumentasi tentang itu dirahasiakan ke dunia luar: think ... idk, microsoft ) saat masih menjadi API. Itu hanya antarmuka. Fungsi, kelas, panggilan, mungkin protokol, mungkin format file, tetapi tidak lebih.
ZJR
17

"SDK" bersifat kolektif dalam arti yang lebih besar daripada "API".

Anda biasanya hanya menemukan satu SDK untuk mencakup seluruh platform. Ada satu MacOS X SDK dan satu iOS SDK, misalnya, dan masing-masing berisi API untuk berbagai bidang fungsi.

"API" pada awalnya digunakan sebagai istilah kolektif juga, dan itu masih sering digunakan seperti itu (MAPI, WSAPI, dll.), Tetapi biasanya terbatas pada beberapa teknologi tertentu. Ruang lingkup yang tersirat oleh "API" tampaknya telah berkurang selama bertahun-tahun; orang-orang biasa berbicara tentang "Mac Toolbox API" atau "Windows API," yang keduanya jelas mengandung banyak fungsi. Saat ini, tidak jarang mendengar "API" dulu berarti fungsi sistem tunggal; versi baru dari sistem operasi mungkin dikatakan mengandung ratusan API baru, dan yang dimaksud adalah ratusan panggilan sistem baru.

Tidak ada istilah yang sangat tepat tanpa konteks.

Caleb
sumber
11

Apa itu API?

API adalah antarmuka yang memungkinkan program perangkat lunak untuk berinteraksi satu sama lain. Ini mendefinisikan seperangkat aturan yang harus diikuti oleh program untuk berkomunikasi satu sama lain. API umumnya menentukan bagaimana rutinitas, struktur data, dll. Harus ditentukan agar dua aplikasi dapat berkomunikasi. API berbeda dalam fungsi yang disediakan oleh mereka. Ada API umum yang menyediakan fungsionalitas perpustakaan dari bahasa pemrograman seperti Java API. Ada juga API yang menyediakan fungsionalitas khusus seperti Google Maps API. Ada juga API yang bergantung pada bahasa, yang hanya bisa digunakan oleh bahasa pemrograman tertentu. Selain itu, ada API independen bahasa yang dapat digunakan dengan beberapa bahasa pemrograman. API perlu diimplementasikan dengan sangat hati-hati dengan memaparkan hanya fungsionalitas atau data yang diperlukan ke luar, sambil menjaga bagian lain dari aplikasi tidak dapat diakses. Penggunaan API telah menjadi sangat populer di internet. Sudah sangat umum untuk memungkinkan beberapa fungsi dan data melalui API ke luar di Web. Fungsionalitas ini dapat digabungkan untuk menawarkan fungsionalitas yang ditingkatkan kepada pengguna.

Apa itu SDK?

SDK adalah seperangkat alat yang dapat digunakan untuk mengembangkan aplikasi perangkat lunak yang menargetkan platform tertentu. SDK termasuk alat, perpustakaan, dokumentasi dan kode sampel yang akan membantu seorang programmer untuk mengembangkan aplikasi. Sebagian besar SDK dapat diunduh dari internet dan banyak SDK disediakan gratis untuk mendorong para programmer menggunakan bahasa pemrograman SDK. Beberapa SDK yang banyak digunakan adalah Java SDK (JDK) yang mencakup semua pustaka, utilitas debugging, dll., Yang akan membuat program penulisan lebih mudah di Jawa. SDK memudahkan kehidupan pengembang perangkat lunak, karena tidak perlu mencari komponen / alat yang kompatibel satu sama lain dan semuanya terintegrasi dalam satu paket tunggal yang mudah dipasang.

Apa perbedaan antara API dan SDK?

API adalah antarmuka yang memungkinkan program perangkat lunak untuk berinteraksi satu sama lain, sedangkan SDK adalah seperangkat alat yang dapat digunakan untuk mengembangkan aplikasi perangkat lunak yang menargetkan platform tertentu. Versi SDK yang paling sederhana bisa berupa API yang berisi beberapa file yang diperlukan untuk berinteraksi dengan bahasa pemrograman tertentu. Jadi API dapat dilihat sebagai SDK sederhana tanpa semua dukungan debugging, dll.

chiranjib
sumber
7

SDK bisa berupa API (file untuk membantu antarmuka dengan aplikasi lain), tetapi biasanya menyertakan kode lain untuk membantu dengan debugging dan bagian lain untuk IDE Anda.

Saya kehabisan akronim.

JeffO
sumber
8
Cepat, dapatkan lagi beberapa TLA!
Mason Wheeler
4
Saya siap untuk EIEIO.
JeffO
5

Semua yang disebutkan sebelumnya benar, tetapi tentang SDK saya ingin menambahkan bahwa kit pengembangan perangkat lunak adalah (atau seharusnya) paket yang sangat lengkap dengan (hampir) semua alat yang diperlukan untuk proses pengembangan, sementara API adalah "hanya" sebuah antarmuka untuk berinteraksi dengan.

Scorchio
sumber
1

Dua sen saya: Saya yakin istilah API sering digunakan secara tidak benar.

API adalah Antarmuka Pemrograman Aplikasi.

Meski agak canggung, itu artinya antarmuka . Jadi aplikasi mungkin memiliki API untuk memungkinkan aplikasi lain berkomunikasi dengannya. Dan perangkat lunak (misalnya kelas dalam sistem OO) mungkin menawarkan API untuk memungkinkan modul lain dalam sistem berkomunikasi dengannya.

Namun sering istilah API digunakan sebagai sinonim dari "perpustakaan". Saya pikir itu bukan penggunaan kata yang benar. Bagian dari perpustakaan adalah API untuk mengizinkan kode menggunakannya, tetapi perpustakaan itu bukan API.

Dan SDK adalah semacam perpustakaan, jadi di situlah kebingungan mungkin.

Aviv Cohn
sumber
1
Saya setuju. Saya mungkin akan berhenti mengatakan bahwa itu "salah". Kapal ini telah berlayar dan penggunaan "API" telah bergeser. Tapi saya setuju bahwa "perpustakaan" sering merupakan kata yang lebih baik untuk apa yang orang-orang sebut "API"
Harry Wood
0

Banyak jawaban lain menjelaskan bahwa SDK adalah tooling , tetapi tidak satupun dari mereka yang langsung keluar dan mengatakan bahwa API adalah spesifikasi .

API untuk compoonent X adalah semua informasi yang Anda butuhkan untuk menulis beberapa komponen lain yang akan berinteraksi dengan X. SDK untuk komponen X dapat berisi rutinitas perpustakaan yang membuatnya lebih mudah bagi Anda untuk menulis komponen itu, tetapi perpustakaan tidak API: Mereka hanyalah perwujudan dari API.

Solomon Lambat
sumber
Apakah ini hanya pendapat Anda atau Anda dapat mendukungnya?
nyamuk
"API menjelaskan dan mengatur perilaku yang diharapkan saat perpustakaan adalah implementasi aktual dari rangkaian aturan ini" en.wikipedia.org/wiki/…
Solomon Slow
per bacaan saya ini tidak terkait dengan titik Anda mencoba untuk membuat: "bahwa API adalah spesifikasi"
Agas
-3

Saya ingin membandingkan dengan cara ini.

Jika Anda seorang Pengembang yang menggunakan Microsoft Tools:

API = Microsoft.Net Framework Vs SDK = Visual Studio

Jika Anda seorang Pengembang yang menggunakan Java:

API = Java RunTime Vs SDK = Alat apa pun yang akan menyediakan Kit Pengembangan (JDK)

Saya kira SDK harus bergantung pada API yang sesuai - tidak ada SDK tanpa API.

Arun
sumber
Saya pikir apa yang Anda bicarakan dalam hal Visual Studio adalah IDE, yang dapat memberikan akses ke satu atau lebih SDK dan / atau API.
KeithS
1
Visual Studio bukan SDK tetapi beberapa edisi menyertakan Windows atau .NET SDK karena Anda cenderung mengembangkannya menggunakan VS.
JBRWilkinson
-3

Berikut ini analogi sederhana ... API seperti kata-kata yang dapat Anda gunakan, dan SDK seperti kalimat yang telah disusun untuk Anda.

Peter
sumber
-4

Ketika aplikasi dikembangkan dan ditingkatkan dengan menghubungkannya dengan aplikasi lain, ada kebutuhan untuk memungkinkan aplikasi lain (logika) untuk berinteraksi dengan logika inti - ini dilakukan melalui serangkaian API yang ditentukan. SDK digunakan untuk membuat / membuat kode yang menggunakan API untuk berinteraksi dengan aplikasi lain.

pengguna144980
sumber
1
ini sepertinya tidak menawarkan sesuatu yang substansial atas poin yang dibuat dan dijelaskan dalam 11 jawaban sebelumnya
agas