Memilih alat atau teknologi yang tepat untuk masalah tertentu adalah salah satu aspek terpenting dari pemrograman. Alat yang tepat adalah kunci keberhasilan proyek. Di sinilah kebanyakan programmer gagal karena mereka biasanya berurusan dengan banyak alat. Ini berkaitan dengan pertanyaan pamungkas, "haruskah Anda membangun aplikasi Anda dengan perpustakaan atau kerangka kerja?" Ini adalah salah satu topik diskusi yang paling bisa diperdebatkan dalam komunitas programer dan seringkali menjadi sumber kebingungan. Sebuah tim kecil dengan beberapa pengembang, kebanyakan pemula mungkin lebih baik bekerja dengan kerangka kerja sedangkan perpustakaan adalah blok bangunan yang dapat digunakan di mana saja dan memungkinkan fleksibilitas dan kontrol yang lebih besar.
Perbedaan utama antara perpustakaan dan kerangka kerja adalah "Inversion of Control" (IoC). Bisa dikatakan kerangka adalah kumpulan perpustakaan tetapi ide keseluruhannya entah bagaimana berbeda.
Perpustakaan adalah kumpulan fungsi yang dapat digunakan kembali yang digunakan oleh program komputer yang berarti sumber daya yang dapat Anda gunakan kembali yang mungkin termasuk kelas, subrutin, kode pra-kompilasi, templat pesan, dll. Sebagian besar bahasa pemrograman memiliki perpustakaan standar sendiri tetapi pemrogram juga dapat membuat sendiri perpustakaan khusus. Itu hanya sepotong kode yang ditulis oleh pengembang lain yang dapat digunakan kembali di mana saja. Perpustakaan dapat dengan mudah dimasukkan ke dalam proyek yang ada untuk menambah fungsionalitas yang dapat Anda akses lebih lanjut menggunakan API. Diperlukan sedikit pengetahuan untuk memulai.
Kerangka kerja adalah sepotong kode yang menentukan bagaimana proyek harus disusun dan dijalankan. Ini hanya mandat arsitektur proyek Anda seperti mendefinisikan parameter desain aplikasi sehingga Anda dapat fokus pada spesifik proyek, sehingga menekankan pada usabilitas desain daripada usabilitas kode. Tidak seperti perpustakaan, kontrol terbalik jika ada kerangka kerja dan kode tidak pernah memanggil kerangka kerja, sebaliknya, kerangka kerja memanggil Anda. Tidak seperti perpustakaan, kerangka kerja menekankan pada struktur dan standar.
Dalam pemrograman, perpustakaan adalah kumpulan fungsi yang dapat digunakan kembali - artinya sumber daya yang dapat Anda gunakan kembali - digunakan oleh program komputer. Sumber daya, kadang-kadang disebut sebagai modul, umumnya disimpan dalam format objek. Sebagian besar bahasa pemrograman memiliki pustaka standar sendiri tetapi pemrogram juga dapat membuat pustaka kustom sendiri. Secara sederhana, perpustakaan adalah seperangkat fungsi yang dapat Anda panggil, sedangkan kerangka kerja adalah sepotong kode yang menentukan arsitektur proyek Anda. Di satu sisi, kerangka kerja dan bahasa pemrograman saling terkait yang membantu dalam program komputer.
"Inversion of Control" adalah perbedaan utama yang memisahkan kerangka kerja dari perpustakaan. Pustaka adalah serangkaian fungsi dan rutin yang digunakan oleh program lain dan Anda berada dalam kendali penuh jika ketika Anda memanggil metode dari pustaka. Namun, kontrol dibalik jika ada kerangka kerja. Ini menentukan struktur proyek Anda dan kode tidak pernah memanggil kerangka kerja, sebaliknya, ia memanggil Anda. Sederhananya, Anda bisa menganggap perpustakaan sebagai fungsi dari aplikasi dan kerangka kerja sebagai kerangka aplikasi di mana aplikasi mendefinisikan fitur-fiturnya sendiri.
Perpustakaan adalah seperangkat fungsi yang dapat digunakan di mana saja yang berarti itu hanya sepotong kode yang ditulis oleh pengembang lain yang dapat digunakan kembali. Mereka dimasukkan secara mulus ke dalam proyek yang ada untuk menambah fungsionalitas yang dapat Anda akses menggunakan API. Mereka sebagian besar digunakan untuk modul yang sering digunakan karena Anda tidak perlu menautkannya secara eksplisit ke setiap program yang menggunakannya. Mereka penting dalam proses penautan dan pengikatan program. Kerangka kerja, di sisi lain, menyediakan cara standar untuk membangun dan menyebarkan aplikasi dan sebagian besar dapat digunakan saat memulai proyek baru daripada diintegrasikan ke dalam yang sudah ada.
Untuk lebih memahami perbedaan antara perpustakaan dan kerangka kerja, mari kita lihat jQuery dan AngularJS. jQuery adalah pustaka JavaScript lintas platform yang menyederhanakan manipulasi DOM bersama dengan banyak hal rumit lainnya seperti manipulasi CSS, metode acara HTML, panggilan AJAX dll. Tujuan jQuery adalah untuk menyederhanakan penggunaan JavaScript di situs web Anda. AngularJS, di sisi lain, adalah kerangka kerja struktural berdasarkan arsitektur MVC yang digunakan untuk membuat aplikasi web yang dinamis. Ini sepenuhnya didasarkan pada HTML dan JavaScript dan tidak seperti jQuery, itu tidak dapat diintegrasikan ke dalam proyek yang ada karena sebagai kerangka kerja, itu menentukan bagaimana kode Anda disusun dan dijalankan..
Ketika ada kebingungan tentang memutuskan apakah Anda harus menggunakan perpustakaan atau kerangka kerja untuk membangun aplikasi, itu semua menjadi kontrol. Perpustakaan adalah seperangkat fungsi yang dapat Anda panggil dan setiap panggilan melakukan beberapa tugas dan mengembalikan kontrol kepada Anda. Mereka dapat secara mulus dimasukkan ke dalam proyek yang ada dan sedikit pengetahuan diperlukan untuk membantu Anda memulai. Kerangka kerja, di sisi lain, menentukan struktur keseluruhan proyek Anda dan tidak seperti perpustakaan, kerangka kerja memanggil Anda dan kode tidak pernah memanggil kerangka kerja. Perbedaan utama tentu saja adalah Inversion of Control. Secara sederhana, perpustakaan lebih fleksibel dengan tingkat kontrol yang lebih besar, sedangkan kerangka kerja menegakkan struktur dan standar.