Z artykułu dowiesz się:
- Kto jest twórcą Node.js
- Jakie były jego początki
- Jak rozwijało się Node na przestrzeni lat
- Co wyjątkowego oferuje programistom
- Kto korzysta z Node.js
W poszukiwaniu sposobu na zaimplementowanie paska postępu
Z pozoru błahy element, nad którym raczej się nie zastanawiamy, a po prostu wiemy, że jest i możemy z niego korzystać. To pasek postępu informujący nas o czasie, jaki pozostał do zakończenia jakiejś akcji, lub wielkości pliku. Jeszcze kilkanaście lat temu go nie było, tak więc użytkownicy nie wiedzieli, ile jeszcze muszą czekać do zakończenia operacji. Trudno jest to sobie dzisiaj wyobrazić. Ale od początku…
Wraz z wejściem w wiek XXI doktorant matematyki Ryan Dahl kupił bilet do Ameryki Południowej w jedną stronę. Zarabiał, ucząc języka angielskiego. W tym czasie miał też styczność z PHP i Ruby. Doznał olśnienia, odkrył, że jego powołaniem jest coś zupełnie innego niż nauka angielskiego i matematyczne zagadki. Zaczął tworzyć strony internetowe. Szybko natknął się jednak na problem – w pracy z frameworkiem Ruby nie mógł obsługiwać jednocześnie kilku żądań. Okazało się jednak, że pomocny w tym będzie Mongrel.
Dahl był jednak perfekcjonistą i miał zmysł odkrywcy. Przeszkadzało mu, że nie może kontrolować czasu przesyłania plików. Postanowił więc zaimplementować pasek postępu, co okazało się trudniejsze, niż mu się wydawało. W 2005 roku rozpoczął swoje działania, ale początkowo bez zadowalających efektów. Ówczesne technologie kulały w tym zakresie, HTTP używany był do małych plików, a FTP do dużych. Aby sprawdzić stan wysyłania, konieczne było skomplikowane odpytywanie, co trwało zbyt długo, żeby zadowolić Dahla.
Najpierw Dahl postanowił wykorzystać do zaimplementowania paska postępu Mongrel. Pliki były wysyłane, a serwer sprawdzał status przesyłania przy pomocy JavaScript i XML. Następnie dane były wyświetlane na pasku postępu. Wszystko byłoby ok, gdyby nie jednowątkowość Ruby i duża liczba wymaganych żądań. Dahl szukał więc dalej.
Postanowił spróbować implementacji w języku C. Plusem był brak ograniczeń do jednego wątku, ale minusem mała liczba programistów ukierunkowanych na takie rozwiązanie. Dahl stwierdził więc, że rezygnuje z wyboru języka C. Kontynuował swoje poszukiwania i trafił na język Haskell bazujący na nieblokujących wejściu/wyjściu. Dahl jednak doszedł do wniosku, że to wciąż nie jest to. Jego perfekcjonizm nie pozwalał mu poprzestać na rozwiązaniu, które nie do końca mu pasowało.
Jedyny słuszny wybór – JavaScript
Dahl nie dał za wygraną i postanowił spróbować jeszcze z JavaScript. To był strzał w 10, o czym Dahl szybko się przekonał. JavaScript był już znanym językiem wśród programistów, chętnie wybieranym i używanym. Początek roku 2009 można uznać za narodziny Node.js. Wtedy to Dahl rozpoczął pracę nad implementacją JavaScript po stronie serwera. Miał jeszcze jeden powód, dla którego postanowił zacząć pracować nad wdrożeniem rozwiązania w tym języku. Do tego czasu nikt nie stworzył natywnego serwera www w JavaScript, niemożliwe było też obsługiwanie plików w systemie i nie istniała żadna implementacja gniazd do komunikacji z innymi serwerami.
Ponadto pracy Dahla sprzyjała też architektura JavaScript. Funkcje nie są przypisane do żadnego obiektu, są łatwo dostępne i tym samym można je przypisać do dowolnych zmiennych. Tak duża elastyczność JavaScript stwarza ogromne możliwości rozwoju i wykorzystania tego języka do nowych projektów. Dahl się o tym przekonał na własnej skórze, dobrze wykorzystał potencjał JavaScript, jednocześnie umożliwiając mu wyjście poza rozwiązania frontendowe.
Node.js na fali
Dahl zrobił naprawdę dużo. Node.js już istniało, ale co dalej… Świat musiał się o nim dowiedzieć, ale zasoby finansowe Dahla już były w opłakanym stanie, wszystko zainwestował w swój autorski projekt. Musiał więc działać szybko, aby nie było konieczne zaprzestanie prac. W 2009 roku na konferencji JavaScript JSConf EU zaprezentował Node. Bez problemu poruszył słuchaczy. Pokazał im, jak szybko i łatwo można stworzyć w pełni funkcjonalny serwer www, wykorzystując do tego zaledwie kilka linijek kodu JavaScript. Zaprezentował także implementację serwera Internet Relay Chat (IRC) z kodem źródłowym składającym się z 400 wierszy. Dahl postawił wszystko na jedną kartę. Stwierdził, że tą prezentacją odniesie sukces lub pogrzebie swój pomysł na zawsze. Nie pomylił się jednak i przekonał do siebie amerykańskie przedsiębiorstwo Joyent, które postanowiło zostać sponsorem pomysłu Dahla.
Firma Joyent ma swoją siedzibę w San Francisco. Specjalizuje się w dostawie oprogramowania oraz usług hostingowych i chmurowych. Node.js dołączyło do jej portfolio jako oprogramowanie o otwartym kodzie źródłowym. Dahl tym samym zyskał zatrudnienie i zasilił zespół Joyent.
W 2011 roku nastąpił kolejny przełom dla Node. Programiści wprowadzili natywną obsługę systemu Windows 0.6 i tak od tego momentu Node można było zainstalować tylko w tym systemie. Rok później Dahl ogłosił, że na tym kończy swoją przygodę z Node.js i przekazał pałeczkę innemu pracownikowi Joyent – Schlueterowi. Pod jego skrzydłami kilka miesięcy później powstała nowa wersja Node.js 0.8, która charakteryzowała się większą stabilnością i wydajnością. W kolejnej wersji – 0.10 zmianie uległ jeden z centralnych interfejsów, dzięki czemu możliwe stało się aktywne pobieranie danych ze strumienia.
Kolejne lata to były wzloty i upadki Node. Oprogramowanie miało swoich zwolenników i krytyków. Ci drudzy zarzucali Joyent, że nie kontynuuje tak dobrze rozwoju Node, jak robił to Dahl. W 2014 roku Schlueter pożegnał się z Joyent i tym samym z Node.js, otwierając własną działalność. Node przejął TJ Fontaine, który uruchomił wersję 0.12.
Wszystkie te poczynania dotyczące Node bacznie obserwował Dahl, który postanowił w 2018 roku ponownie zacząć uczestniczyć w życiu swojego oprogramowania. Przedstawił swoją nową platformę Deno, która ma sprzyjać tworzeniu lepszego Node.js. Jest ona oparta na TypeScript i posiada inny system modułów. Rdzeń Deno jest prawie w całości napisany w Rust. To, co jednak łączy go z Node, to silnik V8.
Dzisiaj Node.js to rozwiązanie, z którego korzysta rzesza programistów. W 2019 roku powstało OpenJS Foundation, pod skrzydłami którego jest wiele projektów, zarówno Node.js, jak i m.in. ESLint i Electron.
Dlaczego Node wzbudza tak duże zainteresowanie?
Tak naprawdę kiedy przeanalizujemy Node.js z technicznego punktu widzenia, to dostrzeżemy, że łączy on wszystkie najważniejsze cechy wcześniej testowanych przez Dahla rozwiązań. Działa jednowątkowo, pozwala na obsługę dużej ilości zapytań i posiada nieblokujące wejście/wyjście. Bazuje na silniku V8 stworzonym przez Mountain View – Google. Co więcej, silnik ten umożliwia kompilację JavaScript do języka maszynowego. Techniczne aspekty to jednak nie jest jedyny powód, dla którego Node wybiera tak wielu programistów.
Na pewno Dahl dobrze uderzył, ponieważ dzisiaj z JavaScript korzysta wielu programistów, to jeden z najpopularniejszych języków programowania. Czyżby Dahl przewidział przyszłość? Być może… Bardzo ułatwił on programistom prace – dzięki Node.js mogą oni pisać w jednym języku zarówno frontend, jak i backend.
Poza tym Node pozwala na sprawne zarządzanie bibliotekami i zależnościami bibliotek. Wszystko dzięki Node Package Manager. To menadżer paczek pozwalający na sprawne znalezienie interesującej nas paczki. W jego zasobach można znaleźć m.in. gulp, express czy też React. To jeszcze nie wszystko. Node.js pozwala na uruchomienie aplikacji na urządzeniach wyposażonych w procesory ARM, co oznacza, że jest opcja wdrożenia aplikacji napisanej w JavaScript na urządzeniach IoT.
Tak naprawdę Node daje programistom duże możliwości. Świetnie sprawdza się do zbierania danych i renderowania treści po stronie serwera. Jest przeznaczony do zarządzania plikami, ale również okazuje się pomocny przy automatyzacji, bez której trudno jest nam się teraz obejść. Node.js wykorzystuje się ponadto przy tworzeniu aplikacji internetowych działających na pojedynczej stronie – Sigle Page Application. Taka strona cechuje się dużą wydajnością i płynnością pracy, ponieważ nie musi być przeładowywana w całości, a jedynie w dowolnie wybranym fragmencie.
Giganci uwielbiają Node.js
Potwierdzeniem skuteczności i potencjału Node.js jest na pewno portfolio firm, które z niego korzystają. To naprawdę zacne grono, dobrze wszystkim znana śmietanka technologiczna. Z Node korzystają m.in. Microsoft, Google i Groupon. Postawili na niego LinkedIn i PayPal. Trzeba przyznać, że Node dobrze odnajduje się w tym środowisku. Nie można też zapominać o Netflixie, który praktycznie jako pierwszy, ponieważ już w 2015 roku, zaczął migrację swojej architektury do Node.js. Był to ważny krok dla Netflixa, ponieważ dzięki Node udało się uprościć aplikację, która stała się bardziej przyjazna użytkownikowi. Ponadto poprawiła się jej wydajność, a przedsiębiorstwo ograniczyło wydatki na jej utrzymanie i rozwój. Z Node korzysta ponadto Amazon. Używa się go podczas rozwoju funkcji Lambda, rozwiązania w chmurze. Dzięki niej możliwa jest budowa aplikacji typu serverless.
Trzeba przyznać, że Node.js to prawdziwa gwiazda, która nie zawsze błyszczała najjaśniej. Historia projektu Dahla jest pełna wzlotów i upadków, chociaż na pewno tych pierwszych jest więcej. Na pewno jednak była to przemyślana koncepcja i bardzo dobre posunięcie ze strony Dahla. Obecnie JavaScript zna i stosuje większość programistów, co ułatwia wejście w temat Node.js. Warto jest przynajmniej spróbować, ponieważ jest to duże ułatwienie w pracy, a także szeroka paleta możliwości, co potwierdzić mogą m.in. Netflix, Microsoft czy LinkedIn.