Artykuły o technologiach IT, programowaniu, testowaniu i nie tylko

Jest wszechobecny i na dobre zadomowił się na serwerach i coraz pewniej stawia kroki w świecie mobilnym oraz desktopowym. O nowoczesnym JavaScripcie porozmawiamy podczas #8 edycji CodeMeetings, która już 20 czerwca. A zanim to nastąpi, zapraszam do lektury o tym, nie tylko w superlatywach.

JavaScript jest jednym z najczęściej wybieranych języków programowania w ostatnich latach. Potwierdza to chociażby coroczna ankieta StackOverflow, w której okazał się najbardziej popularny już szósty rok z rzędu [1]. Nic w tym dziwnego, bowiem przełomowa aktualizacja standardu języka, ECMAScript 2015 (lub ES6), która znacząco poprawiła wygodę pracy z nim ukazała się już trzy lata temu i dziś jest implementowana w ok. 97% przez wszystkie nowe wersje najpopularniejszych środowisk uruchomieniowych [2].

Wśród tych ostatnich najpopularniejsze są przeglądarki, w których to JavaScript dominuje i dla których przecież został stworzony. Frameworki takie jak Angular czy React zrewolucjonizowały sposób budowania systemów webowych, przenosząc coraz więcej odpowiedzialności na klienta uruchamianego w przeglądarce, a sam front-end wielu aplikacji stał się z czasem dużo bardziej zaawansowany i do złudzenia przypomina dziś tradycyjne programy desktopowe. JavaScript przestał być postrzegany jako prosta zabawka służąca do animacji formularzy, a społeczność z nim związana mocno się rozrosła. Za tym poszedł rozwój narzędzi i tak oto obecnie proces tworzenia aplikacji klienckich przypomina ten znany z technologii utożsamianych z dojrzałymi rozwiązaniami ze świata Enterprise. Pojawiły się również języki transpilowane do JavaScriptu, zarówno inspirowane obiektową tradycją Javy, czy C# (TypeScript[3]), jak i funkcyjnym podejściem (Elm [4], ReasonML [5]). Poza rozszerzeniem, bądź niemal całkowitą zmianą składni, technologie te wprowadziły statyczne typowanie na etapie kompilacji, co szczególnie w dużych projektach przekłada się na mniejszą ilość błędów i szybszy rozwój oprogramowania. Proces deploymentu, wersjonowanie, budowanie, testy na różnych poziomach – te wszystkie kroki są bardzo łatwe do zautomatyzowania właśnie dzięki narzędziom tworzonym przez społeczność, do której zaliczają się też tak wielkie korporacje jak Facebook, czy Microsoft.

Bardzo dużym czynnikiem wpływającym na zainteresowanie JavaScriptem jest jego ekspansja na inne platformy. Potencjał drzemiący w tym języku zauważyli twórcy Node.js, który to zadebiutował w 2009 i od tego czasu zyskuje coraz większą popularność. Asynchroniczny model działania Node.js pozwala osiągnąć wysoką skalowalność, a ekspresyjność języka przekłada się na dużą szybkość rozwoju aplikacji, co czyni tę platformę dobrym wyborem dla wielu projektów, szczególnie w świecie mikroserwisów. Proste prototypy można w Node.js stworzyć błyskawicznie, do ustrukturyzowania projektu posłużą zaś liczne mniej lub bardziej złożone frameworki – od Expressa [6], przez np. Hapi [7], aż po inspirowany Angularem i oparty na TypeScripcie Nest.js [8].

Swoich JavaScriptowych odsłon doczekały się również aplikacje mobilne (dzięki React Native [9]) oraz desktopowe (Electron [10], za pomocą którego zbudowane są jedne z bardziej popularnych edytorów kodu – VSCode oraz Atom). Taka różnorodność zastosowań powoduje zacieranie się granic pomiędzy poszczególnymi platformami. Wybierając JavaScript, możemy stworzyć homogeniczne środowisko programistyczne, dzięki czemu jeden programista może stworzyć aplikację serwerową, klienta webowego oraz mobilnego używając tego samego języka i zestawu narzędzi. W dużym stopniu znika koszt wynikający z konieczności “przełączania kontekstu” pomiędzy różnymi technologiami, czy w niektórych przypadkach wręcz konieczność zatrudnienia osobnych specjalistów z każdej dziedziny.

Jak to zwykle bywa, nie wszystko zawsze wygląda idealnie. Popularność języka przekłada się co prawda na ogromną ilość bibliotek i materiałów na jego temat, niestety ich jakość nie zawsze bywa zadowalająca. Jednym z powodów może być fakt, iż JavaScript jest jedną z technologii, w którą stosunkowo łatwo wejść, ale już zdecydowanie trudniej opanować do perfekcji. Wspomniana wyżej ekspresyjność oraz brak silnego typowania sprawiają, że dość łatwo można strzelić sobie w stopę bez dokładnego zrozumienia mechanizmów działania języka. Node.js również nie jest lekiem na całe zło – działa mimo wszystko na jednym wątku, więc nie będzie najlepszym wyborem, jeśli od naszej aplikacji wymagamy dużej ilości obliczeń.

JavaScript ma na rynku bardzo silną pozycję i nie wygląda na to, żeby jakaś technologia miała go w najbliższym czasie zdetronizować. Jeżeli wybierzemy ten język jako podstawowy język dla naszego projektu z jednoczesnym uwzględnieniem jego silnych jak i słabych stron oraz spojrzymy na niego przez pryzmat potrzeb naszego projektu, to wybór tej technologii może być okazać się bardzo dobry. Możemy skrócić czas wytwarzania oprogramowania (np. poprzez współdzielenie logiki biznesowej pomiędzy poszczególnymi platformami) a tym samym obniżyć koszta. Wybierając zatem technologię do projektu, warto wziąć pod uwagę JavaScript (lub inne języki do niego transpilowane) podczas analizy dostępnych rozwiązań.

1. „Stack Overflow Developer Survey 2018.” https://insights.stackoverflow.com/survey/2018/. Otwarto 28 maj. 2018.
2. „ECMAScript 6 compatibility table.” https://kangax.github.io/compat-table/es6/. Otwarto 28 maj. 2018.
3. „TypeScript.” https://www.typescriptlang.org/. Otwarto 28 maj. 2018.
4. 
„Elm-lang.org.” http://elm-lang.org/. Otwarto 28 maj. 2018.
5.  „Reason ML.” https://reasonml.github.io/. Otwarto 28 maj. 2018.
6.  
„Express – Node.js web application framework.” https://expressjs.com/. Otwarto 28 maj. 2018.
7. „hapi.js.” https://hapijs.com/. Otwarto 28 maj. 2018.
8.  
„Nest – A progressive Node.js web framework.” https://nestjs.com/. Otwarto 28 maj. 2018.
9. „Use React Native.” http://www.reactnative.com/. Otwarto 28 maj. 2018.
10. „Electron | Build cross platform desktop apps with JavaScript, HTML ….” https://electronjs.org/. Otwarto 28 maj. 2018.

 


Nawigacja