Izbira pravega orodja ali tehnologije za določen problem je eden najpomembnejših vidikov programiranja. Pravo orodje je ključ do uspeha projekta. Tu večina programerjev ne uspe, saj se običajno ukvarjajo s številnimi orodji. To se nanaša na končno vprašanje, "ali morate svojo aplikacijo sestaviti s knjižnico ali ogrodjem?" To je ena najbolj diskutabilnih tem razprav v skupnosti programerjev in pogosto povzroča zmedo. Majhna ekipa s peščico razvijalcev, večinoma začetnikov, bo morda bolje sodelovala z okvirom, medtem ko knjižnice gradijo gradnike, ki jih je mogoče uporabiti kjer koli in omogočajo večjo prilagodljivost in nadzor.
Ključna razlika med knjižnico in okvirom je "Inverzija nadzora" (IoC). Lahko bi rekli, da je okvir zbirka knjižnic, vendar je celotna ideja nekako drugačna.
Knjižnica je zbirka funkcij za večkratno uporabo, ki jih uporabljajo računalniški programi, kar pomeni vire, ki jih lahko ponovno uporabite, kar lahko vključuje razrede, podprograme, vnaprej sestavljeno kodo, predloge za sporočila itd. Večinoma imajo programski jeziki svoje standardne knjižnice, programerji pa lahko ustvarijo tudi svoje knjižnice po meri Preprosto je del kode, ki so ga napisali drugi razvijalci, ki ga je mogoče uporabiti kjer koli. Knjižnice je mogoče brez težav vključiti v obstoječe projekte in tako dodati funkcionalnost, do katere lahko dostopate z API-jem. Za začetek je potrebno malo znanja.
Framework je del kode, ki narekuje, kako naj bo projekt strukturiran in izveden. Preprosto pooblasti arhitekturo vašega projekta, kot je določitev oblikovalskih parametrov aplikacije, tako da se lahko osredotočite na posebnosti projekta in s tem poudarite ponovno uporabo dizajna, ne pa večkratno uporabo kode. Za razliko od knjižnic je krmilje obrnjeno v primeru okvirov in koda nikoli ne pokliče v okvir, namesto tega vas okvir pokliče. Za razliko od knjižnic okvirji poudarjajo strukturo in standarde.
V programiranju je knjižnica zbirka funkcij za večkratno uporabo - kar pomeni vire, ki jih lahko ponovno uporabite - ki jih uporabljajo računalniški programi. Viri, včasih imenovani kot moduli, so običajno shranjeni v objektni obliki. Večina programskih jezikov ima svoje knjižnice, vendar programerji lahko ustvarijo tudi lastne knjižnice po meri. Preprosto povedano, knjižnica je niz funkcij, ki jih lahko pokličete, medtem ko je okvir del kode, ki narekuje arhitekturo vašega projekta. Na nek način se prepletajo okviri in jeziki programiranja, ki skupaj pomagajo v računalniških programih.
"Inverzija nadzora" je ključna razlika, ki loči okvir od knjižnice. Knjižnica je niz funkcij in rutin, ki jih uporabljajo drugi programi in imate popoln nadzor, če to pokličete iz knjižnice. Vendar je nadzor obrnjen v primeru okvira. Ta narekuje strukturo vašega projekta in koda nikoli ne vstopi v okvir, temveč vas pokliče. Preprosto povedano, knjižnico lahko preprosto pomislite na funkcijo aplikacije in na okvir kot na okostje aplikacije, v kateri aplikacija določa lastne lastnosti.
Knjižnice so nabor funkcij, ki jih je mogoče uporabiti kjer koli, kar pomeni, da je preprosto kodo, ki jo napišejo drugi razvijalci in ki jo je mogoče ponovno uporabiti. Brezhibno so vključene v obstoječe projekte, da dodate funkcionalnost, do katere lahko dostopate z API-jem. Večinoma se uporabljajo za pogosto uporabljene module, ker vam ni treba izrecno povezati vseh programov, ki jih uporabljajo. Pomembni so pri povezovanju in vezavi programov. Okviri na drugi strani zagotavljajo standardni način za gradnjo in uvajanje aplikacij in jih je mogoče večinoma uporabiti pri zagonu novega projekta, ne pa vključiti v obstoječe.
Da bi bolje razumeli razliko med knjižnico in ogrodjem, si oglejmo jQuery in AngularJS. jQuery je knjižnica JavaScript za več platform, ki poenostavlja DOM manipulacijo in številne druge zapletene stvari, kot so manipulacija s CSS, HTML dogodki, AJAX klici itd. Namen jQuery je poenostaviti uporabo JavaScript na vaši spletni strani. AngularJS je na drugi strani strukturni okvir, ki temelji na arhitekturi MVC, ki se uporablja za ustvarjanje dinamičnih spletnih aplikacij. V celoti temelji na HTML-ju in JavaScript-ju, za razliko od jQueryja pa ga ni mogoče vključiti v obstoječe projekte, saj kot okvir narekuje, kako je treba kodo strukturirati in zagnati..
Ko pride do zmede glede odločitve, ali naj za izdelavo aplikacije uporabljate knjižnico ali okvir, vse pride na vrsto. Knjižnice so nabor funkcij, ki jih lahko pokličete in vsak klic opravi neko opravilo in vam vrne nadzor. Lahko jih brezhibno vključimo v obstoječe projekte in za začetek je potrebno malo znanja. Okviri na drugi strani narekujejo celotno strukturo vašega projekta in za razliko od knjižnic vas okvirji kličejo, koda pa nikoli ne vnese v okvir. Ključna razlika je seveda inverzija nadzora. Preprosto povedano, knjižnice so bolj prožne z večjo stopnjo nadzora, medtem ko okviri uveljavljajo strukturo in standarde.