WebKit

С Википедије, слободне енциклопедије
WebKit
Програмер(и)Apple, Adobe и други
ТипПогон веб-прегледача
ЛиценцаLGPLv2.1
Веб-сајтwebkit.org

WebKit је погон веб-прегледача који је развио Apple за свој веб-прегледач Safari.

WebKit такође чини основу за експериментални прегледач који се налази у Amazon-овом читачу електронских књига Kindle, као и основни прегледач у Apple-овом iOS-у, BlackBerry прегледачу у OS6 и новијим верзијама, као и мобилним оперативним системима Titen. WebKit-ов C++ интерфејс за програмирање апликација обезбеђује скуп класа за приказ веб-садржаја у прозору и имплементира особине као што су отварање линкова приликом клика корисника, те управљање назад-напред листама и историјом недавно посећених страница.

WebKit-ов HTML и JavaScript кôд су оригинално били форк KHTML-а и KJS библиотека из KDE и данас су даље развијени од стране појединаца из KDE, Apple-а, Google-а, Noki-је, Bitstream, BlackBerry, Igalia и других. Пројекат је подржао OS X, Windows, Linux и осталих оперативних система налик Unix-у. Дана 3. 4. 2013. Google је објавио да је искористио форк WebCore, компоненте WebKit-а и да ће убудуће бити коришћен у будућим верзијама прегледача Google Chrome и {Opera}- под именом Blink.

Порекло[уреди | уреди извор]

Кôд који је постао WebKit је започет 1998. године као KDE-ов HTML погона веб-прегледача KHTML и KDE-ов погон JavaScript-а (KJS). Мелтон је у свом мејлу програмерима KDE-а објаснио да KGNU и KJS дозвољавају лакши развој од других доступних технологија због своје мале величине (мање од 140 000 линија кода), јасно дизајнираних и standards-compliant. 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.

Према Apple]-у, неке промене укључују особине специфичне за OS X (нпр. објективни C, KWQ, OS X позиве) који су одсутни у KDE-овом KHTML-у који је тражио друге програмерске тактике.

Подељени развој[уреди | уреди извор]

Размена кодова између WebCore-а и КХТМЛ-a је била све тежа како се база кода мењала јер су оба пројекта имала другачије приступе кодирању и дељењу кода. У једном тренутку КХТМЛ девелопери су рекли да највероватније неце да прихвате Еплове промене и тврдили да је сарадња између ове две групе велик промашај. Епл је предао њихове измене у великим печвима који су садржали велики број измена са неадекватном докментацијом, што ће постати уобичајено у будућим додацима. Иако су ови печеви били тешки КДЕ девелоперима за интеграцију у КХТМЛ. Даље, Епл је тражио да девелопери потпишу "необјављујући" уговор пре гледања Еплових изворних кодова и чак тада нису могли да приступе Епловој бази багова.

Током званичног периода "развода" КДЕ девелопер Курт Фајфл је објавио чланак у ком је тврдио да су КХТМЛ девелопери успели да бекпортују многа али не и све Сафари побољшања из WebCore-а у КХТМЛ, и да су увек ценили побољшања која су долазила из Епла и да је тако и дан данас. Чланак је такође тврдио да је Епл почео да контактира КХТМЛ девелопере због дискусије о побољшању њихове садашње и будуће сарадње. Заправо, пројекат је могао да укључи неке од ових промена да побољша КХТМЛ-ову брзину рендеровања и дода неке особине, укључујући сагласност са Ецид2 тестом за рендеровање.

Откако се прича о форку појавила у вестима, Епл је избацио промене у изворни коду WebKit у складишту јавне ревизионе контроле. Од пребацивања изворног кода у јавно ЦВС складиште, Епл и КХТМЛ девелопери су повећали сарадњу. Многи КХТМЛ девелопери су постали рецентенти и подносиоци за WebKitово складиште ревизионе контроле.

WebKitов тим је такође преокренуо многе Еплове промене у оригиналној WebKit кодној бази и имплементира апстракционе слојеве за специфичну платформу како би извршавање кода за рендеровање других платформа било значајно лакше.

У јулу 2007. Арс Техника је пријавио да ће КДЕ-ов тим прећи са КХТМЛ-а на WebKit. Уместо тога, након неколико година интеграције, КДЕ развојна платформа верзија 4.5.0.је издата у августу 2010 са подршком и WebKitа и КХТМЛ-а и развој КХТМЛ-а је настављен.

Отворен код[уреди | уреди извор]

7. 6. 2005. Сафари девелопер Дејв Хајат је објавио на свом блогу да ће Епл доставити отворен код WebKitа (пре тога су само WebCore и ЈаваСкрипт Кор били отвореног кода) и остварити приступ WebKitовом дрвету ревизионе контрике и трагачу проблема. Ово је објавио Еплов старији потпредседник софтверског инжењерства, Бертранд Серлет, на Епловој Светској Конференцији Девелопера 2005.

Средином децембра 2005, подршка за Прилагодљиву векторску графику је био укључен у стандардну грађу и већ почетком јануара 2006 изворни код је премештен са ЦВС на Субвержн(СВН).

Компоненте WebKitових ЈаваСкрипт Кора и WebCore-а су доступне под ГНУ нижом генералном јавном лиценцом, док је остатак WebKitа доступан под BSD-стајл лиценцом.

Даљи развој[уреди | уреди извор]

Почевши од ране 2007. године, развојни тим почиње да имплементира CSS екстензије, укључујући и анимације, прелазе и 2Д и 3Д трансформације; такве екстензије су објављене као радни нацрти у 2009. који треба да буду стандардизовани од стране W3C-а.

У новембру 2007. пројекат је објавио да је успешно урадио подршку за медијске особине HTML5 нацртне спецификације, што дозвољава да уграђени видео буде рендерован и Скрипт-контролисан у WebKit-у.

Другог јуна 2008. године WebKit пројекат је објавио да су преписали JavaScriptCore као „SquirrelFish” бајт код интерпретатор. Пројекат је еволуирао у SquirrelFish Extreme (SFX), објављен 18. септембра 2008, који компилира JavaScript у изворни машински код, на тај начин елиминишући потребу за бајткод интерпретатором и убрзавајући извршавање JavaScript-а. У почетку, једина подржана архитектура за SFX је била x86 архитектура, али на крају јануара 2009. СФИкс је омогућен за ОС Икс на x86-64 архитектури, пошто је пролазио све тестова на тој платформи.

WebKit 2[уреди | уреди извор]

Пројекат редизајнирања WebKit-а је најављен 8. априла ,2010 под називом WebKit 2. Циљ WebKit-а 2 су апстракција компоненти која омогућавају веб рендеровање из њиховог окружујућег интерфејса или шела апликације, стварајући ситуацију где „веб садржај(ЈаваСкрипт,HTML, распоређивач итд) живи у одвојеном процесу од процеса корисничког интерфејса апликациј. Ова апстракција је намеравала да WebKit 2 преузме мало директнији приступ процесима него WebKit. WebKit 2 има „некомпатабилну API промену у односу на оригинални WebKit што је мотивисало промену у имену.

WebKit 2 је намењен Mac-у, Windows-у, {GTK+-у и МееГо-Харматану. Safari за OS X је прешао на нови API са верзијом 5.1. Safari за iOS је прешао на WebKit 2 од верзије 8.

Употреба[уреди | уреди извор]

Удео употребе веб прегледача према Стат Каунтеру

WebKit се користи као рендеринг енџин унунтар Сафари-а и претходно је био коришћен од стране Гугл Хрома на Windows-у, ОС Икс-у, иОС-у и андроиду(Хром је користио само ВебКор, а такође је имплементирао свој сопствени Јава енџин и мулти процесни систем). Друге апликације на ОС Икс такође користе WebKit, као на пример еплов е-мејл клијент Мејл и 2008 верзија Мајкрософт пратећег менаџера, где обе користе WebKit за рендеровање е-мејл порука са HTML садржајем.

Инсталирана основа[уреди | уреди извор]

Нови веб-прегледачи су направљени на основу WebKit-а као на пример С60 прегледач на Симбијан телефонима, БлекБери прегледач (од верзије 6.0), Мидори, Хром прегледач, Андроид прегледач и прегледач коришћена на ПлејСтејшн 3 системском софтверу од верзије 4.1.0. КДЕ-ов Реконк и Плазма Воркспејс га такође користе као примарни веб рендеринг енџин. WebKit је прихваћен и као рендеринг енџин за ОмниВеб, иКеб и Веб(раније познат као Епифани) и Слипнир, замењујући њихове претходне енџине. Гном-ов Веб је једно време подржавао и WebKit и Геко, али је тим одлучио да је због Гековог циклуса издавања и плана развоја превише проблематично настављање подршке. ВебОС користи WebKit као основу свог апликационог рантајма. Најновији интерфејс Валвовог Стим-а користи WebKit за рендеровање свог интерфејса и уграђеног прегледача. WebKit се користи за рендеровање HTML-а и покретање ЈаваСкрипта у Адобовој интегрисаној рантајм платформи за апликације. У Адобе Криејтив Суит-у ЦС5, WebKit се користи за рендеровање неких делова корисничког интерфејса. У првој половини 2010. Године аналитичари су проценили да је укупун број мобилних уређаја са прегледацима заснованим на WebKitу око 350 милиона, До средине Априла 2015. Године WebKit је заузимао 50,3% тржишта што је више него свих 5 великих браузер енџина заједно.

Портови[уреди | уреди извор]

Недељу дана након Хјатове изјаве о пребацивању WebKitа под Опен-сорс , Нокиа је најавила да је портовала WebKit на Симбиан оперативни систем и да развија прегледач заснован на њему за мобилне телефоне које покрећу С60. Веб прегледач за С60 коришћен је на Нокиа, Самсонг, ЛГ и другим Симбиан С60 телефонима. Епл је такође портовао WebKit на иОС, где је коришћен за рендеровање садржаја у оквиру веб прегледача и е-мејл софтвера на ајфон, ајпед и ајпод тач уређајима. Андроид платформа је користила WebKit (касније и његов форк Blink) као основу за свој веб-прегледач, а Палм При је најавио 2009. да је конструисао интерфеј базиран на WebKit-у. Amazon Kindle 3 садржи експириментални прегледач базиран на WebKit-у.

У јуну 2007, Епл је најавио да је WebKit портован на Windows као део Сафари-а. WebKit је такође портован на неколико Тул-китова који подржавају различите платформе, као што су ГТК+ тул-кит, Кјути окружење за рад , Адоб инегретед рантајм, Енлајтмент Фондејшн Лајбрерис(ЕФЛ), и Клутер тулкит. Кјути софтвер садржи Кјути порт у 4.4 издању. Кјути порт WebKitа је такође доступан за употребу у Конкверору од верзије 4.1. Ирис прегледач на Кјутију такође користи WebKit. ЕФЛ порт је под развојем(од стране Самуснга и ПроФјужна) са циљем употребе за станд-алон прегледаче, геџете, виџете, рич текст прегледаче. Клутер порт развијају Колабора а спонзорише Бош.

Постоји пројекат повезан са WebKitом под називом Ориџин Веб Прегледач, који омогућава мета-портовање на апстрактној платформи са циљем олакшавања портовања. Овакав порт се користи на сет-топ боксевима, ПМП и портован је на АмигаОС, АРОС и МорфОС. МорфОС 1.7 је први имао Оригин који је подржавао HTML5 медиа тагове.

Форк[уреди | уреди извор]

Априла 3, 2013. Гугл је најавио да ће произвести форк WebKitове ВебКор компоненте под нзивом Блинк. Хроме девелопери су одлучили да форкују WebKit како би омогућили већу слободу у имплементацији ВебКор особина у прегледачу без изазивања конфликата, а такође би и омогућио поједностављивање кода који није потребан Хрому. У вези са изјавом Опера веб прегледача да ће се до краја године пребацити на WebKit Кромиум базу, такође је било потврђено да ће се Опера такође пребацити на Блинк. Пратећи ову изјаву, WebKit девелопери су започели дискусију о уклањању кода специфичног за Хром из енџина како би га учинили генерално удобнијим за коришћење.

Компоненте[уреди | уреди извор]

WebCore[уреди | уреди извор]

WebCore је погон веб-прегледача и DOM библиотека за HTML и SVG развијен у оквиру пројекта WebKit. Његов комплетан изворни код је лиценциран под ГНУ нижом генералном јавном лиценцом (ЛГПЛ). WebKitово окружење за рад саставља ВебКор и ЈаваСкриптКор, омогућавајући Обџектив C програмски интерфејс C++ базираном ВебКор-овом рендеринг енџину и ЈаваСкриптКор-овом скрипт енџину, дозвољавајући им да буду лако референцирани од стране апликација базираним на Кокоа АПИ; касније верзије такође садрже и вишеплатформску C++ апстракцију.

WebKit је прошао Acid 2 и Acid 3 тестове са савршеним пиксел рендерингом и без проблема са тајмингом или смутнесом на реферисаном хардверу.

JavaScriptCore[уреди | уреди извор]

JavaScriptCore је окружење за рад који омогућава погон JavaScript-а WebKit имплементацијама, а омогућава врсте скриптовања у неким другим контекстима унутар ОС Икс-а. JavaScriptCore је оригинално изведен из КДЕ-овог погона JavaScript-а (KJS) библиотеке и PCРЕ регуларне експрешн библиотеке. Од форковања из КЈС и PCРЕ, ЈаваСкриптКор је унапређиван са многим новим опцијама и великим побољшањем у преформансама.

Јуна 2, 2008. WebKit пројекат је изјавио да је преписао JavaScriptCore као „СквирелФиш“, биткод интерпретатор. Пројекат је прерастао у СквирелФиш икстрим, најављен 18. септембра ,2008 који компајлује ЈаваСкрипт у машински код, и тиме је елиминисао потребу за JavaScript интерпретатором.

Оптимизација JIT компајлера названа ФТЛ је најављена маја 13, 2014. Она користи ЛЛВМ за генерисање оптимизованог машинског кода.

Референце[уреди | уреди извор]

Спољашње везе[уреди | уреди извор]