С апреля 2021 года JavaScript исполняется 26 лет. Поскольку язык, изначально предназначенный для чего-то еще, кроме повышения отзывчивости ваших веб-приложений Netscape Navigator, можно с уверенностью сказать, что JS за последние несколько лет стал очень популярным языком.

Я мог бы выплеснуть самоуверенную тираду, проведя мозговой штурм, почему JS был языком Интернета, и разработчики программного обеспечения отстаивали здесь, в отличие от, скажем, C # или Java, но все они не смогли бы оказаться в таком же хорошем положении, как JS (и до сих пор остается). ) в середине 2010-х и далее. В любом случае, эта статья может появиться позже.

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

Прежде всего я коснусь того, что такое движок и какую роль он играет в доставке контента в ваш браузер. Как и во многих других языках программирования, существует несколько разных способов запуска JS. Кроме того, некоторые из этих методов, такие как Node.js и Deno, называются средами выполнения. В то время как движки используют массивные наборы инструкций, чтобы сделать код доступным для чтения другими программами (например, браузерами), среды выполнения анализируют необработанный код JS во что-то работоспособное. Как необработанный машинный код x86. Движки - это переводчики, а переводчики JavaScript эволюционировали от простого анализа целых страниц за раз, что приводит к более длительному и менее эффективному времени загрузки, к синтаксическому анализу именно того, что необходимо, когда это необходимо.

Большинство движков JavaScript используют так называемую компиляцию Just-In-Time (или JIT), чтобы объединить два традиционных метода Ahead-of-Time (AOT) и рендеринга интерпретации, сочетая некоторые преимущества и недостатки обоих. JIT говорит, что нам не нужно ждать десять минут, чтобы полностью загрузить наши ленты Facebook или Instagram, как только приложение запустится. Скорее, мы можем загружать их асинхронно и отображать их по мере необходимости. Как раз вовремя. Этот способ компиляции нашего кода после отправки именно того, что мы запрашиваем, для интерпретации в первую очередь на низком уровне, позволяет JS, языку программирования на гораздо более высоком уровне, работать намного быстрее и использовать гораздо меньше ресурсов.

Большая часть вдохновения для создания различных движков браузера, представленных на рынке, связана с компаниями, использующими новые алгоритмы сжатия для более быстрого и более быстрого преобразования данных на протяжении многих лет. Первый движок, предназначенный для локального запуска JS в браузере, был создан для вышеупомянутого и неудачного Netscape Navigator, когда JS был задуман в 1995 году. Со временем этот движок стал так называемым движком SpiderMonkey, который используется в Mozilla Firefox. браузер сегодня. В частности, движок V8, разработанный Google для Chrome в 2008 году, был первым современным браузером, который воспользовался преимуществами JIT-программирования и раскрыл большую часть истинного потенциала JavaScript в мире веб-разработки. В то время уровень глубины и производительности V8 буквально взорвал все остальное, и по сей день он продолжает превосходить многие другие браузеры.

В то время как Google имеет право хвастаться тем, что обладает наиболее часто используемым движком для разработки JS, другие компании подняли собственные планки, чтобы оставаться конкурентоспособными. WebKit был еще одним движком, разработанным Apple вскоре после V8. Первоначально предназначенный для приложения Apple Safari, WebKit представляет собой сильно оптимизированный движок браузера не только для JS, но и для ряда других языков и протоколов, таких как C ++. WebKit, движок с открытым исходным кодом, с тех пор прошел несколько итераций и даже был разветвлен Google для создания текущего движка браузера Chrome, известного как Blink.

Microsoft также бросила вызов и разработала версию WebKit, которая будет использоваться с его браузером Edge. Эта платформа в настоящее время работает исключительно на устройствах на базе Windows x86 и обрабатывает с помощью Edge HTML. Несмотря на то, что она не является захватывающей открытой или популярной платформой, она добилась некоторых успехов в сокращении времени загрузки и улучшении общего опыта конечных пользователей.

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

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

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