技术简介:
本专利针对现有浏览器引擎运行方式固定、无法适配不同终端CPU环境的问题,提出一种动态选择运行方式的方法。通过启动时获取终端CPU环境参数,判断是否支持特定指令集(如vfp/neon或vfpv3),选择JIT即时编译或解释器运行模式,使浏览器在不同硬件上均能高效稳定运行,提升兼容性与灵活性。
关键词:浏览器引擎,运行方式
浏览器引擎的运行方法、装置、浏览器及终端的制作方法
【专利摘要】本发明公开了一种浏览器引擎的运行方法、装置、浏览器及终端。其中的方法可包括:启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境;根据所述运行环境,选择适配的浏览器引擎的运行方式;采用选择的运行方式,运行所述浏览器引擎。
【专利说明】浏览器引擎的运行方法、装置、浏览器及终端
【技术领域】
[0001]本发明涉及网络【技术领域】,尤其涉及浏览器【技术领域】,具体涉及浏览器引擎的运行方法、装置、浏览器及终端。
【背景技术】
[0002]浏览器引擎,包含于浏览器的内核中,在运行过程中执行程序代码以处理网页的内容、整理信息及计算网页的显示方式,然后在浏览器中输出网页。通常,浏览器编译时配置浏览器引擎的运行方式,编译完成时,浏览器引擎的运行方式也唯一确定,浏览器引擎采用所配置的运行方式执行程序代码。上述可知,现有的浏览器引擎均采用已配置的唯一固定的运行方式运行,无法根据浏览器的运行环境进行选择,从而限制了浏览器适用的终端类型,例如:某些终端的CPU (Central Processing Unit,中央处理器)环境与浏览器引擎的运行方式适配,则浏览器可在该终端正常使用,某些终端的CPU环境与浏览器引擎的运行方式不适配,则可能影响浏览器的运行速度,甚至导致浏览器档机;从而影响了浏览器的使用灵活性。
【发明内容】
[0003]本发明实施例提供一种浏览器引擎的运行方法、装置、浏览器及终端,可保证浏览器在多种类型终端中的正常运行,提高浏览器的使用灵活性。
[0004]本发明第一方面提供了一种浏览器引擎的运行方法,可包括:
[0005]启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境;
[0006]根据所述运行环境,选择适配的浏览器引擎的运行方式;
[0007]采用选择的运行方式,运行所述浏览器引擎。
[0008]本发明第二方面提供了一种浏览器引擎的运行装置,可包括:
[0009]获取模块,用于在启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境;
[0010]选择模块,用于根据所述运行环境,选择适配的浏览器引擎的运行方式;
[0011]运行模块,用于采用选择的运行方式,运行所述浏览器引擎。
[0012]本发明第三方面提供了一种浏览器,可包括上述的浏览器引擎的运行装置。
[0013]本发明第四方面提供了一种终端,可包括上述的浏览器。
[0014]实施本发明实施例,具有如下有益效果:
[0015]本发明实施例可根据浏览器的运行环境,包括浏览器所在终端的CPU环境,选择相适配的运行方式运行浏览器引擎,使得浏览器可正常运行于多种类型终端的运行环境中,即使得浏览器可适用于多种终端类型,提高了浏览器的使用灵活性。
【专利附图】
【附图说明】[0016]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1为本发明实施例提供的一种浏览器引擎的运行方法的流程图;
[0018]图2为图1所示步骤SlOl的实施例的流程图;
[0019]图3为图1所示步骤S102的实施例的流程图;
[0020]图4为本发明实施例提供的另一种浏览器引擎的运行方法的流程图;
[0021]图5为本发明实施例提供的又一种浏览器引擎的运行方法的流程图;
[0022]图6为本发明实施例提供的一种浏览器引擎的运行装置的结构示意图;
[0023]图7为图6所示获取模块的实施例的结构示意图;
[0024]图8为图6所示选择模块的实施例的结构示意图。
【具体实施方式】
[0025]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]本发明实施例中,终端可以包括:PC (Personal Computer,个人计算机)、平板电脑、手机、PDA (Personal Digital Assistant,个人数字助理)、电子阅读器、笔记本电脑、车载终端等设备。本发明实施例中,优选地,所述浏览器为基于webkit内核的浏览器,浏览器引擎为JS (Java Script)引擎,本发明实施例中,浏览器JS引擎优选为JSC (Java ScriptCore,—种JavaScript引擎)引擎,该JSC引擎包含在浏览器的webkit内核中。浏览器安装于所述终端中,除特别说明外,本发明后续实施例中,浏览器所在终端指安装所述浏览器的终端。
[0027]本发明实施例中,浏览器的运行环境指浏览器所在终端的系统环境,包括终端的(PU环境。其中,终端的CPU环境可以包括:终端所使用的CPU支持的指令集类型,例如:vfp(Vector Flooting-Point Coprocessor for ARM,向量浮点运算单兀)指令集,neon (一种适用于ARM处理器的扩展结构)指令集、vfpv3指令集、vfpv2指令集、vfpvl指令集、SSE(Streaming SIMD Extensions,数据流单指令序列扩展指令)指令集等等。终端的CPU环境还可以包括:终端所使用的CPU的类型、数量、频率等参数。
[0028]本发明实施例中,所述浏览器引擎的运行方式包括:JIT (Just-1n-Time,即时编译)运行方式或Interpreter (解释器)运行方式。其中,JIT (Just-1n-Time,即时编译)运行方式,指在执行程序代码之前把所有字节码翻译成本地机器码,然后再将翻译后的机器码放在CPU上运行。Interpreter (解释器)运行方式,指在CPU上采用解释一行、执行一行代码的方式执行程序代码。
[0029]下面将结合附图1-附图5,对本发明实施例提供的浏览器引擎的运行方法进行详细介绍。
[0030]请参见图1,为本发明实施例提供的一种浏览器引擎的运行方法的流程图;该方法可包括以下步骤SlOl-步骤S103。
[0031]S101,启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境。
[0032]一般地,终端存储有配置文件,该配置文件中记录了本机所使用的CPU环境参数,例如=Android手机中的/proc/cpuinfo文件中记录了该手机所使用的CPU的类型、频率、支持的指令集等CPU环境参数。本步骤中,可以在浏览器启动过程中,读取该文件记录的内容,确定浏览器的运行环境。
[0033]请一并参见图2,为图1所示步骤SlOl的实施例的流程图;该步骤SlOl可包括以下步骤sllOl-步骤sll02。
[0034]sllOl,获取所述浏览器所在终端的配置文件。
[0035]一般地,终端存储有配置文件,该配置文件中记录了本机所使用的CPU环境参数。本步骤可以在浏览器启动过程中,从终端中读取其存储的配置文件。
[0036]S1102,从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境。其中,所述CPU环境参数包括:所述终端的CPU支持的指令集类型。
[0037]S102,根据所述运行环境,选择适配的浏览器引擎的运行方式。本步骤可以根据浏览器的运行环境,选择适配的浏览器引擎的运行方式。
[0038]请一并参见图3,为图1所示步骤S102的实施例的流程图;该步骤S102可包括以下步骤sl201-步骤sl203。
[0039]S1201,判断所述浏览器所在终端的CPU是否支持预设类型的指令集,如果判断结果为是,转入sl202 ;否则,转入sl203。
[0040]S1202,选择即时编译运行方式作为浏览器引擎的运行方式;
[0041]S1203,选择解释器运行方式作为浏览器引擎的运行方式。
[0042]本实施例中,所述预设类型的指令集可以存在以下两种实施方式:
[0043]在第一种实施方式中,所述预设类型的指令集可以为vfp指令集和neon指令集,即如果CPU支持vfp指令集,同时支持neon指令集,则JSC引擎优选采用JIT运行方式运行,以保证浏览器的运行速率。如果CPU未同时支持vfp指令集和neon指令集,则JSC引擎优选采用Interpreter运行方式运行,以使浏览器正常运行。
[0044]在第二种实施方式中,所述预设类型的指令集可以为vfpv3指令集,其中,支持vfpv3指令集的CPU可更快速高效的运行一些标准的媒体类运算任务,通常,配置较高的智能终端的CPU支持vfpv3指令集,而配置较低的普通终端为节约成本,其CPU通常不支持vfpv3指令集。如果JSC引擎采用JIT运行方式在不支持vfpv3指令集的CPU上运行,会产生非法指令异常,导致浏览器档机;如果JSC引擎采用Interpreter运行方式在支持vfpv3指令集的CPU上运行时,会影响浏览器的运行速度。因此,如果浏览器所在终端的CPU支持vfpv3指令集,则JSC引擎优选采用JIT运行方式运行,以保证浏览器的运行速率;如果浏览器所在终端的CPU不支持vfpv3指令集,则JSC引擎优选采用Interpreter运行方式运行,以避免浏览器档机,使浏览器正常运行。
[0045]S103,采用选择的运行方式,运行所述浏览器引擎。本步骤中,可以在JSC引擎中插入桩函数,JSC引擎在执行过程中,JSC引擎中的桩函数将JSC引擎的执行流程修改为所选择运行方式,JSC引擎则采用选择的运行方式运行,执行程序代码,在浏览器中呈现网页信息。
[0046]请参见图4,为本发明实施例提供的另一种浏览器引擎的运行方法的流程图;该方法可包括以下步骤S201-步骤S207。
[0047]S201,启动浏览器;
[0048]S202,获取所述浏览器所在终端的配置文件。
[0049]S203,从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境。
[0050]S204,判断所述浏览器所在终端的CPU是否支持vfpv3指令集,如果判断结果为是,转入S205 ;否则,转入S206。
[0051]如果JSC引擎采用JIT运行方式在不支持vfpv3指令集的CPU上运行,会产生非法指令异常,导致浏览器档机;如果JSC引擎采用Interpreter运行方式在支持vfpv3指令集的CPU上运行时,会影响浏览器的运行速度。本步骤则根据读取的CPU环境参数,判断所述浏览器所在终端的CPU是否支持vfpv3指令集。
[0052]S205,选择即时编译运行方式作为浏览器引擎的运行方式,之后,转入S207。
[0053]S206,选择解释器运行方式作为浏览器引擎的运行方式。
[0054]如果浏览器所在终端的CPU支持vfpv3指令集,则浏览器引擎优选采用JIT运行方式运行,以保证浏览器的运行速率;如果浏览器所在终端的CPU不支持vfpv3指令集,则浏览器引擎优选采用Interpreter运行方式运行,以避免浏览器档机,使浏览器正常运行。
[0055]S207,运行所述浏览器引擎。
[0056]本步骤中,如果选择JIT运行方式作为JSC引擎的运行方式,则浏览器引擎采用JIT运行方式执行程序代码,在浏览器中呈现网页信息。如果选择Interpreter运行方式作为JSC引擎的运行方式,则浏览器引擎采用Interpreter运行方式执行程序代码,在浏览器中呈现网页信息。
[0057]请参见图5,为本发明实施例提供的又一种浏览器引擎的运行方法的流程图;该方法可包括以下步骤S301-步骤S307。
[0058]S301,启动浏览器;
[0059]S302,获取所述浏览器所在终端的配置文件。
[0060]S303,从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境。
[0061]S304,判断所述浏览器所在终端的CPU是否同时支持vfp指令集和neon指令集,如果判断结果为是,转入S305 ;否则,转入S306。
[0062]S305,选择即时编译运行方式作为浏览器引擎的运行方式,之后,转入S207。
[0063]S306,选择解释器运行方式作为浏览器引擎的运行方式。
[0064]如果CPU支持vfp指令集,同时支持neon指令集,则JSC引擎优选采用JIT运行方式运行,以保证浏览器的运行速率。如果CPU未同时支持Vfp指令集和neon指令集,则JSC引擎优选采用Interpreter运行方式运行,以使浏览器正常运行。
[0065]S307,运行所述浏览器引擎。
[0066]本发明实施例可根据浏览器的运行环境,包括浏览器所在终端的CPU环境,选择相适配的运行方式运行浏览器引擎,使得浏览器可正常运行于多种类型终端的运行环境中,即使得浏览器可适用于多种终端类型,提高了浏览器的使用灵活性。
[0067]下面将结合附图6-附图8,对本发明实施例提供的浏览器引擎的运行装置进行详细介绍。需要说明的是,该装置可以为浏览器引擎本身,也可以为浏览器中独立于浏览器引擎的装置。以下的装置可以应用于上述方法中。
[0068]请参见图6,为本发明实施例提供的一种浏览器引擎的运行装置的结构示意图;该装置可包括:获取模块101、选择模块102和运行模块103。
[0069]获取模块101,用于在启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境。
[0070]一般地,终端存储有配置文件,该配置文件中记录了本机所使用的CPU环境参数,例如=Android手机中的/proc/cpuinfo文件中记录了该手机所使用的CPU的类型、频率、支持的指令集等CPU环境参数。所述获取模块101可以在浏览器启动过程中,读取该文件记录的内容,确定浏览器的运行环境。
[0071]请一并参见图7,为图6所示获取模块的实施例的结构示意图;该获取模块101可包括:配置文件获取单元1101和读取单元1102。
[0072]配置文件获取单元1101,用于在启动浏览器时,获取所述浏览器所在终端的配置文件;
[0073]读取单元1102,用于从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境。
[0074]选择模块102,用于根据所述运行环境,选择适配的浏览器引擎的运行方式。
[0075]请一并参见图8,为图6所示选择模块的实施例的结构示意图;该选择模块102可包括:判断单元1201和选择单元1202。
[0076]判断单元1201,用于判断所述浏览器所在终端的CPU是否支持预设类型的指令集;其中,所述预设类型的指令集为vfpv3指令集,或者,所述预设类型的指令集为vfp指令集和neon指令集。
[0077]选择单元1202,用于如果判断结果为是,则选择即时编译运行方式作为浏览器引擎的运行方式,或者,用于如果判断结果为否,则选择解释器运行方式作为浏览器引擎的运行方式。
[0078]运行模块103,用于采用选择的运行方式,运行所述浏览器引擎。
[0079]具体实现中,可以在JSC引擎中插入桩函数,JSC引擎在执行过程中,JSC引擎中的桩函数将JSC引擎的执行流程修改为所选择运行方式,所述运行模块103则采用选择的运行方式运行,执行程序代码,在浏览器中呈现网页信息。所述运行模块103采用选择的运行方式运行时,所述浏览器引擎执行程序代码,在浏览器中呈现网页信息。
[0080]需要说明的是,本发明实施例的浏览器引擎的运行装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,在此不赘述。
[0081]本发明实施例可根据浏览器的运行环境,包括浏览器所在终端的CPU环境,选择相适配的运行方式运行浏览器引擎,使得浏览器可正常运行于多种类型终端的运行环境中,即使得浏览器可适用于多种终端类型,提高了浏览器的使用灵活性。
[0082]本发明实施例还公开了一种浏览器,该浏览器可以包括上述图6-图8任一实施例所述的浏览器引擎的运行装置,关于该装置的结构可参见上述实施例的相关描述,在此不赘述。可以理解的是,本实施例的浏览器可以应用于上述图1-图5所示的方法中。基于该浏览器引擎的运行装置,浏览器可正常运行于多种类型终端的运行环境中,即使得浏览器可适用于多种终端类型(包括智能终端和普通终端),提高了浏览器的使用灵活性。
[0083]本发明实施例还公开了一种终端,该终端中可安装上述实施例的浏览器,该浏览器可以包括图6-图8任一实施例所述的浏览器引擎的运行装置。可以理解的是,本实施例的终端可以应用于上述图1-图5所示的方法中。基于该浏览器引擎的运行装置,浏览器可正常运行于该终端的运行环境中。
[0084]通过上述实施例的描述,本发明实施例可根据浏览器的运行环境,包括浏览器所在终端的CPU环境,选择相适配的运行方式运行浏览器引擎,使得浏览器可正常运行于多种类型终端的运行环境中,即使得浏览器可适用于多种终端类型,提高了浏览器的使用灵活性。
[0085]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0086]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种浏览器引擎的运行方法,其特征在于,包括:启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的中央处理器CPU环境;根据所述运行环境,选择适配的浏览器引擎的运行方式;采用选择的运行方式,运行所述浏览器引擎。
2.如权利要求1所述的方法,其特征在于,包括:所述获取所述浏览器的运行环境,包括:获取所述浏览器所在终端的配置文件;从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境;其中,所述CPU环境参数包括:所述终端的CPU支持的指令集类型。
3.如权利要求1或2所述的方法,其特征在于,所述浏览器引擎的运行方式包括:即时编译运行方式或解释器运行方式。
4.如权利要求3所述的方法,其特征在于,所述根据所述运行环境,选择适配的浏览器引擎的运行方式,包括:判断所述浏览器所在终端的CPU是否支持预设类型的指令集;如果是,则选择即时编译运行方式作为浏览器引擎的运行方式;如果否,则选择解释器运行方式作为浏览器引擎的运行方式。
5.如权利要求4所述的方法,其特征在于,所述预设类型的指令集为向量浮点运算单元vfp指令集和neon指令集,或者,所述预设类型的指令集为vfpv3指令集。
6.一种浏览器引擎的运行装置,其特征在于,包括:获取模块,用于在启动浏览器时,获取所述浏览器的运行环境,所述运行环境包括:所述浏览器所在终端的CPU环境;选择模块,用于根据所述运行环境,选择适配的浏览器引擎的运行方式;运行模块,用于采用选择的运行方式,运行所述浏览器引擎。
7.如权利要求6所述的装置,其特征在于,所述获取模块包括:配置文件获取单元,用于在启动浏览器时,获取所述浏览器所在终端的配置文件;读取单元,用于从所述配置文件中读取所述终端的CPU环境参数,以确定所述浏览器的运行环境;其中,所述CPU环境参数包括:所述终端的CPU支持的指令集类型。
8.如权利要求6或7所述的装置,其特征在于,所述选择模块包括:判断单元,用于判断所述浏览器所在终端的CPU是否支持预设类型的指令集;选择单元,用于如果判断结果为是,则选择即时编译运行方式作为浏览器引擎的运行方式,或者,用于如果判断结果为否,则选择解释器运行方式作为浏览器引擎的运行方式;其中,所述浏览器引擎的运行方式包括:即时编译运行方式或解释器运行方式;所述预设类型的指令集为vfp指令集和neon指令集,或者,所述预设类型的指令集为vfpv3指令集。
9.一种浏览器,其特征在于,包括如权利要求6-8任一项所述的浏览器引擎的运行装置。
10.一种终端,其特征在于,包括如权利要求9所述的浏览器。
【文档编号】G06F17/30GK103678340SQ201210329720
【公开日】2014年3月26日 申请日期:2012年9月7日 优先权日:2012年9月7日
【发明者】鲁阳, 饶孟良, 刘凡超, 郭辛华, 王景瑶 申请人:腾讯科技(深圳)有限公司