WebKit

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:03, 23 декабря 2018.
WebKit
WebKit logo 2015.svg .png
Epiphany 2 27 webkit.png
Создатели: Apple Inc., Google Inc., KDE, Opera Software, Maxthon International Limited, Yandex, ИСП РАН и другие.
Выпущена: 4 ноября 1998
Постоянный выпуск: 537.36 / 30 июля 2015
Состояние разработки: Активное
Написана на: C++
Операционная система: Кроссплатформенное ПО
Платформа: Кроссплатформенное ПО
Тип ПО: Фреймворк
Лицензия: LGPLv2 / BSD-style
Веб-сайт webkit.org
WebKit – это фреймворк веб-браузера, используемый в браузере Safari от Apple и других продуктах.

WebKit также является основой экспериментального браузера, включенного в электронную книгу Amazon Kindle, а также для браузера по умолчанию в Apple iOS, BlackBerry Browser в ОС 6 и выше и мобильных операционных систем Tizen. Интерфейс прикладного программирования (API) WebKit предоставляет набор классов для отображения веб-контента в окнах и реализует функции браузера, такие как следующие ссылки при нажатии пользователем, управление списком перемотки назад и управление историей недавно посещенных страниц.

HTML и JavaScript-код WebKit изначально были вилкой KHTML и KJS-библиотек от KDE и теперь были дополнительно разработаны людьми из KDE, Apple, Google, Nokia, Bitstream, BlackBerry, Igalia и других. macOS, Windows, Linux и некоторые другие UNIX-подобные операционные системы поддерживаются проектом. 3 апреля 2013 года компания Google объявила о том, что она использовала WebCore, компонент WebKit, который будет использоваться в будущих версиях Google Chrome и браузера Opera под названием Blink.

WebKit доступен под лицензией BSD-формы, за исключением компонентов WebCore и JavaScriptCore, которые доступны по лицензии GNU Lesser General Public License. По состоянию на 7 марта 2013 года WebKit является товарным знаком Apple, зарегистрированным в ведомстве США по патентам и товарным знакам.

Истоки

Код, который станет WebKit, начался в 1998 году как механизм компоновки KDE HTML (KHTML) и KDE JavaScript (KJS). Проект WebKit был начат в Apple от Дола Мелтона 25 июня 2001 года в качестве форком KHTML и KJS. Мелтон объяснил в электронном письме разработчикам KDE, что KHTML и KJS позволили упростить разработку, чем другие доступные технологии, благодаря небольшому (менее 140 000 строк кода), чисто разработанному и совместимому со стандартами. KHTML и KJS были перенесены в OS X с помощью библиотеки адаптеров и переименованы в WebCore и JavaScriptCore. JavaScriptCore был анонсирован в электронном письме в список рассылки KDE в июне 2002 года вместе с первой версией изменений Apple. WebCore был анонсирован на Macworld Expo в январе 2003 года генеральным директором Apple Стива Джобса с выпуском веб-браузера Safari. JavaScriptCore был впервые включен в Mac OS X 10.2 в качестве частной структуры, которую Apple использовала в своем приложении Sherlock, в то время как WebCore дебютировал с первой бета-версией Safari. Mac OS X 10.3 стала первой крупной версией операционной системы Apple для объединения WebKit, хотя она уже была выпущена с небольшим выпуском 10.2[Источник 1].

Согласно Apple, некоторые изменения включали специфические для OS X функции (например, Objective-C, KWQ, OS X-вызовы), которые отсутствуют в KHTML KDE, которые требуют различной тактики разработки.

Разделение разработки

Обмен кода между WebCore и KHTML стал все более трудным, поскольку база кода расходилась, потому что оба проекта имели разные подходы к кодированию и совместному использованию кода. В какой-то момент разработчики KHTML заявили, что вряд ли согласятся с изменениями Apple и заявили, что отношения между этими двумя группами были «горькой неудачей». Apple представила свои изменения в больших исправлениях, содержащих очень много изменений, с неадекватной документацией, часто связанной с будущими дополнениями. Таким образом, эти исправления были трудными для разработчиков KDE для интеграции обратно в KHTML. Кроме того, Apple потребовала от разработчиков подписывать соглашения о неразглашении, прежде чем смотреть на исходный код Apple, и даже тогда они не смогли получить доступ к базе данных ошибок Apple.

Во время опубликованного «развода» разработчик KDE Курт Пфайфл (pipitas) опубликовал статью, в которой разработчикам KHTML удалось заархивировать многие (но не все) улучшения Safari от WebCore до KHTML, и они всегда оценили улучшения, приходящие от Apple, и все еще делают так. В статье также отмечается, что Apple начала связываться с разработчиками KHTML о том, как улучшить взаимоотношения и пути будущего сотрудничества. Фактически, проект KDE смог включить некоторые из этих изменений, чтобы улучшить скорость рендеринга KHTML и добавить функции, включая соответствие с тестом на рендеринг Acid2.

Поскольку в новостях появилась новость о новостях, Apple опубликовала изменения исходного кода вилки WebKit в публичном репозитории контроля версий. Поскольку передача исходного кода в общедоступный репозиторий системы параллельных версий (CVS), разработчики Apple и KHTML расширяют сотрудничество. Многие разработчики KHTML стали рецензентами и отправителями для репозитория контроля версий WebKit.

Команда WebKit также отменила многие изменения, внесенные Apple в исходную базу кода WebKit, и реализовала уровни абстракции для конкретной платформы, чтобы значительно упростить передачу кода рендеринга ядра на другие платформы.

В июле 2007 года Ars Technica сообщила, что команда KDE переместится с KHTML на WebKit. Вместо этого, после нескольких лет интеграции, KDE Development Platform версии 4.5.0 была выпущена в августе 2010 года с поддержкой как WebKit, так и KHTML, а развитие KHTML продолжается.

Опенсорсинг

7 июня 2005 года разработчик Safari Дэйв Хаатт объявил в своем блоге, что Apple является открытым сайтом WebKit (ранее только WebCore и JavaScriptCore были с открытым исходным кодом) и открывали доступ к дереву контроля версий WebKit и к трекеру проблем. Об этом было объявлено на конференции Apple Worldwide Developers Conference 2005, старшим вице-президентом Apple по программной инженерии Бертраном Серлетом.

В середине декабря 2005 года поддержка масштабируемой векторной графики (SVG) была объединена с стандартной сборкой, а в начале января 2006 года исходный код был перенесен из системы параллельных версий (CVS) в Subversion (SVN)[Источник 2].

Компоненты JavaScriptCore и WebCore от WebKit доступны в рамках лицензии GNU Lesser General Public License, а остальная часть WebKit доступна под лицензией BSD.

Дальнейшее развитие

Начиная с начала 2007 года команда разработчиков начала внедрять расширения Cascading Style Sheets (CSS), включая анимацию, переходы и 2D и 3D-преобразования, такие расширения были выпущены в качестве рабочих проектов в консорциум World Wide Web (W3C) в 2009 для стандартизации.

В ноябре 2007 года проект объявил о том, что он добавил поддержку мультимедийных функций спецификации черновика HTML5, позволяя встроенное видео визуально визуализироваться и контролироваться скриптом в WebKit.

2 июня 2008 года проект WebKit объявил, что они переработали JavaScriptCore как «SquirrelFish», интерпретатор байт-кода. Проект превратился в SquirrelFish Extreme (сокращенно SFX), объявленный 18 сентября 2008 года, который компилирует JavaScript в собственный машинный код, устраняя необходимость в интерпретаторе байт-кода и тем самым ускоряя выполнение JavaScript. Первоначально единственной поддерживаемой архитектурой процессора для SFX был x86, но в конце января 2009 года SFX был включен для OS X на x86-64, когда он прошел все тесты на этой платформе.

WebKit2

8 апреля 2010 года был анонсирован проект WebKit2 для перепроектирования WebKit. Цель состоит в том, чтобы абстрагироваться от компонентов, которые обеспечивают рендеринг веб-страниц, из своего окружающего интерфейса или оболочки приложения, создавая ситуацию, когда «веб-контент (JavaScript, HTML, макет и т.д.) Живет в отдельном процессе из пользовательского интерфейса приложения». Эта абстракция предназначена для повторного использования более простого процесса для WebKit2, чем для WebKit. WebKit2 имеет «несовместимое изменение API от исходного WebKit», которое мотивировало его изменение имени.

WebKit2 будет нацелен на MacOS, Windows, GTK+ и MeeGo-Harmattan. Safari для OS X переключился на новый API с версией 5.1. Safari для iOS переключился на WebKit2 с iOS 8.

Использование

WebKit используется как механизм рендеринга в Safari и ранее использовался браузером Google Chrome в Windows, MacOS, iOS и Android до версии 4.4 KitKat (Chrome использовал только WebCore и включал свой собственный движок JavaScript с именем V8 и многопроцессорную систему). Другие приложения на macOS используют WebKit, такие как почтовый клиент электронной почты от Safari и версия 2008 года менеджера личных данных Entourage от Microsoft, оба из которых используют WebKit для рендеринга сообщений электронной почты с содержимым HTML.

Установленная база

Новые веб-браузеры были созданы вокруг WebKit, таких как браузер S60 на мобильных телефонах Symbian, браузере BlackBerry (версия 6.0+), Midori, браузере Chrome, в браузере Android до версии 4.4 KitKat и браузер, используемый в системном программном обеспечении PlayStation 3 версии 4.10. Веб-браузер KDE's Rekonq и Plasma Workspaces также используют его как собственный механизм рендеринга веб-страниц. WebKit был принят как движок рендеринга в OmniWeb, iCab и Web (ранее назывался Epiphany) и Sleipnir, заменив их исходные механизмы рендеринга. В течение некоторого времени веб-сайт GNOME поддерживал как Gecko, так и WebKit, но команда решила, что цикл выпуска Gecko и планы дальнейшего развития сделают его слишком громоздким, чтобы продолжать поддерживать его. WebOS использует WebKit в качестве основы для его времени выполнения. В последнем обновлении интерфейса для Steam Valve используется WebKit для отображения его интерфейса и встроенного браузера. WebKit используется для рендеринга HTML и запуска JavaScript на платформе приложений Adobe Integrated Runtime. В Adobe Creative Suite CS5 WebKit используется для отображения некоторых частей пользовательского интерфейса. По состоянию на первое полугодие 2010 года аналитик оценил совокупное количество мобильных телефонов, поставляемых с браузером на основе WebKit, на уровне 350 миллионов. К середине апреля 2015 года доля рынка браузера WebKit составляла 50,3%.

Порты

Через неделю после того, как Hyatt анонсировала open-sourcing от WebKit, Nokia объявила, что перенесла WebKit в операционную систему Symbian и разрабатывает браузер на основе WebKit для мобильных телефонов под управлением S60. Именованный веб-браузер для S60, он использовался на Nokia, Samsung, LG и других мобильных телефонах Symbian S60. Apple также перенесла WebKit на iOS для работы на iPhone, iPod Touch и iPad, где он используется для отображения контента в веб-браузере устройства и в программном обеспечении электронной почты. [50] Платформа Android для мобильных телефонов, использующая WebKit (и более поздние версии, ее вилка Blink) в качестве основы для своего веб-браузера, и Palm Pre, объявленная в январе 2009 года, имеет интерфейс на основе WebKit. Amazon Kindle 3 включает экспериментальный браузер на основе WebKit[Источник 3].

В июне 2007 года Apple объявила, что WebKit был перенесен в Microsoft Windows как часть Apple.

WebKit также был перенесен на несколько наборов инструментальных средств, поддерживающих несколько платформ, таких как набор инструментов GTK+, Framework Qt, Adobe Integrated Runtime, библиотеки фонда Elight (EFL) и набор инструментов Clutter. Программное обеспечение Qt (принадлежащее Digia) включает Qt-порт в выпуске Qt 4.4. Порт Qt WebKit также доступен для использования в Konqueror с версии 4.1. Браузер Iris на Qt также использует WebKit. В качестве автономного браузера, виджетов-гаджетов, богатого текстового просмотра и композитора был разработан порт для проектов Efllenment Foundation Libraries (EFL) - EWebKit (Samsung и ProFusion), ориентированный на встроенные и мобильные системы. Порт Clutter разработан Collabora и спонсируется Robert Bosch GmbH.

Существует также проект, синхронизированный с WebKit (спонсируемый Pleyo) под названием Origyn Web Browser, который обеспечивает мета-порт абстрактной платформы с целью упрощения и упрощения переноса в внедренные или легкие системы. Этот порт используется для встроенных устройств, таких как телеприставки, PMP, и он был перенесен в AmigaOS, AROS и MorphOS. Версия MorphOS 1.7 - первая версия веб-браузера Origyn (OWB), поддерживающая мультимедийные теги HTML5.

Форк от Google

3 апреля 2013 года компания Google объявила о выпуске вилки компонента WebCit WebCore под названием Blink. Разработчики Chrome решили использовать форк, чтобы обеспечить большую свободу в использовании функций WebCore в браузере, не вызывая конфликтов вверх по течению, и чтобы упростить свою кодовую базу, удалив код для компонентов WebCore, не используемых Chrome. В связи с объявлением Opera Software в начале года, когда он переключился на WebKit с помощью базы данных Chromium, было подтверждено, что браузер Opera также переключится на Blink. После анонса, разработчики WebKit начали обсуждения по удалению кода, специфичного для Chrome, для оптимизации его кодовой базы. WebKit больше не имеет какого-либо конкретного кода [Google Chrome|Chrome]] (например, buildsystem, V8 JavaScript-движки, код платформы и т.д.).

Компоненты

WebCore

WebCore - это библиотека макета, рендеринга и Document Object Model (DOM) для HTML и масштабируемой векторной графики (SVG), разработанная проектом WebKit. Его полный исходный код лицензируется по лицензии GNU Lesser General Public License (LGPL). Рамка WebKit обертывает WebCore и JavaScriptCore, предоставляя интерфейс прикладного программирования Objective-Cции WebCore на базе C++ и движку сценария JavaScriptCore, позволяя легко ссылаться на приложения на основе API Cocoa; более поздние версии также включают в себя кросс-платформенную абстракцию платформы C++, а различные порты предоставляют больше API.

WebKit передает тесты Acid2 и Acid3 с идеальным рендерингом в пикселях и отсутствием сроков или проблем с гладкостью на эталонном оборудовании.

JavaScriptCore

JavaScriptCore - это среда, которая предоставляет механизм JavaScript для реализации WebKit и предоставляет этот тип сценариев в других контекстах в macOS. JavaScriptCore первоначально получен из библиотеки KDE JavaScript engine (KJS) (которая является частью проекта KDE) и библиотеки регулярных выражений PCRE. Начиная с разветвления с KJS и PCRE, JavaScriptCore был улучшен с множеством новых функций и значительно улучшил производительность.

2 июня 2008 года проект WebKit объявил, что они переработали JavaScriptCore как «SquirrelFish», интерпретатор байт-кода. Проект превратился в SquirrelFish Extreme (сокращенно SFX, продаваемый как Nitro), объявленный 18 сентября 2008 года, который компилирует JavaScript в собственный машинный код, устраняя необходимость в интерпретаторе байт-кода и тем самым ускоряя выполнение JavaScript.

13 мая 2014 года был анонсирован оптимизированный компилятор «точно в срок» (JIT) по имени FTL. Он использует LLVM для генерации оптимизированного машинного кода. «FTL» означает «Fourth-Tier-LLVM», а неофициально - быстрее, чем свет, ссылаясь на его скорость. По состоянию на 15 февраля 2016 года бэкэнд FTL JIT заменяется «Bare Bones Backend» (или B3 для краткости)[Источник 4].

Ссылки

Источники

  1. 300 миллионов пользователей и переход на WebKit // Хабр [2006–2018]. Дата изменения: 13.02.2013. URL: https://habr.com/company/opera/blog/169239/ (Дата обращения: 27.05.2018).
  2. WebKit для разработчиков // Хабр [2006–2018]. Дата изменения: 18.03.2013. URL: https://habr.com/post/173141/ (Дата обращения: 27.05.2018).
  3. WebKit for Developers // Paul Irish [2018]. Дата изменения: 28.03.2013. URL: https://www.paulirish.com/2013/webkit-for-developers/ (Дата обращения: 27.05.2018).
  4. WebKit // Wikipedia [2001–2018]. Дата изменения: 18.04.2018. URL: https://en.wikipedia.org/wiki/WebKit (Дата изменения: 20.04.2018).