WebKit - WebKit

WebKit
WebKit logo (2015).svg
Автор (ы) оригинала KDE
Разработчики) Apple Inc. , Adobe Systems , Sony , KDE , Igalia и другие
Первый выпуск 4 ноября 1998 г . ; 22 года назад (выпущен KHTML) 7 июня 2005 г . ; 16 лет назад (исходный код WebKit) (1998-11-04)
 (2005-06-07)
Предварительный выпуск
По ночам
Написано в C ++
Операционная система macOS , Linux , Microsoft Windows
Тип Движок браузера
Лицензия LGPLv2.1 (движок рендеринга, движок JavaScript), BSD 2-Clause (дополнительные материалы от Apple)
Веб-сайт webkit .org

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

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

WebKit доступен по лицензии BSD 2-Clause, за исключением компонентов WebCore и JavaScriptCore , которые доступны по Стандартной общественной лицензии ограниченного применения GNU . С 7 марта 2013 г. WebKit является товарным знаком Apple, зарегистрированным в Управлении по патентам и товарным знакам США.

Происхождение

Код, который впоследствии стал WebKit, начался в 1998 году как механизм компоновки KDE HTML ( KHTML ) и механизм KDE JavaScript ( KJS ). Проект WebKit был запущен в Apple , Дон Мелтон на 25 июня 2001 года, в качестве вилки из KHTML и KJs . Мелтон объяснил в электронном письме разработчикам KDE, что KHTML и KJS упрощают разработку, чем другие доступные технологии, в силу своего небольшого размера (менее 140000 строк кода ), аккуратного дизайна и соответствия стандартам. KHTML и KJS были перенесены в OS X с помощью библиотеки адаптеров и переименованы в WebCore и JavaScriptCore. JavaScriptCore был анонсирован в электронном письме в список рассылки KDE в июне 2002 года, вместе с первым выпуском изменений Apple.

Согласно 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 в общедоступном репозитории системы контроля версий .

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

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

Открытый исходный код

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

В середине декабря 2005 года поддержка масштабируемой векторной графики (SVG) была включена в стандартную сборку.

Компоненты WebKit JavaScriptCore и WebCore доступны по лицензии GNU Lesser General Public License, а остальная часть WebKit доступна по лицензии BSD 2-Clause.

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

С начала 2007 года группа разработчиков начала внедрять расширения каскадных таблиц стилей (CSS), включая анимацию , переходы, а также двухмерные и трехмерные преобразования; такие расширения были выпущены в качестве рабочих проектов Консорциуму 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 были установлены на Linux, MacOS, Windows, GTK и MeeGo -Harmattan. Safari для OS X перешел на новый API с версии 5.1. Safari для iOS перешел на WebKit2 с iOS 8.

Исходный API WebKit был переименован в API WebKitLegacy. WebKit2 API был переименован в простой WebKit API.

Использовать

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

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

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

Порты

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


В июне 2007 года Apple объявила, что WebKit был перенесен на Microsoft Windows как часть Safari. Хотя Safari для Windows был прекращен компанией, порты WebKit на операционную систему Microsoft все еще активно поддерживаются. Порт Windows использует собственные библиотеки Apple для работы и используется для iCloud и iTunes для Windows, тогда как порт «WinCairo» является полностью распространяемым портом с открытым исходным кодом.

GNOME Web - это основной веб-браузер в Linux, использующий WebKitGTK.

WebKit также был перенесен на несколько наборов инструментов, поддерживающих несколько платформ, таких как набор инструментов GTK для Linux под названием WebKitGTK, который используется Eolie, GNOME Web , Adobe Integrated Runtime , библиотеками Enlightenment Foundation (EFL) и набором инструментов Clutter . Программное обеспечение Qt включило порт WebKit в выпуск Qt 4.4 в виде модуля под названием QtWebKit (поскольку он был заменен Qt WebEngine , который вместо этого использует Blink). Iris Browser на Qt также используется WebKit. Порт для библиотек Enlightenment Foundation (EFL) - EWebKit - был разработан ( Samsung и ProFusion) для встраиваемых и мобильных систем для использования в качестве автономного браузера, виджетов-гаджетов, средства просмотра и композитора форматированного текста. Порт Clutter разработан Collabora и спонсируется Robert Bosch GmbH .

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

Веб-платформа для встроенных

Web Platform for Embedded (WPE) - это порт WebKit, предназначенный для встраиваемых приложений; он дополнительно улучшает архитектуру, разделяя основные функциональные блоки рендеринга на библиотеку подпрограмм общего назначения (libwpe), серверные части платформы и сам движок (называемый WPE WebKit). Порт GTK, хотя и самодостаточный, может быть построен для использования этих базовых библиотек вместо реализации поддержки внутренней платформы. Порт WPE в настоящее время обслуживается компанией Igalia.

Форкинг от Google

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

Компоненты

WebCore

WebCore это макет, рендеринг и Объектная модель документа (DOM) библиотека для HTML и Scalable Vector Graphics (SVG), разработанный в рамках проекта WebKit. Его полный исходный код находится под лицензией GNU Lesser General Public License (LGPL). Инфраструктура WebKit включает WebCore и JavaScriptCore, обеспечивая интерфейс прикладного программирования Objective-C для основанного на C ++ механизма рендеринга WebCore и скриптового движка JavaScriptCore, что позволяет легко ссылаться на него приложениям, основанным на Cocoa API ; более поздние версии также включают кроссплатформенную абстракцию платформы 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.

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

Смотрите также

использованная литература

внешние ссылки