Spring Boot czy NestJS?
Jaki framework wybrać do Restowego API

Stworzenie backendu aplikacji w odpowiedniej technologii ma olbrzymi wpływ na cały projekt, a jej wybór nie zawsze musi stanowić problem. W poniższym artykule postaram się wskazać, który z dwóch tytułowych frameworków powinno się wybrać i do jakich zastosowań.

06 września 2021

Czym jest framework?

Framework to zestaw wyspecjalizowanych w konkretnej dziedzinie narzędzi dla danego języka. Nie są wymagane w procesie tworzenia kodu, ale stanowczo go ułatwiają. Konkretne przykłady zostaną opisane w dalszej części artykułu.


Wiele z tych frameworków posiada bardzo podobne narzędzia, które niewiele się od siebie różnią.


W tym artykule skupimy się przede wszystkim na dwóch konkurujących ze sobą pod względem funkcjonalności frameworków do języków Java oraz JavaScript.


Czym jest REST?

Jest to styl architektury oprogramowania rozdzielający implementację klienta z serwerem. Polega to na tym, że przy próbie otrzymania lub modyfikacji danych klient wysyła zapytanie do serwera, który na nie odpowiada.


1.NestJS

NestJS został stworzony przez polski dwuosobowy zespół Trilon w 2017 roku. Od powstania uzyskał szereg rozszerzeń i aktualizacji i obecnie najnowsza wersja to NestJS 8.

Jest platformą programistyczną zbudowaną na środowisku Node.js i języku Javascript, w pełni wspierającą TypeScript, Dependency Injection oraz Modularność. Można za jego pomocą tworzyć aplikacje MVC oraz APi w tym REST.

Korzystają z niego między innymi takie firmy jak Adidas, Decathlon, Autodesk czy Capgemini.

It is a programming platform built on the Node.js environment and Javascript, fully supporting TypeScript, Dependency Injection and Modularity. You can use it to create MVC and APi applications, including REST.

It is used by, among others, companies such as Adidas, Decathlon, Autodesk and Capgemini.



W czym jest najlepszy?

Największymi zaletami NestJS jest rozszerzalność i progresywność. Rozszerzalność polega na tym że framework można dostosować pod swoje wymagania rozszerzając go o dowolne narzędzia i biblioteki. Najnowsze zmiany w języku JavaScript są wprowadzane na bieżąco co stanowi właśnie progresywność.


Podsumanie NestJS

NestJS jest dobrym wyborem w przypadku tworzenia małych aplikacji. Rozszerzalność zapewnia możliwość dodania tego czego potrzebujemy do danej funkcjonalności przez dodanie jednej z dużej bazy bibliotek Node.JS w terminalu, Progresywność sprawia że język którym się posługujemy jest aktualny, a niski próg wejścia umożliwia rozpoczęcie tworzenia docelowego produktu w krótkim odstępie czasu od podjęcia nauki.

Spring Boot to framework oparty na języku Java, który powstał w czerwcu 2003 roku i ma już za sobą ponad 100 aktualizacji.


Zestaw narzędzi zawarty w obrębie tego frameworka daje niesamowite możliwości, od tworzenia RESTowej aplikacji przez systemy zabezpieczające po administrację bazy danych w chmurze i wiele więcej.


Spring w swoich projektach wykorzystują między innymi Udemy, Trivago, Trade Public, Zalando a nawet Instytut Technologii w Massachusetts.



The toolkit included in this framework offers amazing possibilities, from creating a REST application, through security systems, to administration of a database in the cloud, and much more.


Spring in their projects are used by among others Udemy, Trivago, Trade Public, Zalando and even the Massachusetts Institute of Technology.

Aspekt programistyczny

Spring Boot jest oparty na konwencji programowania aspektowego (Aspected Oriented Programing) wykorzystując wstrzykiwanie zależności (Dependency Injection), takie rozwiązanie znacznie upłynnia proces tworzenia. Dzięki olbrzymiej ilości predefiniowanych funkcji wbudowanych w ten framework, pisanie kodu jest stosunkowo łatwe od momentu nauczenia się operowania nimi.


W czym jest najlepszy?

Spring Boot daje możliwość pobrania w pełni przygotowanego pod tworzenie aplikacji szkieletu, zawierającego wybrane przez nas narzędzia - te stworzone w obrębie frameworka oraz te zewnętrzne jak np. Tomcat. Stanowi to bardzo duży plus ale największą korzyścią z tworzenia aplikacji przy użyciu Spring Boot jest wielowątkowość dzięki której bez większego problemu kompiluje i uruchamia większe aplikacje.


Podsumowanie Spring Boot

Spring Boot jest wygodnym rozwiązaniem przy Tworzeniu skomplikowanych aplikacji dzięki jego własnym metodom zmniejszającym ilość potrzebnego do napisania przez dewelopera kodu, obszernej bazie narzędzi oraz wielowątkowości.

Porównanie NestJS i Spring Boot

Wykorzystanie

Spring Boot sprawdza się idealnie w przypadku większych aplikacji, natomiast NestJS w przypadku małych.

Styl Kodu

Spring Boot jest frameworkiem utrzymującym styl pisania kodu znany z czystej Javy, NestJS z drugiej strony jest bliźniaczo podobny do frontowego frameworku Angular



Generowanie szkieletu projektu

W obu przypadkach jest automatyczne jednak odbywa się na dwa różne sposoby, w przypadku Nest są to komendy w terminalu, natomiast w Springu można skorzystać z narzędzia Spring Initializr na stronie.



Dodatkowe narzędzia

W przypadku NestJS trzeba doinstalować również przez terminal, natomiast Sprig umożliwia nam wybranie ich na stronie i pobranie zaimplementowanych w gotowy szkielet.



Użycie zasobów

Spring Boot wykorzystuje dużo więcej zasobów niż NestJS.


Podsumowanie

Zasadniczo frameworki te dają praktycznie takie same fullstackowe możliwości utworzenia pełnej aplikacji, oba mają dużą bazę narzędzi do wykorzystanie, jednak różnią się przeznaczeniem. Spring Boot przez wykorzystanie większej ilości zasobów nie sprawdzi się przy tworzeniu małych aplikacji. NestJS przez brak wielowątkowości będzie mało efektywny gdy przyjdzie mu uruchamiać duże aplikacje.


Wniosek

Wybór między tymi dwoma frameworkami głównie zależy od wielkości i stopnia zaawansowania procesów aplikacji jaką chcemy utworzyć, jeżeli ma być to mała zwinna aplikacja postawiłbym na NestJS, natomiast w przypadku bardziej zaawansowanej, dużej aplikacji na pewno lepiej sprawdzi się Spring Boot.