Saya mencoba menjelaskan kepada non-pengembang perbedaan antara API dan SDK. Saya perlu menjelaskan mengapa vendor perangkat lunak sidik jari komersial kemungkinan tidak akan menyediakan SDK, meskipun mereka mungkin telah menggunakannya.
Vendor perangkat dan vendor perangkat lunak dapat dan harus memaparkan API yang terdefinisi dengan baik. API ini memungkinkan program perangkat lunak lain (ditulis untuk) berinteraksi dengan komponen perangkat lunak atau perangkat keras vendor sendiri.
Jika seseorang memiliki lebih banyak ide untuk menjelaskan ini dengan jelas, saya akan sangat menghargai saran tersebut. Saya ingin menekankan bahwa tujuannya adalah untuk menjelaskan konsep-konsep kepada non-programmer yang tidak tahu istilah pengembang .
Secara khusus, dalam konteks sensor sidik jari versus perangkat lunak untuk melakukan pendaftaran / verifikasi, berikut adalah cara saya menjelaskannya:
Jika saya produsen alat sidik jari / sensor dan tidak dalam bisnis menulis perangkat lunak, cara saya bisa memasarkan produk saya adalah:
- Pastikan driver perangkat saya dapat diinstal pada berbagai sistem operasi
- Tentukan dan sediakan API untuk pengembang perangkat lunak untuk menulis program (misalnya, untuk pendaftaran, verifikasi) untuk "berbicara" atau menggunakan perangkat saya
- Kembangkan dan berikan SDK (satu langkah di luar API) untuk membuatnya lebih mudah dan lebih cepat bagi pengembang perangkat lunak untuk menulis program yang berfungsi dengan perangkat saya. SDK dapat menyediakan perpustakaan kode pembantu, aplikasi referensi, dokumentasi dll.
API seperti blok bangunan dari beberapa permainan membingungkan yang dimainkan anak untuk bergabung dengan balok dalam berbagai bentuk dan membangun sesuatu yang dapat mereka pikirkan.
SDK , di sisi lain, adalah bengkel yang tepat di mana semua alat pengembangan tersedia, bukan blok bangunan pra-bentuk. Di bengkel Anda memiliki alat yang sebenarnya dan Anda tidak terbatas pada blok, dan karena itu dapat membuat blok Anda sendiri, atau dapat membuat sesuatu tanpa blok untuk memulai.
pengkodean tanpa SDK atau API seperti membuat semuanya dari awal tanpa bengkel - Anda bahkan harus membuat alat sendiri
sumber
not limited to blocks, or can create something without any blocks to begin with
, lebih seperti SDK memberi Anda komposisi yang lebih baik dari blok API untuk bekerja dengannya. SDK dibuat di atas API.Misalkan perusahaan C menawarkan produk P dan P melibatkan perangkat lunak dalam beberapa cara. Kemudian C dapat menawarkan pustaka / set pustaka kepada pengembang perangkat lunak yang menggerakkan sistem perangkat lunak P.
Perpustakaan itu / perpustakaan adalah SDK . Ini adalah bagian dari sistem P. Ini adalah kit untuk digunakan oleh pengembang perangkat lunak untuk memodifikasi, mengkonfigurasi, memperbaiki, memperbaiki, dll. Bagian perangkat lunak P.
Jika C ingin menawarkan fungsionalitas P ke perusahaan / sistem lain, ia melakukannya dengan API .
Ini adalah antarmuka ke P. Cara untuk sistem eksternal untuk berinteraksi dengan P.
Jika Anda berpikir dalam hal implementasi, mereka akan tampak sangat mirip. Apalagi sekarang bahwa internet telah menjadi seperti satu sistem operasi terdistribusi besar.
Namun, secara sengaja, mereka sebenarnya sangat berbeda.
Anda membangun sesuatu dengan SDK dan Anda menggunakan atau menggunakan sesuatu dengan API.
sumber
Application Programming Interface adalah seperangkat rutinitas / struktur data / kelas yang menentukan cara untuk berinteraksi dengan platform target / perangkat lunak seperti OS X, Android, aplikasi manajemen proyek, perangkat lunak virtualisasi dll.
Sementara Software Development Kit adalah pembungkus API / s yang membuat pekerjaan mudah bagi pengembang.
Sebagai contoh, Android SDK memfasilitasi pengembang untuk berinteraksi dengan platform Android secara keseluruhan sementara platform itu sendiri dibangun oleh komponen perangkat lunak komposit yang berkomunikasi melalui API.
Juga, terkadang SDK dibangun untuk memfasilitasi pengembangan dalam bahasa pemrograman tertentu. Misalnya, driver web Selenium (bawaan Java) menyediakan API untuk mendorong browser apa pun secara native, sementara capybara dapat dianggap sebagai SDK yang memfasilitasi pengembang Ruby untuk menggunakan driver web Selenium. Namun, driver web Selenium juga merupakan SDK dengan sendirinya karena menggabungkan interaksi dengan berbagai driver browser asli ke dalam satu paket.
sumber
Saya tidak yakin ada definisi resmi dari kedua istilah ini. Saya memahami API sebagai sekumpulan perpustakaan yang dapat diprogram dan sumber pendukungnya yang terdokumentasi seperti header atau file IDL. SDK biasanya mengandung API tetapi seringkali sering menambahkan kompiler, alat, dan sampel ke dalam campuran.
sumber
API adalah spesifikasi tentang cara melakukan sesuatu, antarmuka, seperti "Jalur kereta api berjarak empat kaki, dan batang logam lebarnya 1 inci" Sekarang, setelah Anda memiliki API, kini Anda dapat membangun kereta yang cocok dengan kereta api tersebut. trek jika Anda ingin pergi ke mana pun. API hanyalah informasi tentang cara membuat kode Anda, itu tidak melakukan apa-apa.
SDK adalah beberapa paket alat yang sebenarnya sudah khawatir tentang spesifikasi. "Ini kereta, batu bara, dan petugas pemeliharaan. Gunakan untuk berpindah dari satu tempat ke tempat lain" Dengan SDK Anda tidak perlu khawatir tentang hal-hal spesifik. SDK adalah kode aktual, dapat digunakan dengan sendirinya untuk melakukan sesuatu, tetapi tentu saja, kereta tidak akan mulai secara spontan, Anda masih harus mendapatkan konduktor untuk mengendalikan kereta.
SDK juga memiliki API mereka sendiri. "Jika Anda ingin memberi daya pada kereta, masukkan batu bara ke dalamnya", "Tarik tuas biru untuk memindahkan kereta.", "Jika kereta mulai bertingkah lucu, hubungi petugas pemeliharaan" dll.
sumber
API = Kamus kata yang tersedia dan artinya (dan tata bahasa yang diperlukan untuk menggabungkannya)
SDK = Sistem pengolah kata ... untuk bayi berusia 2 tahun ... yang menulis langsung dari ide
Meskipun Anda BISA pergi ke sekolah dan menjadi master dalam bahasa Anda setelah beberapa tahun, menggunakan SDK akan membantu Anda menulis seluruh kalimat yang bermakna dalam waktu singkat (Mengampuni kenyataan bahwa, dalam contoh ini, sebagai bayi Anda bahkan belum mendapatkan untuk belajar bahasa lain setidaknya untuk belajar menggunakan SDK.)
sumber
Bagaimana dengan ... Rasanya seperti Anda ingin memasang sistem home theatre di rumah Anda. Menggunakan API sama seperti mendapatkan semua kabel, sekrup, bit, dan potongan. Kemungkinannya tidak terbatas (dibatasi hanya oleh bagian yang Anda terima), tetapi terkadang luar biasa. SDK seperti mendapatkan kit. Anda masih harus menyatukannya, tetapi ini lebih seperti mendapatkan potongan pre-cut dan instruksi untuk rak buku IKEA daripada sekotak sekrup.
sumber
Anda menggunakan SDK untuk mengakses fungsionalitas perpustakaan, dan API untuk mengontrolnya.
sumber
API = Antarmuka Pemrograman Aplikasi SDK = Kit Pengembangan Perangkat Lunak
Sebuah SDK tampaknya menjadi satu set lengkap API s yang memungkinkan Anda untuk melakukan sebagian tindakan apapun Anda akan perlu untuk untuk membuat aplikasi. Selain itu SDK dapat mencakup alat lain untuk mengembangkan untuk platform / item yang untuknya.
Sebuah API di sisi lain hanya serangkaian metode terkait yang mungkin baik untuk tujuan tertentu.
Sebagai contoh, JDK (Java Development Kit) berisi API dan juga kompiler, runtime, dan alat lain-lain. Java API hanyalah semua pustaka yang membentuk bahasa inti yang dapat Anda gunakan di luar kotak.
Contoh API: API Java, Google Maps API, Flash Player API.
Contoh SDK: JDK, GWT, Flex SDK.
sumber