กลับไปหน้าบทความ

อ่าน 16 นาที

เว็บคิท

WebKitคือเอนจินสำหรับประมวลผลเว็บเบราว์เซอร์ซึ่งใช้เป็นหลักในเว็บเบราว์เซอร์Safari ของ Apple รวมถึงเว็บเบราว์เซอร์เกือบทั้งหมดบนiOSและiPadOSนอกจากนี้ WebKit ยังถูกใช้ใน...

เว็บคิท

เว็บคิท
ผู้เขียนต้นฉบับบริษัทแอปเปิล อิงค์[ 1 ] [ 2 ]
นักพัฒนาบริษัท Apple Inc., Adobe Systems , Sony , KDE , Igaliaและอื่นๆ
ปล่อย
  • 4 พฤศจิกายน พ.ศ. 2541 (เปิดตัว KHTML) ( 4 พฤศจิกายน 1998 )
  • 7 มิถุนายน 2548 (อ้างอิงจาก WebKit) ( 7 มิถุนายน 2548 )
รุ่นทดลองใช้งาน
กลางคืน[ 3 ]
เขียนเป็นC++ [ 4 ]
ระบบปฏิบัติการmacOS , iOS , Linux , [ 5 ] Microsoft Windows [ 6 ] [ 7 ]
พิมพ์เครื่องมือค้นหาเบราว์เซอร์
ใบอนุญาตLGPL (เอ็นจิ้นการเรนเดอร์, เอ็นจิ้น JavaScript), BSD 2-Clause (การสนับสนุนเพิ่มเติมจาก Apple) [ 8 ]
เว็บไซต์webkit.org
ที่เก็บข้อมูลgithub.com/WebKit/WebKit

WebKitคือเอนจินสำหรับประมวลผลเว็บเบราว์เซอร์ซึ่งใช้เป็นหลักในเว็บเบราว์เซอร์Safari ของ Apple รวมถึงเว็บเบราว์เซอร์เกือบทั้งหมดบนiOSและiPadOSนอกจากนี้ WebKit ยังถูกใช้ใน เครื่องเล่นเกม PlayStationตั้งแต่รุ่น PS3 เป็นต้นไป ระบบปฏิบัติการมือถือ Tizenเครื่องอ่านอีบุ๊ก Amazon Kindle เว็บเบราว์เซอร์ ในเครื่องเล่นเกม Nintendoตั้งแต่รุ่น 3DS เป็นต้นไปGNOME Webและ BlackBerry Browser ที่เลิกใช้งานไปแล้ว

WebKit เริ่มต้นจากการแยกสาขาของ ไลบรารี KHTMLและKJSจากKDE [ 1 ] [ 9 ]และได้รับการพัฒนาต่อยอดโดย ผู้ร่วมพัฒนา KDE , Apple , Google , Nokia [ 9 ] Bitstream , BlackBerry, Sony , Igaliaและอื่นๆ[ 10 ] WebKit รองรับmacOS , Windows, Linuxและระบบปฏิบัติการที่คล้าย Unix อื่นๆ [ 11 ] เมื่อวันที่ 3เมษายน 2556 Google ประกาศว่าได้แยกสาขา WebCore ซึ่งเป็นส่วนประกอบของ WebKit เพื่อนำไปใช้ในGoogle Chrome เวอร์ชันในอนาคต ภายใต้ชื่อBlink [ 12 ] [ 13 ]ตั้งแต่เวอร์ชัน 15 ในเดือนพฤษภาคม 2556 เว็บเบราว์เซอร์ Operaได้ยกเลิกเอ็นจิ้นการจัดวาง Presto ของตนเองและหันมาใช้ WebKit ที่ Google นำมาใช้ในโครงการ Chromium แทน

เอ็นจิ้น JavaScriptของมันคือ JavaScriptCore ซึ่งยังขับเคลื่อนรันไทม์ JS ฝั่งเซิร์ฟเวอร์ของBun อีกด้วย [ 14 ]ซึ่งแตกต่างจากV8ที่ใช้โดยNode.js , DenoและBlink อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเค ชัน (API) C++ ของ WebKit มีชุดคลาสเพื่อแสดง เนื้อหา เว็บในหน้าต่าง และใช้งานคุณสมบัติของเบราว์เซอร์ เช่น การติดตามลิงก์เมื่อผู้ใช้คลิก การจัดการรายการย้อนกลับ-ไปข้างหน้า และการจัดการประวัติของหน้าที่เข้าชมล่าสุด

WebKit เป็นโอเพนซอร์สและสามารถใช้งานได้ภายใต้ใบอนุญาตBSD 2-Clause [ 15 ] [ 8 ]ยกเว้น ส่วนประกอบ WebCoreและJavaScriptCoreซึ่งสามารถใช้งานได้ภายใต้ใบอนุญาต GNU Lesser General Public Licenseณ วันที่ 7 มีนาคม 2013 WebKit เป็นเครื่องหมายการค้าของ Apple ซึ่งจดทะเบียนกับสำนักงานสิทธิบัตรและเครื่องหมายการค้าของสหรัฐอเมริกา[ 16 ]

ต้นกำเนิด

โค้ดที่จะกลายเป็น WebKit เริ่มต้นในปี 1998 ในฐานะ เอ็นจิ้นการจัดวางเลย์เอาต์ KDE HTML ( KHTML ) และ เอ็นจิ้น JavaScript KDE ( KJS ) โครงการ WebKit เริ่มต้นขึ้นภายใน Apple โดย Lisa Melton เมื่อวันที่ 25 มิถุนายน 2001 [ 17 ]โดยแยกออกมาจากKHTMLและKJS Melton อธิบายในอีเมลถึงนักพัฒนา KDE [ 1 ]ว่าKHTMLและKJSช่วยให้การพัฒนาทำได้ง่ายกว่าเทคโนโลยีอื่นๆ ที่มีอยู่ เนื่องจากมีขนาดเล็ก (น้อยกว่า 140,000 บรรทัดของโค้ด ) ออกแบบอย่างสะอาดตา และเป็นไปตามมาตรฐาน KHTML และ KJS ถูกพอร์ตไปยังmacOSด้วยความช่วยเหลือของไลบรารี อะแดปเตอร์ และเปลี่ยนชื่อเป็น WebCore และ JavaScriptCore [ 1 ] JavaScriptCore ได้รับการประกาศในอีเมลถึงรายชื่อผู้รับจดหมาย ของ KDE ในเดือนมิถุนายน 2002 พร้อมกับการเปิดตัวการเปลี่ยนแปลงครั้งแรกของ Apple [ 18 ]

ตามที่ Apple ระบุ การเปลี่ยนแปลงบางอย่างที่ต้องใช้กลยุทธ์การพัฒนาที่แตกต่างกันนั้นเกี่ยวข้องกับคุณสมบัติเฉพาะของ macOS ซึ่งไม่มีอยู่ใน KHTML ของ KDE เช่นObjective-C ; KWQ (ออกเสียงว่า "quack") ซึ่งเป็นการใช้งานชุดย่อยของ Qt ที่จำเป็นเพื่อให้ KHTML ทำงานบน macOS ซึ่งเขียนด้วย Objective C++; และการเรียกใช้ macOS [ 19 ]

การพัฒนาแบบแยกส่วน

การแลกเปลี่ยนโค้ดระหว่าง WebCore และ KHTML กลายเป็นเรื่องยากขึ้นเรื่อยๆ เนื่องจากฐานโค้ดมีความแตกต่างกัน เพราะทั้งสองโปรเจกต์ใช้วิธีการเขียนโค้ดที่แตกต่างกันและมีวิธีการแบ่งปันโค้ดที่แตกต่างกัน[ 20 ]ในบางช่วง นักพัฒนา KHTML กล่าวว่าพวกเขาไม่น่าจะยอมรับการเปลี่ยนแปลงของ Apple และอ้างว่าความสัมพันธ์ระหว่างทั้งสองกลุ่มเป็น "ความล้มเหลวที่ขมขื่น" [ 21 ]พวกเขาอ้างว่า Apple ส่งการเปลี่ยนแปลงในรูปแบบแพตช์ขนาดใหญ่ที่มีการเปลี่ยนแปลงหลายอย่างพร้อมเอกสารประกอบที่ไม่เพียงพอ ซึ่งมักเกี่ยวข้องกับการเพิ่มโค้ดในอนาคต ดังนั้นแพตช์เหล่านี้จึงยากสำหรับ นักพัฒนา KDEในการรวมกลับเข้าไปใน KHTML [ 22 ]นอกจากนี้ Apple ยังเรียกร้องให้นักพัฒนาลงนามในข้อตกลงการไม่เปิดเผยข้อมูลก่อนที่จะดูซอร์สโค้ดของ Apple และถึงกระนั้น พวกเขาก็ไม่สามารถเข้าถึงฐานข้อมูลบั๊กของ Apple ได้[ 23 ]

ในช่วงระยะเวลา "การหย่าร้าง" ที่เป็นข่าวโด่งดัง Kurt Pfeifle ( pipitas ) นักพัฒนา KDE ได้โพสต์บทความอ้างว่านักพัฒนา KHTML สามารถนำการปรับปรุง Safari หลายอย่าง (แต่ไม่ใช่ทั้งหมด) จาก WebCore มาใช้ใน KHTML ได้สำเร็จ และพวกเขารู้สึกขอบคุณเสมอสำหรับการปรับปรุงที่มาจาก Apple และยังคงเป็นเช่นนั้น บทความยังระบุด้วยว่า Apple ได้เริ่มติดต่อกับนักพัฒนา KHTML เพื่อหารือเกี่ยวกับการปรับปรุงความสัมพันธ์และความร่วมมือในอนาคต[ 24 ]ในความเป็นจริง โครงการ KDE สามารถรวมการเปลี่ยนแปลงเหล่านี้บางส่วนเพื่อปรับปรุงความเร็วในการแสดงผลของ KHTML และเพิ่มคุณสมบัติต่างๆ รวมถึงการปฏิบัติตามการทดสอบการแสดงผลAcid2 [ 25 ]

หลังจากมีข่าวเกี่ยวกับการแยกสาขาออกมา Apple ได้เผยแพร่ซอร์สโค้ดของ WebKit ในที่เก็บควบคุมการแก้ไข สาธารณะ [ 26 ]

ทีม WebKit ยังได้ย้อนกลับการเปลี่ยนแปลงเฉพาะของ Apple หลายอย่างในโค้ดเบส WebKit ดั้งเดิม และนำเลเยอร์นามธรรมเฉพาะแพลตฟอร์มมาใช้ ทำให้การส่งโค้ดการเรนเดอร์หลักไปยังแพลตฟอร์มอื่นทำได้ง่ายขึ้นอย่างมาก[ 27 ]

ในเดือนกรกฎาคม พ.ศ. 2550 Ars Technicaรายงานว่าทีม KDE จะเปลี่ยนจาก KHTML ไปใช้ WebKit [ 28 ]แต่หลังจากบูรณาการมาหลายปี KDE Development Platform เวอร์ชัน 4.5.0 ก็ได้รับการเผยแพร่ในเดือนสิงหาคม พ.ศ. 2553 โดยรองรับทั้ง WebKit และ KHTML และการพัฒนา KHTML ก็ดำเนินต่อไปจนถึงปี พ.ศ. 2559 ก่อนที่จะยุติอย่างเป็นทางการในปี พ.ศ. 2566 [ 29 ] [ 30 ]

การเปิดเผยซอร์สโค้ด

เมื่อวันที่ 7 มิถุนายน พ.ศ. 2548 Dave Hyatt นักพัฒนา Safari ได้ประกาศในบล็อก ของเขา ว่า Apple กำลังเปิดซอร์สโค้ด WebKit (ก่อนหน้านี้มีเพียง WebCore และ JavaScriptCore เท่านั้นที่เป็นโอเพนซอร์ส) และเปิดให้เข้าถึง โครงสร้าง การควบคุมเวอร์ชัน ของ WebKit และตัวติดตามปัญหา[ 26 ]

ในช่วงกลางเดือนธันวาคม พ.ศ. 2548 การสนับสนุนScalable Vector Graphics (SVG) ได้ถูกรวมเข้ากับการสร้างมาตรฐาน[ 31 ]

ส่วนประกอบ JavaScriptCore และ WebCore ของ WebKit อยู่ภายใต้ใบอนุญาต GNU Lesser General Public License ในขณะที่ส่วนที่เหลือของ WebKit อยู่ภายใต้ใบอนุญาต BSD 2-Clause [ 8 ]

การพัฒนาเพิ่มเติม

ตั้งแต่ต้นปี 2550 ทีมพัฒนาได้เริ่มนำ ส่วนขยาย Cascading Style Sheets (CSS) มาใช้ ซึ่งรวมถึงแอนิเมชันการเปลี่ยนภาพ และการแปลงทั้งแบบ 2 มิติและ 3 มิติ[ 32 ]ส่วนขยายดังกล่าวได้รับการเผยแพร่เป็นร่างงานให้กับWorld Wide Web Consortium (W3C) ในปี 2552 เพื่อการกำหนดมาตรฐาน[ 33 ]

ในเดือนพฤศจิกายน พ.ศ. 2550 โครงการได้ประกาศว่าได้เพิ่มการสนับสนุนคุณสมบัติสื่อของร่าง ข้อกำหนด HTML5ซึ่งอนุญาตให้วิดีโอฝังตัวแสดงผลและควบคุมสคริปต์ใน WebKit ได้โดยตรง[ 34 ]

เมื่อวันที่ 2 มิถุนายน พ.ศ. 2551 โครงการ WebKit ประกาศว่าได้เขียน JavaScriptCore ใหม่เป็น "SquirrelFish" ซึ่งเป็นตัวแปลไบต์โค้ด[ 35 ] [ 36 ]โครงการนี้พัฒนาต่อยอดเป็น SquirrelFish Extreme (ย่อว่า SFX) ซึ่งประกาศเมื่อวันที่ 18 กันยายน พ.ศ. 2551 โดยจะคอมไพล์ JavaScript เป็นโค้ดเครื่องจักร แบบเนทีฟ ทำให้ไม่จำเป็นต้องใช้ตัวแปลไบต์โค้ดอีกต่อไป จึงทำให้การประมวลผล JavaScript เร็วขึ้น[ 37 ]ในตอนแรก สถาปัตยกรรมโปรเซสเซอร์ที่รองรับสำหรับ SFX มีเพียงx86 เท่านั้น แต่ในช่วงปลายเดือนมกราคม พ.ศ. 2552 SFX ได้ถูกเปิดใช้งานสำหรับ macOS บนx86-64เนื่องจากผ่านการทดสอบทั้งหมดบนแพลตฟอร์มดังกล่าว[ 38 ]

เว็บคิท2

เมื่อวันที่ 8 เมษายน 2553 มีการประกาศโครงการชื่อ WebKit2 เพื่อออกแบบ WebKit ใหม่ โดยมีเป้าหมายเพื่อแยกส่วนประกอบที่ให้ การจัดวาง และแสดงผลหน้าเว็บออกจากอินเทอร์เฟซหรือเชลล์แอปพลิเคชันโดยรอบอย่างชัดเจน สร้างสถานการณ์ที่ "เนื้อหาเว็บ (JavaScript, HTML, การจัดวาง ฯลฯ) อยู่ในกระบวนการที่แยกต่างหากจาก UI ของแอปพลิเคชัน" การแยกส่วนนี้มีจุดประสงค์เพื่อให้การนำกลับมาใช้ใหม่ใน WebKit2 ง่ายกว่าใน WebKit WebKit2 มี "การเปลี่ยนแปลง API ที่ไม่เข้ากันกับ WebKit เดิม" ซึ่งเป็นแรงจูงใจให้เปลี่ยนชื่อ[ 39 ]

เป้าหมายของ WebKit2 ถูกตั้งค่าเป็น Linux, macOS, Windows, GTKและMeeGo -Harmattan [ 40 ] [ 41 ] Safari สำหรับ macOS เปลี่ยนไปใช้ API ใหม่ตั้งแต่เวอร์ชัน 5.1 [ 42 ] Safari สำหรับ iOS เปลี่ยนไปใช้ WebKit2 ตั้งแต่ iOS 8 [ 43 ]

WebKit API ดั้งเดิมได้รับการเปลี่ยนชื่อเป็น WebKitLegacy API [ 44 ] WebKit2 API ได้รับการเปลี่ยนชื่อเป็น WebKit API ธรรมดา[ 45 ]

ใช้

สัดส่วนการใช้งานเว็บเบราว์เซอร์ตามข้อมูลจากStatCounterปี 2009–2025

WebKit ถูกใช้เป็นเอนจินการเรนเดอร์ภายในSafariและถูกใช้โดยเว็บเบราว์เซอร์ChromeของGoogle บน Windows, macOS และ Android (ก่อนเวอร์ชัน 4.4 KitKat) Chrome ใช้เฉพาะ WebCore และมีเอนจิน JavaScript ของตัวเอง ชื่อV8และระบบมัลติ โปรเซส [ 46 ] Chrome สำหรับiOSยังคงใช้ WebKit เนื่องจาก Apple กำหนดให้เว็บเบราว์เซอร์บนแพลตฟอร์มนั้นต้องใช้ WebKit [ 47 ]แอปพลิเคชันอื่นๆ บน macOS และ iOS ใช้ WebKit เช่น ไคลเอนต์อีเมลMail ของ Apple, App Store และ Entourageเวอร์ชันปี 2008 ซึ่งเป็นโปรแกรมจัดการข้อมูลส่วนบุคคลของ Microsoft โดยทั้งสอง แอปพลิเคชันใช้ WebKit ในการเรนเดอร์เนื้อหา HTML

ฐานติดตั้ง

มีการสร้างเว็บเบราว์เซอร์ใหม่โดยใช้ WebKit เช่นเบราว์เซอร์S60 [ 48 ]บนโทรศัพท์มือถือSymbian , BlackBerry Browser (เวอร์ชัน 6.0+), Midori , เบราว์เซอร์Chrome [ 49 ] [ 50 ]เว็บ เบราว์เซอร์ Androidก่อนเวอร์ชัน 4.4 KitKat และเบราว์เซอร์ที่ใช้ในซอฟต์แวร์ระบบ PlayStation 3ตั้งแต่เวอร์ชัน 4.10 [ 51 ]เว็บเบราว์เซอร์ Rekonq ของ KDE และPlasma Workspacesก็ใช้ WebKit เป็นเอ็นจิ้นการเรนเดอร์เว็บแบบเนทีฟเช่นกัน WebKit ได้รับการนำมาใช้เป็นเอ็นจิ้นการเรนเดอร์ในOmniWeb , iCab , Web (เดิมชื่อ Epiphany) และSleipnirโดยแทนที่เอ็นจิ้นการเรนเดอร์ดั้งเดิม GNOME's Web รองรับทั้งGeckoและ WebKit อยู่ระยะหนึ่ง แต่ทีมงานตัดสินใจว่าวงจรการวางจำหน่ายและแผนการพัฒนาในอนาคตของ Gecko จะทำให้การสนับสนุนต่อไปยุ่งยากเกินไป[ 52 ] webOSใช้ WebKit เป็นพื้นฐานของรันไทม์แอปพลิเคชัน[ 53 ] WebKit ถูกใช้เพื่อแสดงผล HTML และรัน JavaScript ใน แพลตฟอร์มแอปพลิเคชัน Adobe Integrated RuntimeในAdobe Creative Suite CS5 WebKit ถูกใช้เพื่อแสดงผลบางส่วนของอินเทอร์เฟซผู้ใช้ ในช่วงครึ่งแรกของปี 2010 นักวิเคราะห์ประเมินว่ามีโทรศัพท์มือถือ 350 ล้านเครื่องที่จัดส่งพร้อมกับเบราว์เซอร์ที่ใช้ WebKit [ 54 ]ณ กลางเดือนเมษายน 2015 ส่วนแบ่งการตลาดของเบราว์เซอร์ WebKit อยู่ที่ 50.3% [ 55 ]

ท่าเรือ

หนึ่งสัปดาห์หลังจากที่ Hyatt ประกาศเปิดซอร์สโค้ดของ WebKit Nokia ก็ประกาศว่าได้พอร์ต WebKit ไปยังSymbianและกำลังพัฒนาเบราว์เซอร์ที่ใช้ WebKit สำหรับโทรศัพท์มือถือที่ใช้ S60 โดยมีชื่อว่าWeb Browser for S60ซึ่งใช้ในโทรศัพท์มือถือ Nokia, Samsung, LG และโทรศัพท์มือถือ Symbian S60 อื่นๆ Apple ก็ได้พอร์ต WebKit ไปยังiOSสำหรับiPhone , iPod TouchและiPadเช่นกัน โดยใช้ในการแสดงผลเนื้อหาในเบราว์เซอร์เว็บและซอฟต์แวร์อีเมลของอุปกรณ์[ 56 ]แพลตฟอร์มโทรศัพท์มือถือAndroid ใช้ WebKit (และเวอร์ชันต่อมาคือ Blink ) เป็นพื้นฐานของเบราว์เซอร์เว็บ[ 57 ] [ 58 ] [ 59 ]และPalm Preที่ประกาศในเดือนมกราคม 2009 ก็มีอินเทอร์เฟซที่ใช้ WebKit [ 60 ] Amazon Kindle 3 มีเบราว์เซอร์แบบทดลองที่ใช้ WebKit [ 61 ]

ในเดือนมิถุนายน พ.ศ. 2550 Apple ประกาศว่า WebKit ได้ถูกพอร์ตไปยังMicrosoft Windowsซึ่งเป็นส่วนหนึ่งของ Safari แม้ว่าบริษัทจะยุติการใช้งาน Safari สำหรับ Windows อย่างเงียบๆ[ 62 ]แต่พอร์ตของ WebKit ไปยังระบบปฏิบัติการของ Microsoft ยังคงได้รับการบำรุงรักษาอย่างต่อเนื่อง[ 63 ] [ 64 ]พอร์ตสำหรับ Windows ใช้ไลบรารีที่เป็นกรรมสิทธิ์ของ Apple ในการทำงานและใช้สำหรับ iCloud [ 65 ]และ iTunes [ 66 ]สำหรับ Windows ในขณะที่พอร์ต "WinCairo" เป็นพอร์ตโอเพนซอร์สและสามารถแจกจ่ายได้อย่างสมบูรณ์[ 67 ] [ 68 ]

GNOME Webเป็นเว็บเบราว์เซอร์บนระบบลินุกซ์ที่ใช้ WebKitGTK

WebKit ยังได้รับการพอร์ตไปยังชุดเครื่องมือหลายชุดที่รองรับหลายแพลตฟอร์ม เช่น ชุดเครื่องมือ GTKสำหรับLinuxภายใต้ชื่อWebKitGTKซึ่งใช้โดย Eolie [ 69 ] GNOME Web [ 70 ] [ 71 ] Adobe Integrated Runtime , Enlightenment Foundation Libraries (EFL) และชุดเครื่องมือ Clutter [ 72 ] Qt Softwareได้รวมพอร์ต WebKit ไว้ใน Qt 4.4 ในรูปแบบโมดูลที่เรียกว่า QtWebKit [ 73 ] (ซึ่งต่อมาถูกแทนที่ด้วยQt WebEngineที่ใช้ Blink แทน) เบราว์เซอร์ Iris บน Qt ก็ใช้ WebKit เช่นกัน พอร์ต Enlightenment Foundation Libraries (EFL) – EWebKit – ได้รับการพัฒนา (โดยSamsungและ ProFusion [ 74 ] ) โดยมุ่งเน้นที่ระบบฝังตัวและระบบเคลื่อนที่ เพื่อใช้เป็น เบราว์เซอร์ แบบ สแตนด์อะโลน วิดเจ็ต-แกดเจ็ต โปรแกรมดูข้อความแบบ Rich Text และโปรแกรมแต่งข้อความ พอร์ต Clutter พัฒนาโดยCollaboraและได้รับการสนับสนุนจากRobert Bosch GmbH

นอกจากนี้ยังมีโครงการที่ซิงโครไนซ์กับ WebKit (สนับสนุนโดย Pleyo) [ 75 ]ที่เรียกว่าOrigyn Web Browserซึ่งมีเมตาพอร์ตไปยังแพลตฟอร์มแบบนามธรรมเพื่อให้การพอร์ตไปยังระบบฝังตัวหรือระบบน้ำหนักเบาทำได้รวดเร็วและง่ายขึ้น[ 76 ]พอร์ตนี้ใช้สำหรับอุปกรณ์ฝังตัว เช่นกล่องรับสัญญาณและ PMP และได้รับการพอร์ตไปยังAmigaOS [ 77 ] AROS [ 78 ]และMorphOS MorphOS เวอร์ชัน 1.7 เป็นเวอร์ชันแรกของOrigyn Web Browser (OWB) ที่รองรับแท็สื่อHTML5 [ 79 ] [ 80 ]

แพลตฟอร์มเว็บสำหรับระบบฝังตัว

Web Platform for Embedded ( WPE ) คือเวอร์ชันของ WebKit ที่ออกแบบมาสำหรับแอปพลิเคชันฝังตัว โดยปรับปรุงสถาปัตยกรรมให้ดียิ่งขึ้นด้วยการแยกฟังก์ชันการแสดงผลพื้นฐานออกเป็นไลบรารีรูทีนอเนกประสงค์ (libwpe) แบ็กเอนด์ของแพลตฟอร์ม และเอนจินเอง (เรียกว่า WPE WebKit) เวอร์ชัน GTK แม้จะเป็นแบบครบวงในตัวเอง แต่ก็สามารถสร้างให้ใช้ไลบรารีพื้นฐานเหล่านี้แทนการใช้งานเฉพาะแพลตฟอร์มภายในได้ ปัจจุบันเวอร์ชัน WPE ได้รับการดูแลโดย Igalia

การแยกเครือข่ายโดย Google

เมื่อวันที่ 3 เมษายน 2556 Google ประกาศว่าจะสร้างเวอร์ชันแยกของส่วนประกอบ WebCore ของ WebKit ซึ่งตั้งชื่อว่าBlinkนักพัฒนาของ Chrome ตัดสินใจแยก WebCore เพื่อให้มีอิสระมากขึ้นในการใช้งานฟีเจอร์ต่างๆ ในเบราว์เซอร์โดยไม่ก่อให้เกิดความขัดแย้งกับส่วนต้นทาง และเพื่อลดความซับซ้อนของโค้ดเบสโดยการลบโค้ดสำหรับส่วนประกอบ WebCore ที่ Chrome ไม่ได้ใช้ ในส่วนที่เกี่ยวข้องกับ การประกาศของ Opera Softwareในช่วงต้นปีว่าจะเปลี่ยนไปใช้ WebKit โดยใช้ โค้ดเบส ของ Chromiumก็ได้รับการยืนยันว่าเบราว์เซอร์เว็บ Operaจะเปลี่ยนไปใช้ Blink เช่นกัน[ 46 ]หลังจากการประกาศ นักพัฒนา WebKit เริ่มหารือเกี่ยวกับการลบโค้ดเฉพาะของ Chrome ออกจากเอ็นจิ้นเพื่อลดความซ้ำซ้อนของโค้ดเบส[ 81 ] WebKit ไม่มีโค้ดเฉพาะของ Chrome อีกต่อไป (เช่น ระบบการสร้าง, ฮุคเอ็นจิ้น JavaScript V8, โค้ดแพลตฟอร์ม ฯลฯ)

ส่วนประกอบ

เว็บคอร์

WebCore คือ ไลบรารีสำหรับการจัดวางเลย์เอาต์ การแสดงผล และDocument Object Model (DOM) สำหรับ HTML และScalable Vector Graphics (SVG) ซึ่งพัฒนาโดยโครงการ WebKit โค้ดต้นฉบับทั้งหมดได้รับอนุญาตภายใต้GNU Lesser General Public License (LGPL) เฟรมเวิร์ก WebKit ห่อหุ้ม WebCore และ JavaScriptCore โดยมีอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน Objective-C สำหรับ เอ็นจิ้นการแสดงผล WebCore ที่ใช้ C++ และเอ็นจิ้นสคริปต์ JavaScriptCore ทำให้แอปพลิเคชันที่ใช้ Cocoa APIสามารถอ้างอิงได้อย่างง่ายดายเวอร์ชันต่อมายังรวมถึง การสร้างนามธรรมแพลตฟอร์ม C++ ข้ามแพลตฟอร์มและพอร์ตต่างๆ ก็มี API เพิ่มเติมอีกด้วย

WebKit ผ่าน การทดสอบ Acid2และAcid3โดยมีการเรนเดอร์ที่สมบูรณ์แบบระดับพิกเซลและไม่มีปัญหาเรื่องเวลาหรือความราบรื่นบนฮาร์ดแวร์อ้างอิง[ 82 ]

JavaScriptCore

JavaScriptCore เป็นเฟรมเวิร์กที่ให้เอนจิน JavaScriptสำหรับการใช้งาน WebKit และให้การเขียนสคริปต์ประเภทนี้ในบริบทอื่นๆ ภายใน macOS [ 18 ] [ 83 ] JavaScriptCore เดิมทีได้มาจากไลบรารี JavaScript ของKDE ที่ชื่อ KJS (ซึ่งเป็นส่วนหนึ่งของโครงการ KDE) และ ไลบรารี นิพจน์ปกติPCRE นับตั้งแต่แยกตัวออกมาจาก KJS และ PCRE JavaScriptCore ได้เพิ่มคุณสมบัติใหม่ๆ มากมายและปรับปรุงประสิทธิภาพอย่างมาก[ 84 ]

เมื่อวันที่ 2 มิถุนายน พ.ศ. 2551 โครงการ WebKit ประกาศว่าได้เขียน JavaScriptCore ขึ้นใหม่ในชื่อ "SquirrelFish" [ 35 ] [ 36 ]ซึ่งเป็นตัวแปลไบต์โค้ดแบบใช้รีจิสเตอร์แทนที่ตัวแปลแบบเดิน AST เดิม โครงการนี้ต่อมาได้พัฒนาเป็น SquirrelFish Extreme (ย่อว่า SFX วางจำหน่ายในชื่อ Nitro) ซึ่งประกาศเมื่อวันที่ 18 กันยายน พ.ศ. 2551 โดยเร่งความเร็วในการทำงานของ JavaScript มากยิ่งขึ้นด้วยการนำการคอมไพล์แบบ Just-in-time มา ใช้[ 37 ]

คอมไพเลอร์แบบ just-in-time (JIT) ที่ปรับให้เหมาะสมที่สุด ชื่อ FTLได้รับการประกาศเมื่อวันที่ 13 พฤษภาคม 2557 [ 85 ]มันใช้LLVMในการสร้างรหัสเครื่องที่ปรับให้เหมาะสมที่สุด "FTL" ย่อมาจาก "Fourth-Tier-LLVM" และอย่างไม่เป็นทางการหมายถึงfaster-than-lightซึ่งสื่อถึงความเร็วของมัน[ 86 ]ณ วันที่ 15 กุมภาพันธ์ 2559 แบ็กเอนด์ของ FTL JIT ถูกแทนที่ด้วย "Bare Bones Backend" (หรือ B3 สำหรับชื่อย่อ) [ 87 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • เว็บไซต์อย่างเป็นทางการของWebKitGTK
  • SunSpider 1.0 JavaScript Benchmark ถูกเก็บถาวรเมื่อวันที่ 15 ธันวาคม 2018 ที่Wayback Machine
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=WebKit&oldid=1358297886#WebKitGTK+ "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เว็บคิท

WebKitคือเอนจินสำหรับประมวลผลเว็บเบราว์เซอร์ซึ่งใช้เป็นหลักในเว็บเบราว์เซอร์Safari ของ Apple รวมถึงเว็บเบราว์เซอร์เกือบทั้งหมดบนiOSและiPadOSนอกจากนี้ WebKit ยังถูกใช้ใน...

ต้นกำเนิด

โค้ดที่จะกลายเป็น WebKit เริ่มต้นในปี 1998 ในฐานะ เอ็นจิ้นการจัดวางเลย์เอาต์ KDE HTML ( KHTML ) และ เอ็นจิ้น JavaScript KDE ( KJS ) โครงการ WebKit เริ่มต้นขึ้นภายใน Apple โดย Lisa Melton เมื่อวันที่ 25 มิถุนายน 2001 [ 17 ] โดย แยกออก มาจาก KHTML และ KJS...

การพัฒนาแบบแยกส่วน

การแลกเปลี่ยนโค้ดระหว่าง WebCore และ KHTML กลายเป็นเรื่องยากขึ้นเรื่อยๆ เนื่องจากฐานโค้ดมีความแตกต่างกัน เพราะทั้งสองโปรเจกต์ใช้วิธีการเขียนโค้ดที่แตกต่างกันและมีวิธีการแบ่งปันโค้ดที่แตกต่างกัน [ 20 ] ในบางช่วง นักพัฒนา KHTML...

การเปิดเผยซอร์สโค้ด

เมื่อวันที่ 7 มิถุนายน พ.ศ. 2548 Dave Hyatt นักพัฒนา Safari ได้ประกาศใน บล็อก ของเขา ว่า Apple กำลังเปิดซอร์สโค้ด WebKit (ก่อนหน้านี้มีเพียง WebCore และ JavaScriptCore เท่านั้นที่เป็นโอเพนซอร์ส) และเปิดให้เข้าถึง โครงสร้าง การควบคุมเวอร์ชัน ของ WebKit...