Dwa pojęcia, które bardzo często są używane zamiennie nawet przez osoby ściśle związane z branżą IT. Jest jednak pomiędzy nimi istotna różnica.
Na początku jedna ważna informacja- zarówno biblioteka jak i framework są kodem napisanym przez kogoś innego i rozwiązującym popularne problemy. Jest to kod reużywalny.
Bardzo popularny jest przykład dotyczący mieszkania. Biblioteka jest jak jego urządzanie. Masz już konkretne lokum z określonym rozmieszczeniem pomieszczeń. To, czego teraz potrzebujesz, to je urządzić. Konieczny jest miedzy innymi stół, przy którym będziesz mogła wygodnie zjeść i pograć w planszówki. Tutaj zazwyczaj nie idziesz do lasu, aby wybrać dla niego odpowiednie drewno, a potem samemu zabrać się do jego budowy. Idziesz do sklepu z meblami i kupujesz taki, jaki będzie najlepiej pasował. Pod względem praktycznym i wizualnym. Podobnie jak chcąc powiesić obraz w sypialni, musimy zamontować wkręty i sięgamy po wkrętarkę nie składając jej samodzielnie od zera. W przeciwieństwie do tego framework moglibyśmy przyrównać do budowania samego bloku mieszkalnego. Tutaj masz określone materiały, ograniczony wybór i zasady konstrukcyjne, które narzucają na Ciebie ograniczenia. To framework dyktuje swoje wymagania, nie Ty.
Możemy więc powiedzieć, że biblioteka jest fragmentem kodu, który udostępnia określone funkcjonalności. Budując aplikację również nie programujemy wszystkiego od zera. Nasza praca oprócz pisania własnego customowego kodu pod konkretne rozwiązanie polega na umiejętnym korzystaniu z gotowych elementów i funkcjonalności, które oferują właśnie biblioteki. W programowaniu przykładami takich funkcjonalności mogą być na przykład biblioteka do formatowania dat w zależności od ustawionego języka, biblioteka do obsługi przesuwania drag&drop elementów, biblioteka do rysowania wykresów itp. Co bardzo ważne, korzystając z funkcjonalności oferowanych przez biblioteki, nie narzucają nam one sposobu, w jaki musimy strukturyzować nasz kod w całej aplikacji.
Mając w głowie porównanie zamieszczone na początku tego artykułu framework to pewnego rodzaju szkielet, rama do budowy aplikacji. Tutaj nie mówimy już o oferowanych pojedynczych funkcjonalnościach, ale o całym ekosystemie. Jest to rozwiązanie zdecydowanie „cięższe”, zazwyczaj nie stosowane w stosunku do małych aplikacji. Rozwiązanie, które w niektórych okolicznościach może również zablokować. Z drugiej jednak strony w przypadku dużych systemów jest często koniecznością- zdecydowanie ułatwia strukturyzację całej aplikacji i nadaje jej odpowiednie ramy.
Można więc powiedzieć, że stosowanie bibliotek daje programiście dużo większą swobodę, ale i odpowiedzialność za strukturyzację całego rozwiązania, podczas, gdy korzystając z frameworka więcej rzeczy dostajemy za darmo płacąc za to cenę większych ograniczeń.
Z perspektywy nie „czysto programistycznej” warto mieć na uwadze jeszcze jeden punkt- zazwyczaj używając frameworka decydujemy się na jeden konkretny wybór, w przypadku bibliotek natomiast często zdarza się, że w jednej aplikacji stosujemy ich wiele. Czy to znaczy, że możemy używać ich w nieskończoność? Ano niekoniecznie, gdyż każda użyta biblioteka to dodatkowa zależność (aktualizacje biblioteki, zmiany w API), a nie chcemy, aby nasza aplikacja miała zbyt dużo zależności, podobnie jak staramy się nie gromadzić w mieszkaniu nieskończonej ilości rzeczy.