4 декабря 2020 года JavaScript исполнилось 25 лет. Автор материала, перевод которого мы сегодня публикуем, Даниэль Адамс, говорит, что этот язык повлиял на её карьеру, а так же — на профессиональную деятельность многих программистов. JavaScript повлиял и на то, как обычные люди со всего мира пользуются веб-сайтами. Даниэль предлагает отпраздновать 25-летие JavaScript, вспомнив о 25 заметных событиях, которые сделали экосистему, сложившуюся вокруг этого языка, такой, какой она стала в наши дни.



1995


?1. Создание JavaScript


В 1995 году Брендану Эйху, программисту из компании Netscape, известной выпуском браузера Netscape Navigator, поручили создать скриптовый язык, который должен был выполняться на стороне клиента и хорошо стыковался бы с Java. Первая версия языка отличается от того JavaScript, который мы знаем и любим, но этот язык был создан за 10 дней и в нём уже присутствовали те возможности, вроде функций, являющихся объектами первого класса, которыми мы пользуемся до сих пор.

1997


?2. Выпуск стандарта ECMAScript


Несмотря на то, что к 1997 году JavaScript существовал уже два года, для того чтобы реализации JavaScript могли бы использоваться в различных браузерах, нужны были открытые стандарты этого языка. В 1997 компании Netscape и Microsoft объединились в рамках Ecma International для того чтобы стандартизировать язык. Это привело к появлению первой редакции стандарта ECMAScript.

1999


?3. В Internet Explorer появляется API XMLHTTP


Вероятно, кто-то ещё помнит о том, как теги iframe использовались для того чтобы, при выполнении запросов, не перезагружать страницы, просматриваемые пользователями. В марте 1999 года в Internet Explorer 5.0 появился браузерный API XMLHTTP, дающий разработчикам возможность выполнять загрузку данных в фоновом режиме.

2001


?4. У JavaScript появляется собственный формат представления данных


В 2001 году появился формат представления данных JSON (JavaScript Object Notation), описание которого можно найти на json.org. В 2006 году на всеобщее рассмотрение был вынесен проект RFC, в котором был описан синтаксис JSON, позволяющий организовывать обмен данными между различными приложениями. В частности, с использованием HTTP-запросов, необходимых для обеспечения работы веб-страниц. Формат JSON, благодаря своей простоте, стал весьма популярным и был стандартизирован (ECMA-404). Он широко используется и в наши дни.

2005


?5. Сдвиг в сторону AJAX


После того, как другие браузеры последовали за Inernet Explorer в деле поддержки фоновых запросов, позволяющих обновлять содержимое веб-страниц без их перезагрузки, появилось такое понятие, как AJAX (Asynchronous Javascript and XML, асинхронный JavaScript и XML). В сфере веб-разработки начался сдвиг в сторону использования асинхронных механизмов.

2006


?6. Выпуск первых «инструментов разработчика» в виде расширения для браузера


Браузеры становились всё сложнее. Поэтому появилась потребность в инструментах, которые могли бы помочь программистам при разработке клиентских приложений. В 2005 году был создан набор инструментов Firebug, предназначенный для отладки JavaScript-приложений в браузере Mozilla Firefox и представленный в виде расширения для браузера. Это был первый инструмент, дававший разработчикам возможность исследовать и отлаживать код прямо в браузере. Последняя версия Firebug вышла в 2017 году.

?7. Выпуск библиотеки jQuery


Библиотеку jQuery можно признать пионером того явления, которое в наши дни называют «современной веб-разработкой». Она оказала влияние на множество библиотек и фреймворков, которыми мы пользуемся сегодня. На пике популярности этой библиотеки понятия «JavaScript-разработчик» и «jQuery-разработчик» были взаимозаменяемыми. Библиотека расширяет возможности JavaScript, упрощая создание одностраничных приложений, в которых производятся манипуляции с узлами DOM, обработка событий и многое другое.

2008


?8. Создание JavaScript-движка V8


По мере того, как веб-сайты превращались из обычных HTML-страниц в JavaScript-приложения, браузерам, в которых выполнялись эти приложения, крайне важно было развиваться в соответствующем направлении. В период между 2007 и 2010 годами вышли релизы многих браузеров, направленные на улучшение возможностей по выполнению JavaScript-кода. Когда был выпущен браузер Google Chrome, используемый в нём JavaScript-движок, V8, был выпущен в виде отдельного проекта. V8 — это, с его just-in-time-компилятором, знаковый проект в мире JavaScript. Этот движок нашёл применение не только в браузере Chrome, но и в других разработках, выступая в роли надёжной и быстрой среды выполнения JavaScript.

?9. Выпуск первых «инструментов разработчика», встроенных в браузер


В браузере Chrome использовался не только движок V8, но и ещё одна инновация: инструменты разработчика, встроенные в браузер. В то время эти инструменты давали программистам не так много возможностей, в частности, позволяли исследовать элементы и работать с ресурсами. Но это, в сравнении с существующими на то время инструментами, был шаг вперёд. Эти инструменты оказали влияние на все те инструменты, которые используются в наши дни при создании браузерных приложений.

2009


?10. Проект CommonJS и попытка стандартизации JavaScript-модулей


Проект CommonJS представлял собой попытку найти способ разбиения JavaScript-кода, используемого за пределами браузера, на модули. Это позволило бы превратить скрипты, код которых содержался в одном большом файле, в наборы модулей. Модули CommonJS оказали влияние на систему модулей Node.js.

?11. Проект Node.js и бэкенд-разработка на JavaScript


JavaScript получил широкое применение в качестве браузерного языка для разработки приложений задолго до того, как на этом языке стали создавать серверные программы. В 2009 году Райан Даль, сотрудник Joyent, представил на JSConf EU проект Node.js — асинхронную среду выполнения JavaScript, управляемую событиями.

?12. Появление CoffeeScript — синтаксического «сахара» для JavaScript


CoffeeScript появился задолго до популяризации идеи расширения возможностей работы с типами в JavaScript. CoffeeScript — это язык программирования, созданный под влиянием Ruby, Python и Haskell, код, написанный на котором, компилировался в JavaScript. Компилятор был изначально написан на Ruby, потом — переписан на самом CoffeeScript, а значит, в итоге, был представлен JavaScript-кодом. CoffeeScript обрёл популярность благодаря тому, что облегчал работу программистов, давая им возможность пользоваться надёжными JavaScript-конструкциями.

2010


?13. У Node.js появляется первый менеджер пакетов


Вскоре после выпуска Node.js был создан и npm (Node Package Manager, менеджер пакетов Node.js). Npm, фактически, стал стандартом в деле управления зависимостями и в клиентских, и в серверных приложениях. Его использование упрощает публикацию и установку кода, управление кодом, предназначенным для многократного использования. В основе этих механизмов лежит файл package.json. В рамках проекта npm создан реестр пакетов, фактически — база данных, в которой можно публиковать пакеты. На основе материалов этого реестра построены сотни тысяч приложений.

?14. Состоялся первый выпуск Express


В 2010 году вышла первая версия фреймворка Express.js, создатели которого вдохновлялись идеями проекта Sinatra из мира Ruby. Express.js создавался как веб-фреймворк, обладающий минимальными необходимыми возможностями (маршрутизация, ПО промежуточного слоя, вспомогательные HTTP-механизмы) и не навязывающий разработчику некоего «правильного» подхода к разработке веб-сервера. Если верить данным GitHub, то можно сказать, что Express.js в наши дни является самым популярным JavaScript-фреймворком для серверной разработки.

?15. Появились первые современные MVC-фреймворки, основанные на JavaScript


В то время, как набирала популярность серверная разработка на JavaScript, начали появляться MVC-фреймворки для фронтенд-разработки. Среди них стоит отметить Backbone.js и AngularJS (позже этот фреймворк переписали и переименовали в Angular). Началось практическое использование этих фреймворков, они полюбились JavaScript-разработчикам. Подход к фронтенд-разработке, используемый в Backbone.js, хорошо соответствовал нуждам описания бизнес-логики приложений. А AngularJS использовал декларативный подход, который позволял создавать надёжные браузерные проекты. Оба фреймворка повлияли на фреймворки и библиотеки для фронтенд-разработки, появившиеся позже. В частности, речь идёт о React, Ember.js и Vue.js.

2011


?16. Ember.js и концепция «соглашения превыше конфигурации»


В 2011 году появился форк проекта SproutCore, названный Ember.js. Ember.js предлагает JavaScript-разработчикам концепцию «соглашения превыше конфигурации» (convention over configuration). Благодаря этому им не нужно тратить время на размышления об архитектурных особенностях проектов, которые могут быть стандартизированы на уровне фреймворка.

2012


?17. Появление механизмов статической типизации, нацеленных на JavaScript-разработчиков


2012 год был годом статически типизированных языков. JavaScript, по своей природе, был до тех пор языком, в котором использовалась лишь динамическая типизация. От разработчиков не требовалось указывать типы данных при инициализации переменных и при работе с различными структурами данных. А потом появился TypeScript — расширение JavaScript, позволявшее программистам писать типизированный JavaScript-код, похожий, с синтаксической точки зрения, на JavaScript, и компилирующийся в обычный JavaScript. Компания Microsoft выпустила первый релиз TypeScript в октябре 2012.

2013


?18. Появление React


В 2013 году разработчик из Facebook Джордан Уолк представил миру новую JavaScript-библиотеку, в основе которой не лежала популярная в те времена концепция MVC, используемая во многих других веб-фреймворках. React — это библиотека, предназначенная для разработки приложений, основанных на компонентах, направленная на разработку интерфейсов (то есть реализующая возможности того, чему в аббревиатуре MVC соответствует буква «V»). Эта библиотека в наши дни является одним из самых популярных инструментов веб-разработки.

?19. Проект Electron и разработка настольных приложений с использованием Node.js


Популярность Node.js и других технологий, использующих JavaScript, росла. Всё складывалось так, что вполне естественным оказалось бы использование этих технологий не только для разработки веб-проектов. В результате компания GitHub объединила Node.js и движок Chromium в проекте Electron, нацеленном на создание настольных приложений. Среди приложений, созданных на базе Electron, стоит упомянуть GitHub Desktop, Slack и Visual Studio Code.

2015


?20. Выпуск стандарта ES2015/ES6


В июне 2015 года вышла шестая версия стандарта ECMAScript. Выхода этого стандарта ждали многие JavaScript-разработчики. Он должен был включить в себя множество ценных возможностей. Среди них — экспорт и импорт модулей (ES-модули), объявление констант и многое другое. Предыдущая версия ECMAScript (ES5) была выпущена за 6 лет до этого, а работа над большинством новых возможностей велась с момента выхода стандарта ES3, выпущенного 16 годами ранее.

?21. GraphQL становится альтернативой REST


В 2015 году компания Facebook выпустила опенсорсный проект GraphQL — язык запросов для создания API, упрощающий обмен данными между клиентами и серверами и позволяющий решить проблему различий между схемами данных, используемыми на серверах, и тем, какие именно данные требуются клиентам. Популярность GraphQL привела к тому, что был учреждён фонд GraphQL Foundation, нацеленный на развитие GraphQL.

?22. Выход Node.js 4


В 2015 году в мире JavaScript-разработки произошло значительное событие, которое заключалось в том, что проект io.js снова стал единым целым с проектом Node.js. Всего год назад был создан форк Node.js, названный io.js. Сделано это было в попытке сократить длительность циклов релиза проекта. Когда io.js снова стал частью Node.js, уже вышла 3-я версия io.js. Поэтому, после объединения проектов, совершенно естественным был выход Node.js 4-й версии, в которой совместное существование двух проектов начиналось, так сказать, с чистого листа. После этого циклы релиза Node.js оказались согласованными с выпуском свежих версий движка V8.

2016


?23. Появление менеджера пакетов Yarn


Через несколько месяцев после печально известного инцидента с npm-пакетом left-pad был выпущен новый менеджер пакетов — Yarn. Этот менеджер пакетов был создан для того чтобы обеспечить более высокую однородность сред выполнения одного и того же кода на разных компьютерах. С выпуском Yarn в экосистеме JavaScript появилось такое понятие, как автоматически генерируемые lock-файлы, что повлияло на развитие других менеджеров пакетов, на то, как в них реализованы механизмы поддержки разработки JavaScript-проектов.

2019


?24. Node + JS = OpenJS


После того, как многие годы JS Foundation и Node.js Foundation работали сами по себе, было решено объединить эти две организации, создав новую — OpenJS Foundation. Её целью является расширение уровня взаимодействия технологий и создание единой площадки, поддерживающей развитие различных проектов в среде JavaScript-разработки.

2020


?25. Первый выпуск Deno наделал много шума


В этом году Райан Даль, создатель Node.js, представил миру Deno — среду для выполнения JavaScript- и TypeScript-кода, основанную, как и Node.js, на движке V8. Проект вызвал большой интерес сообщества веб-разработчиков. Этому способствовала популярность Node.js, и то, что в Deno имеется встроенная поддержка TypeScript.

Итоги


Хотя те 25 событий, о которых мы говорили, представляют собой заметные вехи истории JavaScript, помимо них вокруг этого языка происходило ещё очень много интересного и важного. Экосистема JavaScript попросту не существовала бы в её современном виде, если бы не все те силы, которые были приложены к развитию этой экосистемы разработчиками со всего мира. Каждый PR, каждое выступление на конференции, каждая новая публикация — всё это внесло вклад в развитие JavaScript. Поэтому мы благодарим всех, чьими силами этот язык стал тем, что он есть, и предлагаем вместе отправиться в светлое будущее JavaScript.

Какие события из истории JavaScript кажутся вам наиболее значительными, определившими современное состояние языка?