JavaScript не всегда был популярным языком. Разработчики отвергли его как дилетантский — в конце концов, он был предназначен для дизайнеров, создателей контента и программистов, работающих неполный рабочий день. Его высмеивали и критиковали — от несовершенной и ошибочной реализации на раннем этапе до бесчисленных строк кода, которые были написаны для устранения недостатков в языке. Тем не менее, согласно Опросу разработчиков StackOverflow, JavaScript был наиболее часто используемым языком программирования за последние пять лет. И популярность его растет.

Среди опрошенных программистов 62,5% использовали JavaScript. Это по сравнению с 55 процентами в 2016 году и 54,4 процента в 2015 году. Так почему же JavaScript превзошел другие популярные языки, не связанные с запросами, такие как Java, C#, PHP и Python, и даже затмил SQL в 2014 году без каких-либо признаков замедления? Является ли его растущая популярность результатом необходимости?

Новичок в блоке

Еще в начале 90-х анимация, взаимодействие и другие формы небольшой автоматизации рассматривались как часть «сети будущего». Марк Андриссен, основатель Netscape Communications, считал, что как таковой необходим небольшой язык сценариев, который мог бы взаимодействовать с DOM (объектная модель документа или интерфейс компьютерного программирования для документов HTML и XML), делая контент более динамичным и интерактивным. Хитрость заключалась в том, что этот язык сценариев не должен был быть нацелен на умных разработчиков и людей с опытом разработки программного обеспечения, язык сценариев должен был обслуживать другую аудиторию: дизайнеров. HTML был еще молодым и достаточно простым, чтобы его могли понять не-разработчики, поэтому все, что должно было стать частью браузера, должно было быть простым, гибким и доступным для людей менее специализированных — например, администратору сети было поручено написать часть скриптов. время. Так родилась идея JavaScript.

По контракту с Netscape Communications Брендан Эйх решил написать прототип нового этого языка. В мае 1995 года — всего за 10 дней — JavaScript, тогда известный как Moca, был завершен. Он был официально выпущен в марте 1996 года и привлек большое внимание сообщества разработчиков. Благодаря JavaScript у разработчиков появилась возможность выйти за рамки обычного HTML. С небольшим количеством кода сайт теперь мог перемещаться или менять цвета, он мог реагировать на ввод пользователя, он мог даже создавать новые всплывающие окна.

Стандартизация и внедрение

После этого выпуска JavaScript был передан Ecma International, ассоциации, созданной в 1961 году с целью стандартизации коммуникационных и информационных систем, для создания стандартной спецификации, которую можно было бы реализовать во всех других браузерах. Это был важный шаг в развитии языка, открывающий двери для более широкой аудитории, предоставляющий разработчикам право голоса в процессе его созревания и контролирующий реализацию — изначально существовали опасения, что другие реализации могут отойти слишком далеко и вызвать фрагментацию. Официально известный как ECMAScript — JavaScript нельзя использовать, поскольку он является товарным знаком корпорации Oracle — стандарт (ECMA-262) был принят в 1997 году. ECMAScript 3, основа современного JavaScript, был выпущен в 1999 году.

Работа над ECMAScript 4 началась почти сразу после выпуска версии 3, что положило начало периоду раскола и борьбы для JavaScript. Было предложено много новых функций, хотя к 2003 году интерес начал падать, и работа над версией 4 была остановлена. В то время как Macromedia (после приобретения Adobe) и Microsoft использовали эту более новую версию стандарта в своих реализациях — ActionScript (основа для Flash) и JScript соответственно — только в 2005 году, с введением AJAX (см. , Опера. После того, как многие функции были определены, Yahoo присоединилась к комитету, направив разработчика JavaScript Дуга Крокфорда в качестве своего представителя. Крокфорд выразил много опасений по поводу новых стандартов, получивших поддержку Microsoft. Это привело к тому, что Microsoft отказалась принять любую часть стандарта ECMAScript 4, даже угрожая судебным иском, и помешала его продвижению вперед.

В конце концов Крокфорд предложил идею более простого стандарта в виде ECMAScript 3.1. Сообщество JavaScript последовало его примеру, сосредоточившись на стандарте 3.1 и отказавшись от восьмилетней работы над ECMAScript 4. Утвержденный в 2009 году, ECMAScript 3.1 был переименован в ECMAScript 5 — во избежание путаницы, поскольку версия 4 уже была реализована в различных формах — и стал наиболее поддерживаемая версия JavaScript, реализованная в Firefox 4 в 2011 году и Chrome 16, Internet Explorer 10, Opera 12.10 и Safari 6 в 2012 году.

Возрождение открытого исходного кода

Решив раздвинуть границы возможного, в этот бурный период в сообществах открытого исходного кода и разработчиков было сделано несколько достижений. Эти проекты помогли сформировать ландшафт JavaScript в сообществах разработчиков.

AJAX

На заре Интернета сайты полностью основывались на полных HTML-страницах. Это означало, что любое действие пользователя требовало полного обновления контента, а это означало, что HTML для всей страницы нужно было перезагружать с сервера даже для частичного изменения. Неэффективная с точки зрения взаимодействия с пользователем, Microsoft выпустила первую реализацию тега iframe или встроенного фрейма в Internet Explorer в 1996 году для асинхронной загрузки контента. iframe — это HTML-документ внутри другого HTML-документа.

В 1999 году Microsoft начала использовать свою технологию iframe для динамического обновления новостей и котировок акций на странице по умолчанию для Internet Explorer. Кроме того, разработчики Microsoft Outlook Web App реализовали первый XMLHTTP — интерфейс прикладного программирования (API) для передачи данных между веб-браузером и сервером — сценарий, который позже был реализован в Firefox, Safari и Opera как объект JavaScript XMLHttpRequest. Короче говоря, это позволило HTTP-запросам, протоколу, в котором браузер отправляет запрос информации на сервер и получает ответ от этого сервера, выполняться в фоновом режиме, не требуя полной перезагрузки уже обработанной HTML-страницы.

Хотя эта технология оставалась относительно неиспользованной, она начала широко внедряться в онлайн-приложениях, таких как Outlook Web App (2000 г.), Gmail (2004 г.) и общедоступной бета-версии Kayak.com (2004 г.).

Кульминацией этого стал выпуск в 2005 году статьи под названием AJAX: новый подход к веб-приложениям дизайнера пользовательского опыта Джесси Джеймса Гаррета. В этой статье Гаррет ввел термин AJAX (асинхронный JavaScript и XML) для описания этих технологий и изложил методы создания веб-приложений с активным использованием JavaScript, в которых данные теперь могут загружаться в фоновом режиме без необходимости полной перезагрузки страницы.

Ранние расширители

Расширение возможностей в результате AJAX привело к вновь обретенному интересу к JavaScript, что привело к созданию нескольких популярных сред и библиотек с открытым исходным кодом, чтобы облегчить и ускорить разработку таких веб-приложений. К ним относятся Prototype, MooTools, Dojo и jQuery.

Итак, что такое фреймворк? Фреймворк — это всеобъемлющая часть многократно используемого программного обеспечения, которая обеспечивает стандартный способ создания и развертывания приложений. Таким образом, с фреймворком поток управления приложением диктуется фреймворком, а не разработчиком (инверсия управления). С другой стороны, библиотека — это просто набор связанных повторно используемых ресурсов, т. е. функций, помогающих выполнять определенную задачу, например выполнение запроса AJAX, оставляя контроль за разработчиком.

MooTools

В 2006 году были выпущены My Object-Oriented Tools или MooTools, основанные на base2, библиотеке, созданной для «сглаживания» различий в реализациях JavaScript, и Prototype, платформе, предназначенной для расширения многих нативных объектов JavaScript. Разработано Валерио Пройетти. , MooTools стремились создать структуру, которая позволяла бы лучше контролировать DOM и расширять основные функциональные возможности JavaScript, обеспечивая при этом гибкий, многократно используемый код и совместимость с разными браузерами. В то время как основная задача jQuery (см. ниже) была связана с DOM, MooTools был разработан для расширения языка, улучшения объектов Array, Element, Function, Number и String.

jQuery

Выпущенная в 2006 году и созданная Джоном Резигом, самая популярная и широко используемая из этих библиотек, библиотека jQuery стремилась упростить разработку приложений AJAX, а также упростить перемещение и манипулирование моделью DOM, обработку событий и создание анимаций. устраняя несовместимость между браузерами и поощряя более удобный для чтения и более короткий код. Кроме того, jQuery продвигает принцип разделения задач, предоставляя простой синтаксис для добавления обработчиков событий в модель DOM. Это позволяет разработчикам использовать для вызова функций JavaScript, а не атрибуты событий HTML, что позволяет отделить JavaScript от HTML.

Благодаря простоте использования jQuery — jQuery настолько упрощает JavaScript, что разработчику не нужны основательные практические знания JavaScript для получения желаемых результатов — он быстро завоевал известность и в настоящее время используется на 72 процентах всех веб-сайтов. Напротив, вышеупомянутый MooTools работает только на 3 процентах всех сайтов. Это привело к широкомасштабным спорам о том, должны ли начинающие разработчики вообще отказаться от изучения JavaScript и вместо этого сосредоточиться исключительно на jQuery.

Комплексное решение

Как с расширением языка благодаря таким фреймворкам, как Prototype и MooTools, так и с бумом популярности, благодаря jQuery, появилось все больше и больше проектов, основанных на JavaScript. Это усугубилось выпуском Google браузера Chrome в 2008 году. В этот новый браузер Google включил более быстрый движок JavaScript под названием V8, заявив, что это было сделано для того, чтобы обеспечить работу веб-приложений следующего поколения, которые невозможны даже в современные браузеры.

Это привело к тому, что Twitter изменил дизайн своего сайта в 2010 году. В рамках редизайна Twitter пересмотрел свою существующую архитектуру, выбрав почти полностью решение на JavaScript. Благодаря сочетанию jQuery, механизма шаблонов Mustache, собственного JavaScript API Twitter и нескольких других решений с открытым исходным кодом, работающих в тандеме с их REST API (API, который использует HTTP-запросы для создания, выборки, обновления и удаления данных) отображать свой сайт почти исключительно в браузере с помощью JavaScript — беспрецедентный подвиг в то время. Хотя это было чревато проблемами с производительностью, что в конечном итоге привело к еще одному редизайну в 2012 году, который, хотя и по-прежнему использовал в основном решение JavaScript, перенес большую часть рендеринга на стороне клиента (в браузере) на сервер, это открыло новые возможности в том, что можно было сделать. с JavaScript.

Серверный JavaScript

Хотя это и не первая серверная среда JavaScript — Netscape Livewire Pro Web превзошла ее на 13 лет — Node.js был создан в 2009 году Райаном Далем. Это позволило использовать JavaScript — традиционно клиентский язык — для сценариев на стороне сервера и привело к движению «JavaScript везде», позволяющему разработчикам использовать один язык программирования для создания веб-приложения, а не полагаться на другой язык для создания. скрипты на стороне сервера.

Одностраничные приложения

Созданный с помощью Node.js, Airbnb запустил сайт в 2013 году, став первым сайтом, использующим изоморфный JavaScript. Этот подход позволяет выполнять код на стороне сервера и отображать его в браузере, а последующие действия обрабатываются точно таким же кодом на стороне клиента. Это отличается от более традиционного подхода, когда один язык используется для рендеринга кода на стороне сервера (Java, PHP, Python и т. д.), а изменения на стороне клиента вносятся с помощью JavaScript.

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

Библиотеки и фреймворки

Как и в случае с jQuery и MooTools (см. выше), появилось много решений с открытым исходным кодом, чтобы помочь разработчикам в создании этих одностраничных приложений. В течение нескольких лет эти фреймворки вызвали повышенный интерес к одностраничным приложениям и JavaScript в целом. Эти фреймворки включают AngularJS (2010 г.) (полностью переписанный как Angular в 2016 г.), Backbone.js (2010 г.), Ember.js (2011 г.), React (2013 г.) и Vue.js (2013 г.). Стоит отметить, что, хотя многие из этих и предыдущих фреймворков и библиотек были разработаны независимо друг от друга, крупные интернет-корпорации участвовали в продвижении этих одностраничных приложений через сообщество с открытым исходным кодом: Google разработал Angular, а Facebook и Instagram создали React. .

Где это оставляет нас?

Благодаря своим скромным корням JavaScript предоставил разработчикам новый способ взаимодействия пользователей с веб-сайтами. С момента его стандартизации и кросс-браузерной реализации популярность языка значительно выросла. Во многом его популярность обусловлена ​​обстоятельствами. Интернет является самой популярной платформой для разработки приложений, и JavaScript сейчас играет в этом жизненно важную роль. Независимо от того, используется ли он в качестве служебного языка, просто вызывая всплывающее окно или меню навигации, или в качестве основного языка для отображения одностраничного приложения, если что-то отображается в браузере, JavaScript практически необходим в технологическом стеке разработчика.

Хотя большая часть этой популярности связана с тем, что это служебный язык, его недавний рост во многом связан с тем, что его возможности превзошли эту цель. С помощью JavaScript разработчики теперь могут имитировать работу настольных приложений с помощью одностраничных приложений, используя только один язык как на стороне клиента, так и на стороне сервера. Кроме того, благодаря широкому внедрению JavaScript начинает отдаляться от браузера.

Хотя собственные мобильные приложения по-прежнему являются нормой, проблема возникает, когда необходимо поддерживать несколько платформ, таких как iOS и Android. Для разработки iOS требуется, чтобы разработчик использовал язык программирования Swift, а для разработки Android требуется Java. Это приводит к избыточной работе, которая может удвоить стоимость разработки, поскольку программистам необходимо писать код для обеих сред. JavaScript начал решать эту проблему, позволяя программистам создавать приложения для обеих платформ. Хотя это все еще находится в зачаточном состоянии, такие библиотеки, как React Native, набирают обороты. Кроме того, JavaScript используется в настольных приложениях, таких как Apple Music, компонент iTunes, созданный с использованием Ember.js.

Благодаря этой универсальности все больше и больше разработчиков принимают JavaScript в качестве решения все большего числа проблем, что приводит к росту популярности и применения языка.

Первоначально опубликовано на lform.design.