в каком году появился javascript
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
JavaScript
Парадигма | мультипарадигменный: объектно-ориентированное, обобщённое, функциональное, императивное, аспектно-ориентированное, событийно-ориентированное, прототипное программирование |
---|---|
Спроектировано | Брендан Эйх |
Первый появившийся | 1995 |
OS | Кроссплатформенное |
Расширение файла | .js |
Портал: | https://www.javascript.com/ |
Под влиянием | |
Self, Си, Scheme, Perl, Python, Java, AWK, HyperTalk |
Содержание
История
В разработке JavaScript участвовали Брендана Эйха вместе с сооснователем Netscape Communications Марком Андрессеном и сооснователем Sun Microsystems Биллом Джойем. Компании ставили перед собой цель обеспечить «язык для склеивания» составляющих частей веб-ресурса: добавление немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления, добавить изображений, плагины, Java-апплеты, которые были бы удобны для веб-дизайнеров и программистов, не обладающих высокой квалификацией. Также он применяется как язык серверной стороны. Первоначально язык назывался Mocha, затем он был переименован в LiveScript и предназначался как для программирования на стороне клиента, так и для программирования на стороне сервера (там он должен был называться LiveWire). На синтаксис оказали влияние языки Си и Java. 4 декабря 1995 года LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Первая публичная версия JavaScript была встроена в Netscape Navigator 2.0, выпущенный в 1995 году.
Структура языка
Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей
Основная статья: ECMAScript ECMAScript не является браузерным языком и в нём не определяются методы ввода и вывода информации. Это, скорее, основа для построения скриптовых языков. Спецификация ECMAScript описывает типы данных, инструкции, ключевые и зарезервированные слова, операторы, объекты, регулярные выражения, не ограничивая авторов производных языков в расширении их новыми составляющими. [Источник 1]
Объектная модель браузера
Объектная модель браузера — браузер-специфичная часть языка, являющаяся прослойкой между ядром и объектной моделью документа. Основное предназначение объектной модели браузера — управление окнами браузера и обеспечение их взаимодействия. Каждое из окон браузера представляется объектом window, центральным объектом DOM. Объектная модель браузера на данный момент не стандартизирована, однако спецификация находится в разработке WHATWG и W3C.
Помимо управления окнами, в рамках объектной модели браузера, браузерами обычно обеспечивается поддержка следующих сущностей:
Объектная модель документа
Основная статья: Document Object Model Объектная модель документа — интерфейс программирования приложений для HTML и XML-документов. Согласно DOM, документ (например, веб-страница) может быть представлен в виде дерева объектов, обладающих рядом свойств, которые позволяют производить с ним различные манипуляции:
Области использования
Первоначально JavaScript обладал довольно небольшими возможностями. Его цель состояла лишь в том, чтобы добавить немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления.
Однако развитие веб-среды, появление HTML5 и технологии Node.js открыло перед JavaScript гораздо большие горизонты. Сейчас JavaScript продолжает использоваться для создания веб-сайтов, только теперь он предоставляет гораздо больше возможностей.
Наиболее популярные области использования JavaScript:
Практическое использование. Встраивание в веб-страницу
Основной скрипт. Расположение внутри страницы
Современные браузеры в обязательном порядке имеют поддержку языка JavaScript.
Команды JavaScript добавляются на веб-страницы с помощью тега
Скрипт этого языка можно как внедрять непосредственно в HTML-код страницы, так и выносить в файл, который может вызываться разными страницами. Вот пример вызова файла со скриптом:
Для более подробного изучения команд можно воспользоваться библиотекой
Расположение внутри тега
Спецификация HTML описывает набор атрибутов, используемых для задания обработчиков событий. Пример использования:
В приведённом примере при нажатии на ссылку функция confirm(‘Вы уверены?’); вызывает модальное окно с надписью «Вы уверены?», а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдёт без предупреждения.
Использование кода JavaScript в контексте разметки страницы расценивается в рамках ненавязчивого JavaScript как плохая практика. Аналогом (при условии снабжения ссылки идентификатором alertLink)
приведённого примера может являться, например, следующий фрагмент JavaScript:
Вынесение в отдельный файл
Есть и третья возможность подключения JavaScript — написать скрипт в отдельном файле, а потом подключить его с помощью конструкции
Атрибуты элемента script
Элемент script, широко используемый для подключения к странице JavaScript, имеет несколько атрибутов. необязательный атрибут type для указания MIME-типа содержимого. В запросе комментариев RFC-4329, определяющем[55] MIME-тип, соответствующий JavaScript, указано:
которые также определяются в этом документе, предназначены для практического использования, им следует отдавать предпочтение.
Необязательный атрибут src, принимающий в качестве значения адрес к файлу со скриптом. Необязательный атрибут charset, используемый вместе с src для указания используемой кодировки внешнего файла. Необязательный атрибут defer указывает, что получение скрипта происходит асинхронно, но выполнение следует отложить до тех пор, пока страница не будет загружена целиком. Необязательный атрибут async указывает, что получение скрипта происходит асинхронно, а выполнение будет произведено сразу по завершению скачивания. Очерёдность выполнения скриптов не гарантируется. При этом атрибут language (language=»JavaScript»), несмотря на его активное использование (в 2008 году этот атрибут был наиболее часто используемым у тега
JavaScript исполнилось 25 лет
4 декабря 2020 года JavaScript исполнилось 25 лет. Автор материала, перевод которого мы сегодня публикуем, Даниэль Адамс, говорит, что этот язык повлиял на её карьеру, а так же — на профессиональную деятельность многих программистов. JavaScript повлиял и на то, как обычные люди со всего мира пользуются веб-сайтами. Даниэль предлагает отпраздновать 25-летие JavaScript, вспомнив о 25 заметных событиях, которые сделали экосистему, сложившуюся вокруг этого языка, такой, какой она стала в наши дни.
▍1. Создание JavaScript
В 1995 году Брендану Эйху, программисту из компании Netscape, известной выпуском браузера Netscape Navigator, поручили создать скриптовый язык, который должен был выполняться на стороне клиента и хорошо стыковался бы с Java. Первая версия языка отличается от того JavaScript, который мы знаем и любим, но этот язык был создан за 10 дней и в нём уже присутствовали те возможности, вроде функций, являющихся объектами первого класса, которыми мы пользуемся до сих пор.
▍2. Выпуск стандарта ECMAScript
Несмотря на то, что к 1997 году JavaScript существовал уже два года, для того чтобы реализации JavaScript могли бы использоваться в различных браузерах, нужны были открытые стандарты этого языка. В 1997 компании Netscape и Microsoft объединились в рамках Ecma International для того чтобы стандартизировать язык. Это привело к появлению первой редакции стандарта ECMAScript.
▍3. В Internet Explorer появляется API XMLHTTP
Вероятно, кто-то ещё помнит о том, как теги iframe использовались для того чтобы, при выполнении запросов, не перезагружать страницы, просматриваемые пользователями. В марте 1999 года в Internet Explorer 5.0 появился браузерный API XMLHTTP, дающий разработчикам возможность выполнять загрузку данных в фоновом режиме.
▍4. У JavaScript появляется собственный формат представления данных
В 2001 году появился формат представления данных JSON (JavaScript Object Notation), описание которого можно найти на json.org. В 2006 году на всеобщее рассмотрение был вынесен проект RFC, в котором был описан синтаксис JSON, позволяющий организовывать обмен данными между различными приложениями. В частности, с использованием HTTP-запросов, необходимых для обеспечения работы веб-страниц. Формат JSON, благодаря своей простоте, стал весьма популярным и был стандартизирован (ECMA-404). Он широко используется и в наши дни.
▍5. Сдвиг в сторону AJAX
После того, как другие браузеры последовали за Inernet Explorer в деле поддержки фоновых запросов, позволяющих обновлять содержимое веб-страниц без их перезагрузки, появилось такое понятие, как AJAX (Asynchronous Javascript and XML, асинхронный JavaScript и XML). В сфере веб-разработки начался сдвиг в сторону использования асинхронных механизмов.
▍6. Выпуск первых «инструментов разработчика» в виде расширения для браузера
Браузеры становились всё сложнее. Поэтому появилась потребность в инструментах, которые могли бы помочь программистам при разработке клиентских приложений. В 2005 году был создан набор инструментов Firebug, предназначенный для отладки JavaScript-приложений в браузере Mozilla Firefox и представленный в виде расширения для браузера. Это был первый инструмент, дававший разработчикам возможность исследовать и отлаживать код прямо в браузере. Последняя версия Firebug вышла в 2017 году.
▍7. Выпуск библиотеки jQuery
Библиотеку jQuery можно признать пионером того явления, которое в наши дни называют «современной веб-разработкой». Она оказала влияние на множество библиотек и фреймворков, которыми мы пользуемся сегодня. На пике популярности этой библиотеки понятия «JavaScript-разработчик» и «jQuery-разработчик» были взаимозаменяемыми. Библиотека расширяет возможности JavaScript, упрощая создание одностраничных приложений, в которых производятся манипуляции с узлами DOM, обработка событий и многое другое.
▍8. Создание JavaScript-движка V8
По мере того, как веб-сайты превращались из обычных HTML-страниц в JavaScript-приложения, браузерам, в которых выполнялись эти приложения, крайне важно было развиваться в соответствующем направлении. В период между 2007 и 2010 годами вышли релизы многих браузеров, направленные на улучшение возможностей по выполнению JavaScript-кода. Когда был выпущен браузер Google Chrome, используемый в нём JavaScript-движок, V8, был выпущен в виде отдельного проекта. V8 — это, с его just-in-time-компилятором, знаковый проект в мире JavaScript. Этот движок нашёл применение не только в браузере Chrome, но и в других разработках, выступая в роли надёжной и быстрой среды выполнения JavaScript.
▍9. Выпуск первых «инструментов разработчика», встроенных в браузер
В браузере Chrome использовался не только движок V8, но и ещё одна инновация: инструменты разработчика, встроенные в браузер. В то время эти инструменты давали программистам не так много возможностей, в частности, позволяли исследовать элементы и работать с ресурсами. Но это, в сравнении с существующими на то время инструментами, был шаг вперёд. Эти инструменты оказали влияние на все те инструменты, которые используются в наши дни при создании браузерных приложений.
▍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-конструкциями.
▍13. У Node.js появляется первый менеджер пакетов
▍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.
▍16. Ember.js и концепция «соглашения превыше конфигурации»
В 2011 году появился форк проекта SproutCore, названный Ember.js. Ember.js предлагает JavaScript-разработчикам концепцию «соглашения превыше конфигурации» (convention over configuration). Благодаря этому им не нужно тратить время на размышления об архитектурных особенностях проектов, которые могут быть стандартизированы на уровне фреймворка.
▍17. Появление механизмов статической типизации, нацеленных на JavaScript-разработчиков
2012 год был годом статически типизированных языков. JavaScript, по своей природе, был до тех пор языком, в котором использовалась лишь динамическая типизация. От разработчиков не требовалось указывать типы данных при инициализации переменных и при работе с различными структурами данных. А потом появился TypeScript — расширение JavaScript, позволявшее программистам писать типизированный JavaScript-код, похожий, с синтаксической точки зрения, на JavaScript, и компилирующийся в обычный JavaScript. Компания Microsoft выпустила первый релиз TypeScript в октябре 2012.
▍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.
▍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.
▍23. Появление менеджера пакетов Yarn
Через несколько месяцев после печально известного инцидента с npm-пакетом left-pad был выпущен новый менеджер пакетов — Yarn. Этот менеджер пакетов был создан для того чтобы обеспечить более высокую однородность сред выполнения одного и того же кода на разных компьютерах. С выпуском Yarn в экосистеме JavaScript появилось такое понятие, как автоматически генерируемые lock-файлы, что повлияло на развитие других менеджеров пакетов, на то, как в них реализованы механизмы поддержки разработки JavaScript-проектов.
▍24. Node + JS = OpenJS
После того, как многие годы JS Foundation и Node.js Foundation работали сами по себе, было решено объединить эти две организации, создав новую — OpenJS Foundation. Её целью является расширение уровня взаимодействия технологий и создание единой площадки, поддерживающей развитие различных проектов в среде JavaScript-разработки.
▍25. Первый выпуск Deno наделал много шума
В этом году Райан Даль, создатель Node.js, представил миру Deno — среду для выполнения JavaScript- и TypeScript-кода, основанную, как и Node.js, на движке V8. Проект вызвал большой интерес сообщества веб-разработчиков. Этому способствовала популярность Node.js, и то, что в Deno имеется встроенная поддержка TypeScript.
Итоги
Хотя те 25 событий, о которых мы говорили, представляют собой заметные вехи истории JavaScript, помимо них вокруг этого языка происходило ещё очень много интересного и важного. Экосистема JavaScript попросту не существовала бы в её современном виде, если бы не все те силы, которые были приложены к развитию этой экосистемы разработчиками со всего мира. Каждый PR, каждое выступление на конференции, каждая новая публикация — всё это внесло вклад в развитие JavaScript. Поэтому мы благодарим всех, чьими силами этот язык стал тем, что он есть, и предлагаем вместе отправиться в светлое будущее JavaScript.
Какие события из истории JavaScript кажутся вам наиболее значительными, определившими современное состояние языка?
Введение в JavaScript
Что такое JavaScript
JavaScript был создан в 1995 году в компании Netscape разработчиком Брендоном Айком (Brendon Eich) в качестве языка сценариев в браузере Netscape Navigator 2. Первоначально язык назывался LiveScript, но на волне популярности в тот момент другого языка Java LiveScript был переименован в JavaScript. Однако данный момент до сих пор иногда приводит к некоторой путанице: некоторые начинающие разработчики считают, что Java и JavaScript чуть ли не один и тот же язык. Нет, это абсолютно два разных языка, и они связаны только по названию.
Первоначально JavaScript обладал довольно небольшими возможностями. Его цель состояла лишь в том, чтобы добавить немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления.
Однако развитие веб-среды, появление HTML5 и технологии Node.js открыло перед JavaScript гораздо большие горизонты. Сейчас JavaScript продолжает использоваться для создания веб-сайтов, только теперь он предоставляет гораздо больше возможностей.
Также он применяется как язык серверной стороны. То есть если раньше JavaScript применялся только на веб-странице, а на стороне сервера нам надо было использовать такие технологии, как PHP, ASP.NET, Ruby, Java, то сейчас благодаря Node.js мы можем обрабатывать все запросы к серверу также с помощью JavaScript.
В последнее время переживает бум сфера мобильной разработки. И JavaScript опять же не остается в стороне: увеличение мощности устройств и повсеместное распространение стандарта HTML5 привело к тому, что для создания приложений для смартфонов, планшетов и настольных компьютеров мы также можем использовать JavaScript. То есть JavaScript уже перешагнул границы веб-браузера, которые ему были очерчены при его создании.
Таким образом, вы можете встретить применение JavaScript практически повсюду. Сегодня это действительно один из самых популярных языков программирования, и его популярность еще будет расти.
С самого начала существовало несколько веб-браузеров (Netscape, Internet Explorer), которые предоставляли различные реализации языка. И чтобы свести различные реализации к общему стержню и стандартизировать язык под руководством организации ECMA был разработан стандарт ECMAScript. В принципе сами термины JavaScript и ECMAScript являются во многом взаимозаменяемыми и относятся к одному и тому же языку.
К настоящему времени ECMA было разработано несколько стандартов языка, которые отражают его развитие. В последнее время почти каждый год выходит новый стандарт. На данный момент последним принятым стандартом является ECMAScript 2021, который был одобрен 22 июня 2021 года. Однако реализация стандартов в браузерах занимает довольно продолжительное время. Одни браузеры быстрее реализуют новые стандарты, другие медленнее. Кроме того, есть большой пласт старых версий браузеров, которыми простые пользователи продолжают пользоваться и которые естественно могут не поддерживать нововведения последних стандартов. И это надо учитывать при разработке программ на JavaScript. В данном же руководстве будут рассматриваться в основном те возможности JavaScript, которые поддерживаются всеми наиболее распространенными современными браузерами.
JavaScript является интерпретируемым языком. Это значит, что код на языке JavaScript выполняется с помощью интерпретатора. Интерпретатор получает инструкции языка JavaScript, которые определены на веб-странице, выполняет их (или интерпретирует).
Средства разработки
Для разработки на JavaScript нам потребуется текстовый редактор для написания кода и веб-браузер для его тестирования. В качестве текстового редактора я советую использовать такую программу как Visual Studio Code. Он бесплатен, имеет много возможностей и может быть установлен как на Windows, так и на Linux и MacOS. Хотя этот может быть любой другой текстовый редактор.
Также существуют различные среды разработки, которые поддерживают JavaScript и облегчают разработку на этом языке, например, Visual Studio, WebStorm, Netbeans и так далее. При желании можно использовать также эти среды разработки.
Итак, приступим к созданию первой программы.