Co to jest framework?

Co to jest Framework?

1 marca 2022

Już od lat, jednym z najgorętszych tematów wśród programistów są Frameworki. Wielu z nas niemal na co dzień debatuje na temat wyższości jednych rozwiązań nad drugimi lub po prostu fascynuje się nowościami, które pojawiają się w ich kolejnych wersjach.

Ale co to właściwie są te Frameworki? Na to, jak i na inne pytania postaram się odpowiedzieć w tym wpisie.

Udanej lektury!

Czym jest Framework?

Framework to niejako dodatek do języka programowania. Jest to po prostu zestaw narzędzi i praktyk, które umożliwiają między innymi:

  • Szybsze tworzenie kodu. Frameworki z reguły rozwiązują wiele popularnych problemów. Mamy w nich całe mnóstwo gotowych funkcji, dzięki którym nie musimy “wymyślać koła na nowo” aż tak często.
  • Lepszą pracę w grupie. Frameworki bardzo często wymuszają na nas pewne praktyki, dzięki którym kod jest łatwiejszy do zrozumienia przez innych programistów.
  • Poprawę bezpieczeństwa. Wiele frameworków narzuca nam wykorzystywanie pewnych rozwiązań związanych z bezpieczeństwem, dzięki którym w przypadku mniej zaawansowanych aplikacji nie musimy martwić się nim aż tak bardzo jak bez frameworka (co nie znaczy, że powinniśmy o nim kompletnie zapomnieć).

Przykładowe Frameworki

Laravel (PHP)

To obok Symfony jeden z najpopularniejszych Frameworków do języka PHP.

Cechuje się przede wszystkim prostotą i szybkością tworzenia kodu. Znajdziemy do niego całe mnóstwo gotowych komponentów, a jego najnowsze wersje pozwalają na instalacje Breeze, czyli zestawu startowego, który pozwala w dosłownie minutę zaimplementować do naszego kodu rzeczy takie jak chociażby logowanie, rejestracje, czy przywracanie hasła. Laravel oferuje nam także używanie szablonów Blade, które pozwalają na jeszcze łatwiejsze tworzenie szablonów stron.

Dokumentacja Laravel

Spring (Java)

Jeden z najpopularniejszych frameworków na świecie. Umożliwia jeszcze szybsze, łatwiejsze i bezpieczniejsze programowanie w języku Java.

Dokumentacja Spring

Django (Python)

Python to od wielu lat jeden z najpopularniejszych języków programowania. Jest znany ze swojej prostoty i szerokiego spektrum możliwości. Jest świetnym wyborem dla początkujących programistów.

Za sprawą niezwykle popularnego frameworka Django, Python potrafi przekształcić się w bardzo szybki, bezpieczny i skalowalny język do tworzenia rozmaitych serwisów internetowych.

Jeżeli programista Pythona ma zamiar tworzyć aplikacje webowe, niemal z całą pewnością na jakimś etapie zaprzyjaźni się z Django.

Dokumentacja Django

Ruby on Rails (Ruby)

Choć Ruby obecnie nie uchodzi za aż tak popularny język programowania jak te, które wymieniłem wyżej, nadal jest całkiem popularną i jedną z najbardziej lubianych technologii na świecie.

Sprawa z Ruby jest o tyle ciekawa, że gdy mówimy Ruby, bardzo często mamy na myśli Ruby on Rails, czyli tak naprawdę bardzo popularny framework do tego języka.

Ruby on Rails, podobnie jak opisane wyżej Django, umożliwia bardzo proste i szybkie tworzenie aplikacji webowych.

Dokumentacja Ruby on Rails

To tylko kilka z najbardziej popularnych frameworków na świecie. Tak naprawdę, znajdziecie ich całe mnóstwo. Niemal każdy popularny język programowania posiada przynajmniej kilka dobrych, rozbudowanych frameworków, a niektóre z nich posiadają potężne biblioteki, które, choć oficjalnie frameworkami nie są, również ułatwiają tworzenie naprawdę niezwykłych rzeczy (np. React.js).

Kiedy uczyć się Frameworka?

Póki co wypisałem chyba same zalety i przedstawiłem Frameworki jako coś niezbędnego…

No otóż wcale tak nie jest.

Uważam, że zazwyczaj (w zależności od języka programowania), z czasem warto nauczyć się jakiegoś frameworka.

Nie zmienia to jednak faktu, że nie polecam się brać za naukę frameworka od razu.

Najlepiej pierw zgłębić podstawy języka tak, by framework Was dodatkowo nie przygnębiał. Z reguły mają one tysiące plików, więc z początku będzie Wam się dość ciężko odnaleźć.

Proponuję też pierw zbudować jeden lub nawet kilka projektów w czystym języku programowania. Nawet jeśli kod będzie taki sobie, pojmiecie podstawy architektury, dzięki którym będzie Wam o wiele łatwiej zrozumieć działanie frameworka, czyli to, co dzieje się kiedy i dlaczego.

Frameworki nie zawsze są jedynym właściwym rozwiązaniem, dlatego warto pierw zacząć od podstaw samego języka.

Czy warto używać Frameworka?

Wszystko zależy od zastosowania.

Jeżeli planujecie niewielką aplikację, która ma mieć zaledwie parę funkcji, prawdopodobnie nie ma sensu zbędnie obciążać jej topornym frameworkiem. To tak, jakby brać całą wywrotkę po to, by przewieźć jeden worek piasku. Można, ale po co?

Co ciekawe, paradoksalnie Frameworki mogą nie sprawdzić się nie tylko przy najmniejszych, ale i największych projektach. Przy największych projektach, w których trzeba niezwykłej wydajności, duże firmy często sięgają po autorskie, dedykowane rozwiązania. Pozwalają one jeszcze lepiej dostosować się do ich indywidualnych potrzeb. Zazwyczaj nie ma to sensu, ale w największych firmach nawet 1%, czy 2% wzrostu wydajności może pozwolić na ogromną redukcję kosztów. W tak skrajnych przypadkach, gotowe, uniwersalne frameworki mogą nie być najlepszym rozwiązaniem.

Jakie są wady Frameworków?

Niemal wszystko ma jakieś wady. Jak nie trudno się domyślić, mają je także frameworki.

Oto kilka ich najpopularniejszych wad:

  • Szybkość działania. Zwykle aplikacje tworzone we frameworkach działają nieco wolniej od tych, które zostały stworzone od podstaw, czyli od tych niejako “uszytych na miarę” (o ile zostały one zaprojektowane w wydajny sposób).
  • Publiczny kod. Ma to co prawda sporo zalet, ale nie da się ukryć, że ewentualne luki mogą zostać znalezione przez osoby o złych zamiarach. To z kolei może prowadzić do łatwiejszych niepożądanych działań na aplikacjach, które wykorzystują dany framework (np. włamań, czy celowego obciążania). W przypadku najlepszych frameworków to raczej rzadkość, ale tego rodzaju scenariusze czasami się zdarzały.
  • Zbędne funkcjonalności. Frameworki zazwyczaj na dzień dobry zawierają pełno zasobów, których nigdy nie użyjemy. Jeżeli się ich nie pozbędziemy, mogą one dodatkowo spowalniać naszą aplikację lub w najlepszym przypadku, przynajmniej zajmować trochę więcej miejsca na dysku.