JavaScript stworzył Brendan Eich w firmie Netscape w 1995 roku: prototyp powstał w maju w około dziesięć dni, a pod nazwą JavaScript język ogłoszono w grudniu 1995. ECMAScript to standard (ECMA-262), który opisuje rdzeń języka, a JavaScript jest jego najbardziej znaną implementacją. Pierwsza edycja standardu ukazała się w czerwcu 1997 roku, a 17. w czerwcu 2026.
Na początku lat 90. strony internetowe były statycznymi dokumentami: kliknięcie linku ładowało nową stronę, a przeglądarka nie potrafiła nawet sprawdzić formularza przed wysłaniem. Zmiana przyszła w 1995 roku, kiedy Netscape zapragnął języka, który ożywi strony. W tym artykule prześledzimy, kto go stworzył, dlaczego zmieniał nazwy, czym jest ECMAScript i jak czytać oznaczenia typu ES6 albo ES2015. Dla każdego etapu podaję datę, a przy edycjach standardu sprawdziłem je na stronie Ecma International.
Kto stworzył JavaScript?
Autorem JavaScriptu jest Brendan Eich, programista zatrudniony w Netscape Communications w kwietniu 1995 roku. Sam opowiadał, że do Netscape przyszedł z obietnicą, że zrobi „Scheme w przeglądarce”, czyli osadzi tam prosty język funkcyjny. Kierownictwo firmy chciało jednak, żeby język wyglądał jak Java. Wyszła z tego mieszanka: składnia podobna do Javy, funkcje jako zwykłe wartości (jak w Scheme) i obiekty oparte na prototypach (jak w języku Self).
Eich nie robił tego sam w próżni. W blogu wspomina o współpracy z Kipp Hickmanem, który pracował nad maszyną wirtualną Javy dla Netscape, oraz o rozmowach z Billem Joyem z firmy Sun, który wspierał pomysł lekkiego języka skryptowego do pary z Javą. Wyboru, co dalej, dokonali menedżerowie Netscape, ale sam język napisał jeden człowiek.
Po latach Eich współzałożył Mozillę (w 1998 roku, na bazie kodu Netscape) i firmę Brave, więc jego nazwisko pojawia się w historii przeglądarek nie tylko przy JavaScripcie.
Jak powstał JavaScript i dlaczego zmieniał nazwy?
Pierwszy prototyp powstał we wczesno-środkowym maju 1995 roku. Według powszechnie powtarzanej relacji Eich napisał pierwszą wersję w około dziesięć dni, żeby zdążyć przed terminem wydania wersji beta Netscape Navigatora 2.0. To ważny szczegół, bo tłumaczy, skąd w języku biorą się niektóre dziwactwa: powstawał pod presją czasu, jako rozwiązanie dla jednej konkretnej przeglądarki.
Nazwa zmieniała się trzykrotnie:
| Kiedy | Nazwa | Co się działo |
|---|---|---|
| maj 1995 | Mocha | wewnętrzna nazwa prototypu |
| wrzesień 1995 | LiveScript | język w becie Netscape Navigatora |
| 4 grudnia 1995 | JavaScript | wspólne ogłoszenie Netscape i Sun Microsystems |
Nazwa „JavaScript” była decyzją marketingową. Java była wtedy najgłośniejszą technologią, a Netscape i Sun ogłosiły współpracę. Do dziś to powód nieporozumień: Java i JavaScript to dwa różne języki, które łączy głównie podobna składnia i fragment nazwy. Jeśli zastanawiasz się, który wybrać na start, zobacz nasz artykuł jaki język programowania wybrać. O tym, jak wygląda dziedzictwo prototypów w kodzie, napisaliśmy w tekście o programowaniu obiektowym w JavaScript.
Dlaczego powstał standard ECMAScript?
W 1996 roku Microsoft wydał własną implementację w Internet Explorerze 3 i nazwał ją JScript, częściowo po to, by nie używać słowa „Java”. Dwie przeglądarki miały teraz dwa podobne, ale nie identyczne języki. Skrypt, który działał w jednej, w drugiej mógł się wywrócić.
Żeby uniknąć chaosu, Netscape przekazał JavaScript organizacji Ecma International (pod koniec 1996 roku), która zajmuje się standaryzacją technologii informatycznych. Powstał komitet techniczny TC39, a specyfikację nazwano ECMA-262. Samego języka w standardzie nie nazwano JavaScript, bo ta nazwa była znakiem towarowym, więc standard dostał nazwę ECMAScript.
Czym jest ECMAScript i czym różni się od JavaScriptu?
To najczęściej zadawane pytanie w tym temacie. Najkrócej:
- ECMAScript to specyfikacja, czyli dokument opisujący, jak powinien działać rdzeń języka: składnię, typy danych, obiekty wbudowane (
Array,Promise,Map). - JavaScript to język, który ten standard implementuje i dodaje do niego własne elementy zależne od środowiska.
Wszystko, co jest w ECMAScript, działa w każdym zgodnym silniku. Przeglądarkowe document albo window, czy process w Node.js, to już dodatki środowiska, których standard nie opisuje. Pokazuje to prosty przykład:
// Rdzeń języka (ECMAScript): ten sam wynik w przeglądarce i w Node.js
const podwojone = [1, 2, 3].map((n) => n * 2);
console.log(podwojone); // [2, 4, 6]
// Środowisko hosta (poza ECMAScript): wynik zależy od miejsca uruchomienia
console.log(typeof document); // przeglądarka: "object", Node.js: "undefined"
console.log(typeof process); // przeglądarka: "undefined", Node.js: "object"
Wyniki sprawdziłem w Chromium 156 i w Node.js 22. Jeśli przygotowujesz się do rozmowy kwalifikacyjnej, więcej pytań o język znajdziesz w artykule najczęstsze pytania rekrutacyjne z JavaScript. A żeby zobaczyć w praktyce, co jest „przeglądarką”, zajrzyj do artykułu o DOM w JavaScript.
Jak wyglądały kolejne edycje ECMAScript?
Daty poniżej pochodzą ze strony Ecma International.
| Edycja | Data | Nazwa | Co ważnego |
|---|---|---|---|
| 1 | czerwiec 1997 | ECMAScript 1 | pierwsza edycja standardu |
| 2 | sierpień 1998 | ECMAScript 2 | poprawki redakcyjne pod normę ISO |
| 3 | grudzień 1999 | ECMAScript 3 | wyrażenia regularne, try/catch |
| 4 | nigdy nie wydana | ES4 | porzucona z powodu sporu o zakres zmian |
| 5 | grudzień 2009 | ES5 | tryb ścisły, JSON, getters i setters |
| 6 | czerwiec 2015 | ES2015 (ES6) | klasy, moduły, let i const, funkcje strzałkowe, obietnice |
| 7–14 | czerwiec 2016–2023 | ES2016–ES2023 | roczne, mniejsze wydania |
| 15 | czerwiec 2024 | ES2024 | Object.groupBy, Promise.withResolvers |
| 16 | czerwiec 2025 | ES2025 | metody Set, iterator helpers, RegExp.escape |
| 17 | czerwiec 2026 | ES2026 | najnowsza edycja |
Między 3. a 5. edycją minęło dziesięć lat. Prace nad ES4 zakończyły się porażką: komitet nie zgodził się co do skali zmian, więc kompromisem stała się mniejsza wersja, wcześniej nazywana ES3.1, która została wydana jako ES5. Numer 4 nigdy nie został użyty.
Dlaczego mówi się ES6, a potem ES2015?
Po tak długiej przerwie TC39 zmienił sposób pracy. Od edycji z 2015 roku standard wydaje się co roku w czerwcu, a propozycje wchodzą do niego, gdy osiągną ostatni etap (stage 4). Dlatego duże, rzadkie wydania ustąpiły małym, regularnym.
Zmieniło się też nazewnictwo. Szóstą edycję nazywano najpierw ES6, a potem ES2015, a kolejne od razu oznaczano rokiem wydania. ES6 i ES2015 to więc ta sama edycja pod dwiema nazwami. Wprowadziła let, const, klasy, moduły i funkcje strzałkowe. Jeśli chcesz je uporządkować, zobacz funkcje strzałkowe, destrukturyzację albo pełny artykuł o nowościach ES2015.
Co działo się z JavaScriptem poza standardem?
Standard to tylko część historii. Kilka momentów zmieniło sposób, w jaki z języka korzystamy:
- 2005: Jesse James Garrett nazywa technikę odpytywania serwera bez przeładowania strony Ajax. Zaczyna się epoka aplikacji internetowych.
- 2009: Ryan Dahl tworzy Node.js, dzięki któremu JavaScript działa poza przeglądarką.
- 2009: Oracle przejmuje Sun i dziedziczy znak towarowy „JavaScript”. Firma Deno prowadzi postępowanie o jego unieważnienie (według strony javascript.tm sprawa jest w toku), więc na razie nazwa należy do Oracle.
Dziś JavaScript działa w przeglądarce, na serwerze, w aplikacjach mobilnych i w edytorach. To dlatego dobrze znać go także w wersji z typami. Jak zrobić następny krok, opisaliśmy w artykule TypeScript – kolejny krok po JavaScript, a o narzędziach, które zamieniają nowoczesny kod na wersję dla starszych przeglądarek, w tekście o bundlerach.
Co dalej?
Najlepszy sposób, żeby poczuć, jak język zmieniał się przez lata, to przejrzeć nowości z ostatnich edycji: ES2024, ES2025 i ES2026. W każdym z tych artykułów każda nowość ma przykład, który możesz uruchomić.
Jeśli chcesz zrozumieć, jak te funkcje wpisują się w całość, i uporządkować nowoczesny JavaScript pod okiem mentora, zobacz nasz kurs Zaawansowany JS. Jeśli dopiero zaczynasz, zacznij od ścieżki Frontend.


