Veb brauzer mühərrikləri - onlar nədir və nədir. Opera yenicə WebKit-ə keçdi. Bundan nə çıxacaq

  • Tərcümə

Bir çox tərtibatçılarımız üçün, WebKit - qara qutu. Biz ona HTML, CSS, JS və bir çox təsvirlər atırıq və WebKit, birtəhər... sehrli şəkildə bizə yaxşı görünən və işləyən veb səhifə verir.
Amma əslində necə həmkarım İlya Qriqorik deyir :

Veb dəsti deyil qara qutu. Bu ağ qutudur. Həm də yalnız ağ deyil, həm də açıq Qutu.

Beləliklə, bəzi şeyləri anlamağa çalışaq:
  • WebKit nədir?
  • WebKit nə deyil?
  • WebKit WebKit brauzerləri tərəfindən necə istifadə olunur?
  • Bir çox WebKit niyə eyni deyil?
İndi, xüsusən də Operanın WebKit-ə keçməsi xəbərindən sonra biz bir çox WebKit brauzeri ilə əhatə olunmuşuq və onları nəyin birləşdirdiyini və öz yolu ilə hara getdiyini söyləmək olduqca çətindir. Aşağıda ümid edirəm ki, bu məsələyə bir qədər işıq salmağa çalışacağıq. Nəticədə, siz brauzer fərqlərini daha yaxşı müəyyən edə, səhvləri düzgün izləyiciyə təqdim edə və brauzerlər arası inkişafı daha səmərəli apara biləcəksiniz.

Standart Veb Brauzer Komponentləri

Müasir brauzerlərin bir neçə komponentini sadalayaq:
  • Təhlil (HTML, XML, CSS, Javascript təhlili)
  • Layout
  • Mətn və qrafiklərin göstərilməsi
  • Şəklin dekodlanması
  • GPU ilə qarşılıqlı əlaqə
  • Şəbəkəyə giriş
  • Aparat sürətləndirilməsi
Hansılar bütün WebKit brauzerləri üçün ümumidir? Demək olar ki, ilk ikisi.

Hər bir WebKit "portu" qalan komponentləri fərqli şəkildə həyata keçirir. Bunun nə demək olduğunu anlayaq.

WebKit portları

Çoxlu WebKit "portları" var və mən Ariya Hidayət, WebKit hakeri və texnologiyasını təmin edirəm. Sencha direktorunun bu barədə danışmaq hüququ var:

WebKit konsepsiyası ilə ən məşhur assosiasiya adətən Mac OS X-də işləyən WebKit-in Apple versiyasıdır (ilk və orijinal WebKit kitabxanası).Təxmin etdiyiniz kimi, müxtəlif interfeyslər müxtəlif yerli Mac OS X kitabxanalarından istifadə etməklə həyata keçirilir, əsasən CoreFoundation komponentində fokuslanmışdır.Məsələn, siz xüsusi kontur radiusuna malik rəngli düz düyməni təyin etsəniz, WebKit həmin düymənin harada və necə çəkiləcəyini bilir.Eyni zamanda, düymənin son göstərilməsi (istifadəçinin monitorunda piksellər kimi) ) CoreGraphics-ə düşür.

Yuxarıda qeyd etdiyim kimi, istifadə olunan CoreGraphics hər bir WebKit portu üçün unikaldır. Məsələn, Mac üçün Chrome Skia-dan istifadə edir.

Bəzi məqamlarda WebKit həm masaüstü, həm də mobil platformalara müxtəlif platformalara “köçürüldü”. Bu variasiya adətən "WebKit portu" adlanır. Safari Windows üçün Apple, CoreFoundation kitabxanasından (məhdud tətbiqetmədən) istifadə edərək Windows-da işləmək üçün müstəqil olaraq "WebKit-i daşıdı".

...baxmayaraq ki, Windows-da Safari artıq ölüdür.
Bundan əlavə, bir çox başqa "portlar" da var idi (tam siyahıya baxın). Google öz Chromium portunu yaratdı və dəstəkləməyə davam edir. Gtk+ əsasında qurulan WebKitGtk də var. Nokia (və indi onu satın almış Trolltech) QtWebKit modulu kimi məşhurlaşan WebKit Qt portunu dəstəkləyir.

Bəzi WebKit portları

  • Safari
    - OS X üçün Safari və Windows üçün Safari iki fərqli portdur
    - WebKit-in gecə quruluşu Safari üçün istifadə edilən Mac mənbə kodu "portunun" quruluşudur, yalnız daha yeni
  • Mobil Safari
    - Şəxsi filialda inkişaf etdirildi, lakin sonradan açıldı.
    - iOS üçün Chrome (Apple WebView istifadə edir; daha sonra fərq haqqında daha çox məlumat)
  • Chrome (Xrom)
    - Android üçün Chrome (birbaşa Chromium "portundan" istifadə edir)
    - Chromium həm də brauzerlər üçün əsasdır: Yandex, Sogou və tezliklə Opera.
  • Android brauzeri
    - Buraxılış zamanı mövcud olan ən son WebKit mənbə kodundan istifadə edir.
  • Daha çox portlar: Amazon Silk, Dolphin, Blackberry, QtWebKit, WebKitGTK+, The EFL port (Tizen), wxWebKit, WebKitWinCE və s.
Fərqli portlar müxtəlif vəzifələrə diqqət yetirə bilər. Mac portunun diqqət mərkəzində brauzer və əməliyyat sistemi arasında ayrılıq və göstərmə mühərrikini yerli proqramlara daxil etmək üçün Obj-C və C++ bağlamalarının təmin edilməsidir. Chromium portunun diqqəti tamamilə brauzerdədir. QtWebKit portunu göstərmə mühərriki kimi çarpaz platforma tətbiqi arxitekturası ilə birlikdə istifadə etməyi təklif edir.

Bütün WebKit brauzerlərində ortaq nə var?

Əvvəlcə bütün WebKit brauzerlərində istifadə olunan ümumi xüsusiyyətlərə nəzər salaq:

Bilirsiniz ki, gülməlidir, mən bu paraqrafı yazmağa bir neçə cəhd etdim. Və hər dəfə Chrome komandasının üzvləri mənə düzəliş edirdilər, gördüyünüz kimi...

  1. Beləliklə, ilk növbədə, WebKit HTML-i eyni şəkildə təhlil edir. Yaxşı, istisna olmaqla, Chromium hazırda HTML təhlili üçün mövzuları dəstəkləyən yeganə portdur.
  2. ... Yaxşı, lakin HTML-ni təhlil etdikdən sonra DOM ağacı eyni şəkildə qurulur. Əslində Shadow DOM yalnız Chromium portu üçün aktivdir, yəni DOM konstruksiyası dəyişir. Həmçinin fərdi elementlər üçün.
  3. …Yaxşı, WebKit pəncərə və sənəd obyektlərini hamı üçün eyni şəkildə yaradır. Doğrudur, baxmayaraq ki, onların təmin etdiyi xüsusiyyətlər və konstruksiyalar xüsusiyyət bayraqlarının istifadəsindən asılı ola bilər.
  4. ... CSS təhlili eynidir. CSS-ni yemək və onu CSSOM-a çevirmək olduqca standartdır. Bəli, Apple və digər brauzerlər köhnə -khtml- və -apple- prefikslərini dəstəklədikdə Chrome yalnız -webkit- prefikslərini dəstəkləyir.
  5. ...Layout...yerləşdirmə? Çörək və yağ kimidir. Hər yerdə eynidir, elə deyilmi? Yaxşı artıq! Subpiksel düzümü və zəngin tərtibat arifmetikası WebKit-in bir hissəsidir, lakin portdan porta fərqlənir.
  6. Super.

Deməli, çətindir.

İndi gəlin WebKit dünyasının ümumi cəhətlərini ümumiləşdirməyə çalışaq...

Hər bir WebKit portu üçün ümumi olan.

  • DOM, pəncərə, sənəd
    Az və ya çox
  • CSSOM
  • CSS təhlili, Əmlak/Dəyər
    istehsalçı prefikslərindəki fərqlər
  • HTML-nin təhlili və DOM-un qurulması
    Veb Komponentlərini unutsaq, eynidir.
  • Yerləşdirmə və yerləşdirmə
    Flexbox, Floats, blok formatlaşdırma konteksti... hər şey ümumidir
  • Chrome DevTools aka WebKit müfəttişi kimi istifadəçi interfeysi alətləri və tərtibatçı alətləri.
    Baxmayaraq ki, ötən aprel ayından etibarən Safari öz Safari Müfəttişindən, WebKit olmayan, qapalı mənbədən istifadə edir.
  • Contenteditable, pushState, File API, əksər SVG, CSS transformasiya riyaziyyatı, Web Audio API, localStorage kimi xüsusiyyətlər
    Baxmayaraq ki, həyata keçirilməsi fərqli ola bilər. Hər bir port localStorage üçün öz yaddaş sistemindən istifadə edə bilər və Web Audio API üçün fərqli audio API istifadə edə bilər.
Bir az çaşqın olur, gəlin bəzi fərqlərə baxmağa çalışaq.

İndi WebKit portları üçün ümumi olmayan nədir:

  • GPU ilə əlaqəli hər şey
    - 3D çevrilmə
    - WebGL
    - Videonun dekodlanması
  • Ekrana 2D göstərilir
    - Anti-aliasing texnologiyaları
    - SVG və CSS gradientlərinin göstərilməsi
  • Mətnin göstərilməsi və tire
  • Şəbəkə texnologiyaları (SPDY, pre-rendering, WebSocket nəqliyyatı)
  • JavaScript mühərriki
    - JavaScriptCore mühərriki WebKit deposundadır. Ancaq WebKit-də həm onun, həm də V8 üçün bağlamalar var.
  • Forma Elementlərinin göstərilməsi
  • Video və audio teqlərinin davranışı və kodek dəstəyi
  • Şəklin dekodlanması
  • Geri/irəli naviqasiya
    - Hissə pushState()
  • Ciddi Nəqliyyat Təhlükəsizliyi və İctimai Açar Sancaqları kimi SSL xüsusiyyətləri
Onlardan birinə nəzər salaq: 2D qrafika portdan asılıdır, ekrana göstərmək üçün tamamilə fərqli kitabxanalardan istifadə edirik:

Və ya daha ətraflı danışmaq üçün, bu yaxınlarda əlavə edilmiş bir xüsusiyyət: CSS.supports() css3 şərti xüsusiyyətləri aktivləşdirilməmiş win və wincairo istisna olmaqla, bütün portlar üçün aktiv edilmişdir.

İndi, biz texniki əldə edirik... pedantik olmaq vaxtıdır. Hətta yuxarıda deyilənlər tamamilə doğru deyil. Bu, əslində ümumi komponent olan WebCore-dur. WebCore HTML və SVG üçün tərtibat, göstərmə və DOM kitabxanasıdır və əsasən WebKit deyəndə insanların ağlına gələn şeydir. Həqiqətən, "WebKit" texniki cəhətdən WebCore və "portlar" arasında bağlanma təbəqəsidir, baxmayaraq ki, normal söhbətdə bu fərq böyük ölçüdə əhəmiyyətsizdir.

Diaqram kömək etməlidir:

WebKit-in bir çox komponentləri dəyişdirilə bilər (boz rəngdə göstərilir).

Məsələn, WebKit-in JavaScript mühərriki JavaScriptCore, WebKit-də standart mühərrikdir. Əvvəlcə WebKit-in KHTML çəngəl kimi başladığı günlərdən etibarən KJS-ə (KDE-dən) əsaslanır. Eyni zamanda, Chromium portu V8 mühərrikinə keçir və unikal DOM bağlamalarından istifadə edir.

Şriftlər və mətnin göstərilməsi platformanın çox böyük hissəsidir. WebKit-də mətn üçün 2 ayrı yol var: Tez və Sərt. Hər ikisi platformaya xüsusi dəstək tələb edir (port tərəfində həyata keçirilir), lakin Fast yalnız qlifləri (WebKit platforma üçün önbelleğe alır) necə blit edəcəyini bilməlidir, Kompleks isə simli göstərməyi tamamilə platforma səviyyəsinə köçürür və sadəcə "bunu çəkin, xahiş edirəm."

“WebKit sendviçə bənzəyir. Əks halda, Chromium vəziyyətində bu, daha çox taco kimidir. Veb texnologiyalarından dadlı taco.
Dmitri Qlazkov, Chrome WebKit hakeri. Veb Komponentləri və kölgə dom çempionu.

İndi ümumi baxışı genişləndirək və bir neçə port və bir neçə alt sistemə baxaq. Aşağıda beş WebKit portu var, ümumi komponentlərə baxmayaraq, hər biri üçün alət dəstinin necə fərqləndiyini qeyd edin:

Chrome (OS X) Safari (OS X) QtWebKit Android brauzeri iOS üçün Chrome
Rendering Kayak CoreGraphics QtGui Android yığını/Skia CoreGraphics
Şəbəkə Chromium şəbəkə yığını CFNetwork QtNetwork Chromium şəbəkə yığınının çəngəlləri Xrom yığını
Şriftlər Skia vasitəsilə CoreText CoreText Qt daxili Android yığını CoreText
JavaScript V8 JavaScriptCore ASC (V8 Qt-da başqa yerlərdə istifadə olunur) V8 JavaScriptCore (JITting olmadan) *

* iOS üçün Chrome haqqında qeyd. Yəqin ki, bildiyiniz kimi UIWebView istifadə edir. UIWebView-in imkanlarına görə, bu o deməkdir ki, o, yalnız Mobile Safari, JavaScriptCore (V8 deyil) və tək yivli model kimi eyni renderinq mühərrikindən istifadə edə bilər. Bununla belə, şəbəkə alt sistemi, əlfəcin sinxronizasiya infrastrukturu, omnibox, ölçülər və qəza hesabatı kimi bəzi kodlar Chromium-dan götürülmüşdür. (Həmçinin, JavaScript mobil cihazlarda o qədər nadir hallarda darboğaz olur ki, JITting kompilyatorunun olmaması minimal təsir göstərir.)

Yaxşı, bəs biz haradan gəldik?

Beləliklə, bütün WebKitlər indi tamamilə fərqlidir. Mən qorxuram.

Buna dəyməz! WebKit-in "layoutTest" testlərinin əhatə dairəsi çox böyükdür. (son hesablamada 28.000 test) və təkcə mövcud funksiyalar üçün deyil, həm də tapılan bütün reqressiyalar üçün. Əslində, siz yeni və ya "gizli" DOM/CSS/HTML-5 xüsusiyyətlərini öyrəndiyiniz zaman "layoutTest" test paketləri adətən əla minimal demoya malikdir.

Bundan əlavə, W3C test paketini standartlaşdırmaq üçün səylər göstərir. Bu o deməkdir ki, həm WebKit portlarının, həm də bütün digər brauzerlərin eyni test paketləri ilə sınaqdan keçiriləcəyini gözləyə bilərik ki, bu da bizi daha az qəribəliklərə və daha çox işləyə bilən internetə gətirib çıxaracaq. Test The Web Forward tədbirində iştirak edərək səylərini əsirgəməyən hər kəsə...təşəkkür edirəm!

Opera yenicə WebKit-ə keçdi. Bundan nə çıxacaq?

Robert Nyman və Rob Hawkes artıq bu mövzuya toxundular, lakin əlavə edəcəyəm ki, elanın vacib hissələrindən biri Opera Chromium-a keçir. Bu o deməkdir ki, WebGL, Canvas, HTML5 formaları, 2D qrafika tətbiqi, bütün bunlar indi Chrome və Opera-da eyni olacaq. Eyni API və aşağı səviyyəli tətbiqetmə. Opera Chromium-a əsaslandığından, Opera və Chrome arasında uyğunluğu yoxlamaq üçün iş yükünüzü kəsdiyinizi hiss edə bilərsiniz.
Bunu da qeyd etməliyəm Hamısı Opera brauzerləri Chromium-a keçəcək. Yəni Windows, Mac, Linux və Opera Mobile üçün Opera (tam hüquqlu mobil brauzer). Hətta nazik müştəri olan Opera Mini də indiki Presto əsaslı renderinq fermasından Chromium əsaslı fermaya keçəcək.

... və WebKit-in gecə quruluşu. Bu nədir?

Bu, Safari ilə eyni kodda işləyən WebKit-dir (bəzi daxili kitabxanalar dəyişdirilsə də). O, əsasən Apple tərəfindən idarə olunur, ona görə də davranış və xüsusiyyətlər dəsti Safari-də tapdığınızla uyğundur. Bir çox hallarda Apple, digər portların tətbiq etdiyi və ya sınaqdan keçirdiyi funksiyaları daxil etməyə gəldikdə mühafizəkardır. Hər halda, bir bənzətmə istifadə etmək üçün bunu düşünün... Safari üçün WebKit-in gecə quruluşu Chrome üçün Chromium kimidir.
  • veb brauzerlər
  • Veb inkişafı
  • Teqlər əlavə edin

    Bu yazıda biz məşhur WebKit mühərrikinə əsaslanan üç brauzerə baxacağıq. Veb brauzer seçiminə gəldikdə, istifadəçilər ən məşhur proqramlara baxmağa meyllidirlər: Google Chrome, Opera, Mozilla Firefox, Internet Explorer. Eyni zamanda bir çox insanlar unudurlar və ya bilmirlər ki, Firefox, Chrome və son zamanlar Opera açıq mənbəli layihələr əsasında yaradılıb, yəni bu proqramlar dəyişdirilə bilər.

    Bu imkan ona gətirib çıxarır ki, bir çox proqramçılar kifayət qədər maraqlı funksiyalar təklif edən məşhur brauzerlərin bir neçə analoqunu yaratmışlar. Beləliklə, bu cür proqram təminatının bir neçə nümayəndəsinə baxaq.

    Pulsuz paylanır, rus interfeysinə malikdir, Windows, Android, Mac, iOS sistemlərində işləyir. Bu brauzer on il əvvəl MyIE2 kimi tanınırdı və Internet Explorer-ə əlavə idi, lakin o vaxtdan bəri çox şey dəyişdi və indi proqram standart olaraq Webkit mühərrikindən istifadə edir.

    Ən son, 4-cü versiyada brauzer bir neçə faydalı funksiya təklif edir, onların arasında ən maraqlısı buludda məlumat saxlamaq imkanıdır. Bu, Android qaceti, Apple kampaniya məhsulu və ya masaüstü kompüter olsun, müxtəlif cihazlar arasında məlumat ötürmək üçün proqramda hesabınızdan istifadə etməyə imkan verir.

    Maxthon Cloud Browser interfeysi Chrome üslubunda hazırlansa da, daha çox funksiyaya malikdir. Yan paneldə uzantılara daxil olmaq üçün nişanlar göstərilir. Rahatdır ki, bir kliklə bütün quraşdırılmış əlavələri söndürə və ya aktivləşdirə və xüsusi veb saytından yenilərini yükləyə bilərsiniz.

    O, pulsuz paylanır, rus interfeysinə malikdir və Windows-da işləyir. Daha çox təhlükəsizlik proqram təminatının inkişaf etdiricisi kimi tanınan Comodo məhsulu. Comodo Dragon artıq bir inkişaf deyil, bir quruluşdur, çünki funksionallığı Chrome-dan çox da fərqlənmir.

    Orijinal brauzerdən çox fərq yoxdur və hamısı təhlükəsizlik məsələlərinə aiddir. Google Chrome-dan ilk əsas fərq həqiqətən inkoqnito rejimidir, Comodo Dragon unikal istifadəçi ID və HTTP-REFERRER istifadə etmir, bu da istifadəçini onlayn izləməyə imkan vermir.

    İkinci fərq Comodonun əsas biznesində - istifadəçi təhlükəsizliyindədir. Trafik ötürülməsi üçün özünün təhlükəsiz DNS serverlərinin mövcudluğunu nəzərdə tutur. Üstəlik, istifadəçinin istəyi ilə təkcə Dragon-dan deyil, həm də bütün digər proqramlardan trafik onlardan keçə bilər. Təhlükəsiz DNS serverləri Comodo-nun mülkiyyətçi veb-təhdid aşkarlama şəbəkəsi tərəfindən etibarsız kimi qeyd edilmiş saytlara girişi avtomatik bloklayır.

    O, pulsuz paylanır, rus interfeysinə malikdir və Windows-da işləyir. “Yandex.Browser” Rusiyanın Yandex şirkətinin Chromium əsasında yenicə buraxılmış brauzeridir. Bu məhsulda tərtibatçılar sadəcə Yandex xidmətlərini sürətli bağlantılar panelinə əlavə etdilər. Operada tapıla bilən "Turbo" rejimi də əlavə edildi və təkmilləşdirildi. Ümumiyyətlə, Yandex istifadəçiləri üçün pis brauzer deyil.

    Brauzer mühərriki veb səhifələrlə işləyən xüsusi proqramdır. İnternetdən yüklənmiş HTML səhifəsini emal edir və onun kodunu istifadəçilərə tanış olan təqdimata çevirir. İnternet brauzer mühərrikləri brauzerlərin özlərində, eləcə də e-poçt müştərilərində istifadə olunur. Hər veb brauzer öz unikal platformasında qurulmayıb. Onların bir çoxu məşhur və zamanla sınaqdan keçirilmiş həllərdən istifadə edir. Bu məqalə brauzerlər yaratmaq üçün hansı platformaların mövcud olduğunu və onların bir-birindən nə ilə fərqləndiyini araşdırır.

    Brauzerlər yaratmaq üçün Rendering mühərriklərindən istifadə etməyin bir çox üstünlükləri var:

    • Kod səhvlərini tapmağı və düzəltməyi asanlaşdırır.
    • Eyni anda bir neçə proqramda bir komponenti təkmilləşdirmək üçün əlverişli fürsət.
    • Proqramın qrafik interfeysinin dəyişdirilməsi prosesi sadələşdirilmişdir.
    • Müəyyən bir tərtibatçının istəklərinə və ya konkret istifadəçinin ehtiyaclarına uyğun yeni proqramlar yaratmaq asanlığı.

    Bu cür həllər çox tez-tez proqramlaşdırmada istifadə olunur: video oyunları, mürəkkəb proqramlar üçün əməliyyat sistemləri yaratarkən və s. Bəzi mütəxəssislər mühərriki təkmilləşdirmək və optimallaşdırmaq, ona yeni funksiyalar və faydalı funksiyalar təqdim etmək üzərində işləyirlər. Digərləri hazırlanmış platforma əsasında proqramları özləri yaratmaqla məşğuldurlar.

    Parlaq bir nümunə Microsoft-un Trident mühərrikidir. Yalnız bu korporasiyanın geniş çeşidli tətbiqlərində istifadə olunur. Vəqf inkişaf etdikcə törəmə layihələr də inkişaf edir.

    Hər bir həllin müsbət və mənfi tərəfləri var. Məsələn, bir çox istifadəçi Mozilla Firefox-un rəqiblərindən daha çox açıq tab ilə daha yaxşı işlədiyini görür. Bu, brauzerin əsaslandığı platformanın nailiyyətidir.

    Trident

    İstifadəçi yeni Windows əməliyyat sistemini quraşdırdıqda, qarşılaşdığı ilk veb-brauzer Internet Explorer-dir. Buna görə də, onun mühərriki baxışda ilk olaraq nəzərdən keçirilir.

    Trident və ya MSHTML, Microsoft tərəfindən ehtiyacları üçün hazırlanmış kifayət qədər köhnə proqram komponentidir. Layihə 1997-ci ildən davamlı olaraq inkişaf etdirilir. Microsoft veb brauzerində istifadə olunur - Internet Explorer, Outlook e-poçt müştərisi, Windows Explorer (fayllarla işləmək üçün proqram) və bu tərtibatçının bir çox digər proqramları.

    İstifadəçilər tərəfindən ən uğursuz brauzer motorlarından biri hesab olunur. Üçüncü tərəfin modul uzantılarını - plaginləri dəstəkləmir, bir çox İnternet səhifələrini səhv göstərir və ən sürətli işləmə sürətinə malik deyil.

    Windows 10-un buraxılması ilə Trident platforması EdgeHTML-ə çevrildi.Tərtibatçılar köhnəlmiş, uğursuz mühərriki əsas götürdülər və müasir istifadəçilərin bütün tələblərinə cavab verən yenisini yaratdılar. Qiymətləndirmələrə (proqram təminatının performans və sürət testi) əsasən, Microsoft Edge (EdgeHTML əsasında yaradılmış brauzer) Google Chrome və Mozilla Firefox brauzerlərini yaratmaq üçün istifadə edilən məşhur proqramları tutdu və hətta onları geridə qoydu.

    Gecko

    Gecko məşhur İnternet brauzeri Mozilla Firefox və bir çox başqa proqramlarda istifadə olunan mühərrikdir. Proqramın mənbə kodu sərbəst mövcuddur, yəni hər kəs tamamilə pulsuz olaraq Gecko əsasında öz brauzerini və ya e-poçt müştərisini yarada bilər.

    Geko-nun başqa bir üstünlüyü çarpaz platformadır. O, müasir əməliyyat sistemlərinin böyük əksəriyyətində işləyir: həm fərdi kompüterlər, həm də mobil qurğular üçün (yalnız Windows ƏS-də işləyən Internet Explorer-dən fərqli olaraq).

    Gecko veb-saytların yaradılması üçün istifadə edilən bütün müasir standartları və texnologiyaları dəstəkləyir. Ən populyar iki brauzer platformasından biridir. Qoşulma plaginlərini dəstəkləyir. Benchmarks və istifadəçilərin şəxsi təcrübəsi göstərir ki, bu mühərrikə əsaslanan brauzerlər ən az miqdarda fərdi kompüter resurslarını istehlak edir və çox sayda tab (məsələn, bir neçə yüz) ilə etibarlı işləyir.

    Geco əsasında məşhur Mozilla Firefox internet brauzeri, Thunderbird e-poçt müştərisi, Sunbird tapşırıq planlayıcısı, həmçinin Tor VPN texnologiyaları üçün daxili dəstəyi olan anonim veb brauzer yaradılmışdır.

    KHTML

    KDE fayl meneceri Konqueror yaratmaq üçün istifadə edilən az tanınan platforma. Linux ailəsinin əməliyyat sistemləri ilə tanış olmayan istifadəçilər üçün maraqlıdır ki, dünyanın ən populyar mühərriki bu layihə əsasında yaradılıb və bundan sonra da müzakirə olunacaq.

    WebKit

    Bu mühərrik dünyaca məşhur Apple korporasiyası tərəfindən yuxarıda qeyd olunan həll - KHTML əsasında hazırlanmışdır. 2001-ci ildə buraxılan bu layihə çox böyük inkişaf əldə etdi və dünyada ən çox istifadə edilənlərdən birinə çevrildi.

    WebKit əsasında Safari veb-brauzeri yaradılıb, standart olaraq iOS cihazlarında istifadə olunur və brauzerlər arasında populyarlıq üzrə liderdir - Google Chrome. Veb səhifələrin məzmununu emal etmək üçün müasir proqramların böyük əksəriyyəti WebKit-ə əsaslanır. Bundan əlavə, o, Valve-dən kompüter oyunlarının rəqəmsal paylanması üçün nəzərdə tutulmuş məşhur Steam proqramında istifadə olunur.

    Gecko kimi, WebKit çarpaz platformadır və bütün populyar platformalarda mükəmməl işləyir. Yüksək sabitlik və performans göstərir. Böyük populyarlığına görə genişlənmələrin böyük əksəriyyəti bu həll üçün hazırlanmışdır. Android və iOS kimi məşhur mobil platformalarda da istifadə olunur. Bu pulsuz bir mühərrikdir, yəni hər kəs öz proqramlarını yaratmaq üçün pulsuz istifadə edə bilər.

    2013-cü ildə Google-a məxsus yeni filial, Blink, WebKit-dən ayrıldı. Bu layihə Chrome 28 versiyasının (və bütün sonrakı versiyaların), eləcə də onun açıq mənbəli qardaşı Chromium-un əsasını təşkil etmişdir. Rusiyada məşhur Yandex Browser yaratmaq üçün Chromium istifadə edilmişdir. 15-ci versiyadan etibarən Opera brauzeri də Blink-ə keçdi.

    Presto

    2003-cü ildə yaradılmış Presto brauzer mühərriki Opera üçün əsas kimi istifadə edilmişdir. 10 il ərzində inkişaf etdirilmişdir. 2013-cü ildə Opera tərtibatçıları Google-dan daha güclü və populyar Blink-in xeyrinə Presto-nun istifadəsindən imtina etmək qərarına gəldilər. Hazırda layihənin inkişafı dayandırılıb.

    Məqalə faydalı oldu?

    Webkit nədir?

    Mühərrik əsasında Midori, Maxthon, Konqueror, Arora və başqa brauzerlər yaradılmışdır. Ancaq Webkit-i seçən yalnız az tanınan brauzerlər deyil. Diqqətinizə brauzerlər dünyasında iki "nəhəng" təqdim edirik - Apple-dan Safari və Google-dan Chrome (bu brauzerlər). Çətin ki, kimsə bu brauzerlərin az funksionallığına və aşağı işləmə sürətinə malik olduğunu iddia etsin. Masaüstü brauzerlərlə yanaşı, Webkit mobil platformalara da nüfuz etdi ki, bu da pulsuz proqram təminatının üstünlüklərini bir daha təsdiqləyir. iOS üçün hazırlanmış eyni Safari Mobile bu mühərrikdən uğurla istifadə edir. Android, HP WebOS və Samsung Bada platformaları üçün standart brauzerlər də Webkit üzərində qurulub.

    Bu, bir çox brauzerin əsasında hazırlanmış bir mühərrikdir. O, kifayət qədər sürətli və yüngüldür və veb mühitində qəbul edilmiş bütün standartları mükəmməl şəkildə yerinə yetirir.

    Bütün bunlarla birlikdə bu mühərrik sərbəst şəkildə paylanmış proqram təminatıdır. Brauzer tərtibatçıları arasında onun çox populyar olmasına imkan verən komponentlər bunlardır.

    Webkitin tarixi

    Ola bilsin ki, siz maraqlanırsınız: “Niyə pulsuz proqram?” Onun yaranma tarixinə nəzər salaq. Webkit-in əsas hissəsi eyni zamanda Unix ailəsi sistemlərinin qrafik mühiti üçün hazırlanmış sərbəst paylanmış mühərrikdir. Bu mühərrik KDE adlanır. Hələ 1998-ci ildə KDE üzərində işləyən proqramçılar qrupu bu qrafik mühit üçün öz brauzerini buraxmaq qərarına gəldi.

    Belə bir brauzer buraxıldı və Konqueror yaradıcıları tərəfindən adlandırıldı. Bu brauzerin əsasını təşkil edən mühərrik KHTML adlanırdı. 3 il sonra, 2001-ci ildə Apple öz brauzerini yaratmağa qərar verdi, bunun üçün KHTML mənbələrindən, həmçinin KJS JavaScript mühərrikindən istifadə etdi. Bu sintez nəticəsində Apple-ın “qanadında” Webkit layihəsi yaradıldı. Bunun əsasında 2003-cü ilin əvvəlində Apple brauzerinin ilk versiyası buraxıldı - .

    İnformasiya texnologiyaları dünyasındakı digər “canavarlar” Google da öz brauzerini yaratarkən Webkit-i əsas götürdü. Və bu, mühərrikin üstünlükləri üçün başqa bir artıdır. Google onlar üçün doğru olduğuna qərar verdiyi üçün bu, çox şey deyir. Tərtibatçıların özləri bildirdilər ki, çarxı yenidən ixtira etməmək qərara alındı, çünki Webkit şirkətin veb mühiti standartlarını dəstəkləmək üçün yüksək tələblərinə, eləcə də kifayət qədər yüksək işləmə sürətinə tam cavab verir.

    Bu gün mühərrik fəal şəkildə inkişaf etməyə davam edir və böyük perspektivlərə malikdir. Bu təəccüblü deyil, çünki həm Apple, həm də Google onu təkmilləşdirmək üçün çalışır. Və bu, rəsmi mühərrik tərtibatçılarına əlavədir. Onlar, öz növbəsində, iş prosesində olduqlarını, nəticədə məhsullarının ikinci nəslinin buraxılacağını, fərqli xüsusiyyəti ayrı-ayrı proseslərin daxili arxitekturası olacağını bildirdilər (bu gün bu yalnız) ilə həyata keçirilir.

    • Tərcümə

    Bir çox tərtibatçılarımız üçün, WebKit - qara qutu. Biz ona HTML, CSS, JS və bir çox təsvirlər atırıq və WebKit, birtəhər... sehrli şəkildə bizə yaxşı görünən və işləyən veb səhifə verir.
    Amma əslində necə həmkarım İlya Qriqorik deyir :

    Veb dəsti deyil qara qutu. Bu ağ qutudur. Həm də yalnız ağ deyil, həm də açıq Qutu.

    Beləliklə, bəzi şeyləri anlamağa çalışaq:
    • WebKit nədir?
    • WebKit nə deyil?
    • WebKit WebKit brauzerləri tərəfindən necə istifadə olunur?
    • Bir çox WebKit niyə eyni deyil?
    İndi, xüsusən də Operanın WebKit-ə keçməsi xəbərindən sonra biz bir çox WebKit brauzeri ilə əhatə olunmuşuq və onları nəyin birləşdirdiyini və öz yolu ilə hara getdiyini söyləmək olduqca çətindir. Aşağıda ümid edirəm ki, bu məsələyə bir qədər işıq salmağa çalışacağıq. Nəticədə, siz brauzer fərqlərini daha yaxşı müəyyən edə, səhvləri düzgün izləyiciyə təqdim edə və brauzerlər arası inkişafı daha səmərəli apara biləcəksiniz.

    Standart Veb Brauzer Komponentləri

    Müasir brauzerlərin bir neçə komponentini sadalayaq:
    • Təhlil (HTML, XML, CSS, Javascript təhlili)
    • Layout
    • Mətn və qrafiklərin göstərilməsi
    • Şəklin dekodlanması
    • GPU ilə qarşılıqlı əlaqə
    • Şəbəkəyə giriş
    • Aparat sürətləndirilməsi
    Hansılar bütün WebKit brauzerləri üçün ümumidir? Demək olar ki, ilk ikisi.

    Hər bir WebKit "portu" qalan komponentləri fərqli şəkildə həyata keçirir. Bunun nə demək olduğunu anlayaq.

    WebKit portları

    Çoxlu WebKit "portları" var və mən Ariya Hidayət, WebKit hakeri və texnologiyasını təmin edirəm. Sencha direktorunun bu barədə danışmaq hüququ var:

    WebKit konsepsiyası ilə ən məşhur assosiasiya adətən Mac OS X-də işləyən WebKit-in Apple versiyasıdır (ilk və orijinal WebKit kitabxanası).Təxmin etdiyiniz kimi, müxtəlif interfeyslər müxtəlif yerli Mac OS X kitabxanalarından istifadə etməklə həyata keçirilir, əsasən CoreFoundation komponentində fokuslanmışdır.Məsələn, siz xüsusi kontur radiusuna malik rəngli düz düyməni təyin etsəniz, WebKit həmin düymənin harada və necə çəkiləcəyini bilir.Eyni zamanda, düymənin son göstərilməsi (istifadəçinin monitorunda piksellər kimi) ) CoreGraphics-ə düşür.

    Yuxarıda qeyd etdiyim kimi, istifadə olunan CoreGraphics hər bir WebKit portu üçün unikaldır. Məsələn, Mac üçün Chrome Skia-dan istifadə edir.

    Bəzi məqamlarda WebKit həm masaüstü, həm də mobil platformalara müxtəlif platformalara “köçürüldü”. Bu variasiya adətən "WebKit portu" adlanır. Safari Windows üçün Apple, CoreFoundation kitabxanasından (məhdud tətbiqetmədən) istifadə edərək Windows-da işləmək üçün müstəqil olaraq "WebKit-i daşıdı".

    ...baxmayaraq ki, Windows-da Safari artıq ölüdür.
    Bundan əlavə, bir çox başqa "portlar" da var idi (tam siyahıya baxın). Google öz Chromium portunu yaratdı və dəstəkləməyə davam edir. Gtk+ əsasında qurulan WebKitGtk də var. Nokia (və indi onu satın almış Trolltech) QtWebKit modulu kimi məşhurlaşan WebKit Qt portunu dəstəkləyir.

    Bəzi WebKit portları

    • Safari
      - OS X üçün Safari və Windows üçün Safari iki fərqli portdur
      - WebKit-in gecə quruluşu Safari üçün istifadə edilən Mac mənbə kodu "portunun" quruluşudur, yalnız daha yeni
    • Mobil Safari
      - Şəxsi filialda inkişaf etdirildi, lakin sonradan açıldı.
      - iOS üçün Chrome (Apple WebView istifadə edir; daha sonra fərq haqqında daha çox məlumat)
    • Chrome (Xrom)
      - Android üçün Chrome (birbaşa Chromium "portundan" istifadə edir)
      - Chromium həm də brauzerlər üçün əsasdır: Yandex, Sogou və tezliklə Opera.
    • Android brauzeri
      - Buraxılış zamanı mövcud olan ən son WebKit mənbə kodundan istifadə edir.
    • Daha çox portlar: Amazon Silk, Dolphin, Blackberry, QtWebKit, WebKitGTK+, The EFL port (Tizen), wxWebKit, WebKitWinCE və s.
    Fərqli portlar müxtəlif vəzifələrə diqqət yetirə bilər. Mac portunun diqqət mərkəzində brauzer və əməliyyat sistemi arasında ayrılıq və göstərmə mühərrikini yerli proqramlara daxil etmək üçün Obj-C və C++ bağlamalarının təmin edilməsidir. Chromium portunun diqqəti tamamilə brauzerdədir. QtWebKit portunu göstərmə mühərriki kimi çarpaz platforma tətbiqi arxitekturası ilə birlikdə istifadə etməyi təklif edir.

    Bütün WebKit brauzerlərində ortaq nə var?

    Əvvəlcə bütün WebKit brauzerlərində istifadə olunan ümumi xüsusiyyətlərə nəzər salaq:

    Bilirsiniz ki, gülməlidir, mən bu paraqrafı yazmağa bir neçə cəhd etdim. Və hər dəfə Chrome komandasının üzvləri mənə düzəliş edirdilər, gördüyünüz kimi...

    1. Beləliklə, ilk növbədə, WebKit HTML-i eyni şəkildə təhlil edir. Yaxşı, istisna olmaqla, Chromium hazırda HTML təhlili üçün mövzuları dəstəkləyən yeganə portdur.
    2. ... Yaxşı, lakin HTML-ni təhlil etdikdən sonra DOM ağacı eyni şəkildə qurulur. Əslində Shadow DOM yalnız Chromium portu üçün aktivdir, yəni DOM konstruksiyası dəyişir. Həmçinin fərdi elementlər üçün.
    3. …Yaxşı, WebKit pəncərə və sənəd obyektlərini hamı üçün eyni şəkildə yaradır. Doğrudur, baxmayaraq ki, onların təmin etdiyi xüsusiyyətlər və konstruksiyalar xüsusiyyət bayraqlarının istifadəsindən asılı ola bilər.
    4. ... CSS təhlili eynidir. CSS-ni yemək və onu CSSOM-a çevirmək olduqca standartdır. Bəli, Apple və digər brauzerlər köhnə -khtml- və -apple- prefikslərini dəstəklədikdə Chrome yalnız -webkit- prefikslərini dəstəkləyir.
    5. ...Layout...yerləşdirmə? Çörək və yağ kimidir. Hər yerdə eynidir, elə deyilmi? Yaxşı artıq! Subpiksel düzümü və zəngin tərtibat arifmetikası WebKit-in bir hissəsidir, lakin portdan porta fərqlənir.
    6. Super.

    Deməli, çətindir.

    İndi gəlin WebKit dünyasının ümumi cəhətlərini ümumiləşdirməyə çalışaq...

    Hər bir WebKit portu üçün ümumi olan.

    • DOM, pəncərə, sənəd
      Az və ya çox
    • CSSOM
    • CSS təhlili, Əmlak/Dəyər
      istehsalçı prefikslərindəki fərqlər
    • HTML-nin təhlili və DOM-un qurulması
      Veb Komponentlərini unutsaq, eynidir.
    • Yerləşdirmə və yerləşdirmə
      Flexbox, Floats, blok formatlaşdırma konteksti... hər şey ümumidir
    • Chrome DevTools aka WebKit müfəttişi kimi istifadəçi interfeysi alətləri və tərtibatçı alətləri.
      Baxmayaraq ki, ötən aprel ayından etibarən Safari öz Safari Müfəttişindən, WebKit olmayan, qapalı mənbədən istifadə edir.
    • Contenteditable, pushState, File API, əksər SVG, CSS transformasiya riyaziyyatı, Web Audio API, localStorage kimi xüsusiyyətlər
      Baxmayaraq ki, həyata keçirilməsi fərqli ola bilər. Hər bir port localStorage üçün öz yaddaş sistemindən istifadə edə bilər və Web Audio API üçün fərqli audio API istifadə edə bilər.
    Bir az çaşqın olur, gəlin bəzi fərqlərə baxmağa çalışaq.

    İndi WebKit portları üçün ümumi olmayan nədir:

    • GPU ilə əlaqəli hər şey
      - 3D çevrilmə
      - WebGL
      - Videonun dekodlanması
    • Ekrana 2D göstərilir
      - Anti-aliasing texnologiyaları
      - SVG və CSS gradientlərinin göstərilməsi
    • Mətnin göstərilməsi və tire
    • Şəbəkə texnologiyaları (SPDY, pre-rendering, WebSocket nəqliyyatı)
    • JavaScript mühərriki
      - JavaScriptCore mühərriki WebKit deposundadır. Ancaq WebKit-də həm onun, həm də V8 üçün bağlamalar var.
    • Forma Elementlərinin göstərilməsi
    • Video və audio teqlərinin davranışı və kodek dəstəyi
    • Şəklin dekodlanması
    • Geri/irəli naviqasiya
      - Hissə pushState()
    • Ciddi Nəqliyyat Təhlükəsizliyi və İctimai Açar Sancaqları kimi SSL xüsusiyyətləri
    Onlardan birinə nəzər salaq: 2D qrafika portdan asılıdır, ekrana göstərmək üçün tamamilə fərqli kitabxanalardan istifadə edirik:

    Və ya daha ətraflı danışmaq üçün, bu yaxınlarda əlavə edilmiş bir xüsusiyyət: CSS.supports() css3 şərti xüsusiyyətləri aktivləşdirilməmiş win və wincairo istisna olmaqla, bütün portlar üçün aktiv edilmişdir.

    İndi, biz texniki əldə edirik... pedantik olmaq vaxtıdır. Hətta yuxarıda deyilənlər tamamilə doğru deyil. Bu, əslində ümumi komponent olan WebCore-dur. WebCore HTML və SVG üçün tərtibat, göstərmə və DOM kitabxanasıdır və əsasən WebKit deyəndə insanların ağlına gələn şeydir. Həqiqətən, "WebKit" texniki cəhətdən WebCore və "portlar" arasında bağlanma təbəqəsidir, baxmayaraq ki, normal söhbətdə bu fərq böyük ölçüdə əhəmiyyətsizdir.

    Diaqram kömək etməlidir:

    WebKit-in bir çox komponentləri dəyişdirilə bilər (boz rəngdə göstərilir).

    Məsələn, WebKit-in JavaScript mühərriki JavaScriptCore, WebKit-də standart mühərrikdir. Əvvəlcə WebKit-in KHTML çəngəl kimi başladığı günlərdən etibarən KJS-ə (KDE-dən) əsaslanır. Eyni zamanda, Chromium portu V8 mühərrikinə keçir və unikal DOM bağlamalarından istifadə edir.

    Şriftlər və mətnin göstərilməsi platformanın çox böyük hissəsidir. WebKit-də mətn üçün 2 ayrı yol var: Tez və Sərt. Hər ikisi platformaya xüsusi dəstək tələb edir (port tərəfində həyata keçirilir), lakin Fast yalnız qlifləri (WebKit platforma üçün önbelleğe alır) necə blit edəcəyini bilməlidir, Kompleks isə simli göstərməyi tamamilə platforma səviyyəsinə köçürür və sadəcə "bunu çəkin, xahiş edirəm."

    “WebKit sendviçə bənzəyir. Əks halda, Chromium vəziyyətində bu, daha çox taco kimidir. Veb texnologiyalarından dadlı taco.
    Dmitri Qlazkov, Chrome WebKit hakeri. Veb Komponentləri və kölgə dom çempionu.

    İndi ümumi baxışı genişləndirək və bir neçə port və bir neçə alt sistemə baxaq. Aşağıda beş WebKit portu var, ümumi komponentlərə baxmayaraq, hər biri üçün alət dəstinin necə fərqləndiyini qeyd edin:

    Chrome (OS X) Safari (OS X) QtWebKit Android brauzeri iOS üçün Chrome
    Rendering Kayak CoreGraphics QtGui Android yığını/Skia CoreGraphics
    Şəbəkə Chromium şəbəkə yığını CFNetwork QtNetwork Chromium şəbəkə yığınının çəngəlləri Xrom yığını
    Şriftlər Skia vasitəsilə CoreText CoreText Qt daxili Android yığını CoreText
    JavaScript V8 JavaScriptCore ASC (V8 Qt-da başqa yerlərdə istifadə olunur) V8 JavaScriptCore (JITting olmadan) *

    * iOS üçün Chrome haqqında qeyd. Yəqin ki, bildiyiniz kimi UIWebView istifadə edir. UIWebView-in imkanlarına görə, bu o deməkdir ki, o, yalnız Mobile Safari, JavaScriptCore (V8 deyil) və tək yivli model kimi eyni renderinq mühərrikindən istifadə edə bilər. Bununla belə, şəbəkə alt sistemi, əlfəcin sinxronizasiya infrastrukturu, omnibox, ölçülər və qəza hesabatı kimi bəzi kodlar Chromium-dan götürülmüşdür. (Həmçinin, JavaScript mobil cihazlarda o qədər nadir hallarda darboğaz olur ki, JITting kompilyatorunun olmaması minimal təsir göstərir.)

    Yaxşı, bəs biz haradan gəldik?

    Beləliklə, bütün WebKitlər indi tamamilə fərqlidir. Mən qorxuram.

    Buna dəyməz! WebKit-in "layoutTest" testlərinin əhatə dairəsi çox böyükdür. (son hesablamada 28.000 test) və təkcə mövcud funksiyalar üçün deyil, həm də tapılan bütün reqressiyalar üçün. Əslində, siz yeni və ya "gizli" DOM/CSS/HTML-5 xüsusiyyətlərini öyrəndiyiniz zaman "layoutTest" test paketləri adətən əla minimal demoya malikdir.

    Bundan əlavə, W3C test paketini standartlaşdırmaq üçün səylər göstərir. Bu o deməkdir ki, həm WebKit portlarının, həm də bütün digər brauzerlərin eyni test paketləri ilə sınaqdan keçiriləcəyini gözləyə bilərik ki, bu da bizi daha az qəribəliklərə və daha çox işləyə bilən internetə gətirib çıxaracaq. Test The Web Forward tədbirində iştirak edərək səylərini əsirgəməyən hər kəsə...təşəkkür edirəm!

    Opera yenicə WebKit-ə keçdi. Bundan nə çıxacaq?

    Robert Nyman və Rob Hawkes artıq bu mövzuya toxundular, lakin əlavə edəcəyəm ki, elanın vacib hissələrindən biri Opera Chromium-a keçir. Bu o deməkdir ki, WebGL, Canvas, HTML5 formaları, 2D qrafika tətbiqi, bütün bunlar indi Chrome və Opera-da eyni olacaq. Eyni API və aşağı səviyyəli tətbiqetmə. Opera Chromium-a əsaslandığından, Opera və Chrome arasında uyğunluğu yoxlamaq üçün iş yükünüzü kəsdiyinizi hiss edə bilərsiniz.
    Bunu da qeyd etməliyəm Hamısı Opera brauzerləri Chromium-a keçəcək. Yəni Windows, Mac, Linux və Opera Mobile üçün Opera (tam hüquqlu mobil brauzer). Hətta nazik müştəri olan Opera Mini də indiki Presto əsaslı renderinq fermasından Chromium əsaslı fermaya keçəcək.

    ... və WebKit-in gecə quruluşu. Bu nədir?

    Bu, Safari ilə eyni kodda işləyən WebKit-dir (bəzi daxili kitabxanalar dəyişdirilsə də). O, əsasən Apple tərəfindən idarə olunur, ona görə də davranış və xüsusiyyətlər dəsti Safari-də tapdığınızla uyğundur. Bir çox hallarda Apple, digər portların tətbiq etdiyi və ya sınaqdan keçirdiyi funksiyaları daxil etməyə gəldikdə mühafizəkardır. Hər halda, bir bənzətmə istifadə etmək üçün bunu düşünün... Safari üçün WebKit-in gecə quruluşu Chrome üçün Chromium kimidir. Teqlər əlavə edin