W Developer Survey, ankiecie, w której w 2020 roku wzięło udział 65 000 programistów, Python uplasował się na 3 miejscu w kategorii najbardziej ulubionych języków programowania.
W edycji Developer Survey z 2021 roku, w której wzięło udział już 80 000 programistów, Python także zajął 3 pozycję, ustępując miejsca JavaScript oraz HTML/CSS, czyli technologiom naprawdę podstawowym.
Framework Django, który jest całkowicie napisany w Python, w 2020 roku znalazł się na 10 pozycji popularnych frameworków webowych (web framework). W 2021 roku Django znalazło się na 9 pozycji najczęściej używanych frameworków webowych.
Przypadek? Nie sądzimy!
Z roku na rok Python i coraz liczniejsze frameworki napisane w Python, które usprawniają nie tylko web development, zyskują na popularności.
Zgodnie z wynikami innego badania Developer Ecosystem, przeprowadzonego przez JetBrains, najczęściej Python jest używany do:
- web development
- data analysis
- machine learningu.
Python wraz frameworkami, bazującymi na nim, jest także jednym z popularniejszych języków, narzędzi, jakich chcą się uczyć i używać w codziennej pracy programiści.
Kolejny przypadek? A skąd!
W dużych, złożonych, wymagających (pod względem technologicznym, pod względem bezpieczeństwa) projektach, Python oraz web developement są pojęciami jeśli nie synonimicznymi to na pewno dobrze się ze sobą rymującymi.
Myśląc o web development nie sposób nie myśleć o Pythonie i frameworkach, które znacząco budowanie aplikacji webowych ułatwiają.
Warto zatem poznać możliwości, jakie frameworki oferują. Warto przyjrzeć się kilku popularnym fremaworkom, które zostały napisane Pythonie. Dlaczego?
Bowiem web development z ich pomocą jest o wiele szybszy, prostszy, wydajniejszy i gwarantujący lepsze rezultaty. Zarówno czysto technologiczne, jak również biznesowe, związane z User Experience.
Nie pozostaje nam zatem nic innego jak zaprosić do naszego - dość subiektywnego, ale przydatnego - przeglądu najlepszych frameworków Pythona!
Życzymy, jak zwykle, miłej lektury!
Co to jest web development?
Opisywanie, przybliżanie możliwości frameworków oraz innych technologii stosowanych do web development wypada zacząć od zdefiniowania samych pojęć.
Web development to po prostu tworzenie aplikacji webowych na potrzeby:
- internetu - sieci ogólnodostępnej, publicznej, dostępnej globalnie
- intranetu - sieci niepublicznej, prywatnej, dostępnej lokalnie.
Web development obejmuje bardzo różny zakres prac. Także pod kątem ich złożoności, istotności biznesowej, związanej z User Experience.
Pod tym pojęciem kryją się z jednej strony proste wizytówkowe strony internetowe, blogi. Z drugiej zaś mamy aplikacje webowe. Zazwyczaj bardzo złożone pod kątem technologicznym i funkcjonalnym, logiki i celów biznesowych.
Web development bywa czasami utożsamiany z pracami czysto programistycznymi, pisaniem kodu. Czy jest to słuszne podejście? Raczej nie ma sensu rozstrzygać tego dylematu. Są to - w pewnym sensie - akademickie spory, które w codziennej praktyce software house`u raczej niewiele zmieniają.
W procesie web development wykorzystywany jest cały korpus narzędzi, dzięki którym przyszła aplikacja działa oraz wygląda zgodnie z oczekiwaniami użytkowników. Jest adekwatna pod względem założeń jej projektantów i twórców.
Na liście narzędzi (programistycznych oraz projektowych) wykorzystywanych w web development znajdziemy między innymi:
- React.js (biblioteka JavaScript)
- Django (framework napisany w Python)
- Flask, Japronto (mikroframeworki napisany w Python)
- Python (jeden z popularniejszych języków programowania)
- Symfony, Laravel (frameworki napisane w PHP)
- Material UI, Bulma, Bootstrap (frameworki gotowych komponentów UI)
- Lottie (biblioteka JavaScript do tworzenia interaktywnych animacji wektorowych)
- Figma / Sketch / Zeplin (narzędzia do współpracy zespołów web designe i web development)
- AWS (największy dostawca chmury wykorzystywanej do utrzymania dowolnej wielkości aplikacji webowych).
Na powyższej liście umieściliśmy nazwy wybranych bibliotek i frameworków, dzięki którym tworzenie aplikacji webowych i ogólnie web development (w warstwie front-end, backend, Q&A i DevOps) jest procesem o wiele prostszym.
Bardziej wydajnym, racjonalnym i wygodnym. W mniejszym stopniu narażonym na pojawienie się błędów, w szczególności błędów krytycznych również w zakresie bezpieczeństwa.
Są relatywnie łatwe w utrzymanium pod względem jakości, pomagają utrzymać porządek w projekcie dzięki konwencji i narzędziem kontroli jakości, łatwo się poddają automatyzacji testów.
Pełna lista byłaby o wiele, wiele dłuższa. Przy czym nie chodzi o listowanie wszystkich narzędzi, tylko o poglądowe pokazanie, w jakim stopniu web development jest dziś zależny (w dobrym tego słowa znaczeniu) od narzędzi, które zdecydowanie usprawniają pracę w software house`ach.
Frameworki (front-end, backend) odgrywają we współczesnym web developement rolę szczególną, bowiem dostarczają rozwiązań, komponentów, które są sprawdzone oraz stale udoskonalane.
Frameworki dostarczają klarownych wytycznych dotyczących budowania aplikacji, dzięki czemu minimalizują ilość popełnianych błędów oraz eliminują problem wymyślania koła od nowa.
Frameworki w tym napisane w Python przede wszystkim eliminują problem tworzenia aplikacji webowej od podstaw. Dzięki temu zespoły programistów są w stanie dostarczyć gotowe oprogramowanie wysokiej jakości w znacznie szybszym terminie.
Frameworki napisane w Python (i inne) umożliwiają programistom szybko tworzyć aplikacje wybowe, mobilne, IoT i inne bez konieczności tworzenia od podstaw zupełnie podstawowych operacji i procesów zachodzących w aplikacji jak np. praca z bazą danych bądź walidacja wprowadzanych przez użytkowników danych.
Obsługują większość typowych procedur programistycznych, dzięki czemu znacznie skracają czas kodowania. Poprawiają także czytelność, zwięzłość, prostotę kodu i ułatwiają jego debugowanie oraz konserwację. Pozwalają także lepiej rozwijać każdą z warstw aplikacji.
Warto bowiem pamiętać, że w ramach web development można wyróżnić dwie kluczowe warstwy:
- front-end web development
- backend web development.
Front-end web development odnosi się do zewnętrznej warstwy aplikacji webowej, do tych elementów, które są dla jej użytkownika widoczne (grafika, tekst, przyciski, suwaki etc.), z którymi może wchodzić w interakcje.
Narzędzia wspierające front-end web development najczęściej pozwalają wygodniej i efektywniej, czasami z pomocą gotowych komponentów, budować layout aplikacji webowej, projektować jej interfejs oraz dostarczać najlepszy UX użytkownikom.
Backend web development odnosi się do warstwy zaplecza aplikacji webowej, czyli tej jej części, która użytkownikom strony internetowej nie jest bezpośrednio dostępna, która nie jest dla nich widoczna, natomiast jest sercem i mózgiem aplikacji webowej.
Backend web development odpowiada za funkcjonowanie serwisu, jest wykorzystywany do zbierania, przechowywania, organizowanie danych, jest zapleczem logistycznym aplikacji.
W skrócie backend web development odpowiada za poprawne działanie wszystkich elementów składowych aplikacji webowej bądź mobilnej i pozwala nam współdzielić dane między urządzeniami i użytkownikami.
Większość prac związanych z front-end i backend development jest aktualnie wykonywana z pomocą licznych bibliotek oraz frameworków, których podstawową zaletą jest to, że aplikacja jest tworzona trochę na zasadzie budowania domu z gotowych modułów i szablonów.
Dostępność, użyteczność, aktualność, efektywność frameworków jest zapewniana przez ogromną społeczności open source. Są one wynikiem doświadczenia i pracy wielu tysięcy doświadczonych inżynierów z całego świata.
Społeczność skupiona wokół Pythona stworzyła cały szereg pomocnych frameworków, które są stale rozwijane, poprawione i aktualizowane.
Z ich pomocą możliwe jest rozwiązywanie coraz bardziej złożonych, nietypowych problemów technologicznych oraz biznesowych w projektach dowolnej skali.
Nie pozostaje nam zatem nic innego jak dokonać przeglądu najpopularniejszych.
Frameworki Python - krótkie wprowadzenie
Generalnie rzecz ujmując frameworki tworzone w Pythonie podzielić można na dwie kategorie:
- frameworki typu full-stack (Full-Stack Frameworks)
- Mikroframeworki (Microframeworks).
Frameworki typu full-stack pozwalają na tworzenie obu warstw aplikacji - front-end oraz backend. Pełny stos technologiczny pozwala właściwie tworzyć dowolne aplikacje.
Nieco mniejszy zakres stosowalności i bardziej okrojone możliwości posiadają Mikroframeworki, które zawierają zestawy tylko niezbędnych, podstawowych elementów, które są konieczne do zbudowania bardzo prostej aplikacji webowej.
Dzięki lekkości są znacznie szybsze w działaniu od frameworków typu full-stack i są idealnym wyborem przy tworzeniu high load aplikacji, czyli aplikacji używanych przez setki tysięcy użytkowników jednocześnie.
Nie znajdziemy w nich bardziej złożone funkcjonalności (np. walidacja pól formularzy, ORM, szablonów), ale nie oznacza to, że są one niedostępne.
Python doczekał się licznego grona frameworków, które są rekomendowane do projektów o różnej skali oraz o zróżnicowanych potrzebach (funkcjonalnych oraz biznesowych).
Wspólną cechą tych narzędzi jest znaczne uproszczenie oraz przyspieszenie web development.
Frameworki napisane w Pythonie są używane do tworzenia bardzo różnych aplikacji webowych. Bardzo często są używane do tworzenia, utrzymania oraz rozwoju aplikacji webowych w branży finansowej, turystycznej, medycznej.
Framework Python - web framework Django
O zaletach i użyteczności Django pisaliśmy już w artykułach pt. „Integracja płatności Stripe w Django”, „Aplikacje napisane w Django” oraz „WordPress vs Django. Co wybrać dla serwisu korporacyjnego?”.
Django jest frameworkiem webowym dla perfekcjonistów z terminami. Oficjalny tagline reklamujący ten open source`owy projekt w pełni oddaje istotę tego narzędzia.
Django swoją reputację zawdzięcza szybkości, z jaką tworzy się w nim aplikacje oraz mniejszej ilości kodu, jaki jest konieczny do jej stworzenia.
Chcąc stworzyć bezproblemowo i naprawdę szybko MVP (Minimum Viable Product), aplikację w pełni działającą, ale posiadającą tylko podstawowe funkcje, warto właśnie użyć Django. Framework umożliwia budowanie aplikacji wydajnych oraz łatwo skalowalnych.
Django (full stack framework) jest rekomendowany do tworzenia złożonych, dużych aplikacji webowych.
Web development, dzięki Django jest o wiele bardziej efektywny pod względem czasu oraz ilości koniecznej pracy.
Do najważniejszych cech Django należy:
- bardzo dobra dokumentacja oraz dojrzałość technologii
- liczna oraz zaangażowana społeczność, która rozwija framework i tworzy niezliczone biblioteki
- kontrola wersji bazy danych oraz silnik ORM (Object-Relational Mapping)
- wsparcie procesów uwierzytelniania
- silnik szablonów i widoków, caching i routing URL
- wykodny panel administracji danymi serwisu z możliwością praktycznie dowolnej modyfikacji (Django Admin)
- skalowalność i szybkość
- wysoka jakość oraz bezpieczeństwo.
Framework Python - web framework Pyramid
Zwięzły i bardzo catchy tagline kolejnego frameworku napisanego w Pythonie także dobrze oddaje jego cechy. The Start Small, Finish Big, Stay Finished Framework.
Niemal wszystkie ambitne projekty nie grzeszą rozmachem i wielkością, za to bardzo szybko przeradzają się w coś wielkiego. W projekt, który wraz z rosnącą skalą musi być adekwatny do zmieniających się potrzeb.
Czy każdy jest przygotowany na niespodziewany sukces? Owszem, jeśli jest stworzony w pomocą Pyramid.
Pyramid powstał z myślą o takich projektach. Powstał, by zaspokojać różne potrzeby i gwarantować rozwiązania adekwatne do każdego stadium rozwoju biznesowego.
Pyramid jest pozycjonowany jako alternatywa dla frameworków typu Full-Stack oraz Mikroframeworków.
Te pierwsze czasami w zbyt dużym stopniu ograniczają developerów, te drugie natomiast delegują na nich za dużą odpowiedzialność.
Obie sytuacje rodzą ryzyko fiaska projektu. Pyramid będąc czymś pośrodku gwarantuje, że jest w stanie dowieźć każdy projekt do końca.
Uniwersalizm to cecha, która jest bardzo często podkreślana w opisach, ocenach Pyramid. Framework jest rekomendowany do tworzenia złożonych aplikacji, także do skalowania mniejszych projektów.
Framework jest także doceniany za elastyczność. Dowolny komponent w Pyramid (np. silnik szablonów) może zostać bezproblemowo zamieniony na inny. Pyramid umożliwia wykorzystywanie wielu komponentów dla tej samej aplikacji (np. różne metody mapowania adresów URL).
Framework Python - web framework TurboGears 2
The Web Framework that scales with you - lapidarnie i trafnie. W takich oto słowach dokonuje autoprezentacji kolejny napisany w Pythonie framework TurboGears 2.
Wprawdzie jest to framework, który należałoby przyporządkować do kategorii Mikroframeworków, ale oferuje on możliwość skalowania do wersji z pełnym stosem (full stack framework).
Framework powstał jako odpowiedź na ograniczenia popularnych frameworków (Django) oraz swojej starszej wersji TurboGears 1.
W założeniu, jego najnowsza wersja ma pozwalać na szybkie tworzenie aplikacji webowych opartych na danych.
TurboGears 2 został pomyślany i stworzony jako platforma służąca do rozwiązywania złożonych problemów wytrzymałościowych.
TurboGears 2 obsługuje narzędzia takie jak SQLAlchemy, Genshi, WebOb i Repoze, które zapewniąją wydajne mechanizmy dostępu do baz danych, czy szybkich szablonów.
Do najważniejszych cech TurboGears 2 należą:
- wydajny silnik ORM (Object-Relational Mapping) obsługujący wiele typów baz danych
- możliwość skalowania frameworka do rozwiązania full-stack
- obsługa poziomego partycjonowania danych (Horizontal Data Partitioning)
- obsługa wielu formatów wymiany danych
- przyjazny dla projektantów system szablonów
- oferowanie widgetów ułatwiający budowanie aplikacji AJAX (po stronie przeglądarki i po stronie serwera).
Najlepsze Mikroframeworki Python - web framework Flask
One drop at a time - jedna kropla na raz. Filozofia minimalizmu, która zrodziła ten framework idealnie została oddana w jego tagline. Ale tej skłonności do oszczędności nie ma się co dziwić, Flask to jeden z popularniejszych Mikroframeworków napisanych w Pythonie.
Flask został wyposażony tylko w niezbędne narzędzia i mechanizmy, stąd też idealnie nadaje się do tworzenia mikrousług oferowanych w bardzo dużych aplikacjach webowych.
We Flasku nie znajdziemy między innymi warstwy abstrakcji bazy danych, czy możliwości weryfikacji formularzy. Jest zorientowany na możliwość dowolnej konfiguracji.
Web development z pomocą Flaska, w którym lekkość, modułowa konstrukcja, minimalizm architektury sprzyja szybkiej i prostej adaptacji środowiska do potrzeb projektu, jest bardzo wygodny.
Flask jest kompatybilny m.in. z Google App Engine oraz idealnie pasuje do tworzenia rozproszonych aplikacji webowych w chmurze. Podstawowe funkcjonalności - w razie potrzeby - można oczywiście poszerzać stosując różne biblioteki, np. Jinja2 czy też SQLAlchemy.
To jednak nie wszystko. Flask to także:
- szybka i wygodna obsługa żądań HTTP
- wsparcie nagłówków, plików Cookies oraz sesji użytkowników
- narzędzia deweloperskie, jak lokalny serwer i debugger
- możliwość podłączenia dowolnego ORM (Object-Relational Mapping)
- wsparcie testów jednostkowych.
Najlepsze Mikroframeworki Python - web framework Falcon
Web development to także tworzenie interfejsów API (Application Programming Interface). Używając do tego celu kolejnego bardzo popularnego Mikroframeworku napisanego w Pythonie będziemy mogli dostarczyć bardzo wydajne API w aplikacjach high load.
Falcon słynie ze swojej stabilności oraz wydajności, co sprawiło, że jest używany między innymi przez LinkedIn oraz PayPal.
Do najważniejszych funkcji Falcona należy:
- idiomatyczne odpowiedzi na błędy HTTP
- natywna obsługa asyncio
- obsługa ASGI, WSGI i WebSocket
- obsługa CPython 3.5+ i PyPy 3.5+
- prosta obsługa wyjątków
- proste modelowanie API
- zoptymalizowana, rozszerzalna baza kodu
- obsługa Cythona.
Najlepsze Mikroframeworki Python - web framework Japronto
Japronto to kolejny Mikroframework wspierający web development, który rekomendowany jest do tworzenia API oraz mikrousług.
Japronto w szczególności jest polecany do tworzenia mikrousług, które muszą sprostać bardzo wysokiemu obciążeniu.
Polecany jest wszędzie tam, gdzie rozbudowane frameworki nie są w stanie rozwiązać problemu równie efektywnie. O Japronto zrobiło się głośno, gdy okazało się, że jest on w stanie obsłużyć milion żądań w ciągu sekundy.
Japronto jest doceniany za szybkość, lekkość oraz skalowalność.
Do najważniejszych funkcji i zalet Japronto należy:
- pełne wsparcie dla potoku HTTP
- obsługa widoków synchronicznych i asynchronicznych
- wydajność
- prosty routing.
Najlepsze frameworki Python do web development. Podsumowanie
- Python, frameworki Python, które usprawniają web development, zyskują na popularności z roku na rok.
- Python z roku na rok plasuje się na coraz wyższych pozycjach popularności w różnych badaniach preferencji języków programowania programistów.
- Web development oraz frameworki Python to niemal synonimy.
- Frameworki znacząco ułatwiają oraz przyspieszają budowanie aplikacji webowych.
- Web development z ich pomocą jest o wiele prostszy, wydajniejszy i gwarantujący lepsze rezultaty. Zarówno czysto technologiczne, jak również biznesowe, związane z User Experience.
- Web development to nic innego jak tworzenie aplikacji webowych na potrzeby internetu oraz intranetu.
- Obejmuje bardzo różny zakres prac pod kątem ich złożoności, istotności biznesowej, związanej z User Experience.
- W procesie web development wykorzystywany jest cały korpus narzędzi.
- Frameworki (front-end, backend) dostarczają rozwiązań, komponentów, które są sprawdzone oraz stale udoskonalane.
- Frameworki dostarczają klarownych wytycznych dotyczących budowania aplikacji, dzięki czemu minimalizują ilość popełnianych błędów oraz eliminują problem wymyślania koła od nowa.
- Frameworki Python obsługują większość typowych procedur programistycznych, dzięki czemu znacznie skracają czas kodowania. Poprawiają także czytelność, zwięzłość, prostotę kodu i ułatwiają jego debugowanie oraz konserwację aplikacji webowej.
- Front-end web development odnosi się do zewnętrznej warstwy aplikacji webowej, do tych elementów, które są dla jej użytkownika widoczne, z którymi może wchodzić w interakcje.
- Backend web development odnosi się do warstwy zaplecza aplikacji webowej, czyli tej jej części, która użytkownikom strony internetowej nie jest bezpośrednio dostępna, która nie jest dla nich widoczna.
- Frameworki tworzone w Pythonie podzielić można na frameworki typu Full-Stack (Full-Stack Frameworks) oraz Mikroframeworki (Microframeworks).
- Frameworki typu Full-Stack pozwalają na tworzenie obu warstw aplikacji - front-end oraz backend. Pełny stos technologiczny pozwala właściwie tworzyć dowolne aplikacje.
- Mikroframeworki zawierają zestawy tylko niezbędnych, podstawowych elementów, które są konieczne do zbudowania minimalnej aplikacji webowej.
- Frameworki napisane w Pythonie bardzo często są używane do tworzenia, utrzymania oraz rozwoju aplikacji webowych w branży finansowej, turystycznej, medycznej.
- Django (full stack framework) jest rekomendowany do tworzenia MVP oraz aplikacji biznesowych.
- Pyramid jest pozycjonowany jako alternatywa dla frameworków typu Full-Stack oraz Mikroframeworków.
- TurboGears 2 został pomyślany i stworzony jako platforma służąca do rozwiązywania złożonych problemów wytrzymałościowych.
- Flask idealnie nadaje się do tworzenia mikrousług oferowanych w aplikacjach webowych.
- Zaletą Falcona jest możliwość tworzenia projektów, które wymagają szczególnej stabilności oraz wydajności.
- Japronto rekomendowany jest do tworzenia API oraz mikrousług. W szczególności jest polecany do tworzenia mikrousług, które muszą sprostać bardzo wysokiemu obciążeniu. Japronto jest w stanie obsłużyć miliony żądań w ciągu sekundy.