Software:Browser engine
A browser engine (also known as a layout engine or rendering engine) is a core software component of every major web browser. The primary job of a browser engine is to transform HTML documents and other resources of a web page into an interactive visual representation on a user's device.
Name and scope
A browser engine is not a stand-alone computer program but rather a critical piece of a larger program, such as a web browser, from which the term is derived. The word "engine" is an analogy to the engine of a car.
Besides "browser engine", two other terms are in everyday use regarding related concepts: "layout engine" and "rendering engine".[1][2][3] In theory, layout and rendering (or "painting") could be handled by different engines. In practice, however, a given browser engine's rendering and layout components are tightly coupled and rarely encountered on their own outside the browser engine, unlike the case with browsers' scripting engines.
In addition to layout and rendering, a browser engine enforces the security policy between documents, handles navigation through hyperlinks and data submitted through forms, and implements the Document Object Model (DOM) exposed to scripts associated with the document.
Every significant web browser supports JavaScript (JS) to enable a wide range of interactive behavior specified by the publisher, however, JS support is treated as a separate concern. Although JS was initially created as a simple language for use on web pages, it is a general-purpose programming language, and most development teams working on browser engines decouple development of the browser engine from the development of the JavaScript engine that enables the browser to provide support for the language.[4] Browsers have sophisticated methods of coordinating their engines.[1]
Browser engines are used in other types of programs besides web browsers. For example, an email client might rely on a browser engine for displaying HTML email. The Electron framework, powered by Blink and V8 from Google's Chromium project, enables software developers to use technologies first created for the web platform—such as HTML, CSS, JavaScript, and the DOM—to create graphical desktop applications. Programmer familiarity with browser-based development has resulted in Electron and other cross-platform, browser engine-based application frameworks often being used in lieu of traditional GUI toolkits.
Layout, style, and rendering
The layout of a web page is typically specified by Cascading Style Sheets (CSS). Each style sheet is a series of rules which the browser engine interprets to determine how the document should be presented. For example, a published web page might use CSS to specify rules to style typography details, such as font, color, and text size. The engine combines all relevant CSS rules to calculate the concrete graphical coordinates for the visual representation it will paint on the screen.[1]
Some engines may begin rendering before a page's resources are downloaded. This can result in visual changes as more data is received, such as images being gradually filled in or a flash of unstyled content.
Notable engines
- Apple created the WebKit engine for its Safari browser by forking the KHTML engine of the KDE project.[5] All browsers for iOS must use WebKit as their engine.[6]
- Google originally used WebKit for its Chrome browser but eventually forked it to create the Blink engine.[7] All Chromium-based browsers use Blink, as do applications built with CEF, Electron, or any other framework that embeds Chromium.
- Microsoft has two proprietary engines, Trident and EdgeHTML. Trident is used in the Internet Explorer browser. EdgeHTML was the original engine of the Edge browser, but that was remade with the Blink engine.[8] EdgeHTML is still used in some UWP apps.[9]
- Mozilla develops the Gecko engine for its Firefox browser and the Thunderbird email client.[2]
Timeline
Only the duration of active development is shown, which is when relevant new Web standards continue to be added to the engine.
<timeline>
- header
ImageSize = width:750 height:170 PlotArea = left:80 right:5 bottom:20 top:5 AlignBars = justify DateFormat = dd/mm/yyyy Period = from:01/01/1997 till:31/05/2022 TimeAxis = orientation:horizontal format:yyyy
Colors =
id:microsoft value:rgb(0.3, 0.5, 1) id:gecko value:rgb(1, 0, 0) id:khtml value:rgb(0.3,0.3,0.3) id:webkit value:rgb(0.3, 0.36, 0.36) id:blink value:rgb(0.3, 0.39, 0.39) id:mgray value:rgb(0.5, 0.5, 0.5) id:lgray value:rgb(0.75, 0.75, 0.75)
ScaleMajor = gridcolor:mgray unit:year increment:1 start:01/01/1997 ScaleMinor = unit:month increment:3 start:01/01/1997 BackgroundColors = bars:lgray
BarData =
bar:Gecko text:Gecko bar:Trident text:Trident bar:EdgeHTML text:EdgeHTML bar:KHTML text:KHTML bar:WebKit text:WebKit bar:Blink text:Blink
PlotData=
align:center textcolor:black fontsize:8 mark:(line,black) width:15 shift:(0,-4)
bar:Gecko from: 01/05/1997 till: 31/05/2022 color:gecko mark:(line,white)
bar:Trident from: 01/10/1997 till: 15/07/2015 color:microsoft mark:(line,white)
bar:EdgeHTML from: 12/11/2014 till: 15/12/2018 color:microsoft mark:(line,white)
bar:KHTML from: 04/11/1998 till: 15/10/2016 color:khtml mark:(line,white)
bar:WebKit from: 25/06/2001 till: 31/05/2022 color:webkit mark:(line,white)
bar:Blink from: 03/04/2013 till: 31/05/2022 color:blink mark:(line,white)
</timeline>
See also
References
- ↑ 1.0 1.1 1.2 "Behind the scenes of modern web browsers". Tali Garsiel. http://taligarsiel.com/Projects/howbrowserswork1.htm.
- ↑ 2.0 2.1 "Gecko". Mozilla. https://developer.mozilla.org/docs/Mozilla/Gecko.
- ↑ "Introducing Goanna". M.C. Straver. 22 June 2015. https://forum.palemoon.org/viewtopic.php?f=1&t=8607.
- ↑ Bak, Lars (2009-04-29). "Inside V8—A Javascript Virtual Machine" (Interview). Interviewed by Meijer, Erik; Torre, Charles. Microsoft. Retrieved 2020-07-03.
- ↑ Paul Festa (14 January 2003). "Apple snub stings Mozilla". CNET Networks. http://news.cnet.com/2100-1023-980492.html.
- ↑ "Open-sourcing Chrome on iOS!". 2017. https://blog.chromium.org/2017/01/open-sourcing-chrome-on-ios.html. "Due to constraints of the iOS platform, all browsers must be built on top of the WebKit rendering engine."
- ↑ Bright, Peter (3 April 2013). "Google going its way, forking WebKit rendering engine". Conde Nast. https://arstechnica.com/information-technology/2013/04/google-going-its-own-way-forking-webkit-rendering-engine/.
- ↑ Mackie, Kurt (10 December 2018). "Microsoft Edge Browser To Get New Rendering Engine but EdgeHTML Continues". https://redmondmag.com/articles/2018/12/10/edgehtml-continues.aspx.
- ↑ Mendelevich, Alan (14 May 2021). "You Think You Can Forget About the "Legacy" Microsoft Edge? Not So Fast!". https://blog.ailon.org/you-think-you-can-forget-about-the-legacy-microsoft-edge-not-so-fast-28ce91270a22.
Original source: https://en.wikipedia.org/wiki/Browser engine.
Read more |