Ликбез по браузерам для Windows в 2020


Доброго времени суток, Хабр! В очередной раз читая комментарии, наткнулся на мысль о том, что далеко не все понимают, как обстоит ситуация с браузерами для Windows на данный момент. От чего хотелось бы провести небольшой обзор текущего положения. Ну, и сразу к делу!


Браузерные движки


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


Существующие движки отрисовки содержимого


  • Trident (так же известный как MSHTML) — движок, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • EdgeHTML — преемник Trident, ранее разрабатываемый Microsoft для браузера Legacy Edge (ранее просто Edge);
  • WebKit — движок, разрабатываемый Apple для браузера Safari;
  • Blink — преемник WebKit, разрабатываемый Google для браузера Chrome;
  • Gecko — движок, разрабатываемый Mozilla для браузера Firefox;
  • Servo — исследовательский проект Mozilla, некоторые технологии со временем перетекают в Gecko.

Существующие движки исполнения JavaScript


  • Chakra JScript — движок JS, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • Chakra JavaScript — преемник Chakra JScript, ранее разрабатываемый Microsoft для браузера Legacy Edge;
  • Nitro — движок JS, разрабатываемый Apple для браузера Safari;
  • V8 — движок JS, разрабатываемый Google для браузера Chrome;
  • SpiderMonkey — движок JS, разрабатываемый Mozilla для браузера Firefox.

И тут вроде бы очевидно, какие браузеры какие движки используют, но Microsoft внёс немного путаницы в понимание данной темы, поэтому рассмотрим браузеры отдельно.


Браузеры


Chromium


Chromium — это open-source ответвление браузера Chrome. Браузеры на основе Chromium составляют большую часть из всех используемых браузеров на планете Земля.

Обычно, браузеры на базе Chromium между собой отличаются только визуально, ведь у всех под капотом движки Blink и V8, хотя, какие-то компании пытаются привнести больше функционала в браузер, чем имеется.


ИМХО

Это в конечном итоге встанет разработчикам браузеров боком, потому что в любой момент главный разработчик Chromium — Google может вставить палки в колёса разработчикам модификаций.


Всех браузеров на основе Chromium подсчитать одному человеку вряд ли под силу, поэтому приведу список только тех, что помню:


  • Chrome — в представлении не нуждается, браузер от Google;
  • ChrEdge — новый браузер от Microsoft со старым названием. Поговаривают, отличается большей производительностью от Chrome. С некоторых пор предустанавливается в систему;
  • Brave — браузер с повышенной безопасностью настолько, что приватный режим использует Tor;
  • Яндекс.Браузер, Opera, Vivaldi, тысячи их.

Firefox


Firefox использует движки Gecko и SpiderMonkey для своей работы. Имеет небольшое количество базирующихся на Firefox браузеров, но самый известный — Tor Browser. Является единственным рубежом до полного перехода интернета на браузеры на основе Chromium.


Internet Explorer


Это любимая всеми утилита для скачивания браузеров. Как и Chrome — не нуждается в представлении. До 11 версии использовал движки Trident и Chakra JScript. В 11 версии, за исключением режима совместимости, стал использовать движки Trident и Chakra JavaScript. Этот браузер ещё долго будет использоваться для всякого рода систем видеонаблюдения, поскольку имеет, почему-то, популярный в узких кругах API для расширений. В Windows 8 и Windows 8.1 имел особую модификацию движка Trident на базе WinRT для Metro режима.


(Legacy) Edge


Браузер, начавший своё существование с кодовым названием Project Spartan, являлся новым браузером от Microsoft в 2015 году, использующим движки EdgeHTML и Chakra JavaScript. Конечной целью проекта была полная совместимость с сайтами, отлично работающими в Chrome. В итоге — получилось нечто своеобразное, но, очевидно, не выжившее под давлением Google.


Safari


Safari? А нет его больше, этого вашего Safari, кончился.


Нецелевое использование браузеров


Вроде бы браузеры — законченный продукт, ни добавить ни отнять. Однако, они используются в разного рода других приложениях. Причины в следующем (в порядке убывания значимости):


  • Программистов на JS нечем занять;
  • На JS+HTML новичкам проще программировать;
  • Кроссплатформенность;
  • Требуется возможность отображать веб-страницы.

Приведу примеры подобного использования:


Chromium


Нынешние браузеры настолько сложны, что одному человеку создать собственный браузер не под силу (либо это должен быть гений). Они по сложности сравнимы с операционными системами! А, постойте, вот и первый кандидат на нецелевое использование — Chrome OS. Да, весь пользовательский интерфейс — просто модифицированный Chromium.
Однако, помимо этого, в виде CEF (Chromium Embedded Framework), Chromium используется в:


  • Игровые платформы: Steam, Epic Games Store, Battle.Net и другие;
  • Игры: GTA V, все игры от Blizzard, DOTA 2, CS GO и множество других;
  • Редакторы кода: Atom, VS Code, Visual Studio Installer(???!);
  • Программы для общения: Skype, Viber, WhatsApp, Discord, Slack и множество других;
  • Другие программы: balenaEtcher, draw.io и великое множество других.

Internet Explorer


Почти любое Win32 приложение, умеющее отображать WEB-страницы и при этом в распакованном виде занимающее меньше 60 мегабайт использует внутри Internet Explorer. Кстати, это касается не только маленьких по размеру приложений, например, Visual Studio использует Internet Explorer для отображения WEB-страниц, когда это требуется в работе IDE. Ещё существуют HTA приложения — древний предшественник CEF на базе Internet Explorer. И ведь до сих пор работает.


(Legacy) Edge


Новым приложениям — новые движки! Любое UWP приложение, использующее внутри отображение WEB-страниц работает на базе Edge. Не то, чтобы Microsoft запрещали использовать что-то другое, но никто просто и не старался. Так же, пока что, в предварительных сборках Windows новая клавиатура с GIF панелью тоже использует Edge для рендеринга. В будущих версиях, полагаю, перейдут на ChrEdge.


Большая картинка с клавиатурой


Производительность


Постойте, столько приложений, а что там с производительностью? Лично я — не специалист в оценке производительности, но хочу поделится с вами некоторыми занимательными фактами.


Prefetcher


В Windows есть такая штука — Prefetcher. Она занимается подгрузкой программ в ОЗУ при старте ОС и на протяжении её работы. Штука эта достаточно умная, и она анализирует чаще всего запускаемые программы, чтобы в дальнейшем их подгружать.


Как это связано с браузерами? Идея в том, что это может смазать первый пользовательский опыт с другим браузером, например, пользуясь постоянно Chrome, имеете установленную версию Firefox. При запуске Firefox будет вести себя крайне медленно — медленнее, чем ваш основной браузер. Всё потому что он запылился в глазах Prefetcher. В конечном итоге всё будет работать быстро, но первое впечатление после долгого неиспользования будет ужасным. Особенно это касается пользователей с HDD или малым количеством ОЗУ.


Области распределённой памяти


Да, звучит не очень. Но суть, в данном случае, простая — если одна единица исполняемого кода требуется к исполнению больше одного раза, будь то exe или dll, то в память она загрузится лишь один раз. Поясню: если два различных приложения в ходе своей работы загрузят одну и ту же библиотеку, например, edgehtml.dll, то этот файл будет загружен в ОЗУ компьютера на самом деле только один раз, хотя, казалось бы, потребуется два или больше раз. Таким образом ОС экономит нам оперативную память.


Движки нормального человека


К чему это я? А вот дело в том, что в отличии от других браузеров, Internet Explorer и (Legacy) Edge предустановлены в систему, а их движки хранятся в папке System32. Это, вкупе с API для разработки приложений, означает, что все приложения в системе, использующие данные движки будут загружать их в память только однажды. И этот принцип распространяется на все приложения.


В дополнение про UWP

У людей часто возникают проблемы с UWP приложениями, а точнее — с их скоростью запуска. Всё дело в WinRT — огромном наборе библиотек, при помощи которых UWP приложение взаимодействует с ОС. Если не использовать UWP приложения часто, то этот набор библиотек не будет прогружен в памяти полностью, и придётся ожидать окончания этого процесса перед использованием приложения. Но забавный факт — используя два и более UWP приложения время их старта и общая производительность резко увеличиваются и часто даже превосходят Win32 программы. Исключением из этого является приложение "Фотографии" — тут отдельная история, покрытая туманом.


Движки курильщика


А вот с приложениями (в том числе и браузерами) на основе Chromium это так не работает. Каждое приложение комплектует с собой собственную сборку библиотеки CEF, что, кроме раздувания размера приложения, не позволяет операционной системе иметь только одну копию dll в ОЗУ. Итого это сильно замедляет производительность при использовании множества подобных приложений. Помимо того, сам размер CEF довольно удручающий.


Microsoft Store


У многих возникает вопрос — почему в Microsoft Store нет ни одного браузера(не считая нескольких кривых поделок на EdgeHTML)? Ответ, на самом деле, прост — все браузеры, включая ChrEdge имеют собственную систему обновления, что прямо запрещено правилами Microsoft Store. В остальном никто никого не ограничивает.


Как удалить новый Microsoft Edge


Это не очень сложно. Для начала требуется найти папку с Microsoft Edge, она расположена по пути:
C:\Program Files (x86)\Microsoft\Edge\Application
Далее заходим в любую версию Edge и переходим в папку Installer. Полный путь может выглядеть следующим образом:
C:\Program Files (x86)\Microsoft\Edge\Application\83.0.478.58\Installer
Далее необходимо открыть командную строку от имени администратора в данной папке и выполнить следующую команду:
setup.exe --uninstall --system-level --verbose-logging --force-uninstall
Готово! Через несколько секунд этот браузер исчезнет из системы. Но при следующем же обновлении он появится снова, будте бдительны.


Заключение


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


P. S.


Администраторы Хабра, пожалуйста, почините HabraStorage в Legacy Edge! Совсем не дело.

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 49

    +4

    Мне кажется в виде таблицы было бы нагляднее

      0
      Полностью с вами согласен но и статью следовало бы оставить, а таблицу использовать как средство подвести итоги
      +5
      Забыли рассказать по какой причине большинство браузеров перекатилось на использование Chromium, да и в целом о терании Google над другими браузерами.
      0

      Долго рассматривал первую картинку. Много думал. Далеко не сразу понятно, что противный толстяк делает с маленькими человечками.

        +3

        Соглашусь. Можно пояснение для тупых от минусующих?

          +3

          Пожирает RAM очевидно

            0
            Но судя по первой картинке, у него в той области нет рта. Какое-то прямое поглощение получается.
              –3
              Чёрточка это нос, очевидно же.
        0
        >>Как удалить новый Microsoft Edge
        Удивительно, но с ним абсолютное большинство сайтов открывается без проблем (кроме legacy Java). Про Privacy по сравнению с Firefox вопрос обсуждаемый, но уж точно не в пользу Chrome.
          +6
          с ним абсолютное большинство сайтов открывается без проблем

          Собственно, ничего удивительного — чего-то другого трудно ожидать от очередного скина для хромиума.

            0
            Это и не утверждение, что он плох. Проблема в том, что процесс его удаления довольно нестандартный, и множество людей просто предполагают, что удалить его невозможно. Этот пункт здесь для развеивания подобных мифов.
              +3
              А для чего собственно его удалять, если, насколько я понял из статьи, он в перспективе станет системным API как Legacy Edge?
                +2
                Тут вариантов несколько:
                1. Вернуть Legacy Edge. Новый Edge блокирует работу старого.
                2. Почистить от старых версий. Они складируются в папке `C:\Program Files (x86)\Microsoft\Edge\Application`. (Кстати, так с любым браузером на основе Chromium, только папки другие)
                3. По любой причине, по которой бы кто-либо не хотел его видеть установленным у себя в системе.

                По поводу системного API — мне кажется, что в таком случае его основу перенесут в папку System32, а исполняемый файл оставят на прежнем месте, как это было и с Internet Explorer, и с Legacy Edge.
                  0
                  Я попытался почистить от старых версий (была 81 и 85, хотел удалить 81), зашел в папку инсталлер 81-го и после выполнения команды убил и 81 и 85 и весь браузер.:D
                  Неловко получилось.)
            0
            Пару дней назад перешел с яндекс-браузера на brave, судя по всему это самый шустрый актуальный браузер (но само-собой до забытого ie по скорости загрузки не дотягивает)
              +2
              Мог бы быть прекрасным браузером, но такие новости отбивают всякое желание им пользоваться.
              –4

              Странно читать новость о смерти safari, читая статью из safari.
              /sarcasm mode off
              Убийство Apple safari под win ещё не означает его смерть. В macOS/iOS он живёт вполне себе

                +16
                Это очень даже верное замечание. Однако, заголовок тут не зря содержит в себе «Windows».
                0

                С одной стороны это прекрасно что у нас будет один браузер/движок/стандарт. С другой стороны при отсутствии конкуренции, происходит деградация

                  +10
                  приложение «Фотографии» — тут отдельная история, покрытая туманом

                  Хотел бы я узнать как можно просмотром фоток загружать 16 потоков процессора на 100%. Это надо уметь, не зря видимо на собеседованиях решают задачи на алгоритмы.
                    0
                    например, грузить панораму на 100-150 мегапикселей (благо, Фотошоп умеет их склеивать из обычных фоток с перекрытием) или астрофотографию в оригинальном размере в формате tiff…
                      +3
                      Ответ на этот вопрос сложнее, чем мог бы казаться. Там столько технологий в одно приложение намешано. Приоткрою завесу изображением ниже:
                        +1

                        интересно, это приложение для показа mov случайно виртуалку с макосью с собой не тащит?

                          +4
                          Интересно, что хуже — виртуалка с макосью или iTunes для винды…
                            0
                            А давно родное приложение Фото в OSX перестало тормозить на библиотеке в 30+ гигабайт? Да по сравнению с ним iTunes для Windows образец быстроты (слушает музон из него)
                          0
                          Если там юнити тогда понятна причина лагов и загрузки процессора. Но кому могла идея использовать его.
                          +1

                          Ну вот примеры:


                          1. Генерация thumbnails.
                          2. Упреждающее декодирование: подгрузка картинок в фоне, чтобы переключение на следующую-предыдущую происходило мгновенно.
                          3. Качественное ресемплирование.
                          4. Face detection, face recognition: группировка фотографий по людям.
                            +1
                            Только вот почему какой-нибудь FastStone Image Viewer или XnView стравляются с первыми тремя пунктами с минимальной нагрузкой? А ведь они далеко не самые лёгкие, есть и более быстрые вьюверы. Ну а 4 пункт вообще должен выполняться в фоне, да и даром он не нужен, ИМХО.
                              +1
                              Кстати, таки он(4 пункт) в фоне и выполняется. И даже умеет это на GPU делать.
                                +1

                                Тот же FastStone, при открытии новой папки с фотографиями, грузит одно ядро для создания превьюх и делает он это относительно медленно. Если загрузить все ядра, то будет делать быстрее (если честно, именного этого мне лично не хватает).

                                  0
                                  там же всё упирается в чтение с жесткого диска а не в процессорную мощность?
                                    0
                                    грузит одно ядро для создания превьюх

                                    У меня вышло 15-20%. Явно не 25, что должно быть для моего 4-х ядерного процессора. Диск, по показаниям диспетчера, загружен на 80%, из которых 15 это фоновый торрент.
                                    А вот почему он начал жрать одно ядро после смены железа, я так и не понял. Докопался до службы Windows License Manager, но её отключение ломает UWP приложения. В итоге перешёл на XnView, но он не умеет отключать сглаживание при увеличении одной кнопкой.
                                  0
                                  Понятно что нужно сделать превью и прочее, но дело в том что когда возвращаешься к прежнему месте, во-первых, лагает прокрутка, во-вторых, картинки грузятся опять. Как будто все вышеперечисленное генерируется каждый раз без использования кэша.
                                  Про видео даже не говорю.

                                  Ладно еще на 16 потоках и быстром ssd можно как-то пользоваться. Я не понимаю как быть людям на 4/8 или даже 2/4. Или приложение не для них сделано, или фотоальбом не больше 100 фотографий.
                                +2

                                Насчет удаления нового Edge (на основе Chromium), Microsoft намекнула, что не надо так делать, потому что системный компонент WebView они планируют в будущем переключить на работу через двидок Edge вместо движка Internet Explorer

                                  0
                                  Разве собираются переключить? Это же сломает работу многих приложений.
                                  Они уже сделали новый компонент Microsoft Edge WebView2, который пока находится в состоянии preview и требует установки Edge Canary.
                                    0
                                    Да, Internet Explorer и Legacy Edge навсегда застряли в Windows, никто их менять не будет. Добавят новый движок, и применять его будут только новые(обновлённые) приложения.
                                  +6

                                  Хотелось бы почитать о том, почему, будучи скинами для хромиума, браузеры умудряются с разной скоростью грузить страницы, к тому же потребляя разный объём памяти.

                                    0
                                    Свистелки с перделками разные ;)
                                    +1
                                    Последний Edge отличный, пользуюсь им уже месяц, памяти жрет примерно в 1,5-2 раза меньше, чем Chrome.
                                      +1

                                      Движок браузера для GUI удобен не только и не столько для новичков. Все современные платформы для GUI маршируют в одном направлении: декларативный ML + стили + небольшой служебный (вспомогательный) императивный слой (повозюкали мышкой тут — применить стили там). Это то, что над бизнес-логикой. Разумеется, получается зоопарк, если брать одни ML'и, сколько их наберётся? От QML (Qt) до XAML (WPF). Все несовместимые, но при этом без фишки, ради которой стоило бы тащить. Естественно, многие махнули рукой и перешли на ML, который HT. Там самое большое комьюнити, самые крутые перспективы, и так далее. Одна беда — тот же CEF весил долгое время 43 мегабайта (я аж до сих пор помню), сейчас сколько я не знаю, но вряд ли меньше. Но для Android'а, например, есть халявный WebView, каковым для Windows долгое время служил Trident .ocx. Разница в том, что Гугл не обращается с совместимостью и безопасностью, как МС (кто помнит этот грёбаный стыд, когда HTML'ный визард в студии блокировался жёлтой секьюрной полоской сверху? VS 7.1 на XP, вроде). В заключение, хочу добавить, что многие используют движок HTML, специально созданный для GUI — Sciter. Страницы в нём не поотображаешь, зато интерфейсы — милое дело, каждый второй антивирус на нём написан плюс ещё куча всего.

                                        0
                                        ПИчаль только в том, что все (виденные мной) решения интерфейсов на базе HTML безумно медленные. Т.е. message box кастомизированный вывести ещё может и ничего, но уже хотя бы просто длинный список с минимальным количеством контролов — всё, крантец. Symantec уже много лет базирует свои продукты Norton* на таких интерфейсах и в результате каждое «общение» с таким софтом — боль чисто по причинам крайне неприятных лагов интерфейса. Зато «вжух-вжух и готово», да…
                                          0

                                          «Norton*», насколько я знаю, сделан, как раз, на Sciter. Как они умудрились добиться описываемого вами эффекта, ума не приложу. (Сам я таким софтом не пользуюсь). Я лично писал на этом движке ОЧЕНЬ тяжёлый UI, сопоставимый по сложности с иной игрой, с кучей анимации и т.п. и тестировал полноэкранные полупрозрачные окна на 4К на слабом ноутбуке — всё летало. Мобильную не смотрел, но видел ролик с сайта автора, где она на среднем телефоне даёт 60fps на его тестовых примерах из SDK (среди них есть в том числе нагрузочные — SDK публично доступен). Если вам не трудно, посмотрите, пожалуйста, через файловый менеджер в папку приложения на dll'ки или через Spy++ на имя оконного класса, или через Process Explorer на загруженные библиотеки, чтобы точно узнать, на каком движке они сделали GUI. Ещё, возможно, они в потоке интерфейса что-то медленное делают, тут уж хоть на голом WinAPI пиши, лаги будут.

                                          0
                                          Да, вот только проблема в том, что браузерные движки общего назначения переполнены всякого рода допущениями, чтобы каждый из миллиардов сайтов, даже написанных криворукими детсадовцами без какого-либо соблюдения стандартов, хоть как-то отображался. B вся эта обвязка совершенно не нужна для специально написанного по стандартам GUI. Sciter — чудесный пример того, как без тяжкого груза допущений, работая по стандартам, один человек может написать полноценный графический движок браузера размером 700 кб.
                                            0
                                            Не 700К, побольше (разные версии, с которыми я работал, весили от 3 до 5М). Но всё равно раз в 10 меньше Хромиума, да.
                                            0
                                            del
                                            0
                                            Nitro — движок JS, разрабатываемый Apple для браузера Safari;

                                            правильнее это двигло называть JavaScriptCore

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое