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?
terminology
api
semantics
sdk
KeithS
sumber
sumber
Jawaban:
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.
sumber
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:
sumber
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)
sumber
"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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
Saya ingin membandingkan dengan cara ini.
Jika Anda seorang Pengembang yang menggunakan Microsoft Tools:
Jika Anda seorang Pengembang yang menggunakan Java:
Saya kira SDK harus bergantung pada API yang sesuai - tidak ada SDK tanpa API.
sumber
Berikut ini analogi sederhana ... API seperti kata-kata yang dapat Anda gunakan, dan SDK seperti kalimat yang telah disusun untuk Anda.
sumber
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.
sumber