[Перевод] JavaScript исполнилось 25 лет
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 кажутся вам наиболее значительными, определившими современное состояние языка?