Pamiętam jak dziś. Historia JavaScript.

Dzisiaj JavaScript jest wszędzie, chociaż w pierwszych kilkunastu latach jego istnienia nic nie zapowiadało takiego sukcesu. Jak to się stało, że z prostego narzędzia do skryptowania stronek stał się najbardziej popularnym językiem programowania?

JavaScript łączy w sobie programowanie strukturalne, obiektowe i funkcyjne. To język skryptowy uruchamiany w maszynach wirtualnych (silniki JavaScript), dostępnych między innymi w przeglądarkach internetowych. JavaScript to dziś jedna z podstawowych technologii do tworzenia stron internetowych, baz danych NoSQL, aplikacji webowych i rozwiązań serwerowych.

Należy pamiętać, że mówimy o języku, w którym są takie kwiatki:

'1' == 1 // -> true

'' == false // -> true

typeof NaN // -> “number”

['10', '10', '10'].map(parseInt) // -> [10, NaN, 2]

Dodawanie ma na tyle ciekawe właściwości, że powstała strona do zapisywania zwykłego kodu w postaci przypominającej język Brainfuck. Podobieństwo jest na tyle duże, że autorzy nazwali ją JSFuck. Ale dość narzekań, czas na historię!

Jak powstał JavaScript?

Legenda głosi, że Brendan Eich stworzył JavaScript w 10 dni. Złośliwi dodają, że zrobił to na kacu. Wszystko zaczęło się w 1993 roku, kiedy na rynku pojawiła się przeglądarka NCSA Mosaic, która jako pierwsza pozwalała na wyświetlanie obrazów. Rok później firma Mosaic Communications przejęła programistów NCSA, żeby pod nowym szyldem stworzyli przeglądarkę Mosaic Navigator.

Nowa przeglądarka zadebiutowała 15 grudnia 1994 roku i w kilka miesięcy zdobyła 70% rynku. Wspierała między innymi migający tekst (😎) i elementy formularza. Wkrótce ze względów prawnych zmieniono jej nazwę na Netscape Navigator, a producentem zostało Netscape Communications. Autorzy przeglądarki cały czas szukali sposobu na to, żeby strony www stały się bardziej interaktywne.

W 1995 roku w siedzibie Netscape Communications pojawił się Brendan Eich. Zaproponował osadzenie w przeglądarce interpretera języka programowania Scheme, próbowano też wsparcia dla języka Java. Brendan połączył elementy trzech języków: Java, Scheme i Self. Projekt szybko przejęła Sun Microsystems, firma współpracująca z Netscape Communications, ale wkrótce z niego zrezygnowała.

Wtedy właśnie, w maju 1995 roku, Brendan Eich stworzył nowy język w 10 dni. Najpierw nazwano go Mocha, później LiveScript, i wreszcie w przeglądarce Netscape Navigator 2.0 użyto po raz pierwszy nazwy JavaScript. Ten wybór powoduje pewne zamieszanie: do dziś można znaleźć osoby, które sądzą, że JavaScript jest pochodną Javy. Co ciekawe, to właśnie właściciel Javy, czyli Sun Microsystems, został jednocześnie właścicielem znaku towarowego JavaScript.

Wkrótce potem Microsoft skopiował ten język w swojej przeglądarce, nadając mu nazwę JScript. Aby uchronić się przed działaniami silnej konkurencji, Netscape Communications postanowiła stworzyć standard we współpracy z genewską organizacją ECMA (European Computer Manufacturers Association) pod nazwą ECMAScript. Był rok 1997, a JavaScript zaczął podbijać rynek i ewoluować.

Ewolucja JavaScript, czyli w pogoni za doskonałością

Przez te wszystkie lata JavaScript ulegał wielu transformacjom i nigdy nie przestał się rozwijać: ostatnią aktualizację wydano w czerwcu 2017 roku. Już pierwsza wersja JavaScript wprowadziła cechy, które są obecne również dzisiaj, jak na przykład model obiektowy. Ze względów marketingowych od początku starano się jak najbardziej upodobnić składnię JavaScript do języka Java, ale był tam też silny wpływ nie tylko Scheme (na przykład wyjątki), ale i Self (model obiektowy oparty na prototypach). Kiedy w 1995 roku zaimplementowano w przeglądarce Netscape Navigator 2.0. pierwszą wersję JavaScript, wiele z podstawowych funkcji jeszcze nie działało (na przykład funkcje anonimowe, łańcuch prototypów).

Zmiany pojawiły się wraz z ogłoszeniem pierwszej wersji standardu - ECMA-262 w 1997 roku. Już wtedy liczba stron używających JavaScript szacowana była na ponad 300 tys. Wyjątki nie były jeszcze częścią JavaScript.

Poważna transformacja języka nastąpiła w 1999 roku wraz ze standardem ECMAScript 3. W tej wersji JavaScript zyskał wyrażenia regularne, pętlę do-while, wyjątki i bloki try/catch, pojawiły się też wbudowane funkcje dla ciągów i tablic, poprawiono obsługę błędów. Ta wersja była już obsługiwana przez wszystkie najważniejsze przeglądarki internetowe. W tym czasie pojawił się także AJAX, czyli asynchroniczny JavaScript i XML.

Niestety, kolejne lata nie były już takie dobre. W ECMA toczyły się zażarte spory o to, w jakim kierunku powinien ewoluować język, co paraliżowało jego rozwój. W końcu prace nad ECMAScript 4 zostały wstrzymane (rozwijano ten standard nieoficjalnie, wydano go później pod numerem 3.1). W 2011 roku wyszedł standard ECMAScript 5, ale była to niewielka aktualizacja, która wprowadziła między innymi getter/setters, JSON czy strict mode. Standard był o tyle ważny, że przerwał impas trwający niemal 10 lat. Przeglądarki szybko go zaadaptowały.

W 2015 i 2016 roku nadeszły kolejne zmiany. Nowością było na przykład wsparcie dla wbudowanych podklas, obsługa standardu Unicode, optymalizacja połączeń tail-call, domyślne argumenty dla funkcji i operatora reszty. Ostatnia aktualizacja przyniosła między innymi Object.values, Object.entries i Object.getOwnPropertyDescriptor, a to zapewne nie koniec zmian.

Na krawędzi – prawdziwy czy pozorny upadek JavaScript?

W pewnym momencie JavaScript był tak popularny, że stało się to wręcz jego przekleństwem. Niektórzy programiści mówili o nim lekceważąco, traktując go jako język dla amatorów. Duża w tym zasługa banalizacji programów pisanych w JavaScript, których efektem nierzadko były latające po stronie www zwierzątka czy zwracanie bezużytecznych komunikatów w pasku statusu przeglądarek. W sieci można było znaleźć ogromne ilości darmowych skryptów, które często powodowały awarie. Popularne były generatory pluginów i efektów do dołączenia na swoją stronę. To właśnie JavaScript był odpowiedzialny za znienawidzone przez wszystkich, irytujące okienka pop-up.


Generator ważnego elementu każdej poważnej strony z początku XXI w. Przewijanie tekstu w pasku tytułu było trendy!


Znaczna część kodu napisana w JS w tym okresie była co najmniej dyskusyjnej jakości i nikt nie brał tej technologii na poważnie. Jeśli chodzi o budowanie interaktywnych doświadczeń na stronach www, JavaScript miał w tym okresie paru poważnych konkurentów (teraz widzimy, że większość to była ślepa ścieżka ewolucji, ale kilkanaście lat temu świat wyglądał nieco inaczej). Był to przede wszystkim Flash stworzony przez Macromedia. Dziś już wszyscy wiemy, że Flash to zło i niedługo Adobe całkiem go porzuci, jednak w latach 2005-2010 wydawał się on doskonałą technologią do robienia ładnych, interaktywnych stron. Jeszcze 10 lat temu większość konfiguratorów producentów samochodów było napisanych we Flashu, dziś kombinacja HTML5+CSS3+JS jest standardem.

JavaScript jest wszędzie, czyli odrodzenie

Kilka czynników złożyło się na to, że JavaScript zaczęto traktować poważnie. Pierwszą iskrą było pojawienie się Ajaxa. W 2005 roku Jesse James Garrett opublikował pracę opisującą tę technologię. Ajax umożliwił tworzenie bardziej dynamicznych stron www.

Wiele osób zauważyło nowy potencjał w JavaScripcie i zaczęło metodycznie eksplorować możliwości tego języka. Tu trzeba wyjaśnić: nie chodzi o to, że JS był szczególnie dobry, ale wspierały go niemal wszystkie przeglądarki. Forsowanie nowego, lepszego języka nie miało sensu w momencie, gdy możliwości już leżały na stole - wystarczyło tylko z nich skorzystać. To tchnęło nowe życie w społeczność JavaScriptu. Powstały Prototype, jQuery, Mootools, Dojo, czyli biblioteki znacznie ułatwiające development. Dodały one do arsenału programistów zbiór narzędzi, które były obecne w bibliotekach standardowych innych języków, a także znacznie ułatwiły pracę z DOM.

Pomogła też książka Douglasa Crockforda “Javascript. Dobre strony”. Złośliwi twierdzą, że dobrych stron nie jest zbyt dużo i dlatego książka jest taka cienka. Mimo niewielkiej objętości, wyznaczyła nowy standard w myśleniu o tym języku.

Chcąc przyspieszyć działanie JS w przeglądarce Chrome, Google stworzyło silnik V8. Został opracowany jako komponent, który może być używany samodzielnie lub wbudowany w inny program. Od tego czasu został wykorzystany między innymi w MongoDB czy Node.js. To właśnie Node.js miał olbrzymi wpływ na dalszy rozwój wypadków i rozpoczął reakcję łańcuchową, która trwa do dziś.

JavaScript przeżywa odrodzenie. Trudno znaleźć poważny serwis, który nie używa JS. jQuery jest niemal wszędzie, zastosowanie frameworków takich jak AngularJS, Ember.js, Vue.js cały czas rośnie, komponenty Reactowe na stałe zagościły na wielu stronach, wiele serwerów działa wykorzystując Node.js. A to jeszcze nie koniec. asm.js umożliwia odpalanie innych języków programowania przy pomocy JS. Kto by pomyślał 10 lat temu, że uruchomienie aplikacji napisanej w C będzie możliwe wewnątrz przeglądarki?

JavaScript jest dziś jednym z najważniejszych i najpowszechniej używanych języków programowania. Łatwe tworzenie kombinacji HTML, CSS i właśnie JavaScript sprawia, że można bez problemu budować aplikacje na różne systemy mobilne. Posiada biblioteki, wtyczki i API, coraz częściej wykorzystywane przez Internet Rzeczy. Kto wie, czym jeszcze zaskoczy nas JavaScript? Nie tak dawno wydawało się, że to język bez przyszłości, a teraz jest jedną z najlepiej rozwijających się technologii.