Library vs framework vs API? [Tutup]


33

Apa perbedaan antara pustaka, kerangka kerja, dan API? Mereka semua tampak sama bagi saya. Saya ingin mendengar orang-orang memikirkan ini.





2
@ Jorg: Anda seharusnya mengirimkan ini sebagai jawaban. Karena itu adalah spam batas dan menyumbat halaman.

2
@Sergio - Jörg W Mittag memiliki 1171 jawaban yang masuk akal dan diterima dengan baik di SO (42 jawaban yang bijaksana dan diterima dengan baik di sini). Dia tidak berusaha menjadi sulit. Dia mencoba meningkatkan P.SE dengan menunjukkan betapa tidak perlunya pertanyaan ini (belum lagi belum ada jawaban yang menyebutkan karakteristik pembeda suatu kerangka kerja).
Corbin Maret

Jawaban:


35

Perpustakaan adalah kumpulan fungsi / objek yang melayani satu tujuan tertentu. Anda bisa menggunakan perpustakaan di berbagai proyek.

Kerangka kerja adalah kumpulan pola dan perpustakaan untuk membantu membangun aplikasi.

API adalah antarmuka untuk program lain untuk berinteraksi dengan program Anda tanpa memiliki akses langsung.

Dengan kata lain, anggap perpustakaan sebagai add-on / bagian dari aplikasi, kerangka kerja sebagai kerangka aplikasi, dan API sebagai bagian yang menghadap ke luar dari aplikasi tersebut.


7
Itu bukan definisi kerangka kerja yang sangat bagus. Saya tidak akan menyebut kerangka apa pun sebagai "kumpulan pola dan perpustakaan"
TheLQ

Kerangka kerja lebih seperti lingkungan untuk dibangun. Selain itu +1
Klaim

ya, saya sedikit kehilangan kata-kata untuk yang itu. Adakah yang punya saran yang lebih baik? bijaksana lainnya merasa bebas untuk mengedit. Saya pergi mencari di wikipedia, yang menyebut kerangka kerja: "Kerangka adalah kasus khusus pustaka perangkat lunak karena mereka adalah abstraksi yang dapat digunakan kembali dari kode yang dibungkus dengan antarmuka pemrograman aplikasi (API)" yang didefinisikan dengan baik, yang tampaknya menyebabkan lebih banyak kebingungan dalam konteks pertanyaan ini daripada bantuan.
GSto

3
Pustaka adalah ketika kode Anda bertanggung jawab (kode Anda "menggunakan perpustakaan") dan kerangka kerja adalah ketika itu diisi (kerangka kerja "menjalankan kode Anda"). Sebagai contoh, sebuah framework menentukan urutan apa yang harus terjadi (Swing, servlets) sedangkan dengan library Anda memutuskan kapan dan bagaimana ia akan digunakan (konversi gambar, enkripsi). API hanyalah definisi dari sekumpulan fungsi yang dapat Anda panggil, dan merupakan bagian dari pustaka dan kerangka kerja.
Martin Wickman

14

Sejauh ini jawaban yang baik tetapi mereka kehilangan satu poin kunci - kerangka kerja menggunakan IOC . Kode Anda dikelilingi oleh kerangka kerja. Itu hidup di dalamnya. Sebaliknya, kode Anda hanya menggunakan pustaka atau API. Ia hidup di luarnya. IoC bedanya.


Belum tentu benar. Kerangka kerja dapat menggunakan IoC, dan aplikasi Anda bisa hidup di dalam kerangka kerja, tetapi tidak harus. Entah entri Wikipedia pada Kerangka daftar ini sebagai 'fitur yang membedakan' dari kerangka kerja, dan referensi disertasi ini " dirkriehle.com/computer-science/research/dissertation/… ", tetapi disertasi itu sendiri tidak mengandung inversi frasa ' 'atau' ioc ', dan sebenarnya menyatakan "Biasanya, aplikasi tidak hanya menggunakan satu kerangka kerja, tetapi beberapa." (p26, ref p9)
Kirk Broadhurst

11
@Kirk Broadhurst-sebenarnya memikirkan Martin Fowler : "Inversion of Control adalah bagian penting dari apa yang membuat kerangka kerja berbeda dengan perpustakaan (...) Kerangka kerja mewujudkan beberapa desain abstrak, dengan lebih banyak perilaku bawaan. Untuk menggunakan Anda perlu memasukkan perilaku Anda ke berbagai tempat dalam kerangka kerja baik dengan subklasifikasi atau dengan memasukkan kelas Anda sendiri. Kode kerangka kerja kemudian memanggil kode Anda ... "Jika kita menyimpulkan IoC bukan fitur yang membedakan, maka tidak ada fitur yang membedakan - semuanya sama dan itu tidak menyenangkan.
Scant Roger

@ ScantRoger, Apakah Java Collections Framework menggunakan IOC? Sepertinya tidak .......
Pacerier

3

Perpustakaan adalah kumpulan kode yang dibangun untuk melakukan tugas-tugas umum. Kode perpustakaan cenderung relatif stabil dan bebas bug. Penggunaan perpustakaan yang tepat dapat mengurangi jumlah kode yang perlu ditulis. Ini akan cenderung mengurangi jumlah baris kode untuk aplikasi akan meningkatkan tingkat di mana fungsionalitas disampaikan. Dalam kebanyakan kasus, lebih baik menggunakan rutin perpustakaan daripada menulis kode Anda sendiri.

API (Application Programming Interface) adalah antarmuka ke beberapa fungsionalitas yang memungkinkan aplikasi mengakses fungsionalitas yang tersedia. API dapat disebut sebagai Antarmuka. API ada di banyak tingkatan termasuk sistem, perpustakaan, kerangka kerja, program, dan aplikasi. API harus didefinisikan sebelum kode yang mengimplementasikannya diimplementasikan.

API harus stabil, meskipun bagian dari API dapat tidak digunakan lagi karena berbagai alasan. Semakin luas menggunakan API, semakin sulit untuk mengubahnya. Sebagian besar jika tidak semua API Java 1.0 masih tersedia, meskipun banyak metode telah ditinggalkan.

Kerangka adalah kumpulan API yang dirancang untuk membuat pembangunan aplikasi lebih sederhana. Kerangka kerja menyediakan implementasi untuk komponen yang dapat digunakan kembali. Kerangka kerja yang baik cenderung khusus dalam aplikasi mereka.

Java Collections Framework adalah kumpulan API untuk berbagai jenis objek yang dapat digunakan untuk menangani koleksi. Ini menyediakan hierarki API ke berbagai koleksi. Dalam Java Collections Framework, antarmuka SortedSet memperluas antarmuka Set yang pada gilirannya memperluas antarmuka Koleksi. API ini adalah antarmuka abstrak, dan implementasi sebenarnya memiliki nama yang berbeda. Kerangka Kerja Koleksi membuat implementasi koleksi menjadi mudah, dan menyederhanakan implementasi yang berubah selama pengembangan.

Kerangka kerja dapat dibangun dari kerangka kerja yang lebih kecil seperti yang terlihat dalam Java Spring Framework yang ditargetkan pada pengembangan J2EE. Spring terdiri dari lebih dari selusin kerangka kerja, banyak di antaranya dapat digunakan sendiri atau digantikan oleh kerangka kerja lainnya.

Penggunaan pustaka, API, dan kerangka kerja yang tepat dapat menyederhanakan pengembangan. Komponen-komponen ini menangani masalah-masalah umum, dan memungkinkan tim pengembangan untuk fokus pada masalah spesifik aplikasi.


2

Kerangka kerja adalah langkah dari perpustakaan. Jika kotak peralatan Anda adalah perpustakaan maka bengkel Anda akan menjadi kerangka kerja.

Wikipedia mengatakan

API adalah abstraksi yang menggambarkan antarmuka untuk interaksi dengan serangkaian fungsi yang digunakan oleh komponen sistem perangkat lunak

Perbedaan penting antara API dan antarmuka pengguna adalah bahwa API memungkinkan perangkat lunak / layanan lain berinteraksi dengan solusi Anda secara terprogram.

API dapat dibangun baik untuk aplikasi (melalui dll atau plugin) atau situs web dan layanan (melalui REST dan layanan web)


Analogi yang bagus ...
sunwukung

1

API menentukan cara menggunakan sesuatu yang lain dalam hal objek dan metode apa yang dapat digunakan dari sumber. Misalnya, mengintegrasikan Twitter atau Facebook ke situs menggunakan API dari Twitter atau Facebook untuk memastikan data yang tepat diperbarui.

Kerangka kerja cenderung sedikit bulkier dalam arti karena ini hampir dapat membentuk bahasa sendiri di kali. jQuery menjadi contoh kerangka kerja yang memiliki sintaks sendiri dan membawa sedikit lebih berat dalam hal masuk ke kode saya dalam arti tertentu. Kerangka juga bisa menjadi platform yang membuatnya mirip dengan API dalam arti tertentu, misalnya Kerangka Kerja Win32API atau .Net masing-masing memiliki banyak metode untuk membangun aplikasi sehingga bisa ada Kerangka yang memiliki API di dalamnya dan API yang juga dipandang sebagai Kerangka.

Perpustakaan cenderung berupa file biner yang mengimplementasikan API atau Framework dan karenanya mereka adalah bit yang harus Anda gunakan untuk menggunakan API atau Framework dalam beberapa kasus. Setidaknya begitulah cara saya melihat istilah-istilah ini dan perbedaan di antara mereka.


1

Pergi ke perpustakaan dan mulai membaca buku. Jika Anda adalah aplikasi maka koleksi buku adalah perpustakaan. Rak, lemari, dan kompleks yang menampung semua ini merupakan kerangka kerja. Segala sesuatu yang Anda hubungi saat melakukan tugas membaca buku adalah API.


Ini jawaban yang bagus.
Magus

0

Pustaka adalah kumpulan kode yang digunakan untuk menyederhanakan tugas-tugas umum - bisa berupa kelas, fungsi atau apa pun yang khusus untuk bahasa atau platform Anda. Contoh yang baik mungkin perpustakaan manipulasi string yang menyediakan pembantu untuk tugas-tugas umum (membangun, membelah, mencari atau mengurutkan string dll).

API (antarmuka pemrograman aplikasi) adalah definisi ('antarmuka') tentang cara bekerja dengan aplikasi, sistem, atau teknologi lain. Ini pada dasarnya mendefinisikan operasi yang tersedia untuk berinteraksi dengan sistem lainnya. API dapat berupa pustaka (artinya API dibungkus dengan pustaka atau sekumpulan kelas), tetapi perbedaannya adalah bahwa API selalu merujuk sistem eksternal - apakah itu basis data, layanan web, aplikasi lain, atau sistem operasi diri.

Kerangka kerja adalah konsep yang lebih besar - biasanya akan berisi sejumlah perpustakaan dan API untuk melakukan tugas-tugas umum. Itu ada pada tingkat konseptual yang lebih tinggi - tidak hanya kumpulan alat, tetapi juga kumpulan pola desain, praktik terbaik, dan metodologi. Kerangka kerja perangkat lunak adalah perpanjangan dari kerangka umum - artinya termasuk menjadi dasar dari mana hal-hal dibangun, memberikan dukungan dan struktur, dan memberikan panduan dan definisi untuk persyaratan.


0

Aplikasi ini dikembangkan menggunakan perpustakaan berdasarkan kerangka kerja dan berkomunikasi melalui API.

Jika Anda membuat aplikasi, katakanlah aplikasi pemrosesan gambar online,

  • Anda dapat menggunakan beberapa pustaka pemrosesan gambar pra-tertulis.
  • pada kerangka apa pun yang Anda tahu yang akan memandu Anda untuk membangun aplikasi.
  • Anda akan menyediakan aplikasi beberapa cara untuk berinteraksi dengan dunia luar .. itu akan menjadi API aplikasi Anda ke seluruh dunia.

Ketika ada panggilan masuk ke aplikasi Anda

  • itu akan ditangani dengan cara bagaimana Anda mendesain dengan panduan kerangka kerja
  • memproses panggilan yang dilakukan oleh perpustakaan
  • fungsi-fungsi ini akan diakses melalui API Anda dari dunia luar

kepada orang yang menelepon

alasan mengapa ini ada:

  • perpustakaan: menyelamatkan Anda dari menciptakan kembali roda
  • framework: menyelamatkan Anda dari perangkap tak terduga dari desain dan penanganan sistem kecuali jika framework itu sendiri memiliki kekurangan
  • API: memastikan keamanan aplikasi dengan menghubungkan inti dari akses dunia nyata
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.