CN110168496A - 用于应用呈现的方法和系统 - Google Patents
用于应用呈现的方法和系统 Download PDFInfo
- Publication number
- CN110168496A CN110168496A CN201880006596.2A CN201880006596A CN110168496A CN 110168496 A CN110168496 A CN 110168496A CN 201880006596 A CN201880006596 A CN 201880006596A CN 110168496 A CN110168496 A CN 110168496A
- Authority
- CN
- China
- Prior art keywords
- script
- file
- application
- function
- presentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Abstract
提供了呈现应用。可以取回具有与应用的功能相对应的脚本的应用脚本文件。应用脚本文件可以分解为第一脚本文件和第二脚本文件。可以通过从应用脚本文件移除与针对延迟的呈现确定的至少一个功能相对应的至少一个脚本来创建第一脚本文件。可以创建第二脚本文件以包括移除的至少一个脚本。可以将第一脚本文件发送到要执行的用户设备以被执行来提供应用的初始呈现。然后,可以将第二脚本文件发送到用户设备,以用于执行所移除的至少一个脚本,作为应用的延迟的呈现的一部分。
Description
背景技术
基于网络的应用(例如,基于浏览器的电子邮件程序、交互式映射服务、社交网络网站等)通常使用动态HTML、JavaScript和其他通常被称为“AJAX”的Web浏览器技术的组合来推送页面生成、内容操作以及对客户端浏览器的其他类型的执行。这些类型应用的一些众所周知的示例包括GMAILTM、LIVE MAPSTM、REDFINTM、等。
不幸的是,初始应用执行通常必须等到已经下载了大量的应用代码。此外,随着这些基于网络的应用的复杂性和功能集的增长,下载其客户端代码越来越成为其初始启动时间和后续应用交互的瓶颈。鉴于用户在采用此类应用时所要求的性能和“即时满足”的重要性,尽管代码大小增加,但维护和改进应用响应性仍是首要关注的问题。遗憾的是,随着应用变得越来越复杂和功能越来越丰富,应用执行从后端服务器转移到客户端通常会大大增加必须下载到客户端的数据量。结果是应用的感知响应性降低。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”部分中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在帮助确定所要求保护的主题的范围。
本方面涉及用于应用呈现的自动化系统、方法和设备。例如,如本文所述,应用呈现器可以提供各种技术来减少针对应用的感知的呈现时间。通常,应用呈现器可以通过提供应用的初始呈现并且然后用延迟的应用来修补(patch)初始呈现而减少感知的呈现时间。例如,服务器可以从应用开发者接收包含针对应用的脚本的应用脚本文件。脚本分解器可以将应用脚本文件分解为至少两个脚本文件。第一脚本文件可以包括与可以提供应用的初始呈现的功能相对应的脚本。第二脚本文件可以包括与可以从初始呈现延迟的一个或多个功能相对应的脚本。可以将第一脚本文件发送到用户设备。可以在用户设备上执行第一脚本文件中的脚本以提供应用的初始呈现。在提供应用的初始呈现之后,可以将第二脚本文件发送到用户设备。可以执行第二脚本文件中的脚本以使用从初始呈现延迟的功能来修补初始呈现,以完成所请求的应用的呈现。
示例被实现为计算机进程、计算系统,或制品,诸如设备、计算机程序产品或计算机可读介质。根据一方面,该计算机程序产品是计算机系统可读的计算机存储介质,并且编码用于执行计算机过程的指令的计算机程序。
在下面的附图和描述中阐述了一个或多个方面的细节。通过阅读以下具体实施方式和对相关联的附图的回顾,其他特征和优点将是显而易见的。应理解,以下具体实施方式仅是解释性的,而不是对权利要求的限制。
附图说明
包括在本公开中并构成本公开的一部分的附图示出了各个方面。在附图中:
图1是示出了包括用于呈现应用的系统的组件的示例操作环境的框图;
图2是示出了用于呈现应用的示例方法中涉及的一般阶段的流程图;
图3是示出了确定用于延迟的呈现的一个或多个功能所涉及的一般阶段的流程图;
图4是示出了用于呈现应用的另一示例方法中涉及的一般阶段的流程图;
图5是示出了出于呈现应用的目的而充当客户端和服务器之间的中介的应用呈现器的框图;
图6是示出了计算设备的示例物理组件的框图;
图7A和图7B是移动计算设备的简化框图;以及
图8是分布式计算系统的简化框图。
具体实施方式
以下具体实施方式参考附图。只要可能,在附图中使用相同的附图标记,并且以下描述涉及相同或相似的元件。虽然可以描述示例,但是修改、改编和其他实现是可能的。例如,可以对附图中示出的元件进行替换、添加或修改,并且可以通过将阶段替换、重新排序或添加到所公开的方法来修改本文描述的方法。因此,以下具体实施方式不是限制性的,而是由所附权利要求限定适当的范围。示例可以采用硬件实现或完全软件实现,或者结合软件和硬件方面的实现的形式。因此,以下具体实施方式不应被视为具有限制意义。
本公开的各方面涉及用于呈现应用并且更具体地用于呈现web应用的方法、系统和计算机存储介质。Web应用通常可以在PC类型计算机、诸如PDA或移动电话之类的手持设备或诸如下面参考图1描述的设备102之类的其他计算设备上的浏览器类型应用上执行。本公开可以提供通过使用静态分析和轻量级代码注释的组合并且在运行时重构应用自动将这些应用的组件分解为呈现和非呈现组件,来减少此类应用的初始数据大小的方法和系统。例如,本公开可以提供用于减小初始数据大小的两阶段方法。阶段一可以在构建时期间(即,在生产之外)运行,并且使用静态分析,可以识别可能不能从应用入口点撤销的一组功能(和类)。可以从引导脚本文件移除与这些识别的功能对应的脚本,并将其放在辅助脚本文件中。可以首先发送减少的引导脚本文件(在本公开中也称为呈现脚本文件)以提供应用的初始呈现。阶段二可以在初始呈现后不久运行。在阶段二中,可以发送辅助脚本文件,并且可以在运行时修补应用的初始呈现以包括辅助脚本文件中的功能。
有利地,可以在现有应用上启用本公开中描述的两阶段方法,而不需要任何特定于应用的知识或对应用的现有代码的任何改变。此外,如本文所述的应用呈现可以提供感知的应用加载时间的改进,对于较慢但是越来越常见和重要类型的连接(例如无线和移动连接)尤其明显。特别是,在无线和移动连接中,如果必须在应用呈现之前传输和执行整个脚本库,则执行代价(即,用于初始应用执行的下载大小和延迟时间)尤其高,特别是如果用户使用缓慢连接或具有处理速度较低的设备。
现在参考图1,示出了示出用于应用呈现的示例系统的各方面的示例操作环境100的框图。示例操作环境100可以包括电子计算设备102。图1中示出的计算设备102被示为平板计算设备;然而,应当意识到,计算设备102可以是各种类型的计算设备中的一个(例如,平板计算设备、台式计算机、移动通信设备、膝上型计算机、膝上型/平板电脑混合计算设备、大型屏幕多点触摸显示器、游戏设备、智能电视、可穿戴设备或其他类型的计算设备),用于执行应用108以执行各种任务。关于图6、图7A,图7B和图8更详细地讨论这些计算设备的硬件。
用户110可以利用计算设备102来访问应用108。用户110可以利用计算设备102上的应用108来执行各种任务,所述各种任务可以包括例如写入、计算、绘制、获取和组织笔记、组织、准备演示文稿、发送和接收电子邮件、制作音乐等。合适的应用108的示例可以包括但不限于电子邮件(Email)应用、交互式地图服务应用、社交网络应用、文字处理应用、电子表格应用、幻灯片演示应用、绘图应用、笔记记录应用、网络浏览器应用和游戏应用。应用108可以包括本地存储在计算设备102上的胖客户端应用108,或者可以包括驻留在远程服务器上并且可以通过网络访问的瘦客户端应用108(即,web应用)。瘦客户端应用108可以托管在浏览器控制的环境中或者以浏览器支持的语言编码,并且可以依赖于公共web浏览器以使应用108在计算设备102上可执行。
根据示例,计算设备102可操作用于通过网络104(例如因特网或内联网)与服务器106通信。服务器106可以包括应用呈现器112和应用脚本114。应用呈现器112在被请求时可以被配置为向计算设备102提供应用脚本114。在一个方面,应用呈现器112可以被实现为服务器106和计算设备102之间的中间代理。
已经描述了关于图1的操作环境,图2是示出了用于在计算设备102上呈现应用108的示例方法200中涉及的一般阶段的流程图。现在参考图2,方法200可以从开始操作202处开始,并且可以进行到操作204,其中可以接收与应用108相对应的应用脚本文件。例如,开发者可以创建包括针对应用的应用脚本114的应用代码,并在服务器106上传代码。该代码可以作为应用脚本文件上传。应用脚本114可以包括与应用108的组件相对应的脚本。例如,应用脚本114可以包括在用户设备上执行时呈现应用108的组件(在本公开中也称为功能)的脚本。组件可以包括功能、类、存根、对象等。应用脚本114可以包含在应用脚本文件中。
一旦在操作204处接收到应用脚本114,方法200就可以进行到操作206,其中可以识别应用108的一个或多个功能以用于延迟的呈现。例如,脚本分解器116可以通过静态分析和代码注释来识别可以从应用108的初始呈现延迟的一个或多个功能。关于图3详细描述了用于识别用于延迟的呈现的一个或多个功能的示例方法。
在操作206处在识别用于延迟的呈现的一个或多个功能之后,方法200可以进行到操作208,其中可以确定与针对延迟的呈现而识别的一个或多个功能相对应的一个或多个脚本。例如,脚本分解器116可以从应用脚本文件确定与从初始呈现延迟的一个或多个功能相对应的一个或多个脚本。
一旦在操作208处确定了一个或多个脚本,方法200就可以进行到操作210,其中可以分解应用脚本文件。例如,应用脚本文件可以被分解为第一脚本文件和第二脚本文件。在一个示例方面,可以通过将被识别用于延迟的呈现的一个或多个脚本从应用脚本文件移除到第二脚本文件来分解应用脚本文件。第一脚本文件可以包括减去上述一个或多个脚本的应用脚本文件。
在操作210处在创建第一脚本文件之后,方法200可以进行到操作212,其中可以创建第二脚本文件。例如,可以创建第二脚本文件以包括从应用脚本文件移除的一个或多个脚本。在示例方面,第一脚本文件还可以被称为呈现脚本文件(X.init.js),而第二脚本文件可以被称为辅助脚本文件(X.defer js)。
一旦应用脚本文件已经分别在操作210和212分解成第一文件和第二文件,方法200就可以进行到操作214,其中可以接收用于访问应用108的请求。响应于用户110发起针对应用108的访问,可以接收针对应用108的请求。例如,用户110可以通过点击代表应用108的图标或通过提供应用108的web地址来发起针对应用108的访问。在启动时,计算设备102可以与请求应用108的组件的服务器106通信。
在操作214处在接收到针对应用108的请求之后,方法200可以进行到操作216,其中可以将第一脚本文件发送到计算设备102。可以首先发送第一脚本文件以提供针对应用108的初始呈现。例如,第一脚本文件可以由计算设备102接收和执行,以提供应用108的初始呈现。
一旦在操作216处提供了应用108的初始呈现,方法200可以进行到操作218,其中可以将第二脚本文件发送到计算设备102。可以由计算设备102接收并执行第二脚本文件,以利用识别为延迟的呈现的一个或多个功能来修补(patch)初始呈现,以提供应用108的完整呈现。在操作218处在提供应用108的完整呈现之后,方法200可以在操作220处结束。
在一个方面,可以存在用于将应用脚本文件分解为呈现脚本文件和辅助脚本文件的若干不同方式。例如,应用108的功能可以被分类为可移除功能、无操作存根功能和入队的(queued)存根功能中的一个。然后可以基于功能分类将应用脚本文件分解为呈现脚本文件(X.init.js)和辅助脚本文件(X.defer.js)。
例如,如果保证在应用108的初始呈现期间不调用功能,则可以将与该功能相对应的脚本从引导脚本文件中省略,并移动到辅助脚本文件。在假设中,如果Foo是具有功能Bar和Baz的类,则引导脚本文件(X.js)可以提供为:
//构造功能
Foo=function(){
}
Foo.prototype={
Bar:function(){
//Bar实现
},
Baz:function(){
//Baz实现
}
}
此外,如果在假设中,在应用108的初始呈现期间从未调用功能Bar,则可以将呈现脚本文件(X.init.js)生成为:
在相同的假设中,辅助脚本文件(X.defer.js)可以生成为:
Foo.prototype.Bar=function(){
//Bar实现
}
继续前面的假设,如果功能Bar在技术上是可调用的,但是在初始呈现期间可能不需要被调用(即,可能不需要其效果/结果),并且仅仅没有运行就没有损害,功能Bar可以归类为无操作存根功能。无操作存根功能的示例可以包括诊断功能和记录功能。无操作存根功能可能无法从初始呈现移除,因为它可能被其他功能调用,并且移除它可能会导致运行时错误。然而,在应用108的初始呈现中,用户110可能不需要或不使用无操作存根功能。因此,对于无操作存根功能,呈现脚本文件(X.init.js)可以被定义为:
//构造功能
Foo=function(){
}
Foo.prototype={
Bar:Defer.StubNoOp(“Foo.prototype.Bar”),
Baz:function(){
//Baz实现
}
}
用于无操作存根功能的辅助脚本文件(X.defer.js)可以被定义为:
Foo.prototype.Bar=function(){
//Bar实现
}
在先前的实现中,Defer.StubNoOp(“Foo.prototype.Bar”)可以是工厂方法,其可以构造无操作存根功能的唯一定义。例如,无操作存根可以是功能定义,其可以检查呈现脚本文件(X.defer.js)中的声明是否已经执行(即,X.defer.js已经成功下载并被解释)。如果呈现脚本文件(X.defer.js)中的声明已执行,则可以代表调用功能来调用在辅助脚本文件(X.defer.js)中声明的功能,并返回其结果。如果尚未执行辅助脚本文件,则无需执行任何操作即可返回针对无操作存根功能的调用。
如在无操作存根功能中,可以在初始呈现期间调用的功能以及对这样的功能的调用可以不被忽略,但是调用的结果可能不是立即需要的,可以被分类为入队的存根功能。入队的存根功能的示例可以包括网络绑定操作,其中根据定义的调用功能可能不知道被调用功能何时将运行,只是它将在某个点上相对于当前执行异步地运行。对于入队的存根功能,引导脚本文件(X.init.js)可以定义为:
//构造功能
Foo=function(){
}
Foo.prototype={
Bar:Defer.StubQueue(“Foo。原型。酒吧”),
Baz:function(){
//Baz实现
}
}
用于入队的存根功能的辅助脚本文件(X.defer.js)可以被定义为:
Foo.prototype.Bar=function(){
//Bar实现
}
针对入队的存根功能的分解可能类似于无操作存根功能的分解,但是如果没有到达新定义,则不是忽略调用,而是可以在数据结构中封装并保存入队的存根功能的所有参数和上下文。稍后,当入队的存根功能的实际定义到达时,可以检查存储的上下文,并且可以将其用于调用入队的存根功能的实际定义。
在示例方面,可以有若干种方法将应用108的功能分类为可移动的、无操作的存根,以及作为入队的存根功能。例如,针对应用108的代码开发者可以显式地注释可移动的、无操作存根或入队存根的功能。作为示例,用于处理按钮点击的功能可以被注释为入队的存根功能或无操作功能。用于处理按钮点击的功能可以从初始呈现延迟,因为应用108可能不响应用户的按钮点击。此外,仅从延迟的注释功能调用的任何功能也可以被分类为延迟的功能,因为根据定义,它不能被调用。
在示例方面,可以基于应用108的功能的静态分析和功能的依赖性生成将功能确定为延迟的功能。图3中示出了延迟的功能的自动检测的示例实现。例如,图3是示出了确定应用108的可以从初始呈现延迟的功能的示例方法300中涉及的一般阶段的流程图。现在参考图3,方法300可以在开始操作302开始,并且前进到操作304,其中可以识别将元素添加到应用108的初始呈现的功能。例如,通常可以通过执行将元素添加到浏览器文档对象模型(DOM)的应用脚本来呈现复杂的单页面web应用。
已经识别出在操作304处向浏览器DOM添加元素的功能,方法300可以进行到操作306,其中可以将所识别的元素标记为入口点。例如,为了呈现的目的,由浏览器DOM的主页面调用的功能可以统称为应用108的入口点。作为示例,入口点通常可以仅仅是称为Program.Main()或者Program.Render()的一个功能。在示例方面,可以通过与浏览器DOM元素的用户交互来调用的功能也可以被添加到入口点列表中。
一旦在操作306处标记了入口点,则方法300可以进行到操作308,其中可以识别可以从入口点调用的功能。在一个方面,可以扩展入口点列表以包括可以从入口点调用的功能,以及可以从那些被调用的功能调用的所有功能,直到可能在初始呈现的部分处调用的所有功能的传递闭包为止。
在操作308处在识别出传递闭包之后,方法300可以进行到操作310,其中可以识别既不是入口点也不是传递闭包的功能。在操作312处,可以将方法300的操作310处识别的功能标记为针对初始呈现的延迟的呈现。在操作312处标记针对延迟的呈现的功能,方法300可以在操作314处结束。
在一个方面,延迟的功能可以包括构造功能,其可以指示可以从初始呈现推迟的整个相关联的类。在另一方面,可以修改先前声明的类以包括先前延迟的功能。但是,对于要工作的机制,类声明可能存在一个或多个约束。此外,必须在其类的规范原型对象上移除/替换所有可延迟功能。
图4是示出了用于在计算设备102上提供应用108的示例方法400中涉及的一般阶段的流程图。例如,方法400可以在开始操作402处开始,并且前进到操作404,其中可能会接收到针对应用的请求。例如,计算设备102可以从用户110接收用于访问应用108的请求。在操作404处在接收到针对应用108的请求之后,方法400可以进行到操作406,其中可以将所接收的请求转发到托管请求应用的服务器。例如,可以将针对应用108的所接收的请求转发到服务器106。
在操作406处将请求发送到服务器106之后,方法400可以前进到操作408,其中可以接收第一脚本文件。例如,响应于针对应用108的请求,可以从服务器106接收第一脚本文件。所接收的第一文件可以是呈现脚本文件,并且可以包括要在计算设备102处执行的脚本。在操作408处在接收到第一脚本文件之后,方法400可以进行到操作410,其中可以执行在第一文件中接收的脚本以提供应用108的初始呈现。
一旦在操作410处提供了应用108的初始呈现,方法400就可以进行到操作412,其中可以接收第二脚本文件。例如,在提供应用108的初始呈现之后,计算设备102可以接收第二脚本文件。第二脚本文件可以是辅助脚本文件,并且可以包括来自第一脚本文件的延迟的脚本。在另一方面,可以在下载第一脚本文件之后接收第二脚本文件,同时执行来自第一脚本文件的引导脚本以提供初始呈现。
在操作412处在接收到第二脚本文件之后,方法400可以进行到操作414,其中可以执行来自第二脚本文件的脚本。例如,可以执行来自第二脚本文件的脚本以修补应用108的初始呈现以提供完整的呈现。在一个方面,初始呈现可以在运行中进行修补。一旦在操作414处修补了应用108的初始呈现,则方法400可以在操作416处结束。
在一个示例方面,应用呈现器112和脚本分解器116可以远离服务器106定位。例如,应用呈现器112和脚本分解器116可以位于代理服务器上。在另一示例方面,应用呈现器112和脚本分解器116可以位于两个单独的代理服务器上。图5提供了示例性架构流程图500,其示出了位于代理服务器502上的应用呈现器112和脚本分解器116。示例架构流程图500示出了处于在计算设备102上呈现应用的目的而充当计算设备102和服务器106之间的中介的应用呈现器112。在一个方面,应用呈现器112可以实现为服务器106和计算设备102之间的中间代理,使得应用呈现器112可以拦截来自计算设备102的所有呼叫并将它们转发到服务器106。此外,应用呈现器112可以拦截来自服务器106的指向计算设备102的所有响应并且回复计算设备102,就像它是服务器106一样。
例如,并且如图5所示,可以在服务器106上上传与应用108相对应的应用脚本114。脚本分解器116可以分析应用108的功能以确定针对延迟的呈现的至少一个功能。脚本分解器116基于该分析,可以将包含应用脚本114的应用脚本文件分解为第一脚本文件508和第二脚本文件510。
应用呈现器112可以拦截来自计算设备102的针对应用108的请求。应用呈现器112可以将拦截的请求转发到服务器106。应用呈现器112响应于针对应用108的请求,可以从服务器106接收分解的第一脚本文件508以及第二脚本文件510。然后,应用呈现器112可以将第一脚本文件508发送到计算设备102。计算设备102可以执行来自第一脚本文件508的脚本以提供应用108的初始呈现。然后,应用呈现器112可以将第二脚本文件510发送到计算设备102以修补初始呈现并包括从初始呈现延迟的功能。
虽然已经在与在计算机上的操作系统上运行的应用一起执行的程序模块的一般上下文中描述了实现,但是本领域技术人员将认识到,这些方面也可以与其他方面一起实现。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。
本文描述的方面和功能可以经由各种计算系统来操作,包括但不限于台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板计算机或平板型计算机、笔记本计算机、以及膝上型本计算机)、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机和大型计算机。
另外,根据一个方面,本文描述的方面和功能在分布式系统(例如,基于云的计算系统)上操作,其中应用功能,存储器,数据存储和取回以及各种处理功能通过分布式计算网络(例如,因特网或内联网)彼此远程操作。根据一个方面,经由车载计算设备显示器或经由与一个或多个计算设备相关联的远程显示单元来显示各种类型的用户界面和信息。例如,在用户界面和各种类型的信息被投影到的墙壁表面上显示和交互各种类型的用户界面和信息。与利用其可以实践实现的多个计算系统的交互包括:击键输入、触摸屏输入、语音或其他音频输入、姿势输入,其中相关联的计算设备配备有用于捕获和解释用于控制计算设备的功能的用户姿势的检测(例如,相机)功能等。
图6-图8和相关联的描述提供了对其中实践示例的各种操作环境的讨论。然而,关于图6-图8示出和讨论的设备和系统是出于示例和说明的目的,而不是限制用于实践本文所述方面的大量计算设备配置。
图6是示出了计算设备600的物理组件(即,硬件)的框图,利用其可以实践本公开的示例。在基本配置中,计算设备600可以包括至少一个处理单元602和系统存储器604。根据一个方面,取决于计算设备的配置和类型,系统存储器604可以包括但不限于易失性存储器(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪存或这些存储器的任何组合。根据一个方面,系统存储器604可以包括操作系统605和适合于运行软件应用650的一个或多个程序模块606。根据一个方面,系统存储器604包括应用呈现器112和脚本分解器116。操作系统605,例如,可以适合于控制计算设备600的操作。此外,可以结合图形库、其他操作系统或任何其他应用来实践方面,并且可以不限于任何特定应用或系统。该基本配置在图6中由虚线608内的那些组件示出。根据一个方面,计算设备600可以包括附加特征或功能。例如,根据一个方面,计算设备600可以包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图6中由可移动存储设备609和不可移动存储设备610示出。
如上所述,根据一个方面,多个程序模块和数据文件存储在系统存储器604中。当在处理单元602上执行时,程序模块606(例如,应用呈现器112)可以执行以下过程,包括但不限于图2-图4中分别所示的方法200-400的一个或多个阶段。根据一个方面,其他程序模块可以根据示例使用,并且包括如下应用,诸如电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用等。
根据一个方面,在电子电路中实践各方面,所述电子电路包括分立电子元件、包含逻辑门的封装或集成电子芯片、利用微处理器的电路或包含电子元件或微处理器的单个芯片。例如,经由片上系统(SOC)来实践各方面,其中图6中所示的每个或许多组件被集成到单个集成电路上。根据一个方面,这样的SOC器件可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些可以作为单个集成电路(或“烧制”)到芯片衬底上。当经由SOC操作时,可以经由与单个集成电路(芯片)上的计算设备600的其他组件集成的专用逻辑来操作这里描述的功能。根据一个方面,可以使用能够执行逻辑运算的其他技术来实践本公开的各方面,所述逻辑运算例如,AND、OR和NOT,所述其他技术包括但不限于机械、光学、流体和量子技术。另外,方面可以在通用计算机或任何其他电路或系统中实施。
根据一个方面,计算设备600可以具有一个或多个输入设备612,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。根据一个方面,还可以包括输出设备614,诸如显示器、扬声器、打印机等。上述设备是示例,并且可以使用其他设备。根据一个方面,计算设备600可以包括允许与其他计算设备618通信的一个或多个通信连接616。合适的通信连接616的示例可以包括但不限于射频(RF)发射器、接收器和/或收发器电路;通用串行总线(USB)、并行和/或串行端口。
这里使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括以用于存储信息的任何方法或技术(例如,计算机可读指令,数据结构或程序模块)实现的易失性和非易失性、可移动和不可移动介质。系统存储器604、可移动存储设备609和不可移动存储设备610都可以是计算机存储介质示例(即,存储器存储)。根据一个方面,计算机存储介质可以包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字通用光盘(DVD)或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用于存储信息并且可以由计算设备600访问的任何其他制品。根据一个方面,任何这样的计算机存储介质都是计算设备600的一部分。计算机存储介质不包括载波或其他传播的数据信号。
根据一个方面,通信介质可以由计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据(诸如载波或其他传输机制)来体现,并且包括任何信息传递介质。根据一个方面,术语“已调制数据信号”可以描述具有以对信号中的信息进行编码的方式设置或改变的一个或多个特性的信号。作为示例而非限制,通信介质可以包括有线介质,诸如有线网络或直接有线连接,以及无线介质,诸如声学、射频(RF)、红外和其他无线介质。
图7A和图7B示出了移动计算设备700,例如移动电话、智能电话、平板个人计算机、膝上型计算机等,其中可以实现这些方面。参考图7A,示出了用于实现这些方面的移动计算设备700的示例。在基本配置中,移动计算设备700可以是具有输入元件和输出元件的手持式计算机。移动计算设备700通常可以包括显示器705和允许用户将信息输入到移动计算设备700中的一个或多个输入按钮710。根据一个方面,移动计算设备700的显示器705可以用作输入设备(例如,触摸屏显示器)。如果包括,则可选的侧输入元件715可以允许进一步的用户输入。根据一个方面,侧输入元件715可以是旋转开关、按钮或任何其他类型的手动输入元件。在替代示例中,移动计算设备700可以包括更多或更少的输入元素。例如,在一些示例中,显示器705可以不是触摸屏。在替代示例中,移动计算设备700可以是便携式电话系统,例如蜂窝电话。根据一个方面,移动计算设备700可以包括可选的小键盘735。根据一个方面,可选的小键盘735可以是物理小键盘。根据另一方面,可选键盘735可以是在触摸屏显示器上生成的“软”键盘。在各个方面,输出元件可以包括用于示出图形用户界面(GUI)的显示器705、视觉指示器720(例如,发光二极管)和/或音频换能器725(例如,扬声器)。在一些示例中,移动计算设备700可以包括振动换能器,其用于向用户提供触觉反馈。在又一示例中,移动计算设备700可以合并输入和/或输出端口,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口)一用于向外部设备发送信号或从外部设备接收信号。在又一示例中,移动计算设备700可以合并外围设备端口740,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口)以用于向外部设备发送信号或从外部设备接收信号。
图7B是示出了移动计算设备的一个示例的架构的框图。也就是说,移动计算设备700可以合并系统(即,架构)702以实现一些示例。在一个示例中,系统702可以被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏和媒体客户端/玩家)的“智能电话”。在一些示例中,系统702可以集成为计算设备,诸如集成的个人数字助理(PDA)和无线电话。
根据一个方面,一个或多个应用750可以被加载到存储器762中并且在操作系统764上或与其相关联地运行。应用程序的示例可以包括电话拨号程序、电子邮件程序、个人信息管理(PEVI)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息传送程序等。根据一个方面,应用108或应用呈现器112可以被加载到存储器762中。系统702还可以包括存储器762内的非易失性存储区域768。非易失性存储区域768可以用于存储如果系统702断电不应该丢失的持久性信息。应用程序750可以在非易失性存储区域768中使用和存储信息,诸如电子邮件应用使用的电子邮件或其他消息等。同步应用(未示出)也可以驻留在系统702上,并且可以被编程为与驻留在主计算机上的相对应的同步应用交互,以使存储在非易失性存储区域768中的信息与存储在主计算机中的相对应的信息保持同步。。应当意识到,其他应用可以加载到存储器762中并在移动计算设备700上运行。
根据一个方面,系统702可以具有电源770,其可以实现为一个或多个电池。根据一个方面,电源770还可以包括外部电源,例如补充或再充电电池的AC适配器或电源对接支架。
根据一个方面,系统702可以包括可以执行发送和接收射频通信的功能的无线电772。无线电772可以经由通信运营商或服务提供商促进系统702和“外部世界”之间的无线连接。可以在操作系统764的控制下进行到以及来自无线电772的传输。换句话说,无线电772接收的通信可以经由操作系统764传播到应用程序750,反之亦然。
根据一个方面,视觉指示器720可用于提供视觉通知和/或音频接口774可用于经由音频换能器725来产生可听通知。在所示示例中,视觉指示器720可以是发光的二极管(LED)并且音频换能器725可以是扬声器。这些设备可以直接耦合到电源770,使得当被激活时,它们可以保持开启由通知机制指示的持续时间,即使处理器760和其他组件可能关闭以节省电池电量。LED可以被编程为无限期地保持开启,直到用户采取行动来指示设备的通电状态。音频接口774可用于向用户提供可听信号并从用户接收可听信号。例如,除了耦合到音频换能器725之外,音频接口774还可以耦合到麦克风以接收可听输入,例如以便于电话交谈。根据一个方面,系统702还可以包括视频接口776,其使得车载相机730的操作能够记录静止图像、视频流等。
根据一个方面,实现系统702的移动计算设备700可以包括附加特征或功能。例如,移动计算设备700可以包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图7B中由非易失性存储区域768示出。
根据一个方面,由移动计算设备700生成或捕获并经由系统702存储的数据/信息可以本地存储在移动计算设备700上,如上所述。根据另一方面,数据可以存储在可以由设备经由无线电772或经由移动计算设备700以及与移动计算设备700相关联的单独计算设备之间的有线连接可访问的任何数量的存储介质上,例如,分布式计算网络(例如,因特网)中的服务器计算机。应当意识到,这样的数据/信息可以经由移动计算设备700经由无线电772或经由分布式计算网络来访问。类似地,根据一个方面,根据众所周知的数据/信息传送和存储单元(包括电子邮件和协作数据/信息共享系统)可以容易地在计算设备之间传送这样的数据/信息用于存储和使用。
图8示出了用于呈现如上所述的应用的系统的架构的一个示例。与应用108、应用呈现器112、应用脚本114或脚本分解器116相关联地开发、交互或编辑的内容可以被存储在不同的通信通道或其他存储类型中。例如,可以使用目录服务822、网络门户824、邮箱服务826、即时消息存储器828或社交网络站点830来存储各种文档。应用108可操作用于使用这些类型的系统中的任何一种等,以用于提供如本文所述的应用108。根据一个方面,服务器820可以向客户端805a、805b、805c提供应用108。作为一个示例,服务器820可以是通过web提供应用108的web服务器。服务器820可以通过网络840通过web向客户端805提供应用108。作为示例,客户端计算设备可以在个人计算机805a、平板计算设备805b或移动计算设备805c(例如,智能手机)或其他计算设备中实现和实现。客户端计算设备的这些示例中的任何一个可操作用于从商店816获得内容。
例如,以上参考根据方面的方法、系统和计算机程序产品的框图和/或操作图示描述了实现。块中记录的功能/动作可以不按任何流程图所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。
本申请中提供的一个或多个示例的描述和说明不旨在以任何方式限制或约束所要求保护的范围。本申请中提供的方面、示例和细节被认为足以传达占有并使其他人能够制作和使用最佳模式。实现不应被解释为限于本申请中提供的任何方面、示例或细节。无论是组合地还是单独地示出和描述,旨在选择性地包括或省略各种特征(结构和方法)以产生具有特定特征集的示例。已经提供了本申请的描述和说明,本领域技术人员可以设想落入本申请中体现的总体发明构思的更广泛方面的精神内的变型、修改和替换示例,其不脱离本申请的更广范围。
Claims (15)
1.一种用于呈现应用的方法,包括:
取回应用脚本文件,所述应用脚本文件包括与应用的多个功能相对应的多个脚本;
将所述应用脚本文件分解为第一脚本文件和第二脚本文件,其中,分解所述应用脚本文件包括:
通过从所述应用脚本文件移除至少一个脚本来创建所述第一脚本文件,所述至少一个脚本与针对延迟的呈现确定的所述多个功能中的至少一个功能相对应,以及
创建包括被移除的至少一个脚本的所述第二脚本文件;以及
执行所述第一脚本文件中的脚本以提供所述应用的初始呈现。
2.如权利要求1所述的方法,其中,还包括执行所述第二脚本文件中的所述被移除的至少一个脚本以修补所述应用的初始呈现。
3.如权利要求2所述的方法,其中,所述第二脚本文件中的所述被移除的至少一个脚本在提供所述应用的初始呈现之后被执行,并且其中,所述初始呈现在所述至少一个脚本的执行期间被修补以包括针对所述延迟的呈现确定的被移除的至少一个功能。
4.如权利要求1所述的方法,其中,将所述应用脚本文件分解为所述第一脚本文件和所述第二脚本文件包括:
执行对所述多个功能的静态分析以识别用于所述延迟的呈现的所述至少一个功能;
从所述应用脚本文件移除与识别的至少一个功能相对应的至少一个脚本,以创建所述第一脚本文件;以及
创建所述第二脚本文件以包括从所述应用脚本文件移除的所述至少一个脚本。
5.如权利要求1所述的方法,其中,通过从所述应用脚本文件移除所述至少一个脚本来创建所述第一脚本文件包括:
确定由所述应用的主页面调用的第一多个功能;以及
移除不与所确定的由所述应用的主页面调用的第一多个功能相对应的至少一个脚本。
6.如权利要求1所述的方法,其中,通过从所述应用脚本文件移除所述至少一个脚本来创建所述第一脚本文件包括:
确定不由所述应用的主页面调用的至少一个功能;
确定与所述至少一个功能相对应的至少一个脚本;以及
从所述应用脚本文件移除所确定的至少一个脚本。
7.如权利要求1所述的方法,还包括确定针对所述延迟的呈现的所述至少一个功能,其中,确定针对所述延迟的呈现的所述至少一个功能包括:
确定所请求的应用的一个或多个入口点;
确定能够从所述一个或多个入口点调用的第一组功能;
确定能够从所述第一组功能调用到传递闭包的第二组功能;以及
将所述第一组功能和所述第二组功能确定为针对所述延迟的呈现的至少一个功能。
8.一种包括用于提供应用的计算设备的系统,所述计算设备包括:
至少一个处理设备;以及
存储指令的至少一个计算机可读数据存储设备,所述指令当由所述至少一个处理设备执行时,使所述计算设备用于:
取回应用脚本文件,所述应用脚本文件包括与网络应用的多个功能相对应的多个脚本;
将所述应用脚本文件分解为第一脚本文件和第二脚本文件,其中,被配置为分解所述应用脚本文件的至少一个处理设备包括至少一个处理设备,其被配置用于:
通过从所述应用脚本文件移除至少一个脚本来创建第一脚本文件,所述至少一个脚本与针对延迟的呈现确定的多个功能中的至少一个功能相对应,以及
创建包括被移除的至少一个脚本的所述第二脚本文件;
将所述第一脚本文件发送到用户设备,其中,所述第一脚本文件被执行以提供针对所述网络应用的初始呈现;以及
将所述第二脚本文件发送到所述用户设备。
9.如权利要求8所述的系统,其中,所述第二脚本文件中的所述至少一个脚本在提供所述网络应用的初始呈现之后被执行。
10.如权利要求8所述的系统,其中,所述第二脚本文件中的所述至少一个脚本被执行以在运行中修补所述初始呈现。
11.如权利要求8所述的系统,其中,所述网络应用是web应用,并且其中,所述多个功能包括所述网络应用的组件。
12.如权利要求8所述的系统,其中,所述网络应用是电子邮件应用。
13.如权利要求8所述的系统,其中,所述应用脚本文件是JavaScript文件。
14.如权利要求8所述的系统,其中,所述至少一个功能是针对来自所述网络应用的源代码中的初始呈现的延迟的呈现进行注释的。
15.一种包括计算机可读指令的计算机可读存储设备,所述计算机可读指令当由处理单元执行时,能够操作用于提供应用,包括:
取回应用脚本文件,所述应用脚本文件包括与应用的多个组件相对应的多个脚本;
将所述应用脚本文件分解为第一脚本文件和第二脚本文件,其中,分解所述应用脚本文件包括:
通过从所述应用脚本文件移除至少一个脚本来创建所述第一脚本文件,所述至少一个脚本与针对延迟的呈现确定的多个组件中的至少一个组件相对应,以及
创建包括被移除的至少一个脚本的第二脚本文件;
将所述第一脚本文件发送到所述用户设备,其中,所述第一脚本文件中的脚本被执行以提供请求的应用的初始呈现;以及
将所述第二脚本文件发送到所述用户设备以用于在所述用户设备上执行以用于修补所述请求的应用的初始呈现。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/404,130 | 2017-01-11 | ||
US15/404,130 US10481876B2 (en) | 2017-01-11 | 2017-01-11 | Methods and systems for application rendering |
PCT/US2018/012439 WO2018132301A1 (en) | 2017-01-11 | 2018-01-05 | Methods and systems for application rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110168496A true CN110168496A (zh) | 2019-08-23 |
CN110168496B CN110168496B (zh) | 2023-09-15 |
Family
ID=61074537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880006596.2A Active CN110168496B (zh) | 2017-01-11 | 2018-01-05 | 用于应用呈现的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10481876B2 (zh) |
EP (1) | EP3538990B1 (zh) |
CN (1) | CN110168496B (zh) |
WO (1) | WO2018132301A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045749A (zh) * | 2019-12-18 | 2020-04-21 | 青岛海信传媒网络技术有限公司 | 应用程序启动方法及设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10466989B2 (en) | 2011-09-02 | 2019-11-05 | Microsoft Technology Licensing, Llc. | Fast presentation of markup content having script code |
US10409573B1 (en) * | 2018-02-19 | 2019-09-10 | International Business Machines Corporation | Batch script decomposer |
CN110007906B (zh) * | 2018-12-27 | 2023-03-10 | 创新先进技术有限公司 | 脚本文件的处理方法、装置和服务器 |
CN112955865A (zh) * | 2019-04-25 | 2021-06-11 | 谷歌有限责任公司 | 应用视图层次的静态协调 |
US11630805B2 (en) * | 2020-12-23 | 2023-04-18 | Lenovo (Singapore) Pte. Ltd. | Method and device to automatically identify themes and based thereon derive path designator proxy indicia |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033448A1 (en) * | 2000-02-04 | 2003-02-13 | Robert Kieffer | Optimized delivery of web application code |
US20040019768A1 (en) * | 2002-07-29 | 2004-01-29 | Ross Jonathan K. | Method and system for using dynamic, deferred operation information to control eager deferral of control-speculative loads |
US20040054990A1 (en) * | 2002-09-17 | 2004-03-18 | Liao Steve Shih-Wei | Post-pass binary adaptation for software-based speculative precomputation |
US20060010309A1 (en) * | 2004-07-08 | 2006-01-12 | Shailender Chaudhry | Selective execution of deferred instructions in a processor that supports speculative execution |
US20080127175A1 (en) * | 2006-11-01 | 2008-05-29 | Microsoft Corporation | Packaging software products as single-file executables containing scripting logic |
US20090292791A1 (en) * | 2008-05-23 | 2009-11-26 | Microsoft Corporation | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20110289484A1 (en) * | 2010-05-19 | 2011-11-24 | Also Energy | Method and System for Script Processing for Web-Based Applications |
CN102270129A (zh) * | 2010-06-07 | 2011-12-07 | 微软公司 | 将软件产品分发为包括脚本逻辑和外部资源的可执行文件 |
WO2013032959A1 (en) * | 2011-09-02 | 2013-03-07 | Microsoft Corporation | Fast presentation of markup content having script code |
US20130191439A1 (en) * | 2012-01-19 | 2013-07-25 | Microsoft Corporation | Managing script file dependencies and load times |
US8639743B1 (en) * | 2007-12-05 | 2014-01-28 | Appcelerator, Inc. | System and method for on-the-fly rewriting of JavaScript |
US20140053056A1 (en) * | 2012-08-16 | 2014-02-20 | Qualcomm Incorporated | Pre-processing of scripts in web browsers |
CN104102500A (zh) * | 2013-04-03 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的进程启动方法及计算机系统 |
US20150088969A1 (en) * | 2013-09-20 | 2015-03-26 | Yottaa Inc. | Systems and methods for managing loading priority or sequencing of fragments of a web object |
WO2015117013A1 (en) * | 2014-01-31 | 2015-08-06 | Cylance Inc. | Generation of api call graphs from static disassembly |
WO2016073526A1 (en) * | 2014-11-07 | 2016-05-12 | Mendenhall, David | System and method for fast starting an application |
CN105630524A (zh) * | 2014-10-31 | 2016-06-01 | 广州市动景计算机科技有限公司 | 网页文本解析方法、装置和移动终端 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658656B1 (en) | 2000-10-31 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions |
GB2377784B (en) * | 2001-02-12 | 2003-11-05 | Altio Ltd | A presentation server which enables a client device to run a network based application |
US6988240B2 (en) | 2002-03-29 | 2006-01-17 | Global Knowledge, Inc. | Methods and apparatus for low overhead enhancement of web page and markup language presentations |
US7499401B2 (en) | 2002-10-21 | 2009-03-03 | Alcatel-Lucent Usa Inc. | Integrated web cache |
US7228500B2 (en) | 2003-06-13 | 2007-06-05 | Microsoft Corporation | Web page rendering priority mechanism |
US7617490B2 (en) | 2003-09-10 | 2009-11-10 | Intel Corporation | Methods and apparatus for dynamic best fit compilation of mixed mode instructions |
US8103742B1 (en) | 2003-11-24 | 2012-01-24 | Amazon Technologies, Inc. | Deferred and off-loaded rendering of selected portions of web pages to incorporate late-arriving service data |
US20050155022A1 (en) | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses to identify hot spots |
US20050223359A1 (en) | 2004-03-30 | 2005-10-06 | Rao Nagaraju Kodalapura N | Techniques for multi-core debugging |
WO2006085314A2 (en) | 2005-02-11 | 2006-08-17 | Flash Networks Ltd | Method and system for improving user experience while browsing |
KR100763177B1 (ko) | 2005-04-21 | 2007-10-04 | 삼성전자주식회사 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
CN1855052A (zh) | 2005-04-25 | 2006-11-01 | 罗迪平 | 一种从树型结构数据和一组代码片断结构体生成目标源代码的方法 |
US8239939B2 (en) | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US7945853B2 (en) | 2005-09-12 | 2011-05-17 | Microsoft Corporation | Script markup |
ZA200802227B (en) | 2005-09-12 | 2009-06-24 | Microsoft Corp | Script markup |
US7805670B2 (en) * | 2005-12-16 | 2010-09-28 | Microsoft Corporation | Partial rendering of web pages |
US7945849B2 (en) * | 2007-03-20 | 2011-05-17 | Microsoft Corporation | Identifying appropriate client-side script references |
US7689665B2 (en) * | 2007-04-27 | 2010-03-30 | Microsoft Corporation | Dynamically loading scripts |
US8079025B2 (en) * | 2007-06-08 | 2011-12-13 | Apple Inc. | Asynchronous load of source dependencies |
US10216854B2 (en) * | 2007-07-26 | 2019-02-26 | International Business Machines Corporation | Optimized page script downloads in a component based architecture |
US8286189B2 (en) | 2007-09-27 | 2012-10-09 | American Express Travel Related Services Company, Inc. | System and method for automatically generating computer code for message flows |
US8001469B2 (en) | 2007-11-07 | 2011-08-16 | Robert Bosch Gmbh | Automatic generation of interactive systems from a formalized description language |
JP2009211190A (ja) | 2008-02-29 | 2009-09-17 | Hitachi Ltd | 情報処理装置 |
JP2011530768A (ja) | 2008-08-13 | 2011-12-22 | トランセラ・インコーポレーテッド | ソフトウェア・アプリケーションの性能向上 |
WO2010082161A1 (en) | 2009-01-19 | 2010-07-22 | Koninklijke Philips Electronics N.V. | Browser with dual scripting engine for privacy protection |
CN101706753B (zh) | 2009-12-11 | 2013-04-10 | 武汉虹信通信技术有限责任公司 | 一种基于Perl的单元测试装置及方法 |
US8650426B2 (en) | 2009-12-16 | 2014-02-11 | Qualcomm Incorporated | System and method for controlling central processing unit power in a virtualized system |
US9003380B2 (en) | 2010-01-12 | 2015-04-07 | Qualcomm Incorporated | Execution of dynamic languages via metadata extraction |
US8495607B2 (en) | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
US9626197B1 (en) * | 2010-07-30 | 2017-04-18 | Amazon Technologies, Inc. | User interface rendering performance |
US8850574B1 (en) | 2011-02-28 | 2014-09-30 | Google Inc. | Safe self-modifying code |
US8880991B2 (en) | 2011-04-21 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Methods and apparatus for improved browsing performance by precompilation of high-priority JavaScripts in a webpage and delaying the removal of corresponding compiled code |
US8285808B1 (en) | 2011-05-20 | 2012-10-09 | Cloudflare, Inc. | Loading of web resources |
US8819649B2 (en) | 2011-09-09 | 2014-08-26 | Microsoft Corporation | Profile guided just-in-time (JIT) compiler and byte code generation |
US11233841B2 (en) * | 2013-03-15 | 2022-01-25 | Yottaa, Inc. | Systems and methods for configuration-based optimization by an intermediary |
US9785452B2 (en) | 2013-10-09 | 2017-10-10 | Cisco Technology, Inc. | Framework for dependency management and automatic file load in a network environment |
CN105094857B (zh) | 2014-04-23 | 2018-09-25 | 国际商业机器公司 | 用于应用加载的方法和系统 |
-
2017
- 2017-01-11 US US15/404,130 patent/US10481876B2/en active Active
-
2018
- 2018-01-05 WO PCT/US2018/012439 patent/WO2018132301A1/en unknown
- 2018-01-05 EP EP18701955.9A patent/EP3538990B1/en active Active
- 2018-01-05 CN CN201880006596.2A patent/CN110168496B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033448A1 (en) * | 2000-02-04 | 2003-02-13 | Robert Kieffer | Optimized delivery of web application code |
US20040019768A1 (en) * | 2002-07-29 | 2004-01-29 | Ross Jonathan K. | Method and system for using dynamic, deferred operation information to control eager deferral of control-speculative loads |
US20040054990A1 (en) * | 2002-09-17 | 2004-03-18 | Liao Steve Shih-Wei | Post-pass binary adaptation for software-based speculative precomputation |
US20060010309A1 (en) * | 2004-07-08 | 2006-01-12 | Shailender Chaudhry | Selective execution of deferred instructions in a processor that supports speculative execution |
US20080127175A1 (en) * | 2006-11-01 | 2008-05-29 | Microsoft Corporation | Packaging software products as single-file executables containing scripting logic |
US8639743B1 (en) * | 2007-12-05 | 2014-01-28 | Appcelerator, Inc. | System and method for on-the-fly rewriting of JavaScript |
US20090292791A1 (en) * | 2008-05-23 | 2009-11-26 | Microsoft Corporation | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20110289484A1 (en) * | 2010-05-19 | 2011-11-24 | Also Energy | Method and System for Script Processing for Web-Based Applications |
CN102270129A (zh) * | 2010-06-07 | 2011-12-07 | 微软公司 | 将软件产品分发为包括脚本逻辑和外部资源的可执行文件 |
WO2013032959A1 (en) * | 2011-09-02 | 2013-03-07 | Microsoft Corporation | Fast presentation of markup content having script code |
US20130191439A1 (en) * | 2012-01-19 | 2013-07-25 | Microsoft Corporation | Managing script file dependencies and load times |
US20140053056A1 (en) * | 2012-08-16 | 2014-02-20 | Qualcomm Incorporated | Pre-processing of scripts in web browsers |
CN104583949A (zh) * | 2012-08-16 | 2015-04-29 | 高通股份有限公司 | Web浏览器中的脚本的预处理 |
CN104102500A (zh) * | 2013-04-03 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的进程启动方法及计算机系统 |
US20150088969A1 (en) * | 2013-09-20 | 2015-03-26 | Yottaa Inc. | Systems and methods for managing loading priority or sequencing of fragments of a web object |
WO2015117013A1 (en) * | 2014-01-31 | 2015-08-06 | Cylance Inc. | Generation of api call graphs from static disassembly |
CN105630524A (zh) * | 2014-10-31 | 2016-06-01 | 广州市动景计算机科技有限公司 | 网页文本解析方法、装置和移动终端 |
WO2016073526A1 (en) * | 2014-11-07 | 2016-05-12 | Mendenhall, David | System and method for fast starting an application |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045749A (zh) * | 2019-12-18 | 2020-04-21 | 青岛海信传媒网络技术有限公司 | 应用程序启动方法及设备 |
CN111045749B (zh) * | 2019-12-18 | 2021-06-08 | 青岛海信传媒网络技术有限公司 | 应用程序启动方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110168496B (zh) | 2023-09-15 |
US10481876B2 (en) | 2019-11-19 |
WO2018132301A1 (en) | 2018-07-19 |
EP3538990B1 (en) | 2022-11-23 |
EP3538990A1 (en) | 2019-09-18 |
US20180196644A1 (en) | 2018-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110168496A (zh) | 用于应用呈现的方法和系统 | |
US10255265B2 (en) | Process flow diagramming based on natural language processing | |
US11204681B2 (en) | Program orchestration method and electronic device | |
CN105378817A (zh) | 将外部动态内容合并到白板中 | |
CN110168539A (zh) | 混合应用中的快速页面加载 | |
CN108509207A (zh) | Web应用程序的跨系统安装 | |
JP6434640B2 (ja) | メッセージ表示方法、メッセージ表示装置、およびメッセージ表示デバイス | |
US20160224549A1 (en) | Methods, systems and recording mediums for managing conversation contents in messenger | |
US9183012B2 (en) | Adaptive rendering based on runtime capability check | |
CN114816499A (zh) | 一种电子资源分享方法、装置和存储介质 | |
CN104714996A (zh) | 动态更新实况呈现中的内容 | |
CN108780541A (zh) | 联系人创建和利用 | |
CN104516890B (zh) | 业务处理方法、装置及电子设备 | |
CN105493039A (zh) | 使用解耦的应用编程接口(api)版本化的应用激活 | |
CN109891445B (zh) | 经由跨iframe信令重新归位嵌入式网络内容 | |
CN107533425A (zh) | 跨平台命令可扩展性 | |
US10635268B2 (en) | Layered content selection | |
CN116149639A (zh) | 一种组件开发的方法、装置、电子设备和存储介质 | |
CN103942313B (zh) | 网站页面的展示方法、装置及终端 | |
TWI574165B (zh) | 互動式操作的方法以及應用該方法的傳送機器、接收機器與互動式操作系統 | |
WO2014197301A2 (en) | Multi-part and single response image protocol | |
US11755313B2 (en) | Implementing changes made to source code of reloadable types at runtime | |
CN109643215A (zh) | 基于手势输入的应用处理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |