强大的浏览器内核-WebKit和V 8

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶高效! 阅读详情

WebKitMac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS XSafari网页浏览器的基础。WebKit是一个开源项目,主要由KDEKHTML修改而來並且包含了一些来自苹果公司的一些组件。

传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTMLKJS。不过,随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome采用V8引擎,却仍然宣称自己是WebKit内核)。

 

V8 是 Google 的开源 JavaScript 引擎。

V8 采用 C++ 编写,可在 Google Chrome()中使用。

V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系统中运行。

V8 可以独立运行,也可以嵌入任何 C++ 应用程序中。

 

在WinXP上构造V8

V8的 官方文档就能顺利"as-is"构造出来。

必须的环境:
Subversion 1.4 or higher - see http://subversion.tigris.org/links.html#clients
Python 2.4 or higher - see http://www.python.org
SCons 1.0.0 or higher - see http://www.scons.org

我使用的是
Subversion  1.4.6 (r28521)
Python 2.5.1
SCons 1.0.0
Visual Studio 2008 Professional

然后,根据 说明,在构造时覆盖SCons的环境参数,在 V8源码的根目录执行下述指令就行:

(把VS和WinSDK装在默认路径上也不是没好处,呵呵)

执行结束后,得到release/snapshot/static版的 v8.lib。
接下来想把位于samples里的shell构造出来,只要把shell.cc从samples目录复制到 V8的根目录然后:
v8.lib

加上/O2之类的开关当然也是可以的咯。

阅读 V8的源码是件开心的事;代码风格看起来相当不错,至少很合我的偏好。里面借鉴Strongtalk等的技巧也让人很兴奋。有时间一定要仔细看看。

Alright,来玩玩看。
下面一图是 V8 0.3.4 vs DMDScript 1.14 vs Managed JScript (sdl-sdk 0.4.0) vs Rhino 1.7R1 vs JScript 5.7做同一个测试的比较:
强大的浏览器内核-WebKit和V 8 - 苏克儿 - 计算机软件技术与理论研讨
(图缩小了的话点击放大)
从数字上看,至少现在的Managed JScript比06年底的JScript要快了,即便前者运行在.NET上而后者是native的。但它们的速度都远远比不上 V8……时间差了一位啊 - -
新的JavaScript引擎真可怕。

sieve.js/ds/jsx来自DMDScript自带的sieve.ds测试文件,内容为:
复制代码
  1. /* Eratosthenes Sieve prime number calculation. */  
  2.     
  3. size = 8190;   
  4. sizepl = 8191;   
  5.   
  6. var flags = new Array(sizepl);   
  7.   
  8. var i, prime, k, count, iter;   
  9.   
  10. print("10 iterations/n");   
  11. starttime = new Date();   
  12. for (iter = 1; iter <= 10; iter++)   
  13. {   count = 0;   
  14.     for (i = 0; i <= size; i++)   
  15.     flags[i] = true;   
  16.     for (i = 0; i <= size; i++)   
  17.     {   if (flags[i])   
  18.     {   prime = i + i + 3;   
  19.         k = i + prime;   
  20.         while (k <= size)   
  21.         {   
  22.         flags[k] = false;   
  23.         k += prime;   
  24.         }   
  25.         count += 1;   
  26.     }   
  27.     }   
  28. }   
  29. elapsedtime = new Date() - starttime;   
  30. print("/n" + count + " primes/n");   
  31. print("elapsed time = " + elapsedtime + "/n");  
/* Eratosthenes Sieve prime number calculation. */
 
size = 8190;
sizepl = 8191;

var flags = new Array(sizepl);

var i, prime, k, count, iter;

print("10 iterations/n");
starttime = new Date();
for (iter = 1; iter <= 10; iter++)
{   count = 0;
    for (i = 0; i <= size; i++)
 flags[i] = true;
    for (i = 0; i <= size; i++)
    {   if (flags[i])
 {   prime = i + i + 3;
     k = i + prime;
     while (k <= size)
     {
  flags[k] = false;
  k += prime;
     }
     count += 1;
 }
    }
}
elapsedtime = new Date() - starttime;
print("/n" + count + " primes/n");
print("elapsed time = " + elapsedtime + "/n");


需要说明的几点:
1、Benchmarks are nothing more than lies damn lies.这个是真理。但至少从图中数字可以看出不同实现间在这个特定例子下的速度差异。

2、关于运行环境:
用来测试的机器是运行在Intel Pentium-M 715 (Dothan核心,1.50GHz)+1248MB内存上的Windows XP SP3。
JVM是Sun的HotSpot Client Profile

Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)

.NET Framework是3.5 SP1。
采用client的 JVM是因为这个例子运行时间太短,如果使用-server反而会更慢(数值上显示出来是1000+);Rhino的-opt在这里也没有多少作用,开了-opt 9之后执行这个例子的时间也没变化。

3、给不熟悉这几个引擎的简单介绍一下:
V8Google新推出的浏览器Chrome中使用的JavaScript引擎,用C++编写。发布于2008年9月;
DMDScriptDigital Mars开发的一种ECMAScript 3的实现,用 D语言编写。发布于2007年9月;
Managed JScript微软在DLR平台上的ECMAScript 3的实现,用C#编写,运行在.NET Framework上。我测试用的版本来自 Silverlight Dynamic Languages SDK 0.4.0(稍做修改,让它能在普通的.NET Framework 2.0而不是Silverlight 2.0 RC0中运行)。发布于2008年10月;
Rhino 1.7R1是 Mozilla基于 JVM开发的JavaScript 1.7实现,用Java编写。发布于2008年3月。很明显这个版本还不可能用上原型阶段的invokedynamic;
JScript 5.7是微软的另一个ECMAScript 3实现,我不太清楚它是C还是C++写的,不过它暴露了COM接口。IE7使用的JScript引擎就是它。发布于2006年11月。虽然是很老了,但现在IE8还没正式推出,只好用它来测。要在WSH里运行上面的测试,需要把print()改为WScript.Echo()。

Google Chrome, Google's open source browser.

This documentation is aimed at C++ developers who want to use V8 in their applications, as well as anyone interested in V8's design and performance. This document introduces you to V8, while the remaining documentation shows you how to use V8 in your code and describes some of its design details, as well as providing a set of JavaScript benchmarks for measuring V8's performance.

About V8

V8 implements ECMAScript as specified in ECMA-262, 3rd edition, and runs on Windows XP and Vista, Mac OS X 10.5 (Leopard), and Linux systems that use IA-32 or ARM processors.

V8 compiles and executes JavaScript source code, handles memory allocation for objects, and garbage collects objects it no longer needs. V8's stop-the-world, generational, accurate garbage collector is one of the keys to V8's performance. You can learn about this and other performance aspects in V8 Design Elements.

JavaScript is most commonly used for client-side scripting in a browser, being used to manipulate Document Object Model (DOM) objects for example. The DOM is not, however, typically provided by the JavaScript engine but instead by a browser. The same is true of V8—Google Chrome provides the DOM. V8 does however provide all the data types, operators, objects and functions specified in the ECMA standard.

V8 enables any C++ application to expose its own objects and functions to JavaScript code. It's up to you to decide on the objects and functions you would like to expose to JavaScript. There are many examples of applications that do this, for example: Adobe Flash and the Dashboard Widgets in Apple's Mac OS X and Yahoo! Widgets.

How Do I Get Started?

First you'll need to download the V8 source code and build V8, following the download and build instructions. Then see Getting Started for an introduction to V8 code with a quick "Hello World" example.

五大浏览器内核深度解析:WebKit、Blink、Gecko、Trident与未来引擎 浏览器内核作为网页渲染的核心引擎,负责解析HTML、CSSJavaScript,将代码转换为用户可视的页面。其工作原理涉及从构建DOM树、计算样式到最终像素绘制的完整流水线。理解内核差异对于实现跨浏览器兼容性、优化前端性能具有重要技术价值,尤其在移动端适配、复杂动画渲染等应用场景中至关重要。本文聚焦WebKit、Blink、Gecko等主流内核的技术特性,通过对比iOS Safari的渲染机制与Chrome的V8引擎优化,为开发者提供多浏览器环境下的实战调试方案与兼容性攻坚策略。 阅读详情

相关推荐

[工具探索]Safari Google Chrome 浏览器内核差异

最近有些Vue3的项目,使用了safari进行测试环境搞开发,发现页面存在不同程序的页面乱码情况,反而google浏览器没问题,下面我们就对比下他们之间的差异点:日常开发google chrome占多数;现在主流浏览器 Google Chrom、Safari、Microsoft Edge、Mozilla Firefox、Opera;

hmx224_2014的专栏 8703

webkit内核wke.dll的易语言调用例程

wke.dll是国外大神封装的webkit,体积算是极小的,另外upx压缩下才3M多,不可多得的好东西哦,只是版本旧了些。C++调用起来貌似很简单,易语言实现起来还是有点鸡肋。@小爬虫。

开源的浏览器内核介绍

未来,随着互联网技术的不断发展创新,开源的浏览器内核将继续发挥重要作用,为用户带来加优质、高效、安全的网页浏览体验。自主创新的渲染技术:Gecko采用了独特的渲染技术,如基于帧的渲染、硬件加速等,使得网页的渲染效果加出色。强大的开发者工具:Chrome浏览器作为Blink内核的代表,提供了丰富的开发者工具,如开发者控制台、网络调试工具、性能分析工具等。改进的渲染性能:Blink在WebKit的基础上对渲染性能进行了进一步的优化,如采用高效的渲染算法、减少不必要的重绘重排等。一、WebKit内核。

u013558123的博客 1708

易语言调webkit内核多页面浏览器

webkit内核多页面浏览器,自动填表功能还没实现!请大家测试修改

干货:浏览器渲染引擎WebkitV8引擎工作原理

干货:浏览器渲染引擎WebkitV8引擎工作原理

whl0071的专栏 2120

WebKit渲染引擎特性,以Chrome V8为例

引言 上一期(传送门)我们讲了浏览器架构的大致内容。本期以WebKit为列,进行简单介绍,以便让你对渲染引擎有一个多的理解。WebKit由多个重要模块组成,通过下图我们可以对WebKit有个整体的了解: WebKit是一个页面渲染以及逻辑处理引擎,前端工程师把HTML、JavaScript、CSS这“三驾马车”作为输入,经过WebKit的处理,就输出成了我们能看到以及操作的Web页面。 从上图我们可以看出来,WebKit由图中框住的四个部分组成。而其中最主要的就是WebCoreJSCore(或者是其它

abraham76的博客 2723

深入解析:WebKitJavaScript引擎与V8引擎的比较研究

JavaScript引擎是Web浏览器中的一个关键组件,负责将JavaScript代码转换为机器可执行的指令。随着Web应用的复杂性不断增加,JavaScript引擎的性能直接影响到用户的浏览体验。

2402_85758349的博客 2482

浏览器原理v8引擎

了解js引擎工作流程,理解作用域提升的原理(知识来自coderwhy老师的js高级课程)

qq_51025561的博客 891

前端能力模型-V8 JS引擎

一、webkit内核与V8 在chrome浏览器中,用webkit来进行html渲染,用v8作为js引擎。      虽说ChromeWebkit都是开源的,但是Chrome始终保持Webkit距离,Chrome在WebKit上封装了一层称为WebKit Glue。Glue层中,大部分类型的结构接口都WebKit类似,Chrome中依托WebKit组件,都只是调用Webkit

zqjflash的专栏 3893

浏览器工作原理V8引擎

一、浏览器的工作原理 比如在浏览器中输入网址,然后dns进行解析,解析出的就是服务器的一个ip地址。服务器返回一个html文件,浏览器内核在解析html文件的过程中,遇到link标签script标签引用的css文件JavaScript文件就会去下载下来。 二、浏览器内核 我们经常会说:不同的浏览器有不同的内核组成: Gecko:早期被NetscapeMozilla Firefox浏览器浏览器使用; Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink; W

CRMEB小程序商城的博客 5240

简述Chromium, CEF, Webkit, JavaScriptCore, V8, Blink

一、了解浏览器浏览器内核概念浏览器内核分为两部分:渲染引擎(render engin)、js引擎(js engin)渲染引擎:负责对网页语法的解释(HTML、javaScript、引入css等),并渲染(显示)网页js引擎:javaScript的解释、编译、执行主流内核:Trident(IE)、Gecko(FireFox)、Webkit(Safari)、Presto(opera前内核、已废弃)、b...

weixin_34112208的博客 1071

浏览器内核主要有哪些?

本文深入解析主流浏览器内核(Blink、WebKit、Gecko等)及其工作原理,包括渲染引擎JavaScript引擎的运作机制。通过代码示例演示如何检测浏览器内核类型,并针对CSS前缀、JS API兼容性等常见问题提供解决方案。文章还对比了不同内核浏览器的性能特点,调理解浏览器内核对于解决兼容性问题、优化性能以及选择合适前端工具的重要性,帮助开发者构建健壮的前端项目。

似水流年QC的博客 1061

浏览器执行js原理-v8引擎

目录前言一、浏览器的内核与JavaScript引擎1.认识常用浏览器的内核2.浏览器渲染过程3.认识JavaScript引擎4.浏览器内核JavaScript引擎的关系二、V8引擎1.原理2.架构3.执行的细节总结 前言 提示:这里可以添加本文要记录的大概内容: 作为一名前端工程师,在工作中无论你使用什么技术,如:Vue、Reatc、uniapp、ReactNative等;无论你做什么应用平台,比如pc web、移动web、移动App、小程序、公众号等。他们都离不开JavaScript。深入掌握Java

weixin_45650576的博客 1493

浏览器原理-v8引擎-js执行原理

theme: channing-cyan 跟随coderwhy学习 1.浏览器工作原理 思考: JavaCscript代码,再浏览器是如何被执行的? 2.认识浏览器内核 我们经常会说:不同的浏览器有不同的内核组成 Gecko:早期被NetscapeMozilla Firefox浏览器浏览器使用; Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览...

qq_44808878的博客 109

Chrome Webkit 的渊源

  互联网的浪潮从未停息,而用以网上冲浪的冲浪板也一直在变得愈加精良。自人们进入互联网时代以来,即已经发生了三次浏览器大战。第一次浏览器大战的主角是IENetscape,最终IE凭借着Windows的庞大身躯推倒了Netscape;第二次浏览器大战Netscape浴火重生化身为火狐狸Firefox,一口咬了IE身上一大块肥肉;正在FirefoxIE正缠绵不息之时,突然凭空杀出个Chr...

320

JavaScript代码是怎么在浏览器里面运行起来的?

从js代码是怎么被执行的?简单了解一下浏览器内核与JS引擎。

heyYouU的博客 1317

【前端开发】了解JavaScript 是如何运行的?

了解JavaScript 是如何运行的,以及的它的运行机制,首先,我们要了解浏览器的内核: 浏览器内核 了解过的都知道:不同的浏览器是由不同的内核组成,那么有哪些内核以及我们常用的浏览器都使用了那些内核: Gecko:早期被NetscapeMozilla Firefox浏览器浏览器使用; Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink; Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用; Blink:是W

go 3345

五大浏览器内核诞生历史

1. Trident IE的内核,也就是国内双核浏览器的内核之一,此内核只能用于Windows平台,且不是开源的。Trident内核一直延续到IE11,IE11的后继者Edge采用了新内核EdgeHTML。 2.Gecko 开源内核,后来被FF(FireFox)采用,最大优势是跨平台,在Microsoft Windows、Linux、MacOs X等主要操作系统中使用。 3.Webkit 开源内核,Webkeit的鼻祖是Safari,曾经的Chrome用的是Webkeit。注意:Webkit其实包括是渲染引

weixin_45846980的博客 1262
上一篇: GCC剖析
下一篇: 强大的浏览器内核-WebKit和V 8
deepfuture
博客等级 码龄17年 209粉丝 1288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值