Write & Ingest Date: 2015/04/24
Learn about the current market and history of the browser engine
Typesetting engine (Rendering engine): 1. WebKit2
WebKit is an open-source browser engine. WebKit is also the name of the Apple Mac OS X System engine framework version, used primarily for safari,dashboard,mail and some other Mac OS X programs. WebKit contains the WebCore typesetting engine and Jscore engine from KDE khtml and KJS, when Apple compared Gecko and khtml, still chose the latter, because it has a clear source structure, very fast rendering speed.
The WebKit2, which was launched in the year after that, was built on this basis, introducing someone else's post:
Original address: http://blog.csdn.net/milado_nju/article/details/7292164
# #概述
Before introducing the various topics in this series, it is necessary to first explain some of the concepts that are extremely confusing, webkit,webkit2,chromium and chrome.
First to understand WebKit. Broadly speaking, WebKit is an open source project, formerly known as the Khtml and KJS from KDE. The project focuses on the presentation of Web content and develops a first-class web rendering engine. It's not a browser, and it doesn't want to be a browser. The project consists of two parts, the first of which is WebCore, which includes the implementation of many of the specifications of html,css and so on, the second part is the narrow sense of webkit, it is mainly the migration of the various platforms and provide the corresponding web interface, that is webview or similar WebView , these interfaces provide the ability to manipulate and display Web pages. Currently using WebKit's mainstream browser or webview includes Chrome, Safari, Qtwebkit, Android browser as well as a multitude of mobile platform browsers.
WebKit2 relative to the narrow sense of webkit, it is not WebKit simple second version, it is a new API layer, its main change is to put the rendering of the Web page in a separate process, and the interface layer in another process, between them through the IPC to communicate. For the caller of the interface, the intermediate IPC and the bottom implementation is transparent, there are many benefits, one obvious benefit is that when the page rendering problems, the Web interface will not hinder the caller process, This will largely solve or help resolve issues such as browser or the stability and security of these callers.
Chromium is a browser-based open source project built on WebKit, launched by Google. The project has been developed rapidly since its inception, and many advanced technologies have been adopted, such as cross-process models, sandbox models, and so on. At the same time, many new specifications are supported, such as WEBGL,CANVAS2D,CSS3 and many other HTML5 features, and basically you can see it change every day, and its version is upgraded quickly. In terms of performance, it is also praised, including fast start-up, Web page loading and so on.
Chrome is Google's browser product, based on the Chromium open source project, generally choose a stable version as its foundation, and the difference between it and chromium is that chromium is open-source test field, will try a lot of new things, when these things stabilized, Chrome won't be integrated, which means Chrome's version will lag behind chromium. The other is that Chrome will include some private codec, which will only appear in Chrome. Again, Chrome will also integrate many of Google's services, and finally chrome will have the ability to update automatically, which is not what chromium.
The browsers currently in use are: Safari
front-end CSS usage ID:-webkit-
2.Blink
Since the process isolation implemented by WEBKIT2 at the WebCore level is somewhat in conflict with Google Chrome/chromium's own sandbox design, Google Chrome/chromium has been stuck in WebKit, using Backpor T is implemented in a way that is compatible with mainline WebKit2. This obviously increases the complexity of WebKit and Chromium and, to a certain extent, affects the Chromium architecture porting effort. So Google decided to derive its own Blink Web engine from WebKit, and Google announced plans to use the rendering engine as part of the Chromium program 4 months in the year.
the browsers currently in use are: Chrome , Opera
front-end CSS usage ID:-webkit-
3.Gecko
Gecko is a Web publishing engine written in C + + with open source code. Gecko is cross-platform and can run on major operating systems such as Microsoft Windows, Linux, and Mac OS X.
The browsers currently in use are: FireFox
front-end CSS Use identification: Can not
4. Trident
Trident (also known as MSHTML), is the name of the typesetting engine of the Web browser-internet Explorer that is powered by Microsoft's Windows operating system (Windows)
The browsers currently in use are: IE
front-end CSS Use identification: Can not
JavaScript engine 1.V8
V8 improves performance by compiling JavaScript into machine code, not bytecode, or interpreting it before running. Further, methods such as inline caching (inline caching) are used to improve performance.
Traditional JavaScript is a dynamic language and can be called the prototype-based Language,javascript inheritance method is to use prototype, you can specify the target to inherit by specifying the prototype property. Properties can be added to or removed from the object at run time, and the engine creates a dictionary of properties for the objects that are running, and the new properties are searched through the dictionary for the location of the property in memory. When V8 adds a property to object, it creates a subcategory of the hidden class of the new attribute with the last hidden class as the parent category, so that property access no longer requires dynamic dictionary lookups.
Browser: Chrome
2. Chakra
Microsoft's JavaScript engine
Browser: IE
3. SpiderMonkey
SpiderMonkey is written in C and C + +, including literal translation,Ionmonkey Instant compilation, Decompiler, and garbage collection.
Ionmonkey
Ionmonkey is the name of Mozilla's third JIT compiler, which enables many new optimization techniques, but these features cannot be run in the previous Jägermonkey architecture.
Ionmonkey is more like a traditional compiler, and he converts SpiderMonkey bytecode into control Flow Graph using the static single-assignment form of the intermediate presentation layer (Ir,intermediate representation). This structure enables the use of optimization techniques in other languages to be used in JavaScript, which contains the specialization (type specialization) of the form, the inline function, the register configuration of the linear scan (linear scan Register allocator), Dead code removal (Dead code elimination) and as far as possible move the program out of the Loop (loop-invariant code Motion) [17].
The compiler can quickly convert JavaScript functions into native code in the ARM architecture, X86, and x86-64.
Ionmonkey was introduced as a preset engine [18] in the early 2013 release of Firefox 18, improving the drawbacks of Tracemonkey and Jaegermonkey not parsing code and automatically running optimization. [19].
Odinmonkey
Odinmonkey used to optimize the subset of JavaScript Asm.js,odinmonkey is not a JIT compiler, he still uses ionmonkey as the compiler, on June 25, 2013 officially released Firefox 22 adopted [20].
Browser: Firefox
Browser engine-today's browser