Кіріспе

Веб-браузер қозғалтқышы WebKit KDE-нің KHTML және KJS кітапханаларынан жасалған, кейіннен KDE-нің қатысушылары, Apple, Google және Nokia компанияларымен дамытылды. WebKit macOS, Windows, Linux және басқа да Unix сияқты операциялық жүйелерді қолдайды. 2013 жылдың 3 сәуірінде Google, Google Chrome және Opera веб-браузерінің болашақ нұсқаларында Blink деген атпен пайдаланылатын WebKit құрамындағы WebCore бөлігін өзгертіп жасағанын хабарлады. WebKit ашық кодты және BSD 2 Clause лицензиясы бойынша қолжетімді, WebCore және JavaScriptCore компоненттері GNU Lesser General Public License лицензиясы бойынша қолжетімді. 2013 жылдың 7 наурызынан бастап WebKit – АҚШ-тың патент және сауда белгілері кеңсесінде тіркелген Apple компаниясының сауда белгісі.

Шығу тегі

WebKit-ке айналатын код 1998 жылы KDE HTML (KHTML) беттік компоновка қозғалтқышы және KDE JavaScript (KJS) қозғалтқышы ретінде басталды. WebKit жобасын Apple компаниясында Лиза Мелтон 2001 жылғы 25 маусымда KHTML және KJS-тің түйіндемесі ретінде бастады. Мелтон KDE әзірлеушілеріне электрондық хатта түсіндірді. Apple компаниясының мәлімдемесіне сәйкес, әртүрлі әзірлеу тактикасын қажет еткен кейбір өзгерістер KDE-нің KHTML-де жоқ, macOS-қа тән ерекшеліктерге байланысты болды, мысалы Objective C, KWQ ("quack" деп айтылады) – бұл KHTML-ді macOS-та жұмыс істеуі үшін қажетті Qt кіші жиынтығын Objective C++ тілінде іске асыру, сондай-ақ macOS шақырулары.

Бөлек даму

WebCore және KHTML арасында код алмасу, екі жобаның кодтау және код бөлісу әдістерінің өзгешелігіне байланысты, код базасы айқын түрде ерекшеленген сайын қиынға соқты. Бір кезде KHTML әзірлеушілері Apple-дің өзгерістерін қабылдамайтындарын айтып, екі топ арасындағы қарым-қатынасты "қатты сәтсіздік" деп сипаттады. Олар Apple өзгерістерін жеткіліксіз құжаттамамен, бірнеше өзгерістерді қамтитын үлкен жаңартулар түрінде ұсынғанын, көбінесе олар код базасына болашақта енгізілетін жаңалықтармен байланысты екенін мәлімдеді. Осы себепті, бұл жаңартуларды KDE әзірлеушілері KHTML-ге интеграциялау қиын болды. Сонымен қатар, Apple әзірлеушілерге өзінің бастапқы кодын қарауға рұқсат беру үшін құпиялылық туралы келісімдерге қол қоюды талап етті, тіпті содан кейін де Apple-дің қателер туралы деректер базасына қол жеткізе алмады. "Ажырасу" кезеңінде KDE әзірлеушісі Курт Пфайфл (pipitas) KHTML әзірлеушілерінің WebCore-дан KHTML-ге Safari-дің көптеген (бірақ барлығы емес) жақсартуларын қайта енгізгенін, және Apple-ден келетін жақсартуларды әрқашан бағалағанын және қазір де бағалайтынын жариялаған мақала жариялады. Мақалада сондай-ақ Apple KHTML әзірлеушілерімен қарым-қатынасты жақсарту және болашақ ынтымақтастық жолдары туралы талқылауды бастағаны айтылды. Шындығында, KDE жобасы KHTML-дің рендеринг жылдамдығын жақсарту және Acid2 рендеринг тестіне сәйкестік сияқты мүмкіндіктерді қосу үшін осы өзгерістердің бір бөлігін енгізе алды. Форк туралы жаңалықтар тарағаннан кейін, Apple WebKit форкінің бастапқы кодын ашық қолжетімді кодты басқару репозиторийіне жариялады. WebKit командасы сонымен қатар WebKit-тің бастапқы код базасындағы Apple-ге тән көптеген өзгерістерді кері қайтарып, негізгі рендеринг кодын басқа платформаларға енгізуді жеңілдету үшін платформаға қатысты абстракциялық қабаттарды енгізді. 2007 жылдың шілдесінде Ars Technica KDE тобының KHTML-ден WebKit-ке көшетінін хабарлады. Бірақ, бірнеше жылдық интеграциядан кейін, 2010 жылдың тамызында WebKit және KHTML қолдауымен KDE Development Platform 4.5.0 нұсқасы шығарылды, және KHTML-ді дамыту жалғасуда.

Ашық ресурстар

2005 жылдың 7 маусымында Safari әзірлеушісі Дейв Хайат өзінің веб-блогында Apple компаниясы WebKit-ті ашық кодпен қамтамасыз ететінін хабарлады (бұрын тек WebCore және JavaScriptCore ашық бастапқы кодты болған), сондай-ақ WebKit-тің нұсқаулық ағашына және ақауларды іздеу құралына қол жеткізуді ашты. WebKit-тің JavaScriptCore және WebCore компоненттері GNU Lesser General Public License лицензиясы бойынша қолжетімді, ал WebKit-тің қалған бөлігі BSD 2 Clause лицензиясы бойынша қолжетімді. Мұндай кеңейтімдер 2009 жылы World Wide Web Consortium (W3C) ұйымына стандарттау үшін жұмыс жобалары ретінде ұсынылды. 2007 жылдың қараша айында жоба HTML5 спецификациясының медиа мүмкіндіктерін қосты, бұл WebKit-те бейнелерді тікелей көрсетуге және оларды скрипт арқылы басқаруға мүмкіндік берді. 2008 жылдың 2 маусымында WebKit жобасы JavaScriptCore-ді "SquirrelFish" деп аталатын байт-код интерпретаторы ретінде жаңартып жазғанын хабарлады. Жоба SquirrelFish Extreme (қысқартылған SFX) нұсқасына дамыды, ол 2008 жылдың 18 қыркүйегінде жарияланды. SFX JavaScript-ті тікелей машиналық кодқа аудармалайды, байт-код интерпретаторының қажеттілігін жойып, JavaScript орындалуын жылдамдатады. Бастапқыда SFX тек x86 процессор архитектурасын қолдады, бірақ 2009 жылдың қаңтар айының соңында бұл платформадағы барлық тесттерден өткендіктен, SFX macOS жүйесінде x86 64 архитектурасы үшін де қолжетімді болды.

WebKit2 бағдарламасы

2010 жылғы 8 сәуірде WebKit-ті жаңарту мақсатында WebKit2 жобасы жарияланды. Оның мақсаты – веб-беттерді көрсетуді қамтамасыз ететін компоненттерді оларды қоршаған интерфейстен немесе қолданба қабығынан бөліп, таза түрде абстракциялау, соның нәтижесінде «веб-мазмұн (JavaScript, HTML, макет және т.б.) қолданбаның интерфейсінен бөлек процесте жұмыс істеуі» тиіс болды. Бұл абстракция WebKit2-де WebKit-ке қарағанда компоненттерді қайта пайдалануды оңайлатуға бағытталған. WebKit2 бастапқы WebKit-тен өзгеше API-ға ие болды, осы себепті атауы өзгертілді. WebKit2-нің қолдау көрсетілетін платформалары: Linux, macOS, Windows, GTK және MeeGo Harmattan. macOS үшін Safari 5.1 нұсқасымен жаңа API қолданысқа енгізілді. iOS үшін Safari iOS 8 нұсқасымен WebKit2-ге көшті. WebKit-тің бастапқы API-сы WebKitLegacy API деп атау өгертілді. WebKit2 API енді жай ғана WebKit API деп аталады.

Қолдану

WebKit Safari-де рендеринг қозғалтқышы ретінде пайдаланылады және бұрын Windows, macOS және Android-те (KitKat 4.4 нұсқасына дейін) Google Chrome веб-браузерінде қолданылған. Chrome тек WebCore-ды ғана пайдаланды, сондай-ақ V8 деп аталатын өзінің JavaScript қозғалтқышымен және көп процестік жүйемен жабдықталған. MacOS және iOS-тағы басқа да қолданбалар WebKit-ті пайдаланады, мысалы Apple-дің электрондық пошта бағдарламасы Mail, App Store және Microsoft-тың Entourage жеке ақпарат басқарушысының 2008 жылғы нұсқасы, олардың екеуі де HTML мазмұнын көрсету үшін WebKit-ті қолданады.

Орнатылған негіз

WebKit-ке негізделген жаңа веб-браузерлер құрылды, мысалы, Symbian ұялы телефондарындағы S60 браузері, BlackBerry браузері (6.0 нұсқасынан бастап), Midori, Chrome браузері, 4.4 KitKat нұсқасына дейінгі Android веб-браузері және 4.10 нұсқасынан бастап PlayStation 3 жүйелік бағдарламалық жасақтамасында қолданылатын браузер. KDE Rekonq веб-браузері мен Plasma Workspaces оны негізгі веб-көрсету қозғалтқышы ретінде пайдаланады. WebKit, OmniWeb, iCab және Web (бұрын Epiphany деп аталған) және Sleipnir браузерлерінде олардың бастапқы көрсету қозғалтқыштарының орнына қабылданды. GNOME-ның Web браузері Gecko және WebKit-ті біраз уақыт қолдады, бірақ команда Gecko-ның жаңару циклы мен болашақ даму жоспарлары оны қолдауды жалғастыруды қиын етеді деп шешті. webOS WebKit-ті өзінің қолданба орындалыс ортасының негізі ретінде пайдаланады. WebKit HTML-ді көрсету және JavaScript-ті Adobe Integrated Runtime бағдарламалық платформасында іске қосу үшін қолданылады. Adobe Creative Suite CS5-те WebKit пайдаланушы интерфейсінің кейбір бөліктерін көрсету үшін пайдаланылады. 2010 жылдың бірінші жартысында сарапшы WebKit-ке негізделген браузері бар 350 миллион ұялы телефон жеткізілгенін бағалады. 2015 жылдың сәуір айының ортасына қарай WebKit браузерінің нарық үлесі 50,3% құрады.

Порттар

Hyatt компаниясы WebKit-тің ашық кодты болуын жариялағаннан кейін бір апта өткен соң Nokia компаниясы WebKit-ті Symbian операциялық жүйесіне порциялап, S60 платформасындағы ұялы телефондарға арналған WebKit негізіндегі браузерді әзірлеп жатқанын хабарлады. Бұл браузер Web Browser for S60 деп аталды және Nokia, Samsung, LG және басқа Symbian S60 ұялы телефондарында қолданылды. Apple WebKit-ті iOS-қа да порциялап, iPhone, iPod Touch және iPad құрылғыларында веб-браузер мен электрондық пошта бағдарламасында контентті көрсету үшін пайдаланды. Android ұялы платформасы WebKit-ті (кейінірек оның Blink түйіндісін) өз веб-браузерінің негізі ретінде қолданды, ал 2009 жылдың қаңтарында жарияланған Palm Pre құрылғысында WebKit негізіндегі интерфейс болды. Amazon Kindle 3 құрылғысында WebKit негізіндегі тәжірибелік браузер бар. 2007 жылдың маусым айында Apple WebKit-ті Safari құрамында Microsoft Windows операциялық жүйесіне порциялағанын хабарлады. Компания Windows үшін Safari қолдауын жасырын түрде тоқтатса да, WebKit-тің Microsoft операциялық жүйесіне жасалған порциялары әлі де белсенді түрде күтіліп келеді. Windows порты Apple-дің эксклюзивті кітапханаларын пайдаланады және Windows үшін iCloud мен iTunes-та қолданылады, ал "WinCairo" порты толыққанды ашық кодты және қайта таратуға болатын нұсқа болып табылады. WebKit сонымен қатар GTK құралдар жинағы сияқты бірнеше платформаларды қолдайтын бірнеше құралдар жинағына порцияланды, Linux үшін WebKitGTK атауымен, ол Eolie, GNOME Web, Adobe Integrated Runtime, Enlightenment Foundation Libraries (EFL) және Clutter құралдар жинағында қолданылады. Qt Software WebKit портын Qt 4.4 нұсқасында QtWebKit деп аталатын модуль ретінде қосты (кейіннен Blink-ті пайдаланатын Qt WebEngine-мен алмастырылды). Qt-дегі Iris браузері де WebKit-ті қолданды. Enlightenment Foundation Libraries (EFL) порты – EWebKit – (Samsung және ProFusion компанияларымен) кіріктірілген және ұялы жүйелерге баса назар аудара отырып, дербес браузер, виджеттер, бай мәтіндік қараушы және редактор ретінде пайдалану үшін әзірленді. Clutter портын Collabora әзірледі және Robert Bosch GmbH демеушілік етеді. WebKit-пен синхронды жұмыс істейтін (Pleyo демеушілігімен) Origyn Web Browser деп аталатын жоба да болды, ол кіріктірілген немесе жеңіл жүйелерге порциялауды жылдамдату және жеңілдету мақсатымен абстрактілі платформаға мета-портты ұсынды. Бұл порт топ-бокс, PMP сияқты кіріктірілген құрылғылар үшін қолданылады және AmigaOS, AROS және MorphOS-қа порцияланды. MorphOS 1.7 нұсқасы HTML5 медиа тегтерін қолдайтын Origyn Web Browser (OWB) алғашқы нұсқасы болып табылады.

Тіркелген веб- платформа

Web Platform for Embedded (WPE) – кіріктірілген қолданбаларға арналған WebKit порты; ол негізгі рендерлеу функционалдық бөлімдерін жалпы мақсаттағы процедуралар кітапханасына (libwpe), платформалық бэкендтерге және өзіне (WPE WebKit деп аталады) бөлу арқылы архитектураны одан әрі жетілдіреді. GTK порты, дербес болғанымен, ішкі платформалық қолдаудың орнына осы базалық кітапханаларды пайдалану үшін құрастырылуы мүмкін. WPE портын қазіргі уақытта Igalia күзеп қадағалайды.

Google-дің үлестіруі

2013 жылдың 3 сәуірінде Google WebKit-тің WebCore компонентінің тармағын, Blink деп аталатынын жариялады. Chrome-нің әзірлеушілері осы тармақты WebCore мүмкіндіктерін браузерде кедергісіз жүзеге асыру үшін және Chrome пайдаланбайтын WebCore компоненттерінің кодын алып тастау арқылы код базасын жеңілдету үшін жасады. Opera Software компаниясының жыл басында Chromium код базасы арқылы WebKit-ке көшетіні туралы хабарламасынан кейін, Opera веб-браузерінің де Blink-ке көшетіні расталды. Бұл жарияланғаннан кейін WebKit әзірлеушілері код базасын оңайлату мақсатында, қозғалтқыштан Chrome-ге тән кодты алып тастауды талқылай бастады. WebKit енді Chrome-ге тән кодты қамтымайды (мысалы, құрастыру жүйесі, V8 JavaScript қозғалтқышының байланыстары, платформа коды және т.б.).

WebCore (Жалпы)

WebCore — WebKit жобасы әзірлеген HTML және масштабталатын векторлық графика (SVG) үшін макеттеу, көрсету және Document Object Model (DOM) кітапханасы. Оның толық бастапқы коды GNU Lesser General Public License (LGPL) лицензиясымен беріледі. WebKit фреймворкі WebCore және JavaScriptCore-ды қамтиды, C++ негізіндегі WebCore көрсету қозғалтқышына және JavaScriptCore скрипт қозғалтқышына Objective C қолданбалық бағдарламалау интерфейсін ұсынады, бұл Cocoa API негізіндегі қолданбаларға оны оңай сілтемелеуге мүмкіндік береді; кейінгі нұсқаларында сонымен қатар платформалық абстракциясы бар C++ платформасы және түрлі порттар қосымша API ұсынады. WebKit Acid2 және Acid3 тесттерін өтеді, эталондық аппараттық құралдарда пикселдік дәлдікпен көрсету және уақыт немесе тегіс жұмыс істеуде мәселелер жоқ.

JavaScript негізгі

JavaScriptCore — WebKit іске асылымдары үшін JavaScript қозғалтқышын ұсынатын және macOS жүйесіндегі басқа да орталарда осы типтегі сценарийлерді қолдануға мүмкіндік беретін құрама. JavaScriptCore бастапқыда KDE жобасының бір бөлігі болған KDE JavaScript қозғалтқышы (KJS) кітапханасы мен PCRE реттегіш өрнектер кітапханасынан туындаған. KJS және PCRE-ден бөлінгеннен кейін JavaScriptCore көптеген жаңа мүмкіндіктермен толықтырылып, өнімділігі едәуір жақсартылды. 2008 жылдың 2 маусымында WebKit жобасы JavaScriptCore-ді байт-код интерпретаторы "SquirrelFish" ретінде жаңартып жазғанын хабарлады. Ол оптимизацияланған машиналық кодты жасау үшін LLVM-ді пайдаланады. "FTL" аббревиатурасы "Fourth Tier LLVM" дегенді білдіреді, ал бейресми түрде "жарық жылдамдығынан асып түсу" мағынасын береді, оның жоғары жылдамдығына сілтеме жасайды. 2016 жылдың 15 ақпанынан бастап FTL JIT-тің артқы бөлігі "Bare Bones Backend" (немесе қысқаша B3) деп өзгертілді.