CN102099798A - 用于使用本机代码模块执行应用的方法和系统 - Google Patents

用于使用本机代码模块执行应用的方法和系统 Download PDF

Info

Publication number
CN102099798A
CN102099798A CN2009801277038A CN200980127703A CN102099798A CN 102099798 A CN102099798 A CN 102099798A CN 2009801277038 A CN2009801277038 A CN 2009801277038A CN 200980127703 A CN200980127703 A CN 200980127703A CN 102099798 A CN102099798 A CN 102099798A
Authority
CN
China
Prior art keywords
web
code module
machine code
unit
input data
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
Application number
CN2009801277038A
Other languages
English (en)
Other versions
CN102099798B (zh
Inventor
E·科克维斯
M·帕帕基波斯
D·C·塞尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to CN201510689339.1A priority Critical patent/CN105320639B/zh
Publication of CN102099798A publication Critical patent/CN102099798A/zh
Application granted granted Critical
Publication of CN102099798B publication Critical patent/CN102099798B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

某些实施方式提供一种执行web应用的系统。在操作期间,该系统在web浏览器中加载web应用,并且将与web应用相关联的本机代码模块加载到安全运行时环境中。接下来,该系统向本机代码模块提供与web应用相关联的输入数据,并且使用本机代码模块来处理该输入数据以获得输出数据。最后,该系统向web应用提供输出数据以供该web应用使用。

Description

用于使用本机代码模块执行应用的方法和系统
技术领域
本发明的实施方式涉及用于在计算机系统上执行应用的技术。更为具体地,本发明的实施方式涉及用于使用本机代码模块执行web应用的方法和系统。
背景技术
计算机系统可以包括需要可观的处理资源来执行的多个本机应用。这种应用可以执行例如图像处理、音频和视频解码与混合、数学建模,和/或仿真之类的任务。为了高效运行,这些应用经常是使用通用编程语言(例如,C或C++)与低级语言(例如汇编语言)的结合编写的。因此,应用可能会受限于特定平台,具有较长的安装过程,并且可能给安装这些应用的计算机系统造成安全风险。
另一方面,近年来越发流行的web应用通常以脚本语言编写,其更为安全并且不需要安装。然而,web应用可能会缺乏本机应用的执行能力。特别地,web应用的运行可能比本机应用慢一个或两个量级。因此,web应用目前无法实现在本机应用中可获得的计算密集型特征。
发明内容
本发明的一些实施方式提供一种执行web应用的系统。在操作期间,该系统在web浏览器中加载web应用,并且将与web应用相关联的本机代码模块加载到安全运行时(runtime)环境中。接下来,系统向本机代码模块提供与web应用相关联的输入数据,并且使用本机代码模块来处理输入数据以获得输出数据。最后,该系统向web应用提供输出数据以供该web应用使用。
在一些实施方式中,该系统还在将本机代码模块加载到安全运行时环境中之前验证本机代码模块。
在一些实施方式中,输出数据被提供给与web浏览器相关联的受信插件,以供该受信插件使用。
在一些实施方式中,受信插件使用输出数据来为web应用绘制图形。
在一些实施方式中,本机代码模块为web应用提供以下至少一个:仿真、信号处理、人工智能、建模以及分析。
在一些实施方式中,安全运行时环境由与web浏览器相关联的插件实现。
在一些实施方式中,web应用和本机代码模块是平台无关的。
在一些实施方式中,使用第一模块间通信(IMC)缓冲区将输入数据提供给本机代码模块,并且使用第二IMC缓冲区将输出数据提供给web应用。
在一些实施方式中,处理输入数据包括使用输入数据执行一系列数学计算。
附图说明
图1示出了系统的实施方式的示意图。
图2示出了根据系统实施方式的本机代码模块对模块间通信(IMC)缓冲区的使用。
图3示出了用于为web应用绘制图形的系统。
图4示出了说明执行web应用的过程的流程图。
具体实施方式
提供下文描述是为了使任何本领域技术人员能够制造和使用所公开的实施方式,并且下述描述是在特定应用及其要求的上下文中提供的。对于本领域技术人员来说,对所公开的实施方式的各种修改是显而易见的,并且在这里所定义的一般原理也可以应用于其他实施方式和应用,而不会背离所公开的实施方式的精神和范围。因此,系统并不限制于所示出的实施方式,而是符合与在这里所公开的原理和特征相一致的最宽泛的范围。
此详细描述中所描述的数据结构和代码通常存储在计算机可读存储介质中,其可以是能够存储可供计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于:易失性存储器,非易失性存储器,例如盘驱动、磁带、CD(光盘)、DVD(数字通用光盘或数字视频光盘)的磁存储器和光存储器,或目前已知的或以后开发出的能够存储计算机可读介质的其他介质。
在详细描述部分所描述的方法和过程可以实现为代码和/或数据,其可以存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,该计算机系统执行实现为数据结构和代码并存储在计算机可读存储介质中的方法和过程。
此外,以下描述的方法和过程可以被包括在硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)以及其他目前已知的或以后开发出的可编程逻辑设备。当硬件模块被激活时,该硬件模块执行包括在硬件模块中的方法和过程。
系统的实施方式提供了用于执行web应用的方法和系统。web应用可以被加载到web浏览器中并且在计算系统上执行,其中计算系统例如个人计算机(PC)、移动电话、个人数字助理(PDA)、图形计算器、便携式媒体播放器、全球定位系统(GPS)接收器,和/或其他电子计算设备。计算系统可以使用与服务器的网络连接从服务器获得web应用。例如,web应用可以通过因特网而从web站点下载。
更具体地,本技术的实施方式提供了用于使用本机代码模块来执行web应用的方法和系统。本机代码模块可以包含在安全运行时环境中执行的本机代码。此外,本机代码模块可以用来为web应用处理数据,以提供与仿真、信号处理、人工智能和/或建模等计算密集型任务相关联的功能。因此,系统的实施方式可以提供一种框架,用于将web应用的便携性和安全性与二进制代码的本机执行相结合。
图1示出了一个系统的示意图。该系统包括计算系统102和一组服务器(例如,服务器1 104,服务器x 106)。计算系统102包括在web浏览器110中运行的web应用116,以及插件108。这些组件中的每一个将在下文详述。
计算系统102可以对应于向用户提供一个或多个服务或功能的电子设备。例如,计算系统102可以作为移动电话、个人计算机(PC)、全球定位系统(GPS)接收器、便携式媒体播放器、个人数字助理(PDA)和/或图形计算器来进行操作。此外,计算系统102可以包括:操作系统(未示出),其协调计算系统102上硬件和软件资源的使用;以及为用户执行专门任务的一个或多个应用(例如,web浏览器110、web应用116)。例如,计算系统102可以包括诸如电子邮件客户端、地址薄、文档编辑器、web浏览器110和/或媒体播放器等应用。为了为用户执行任务,如下所述,应用可以从操作系统获得对计算系统102上的硬件资源(例如,处理器、存储器、I/O组件、无线发射器等)的使用,以及通过操作系统所提供的硬件和/或软件框架与用户进行互动。
本领域技术人员将会理解,计算系统102可以包括执行本机应用和非本机应用二者的功能。换言之,计算系统102可以包括例如web浏览器110的本机应用,其本地安装在计算系统102上,并且特定于操作系统和/或计算系统102上的一个或多个硬件设备。这样的应用可以被编译为本机代码(例如,机器代码),其直接在计算系统102的一个或多个中央处理单元(CPU)上执行。应用中的代码执行还可以通过以下方式来优化:使用通用编程语言(例如,C,C++等)和汇编语言的结合来编写应用,以及利用向应用提供硬件加速(例如,图形硬件加速)的库。然而,本机应用的安装可能会危害计算系统102和存储在计算系统102上的私有数据。
计算系统102还可以包括执行平台无关的非本机应用的功能。特别地,计算系统102可以使用与服务器的网络连接从一个或多个服务器(例如,服务器1 104,服务器x 106)获得web应用116,并且在web浏览器110中加载web应用116。例如,可以由web浏览器110通过因特网从应用服务器下载web应用116。
一旦被加载,web应用116可以提供与计算系统102上的本机应用可比的特征和用户交互性。例如,web应用116可以具有电子邮件客户端、文档编辑器、媒体播放器、计算机辅助设计(CAD)系统和/或计算机游戏的功能。Web应用116还可以包括动态用户接口元件,例如菜单、按钮、窗口、子窗口、图标、动画和/或其他可以模仿本机应用中的类似用户接口元件的其他图形对象。换言之,web应用116可以相当于富因特网应用(RIA)。
此外,web应用116可以在计算系统102上执行,而不考虑与计算系统102相关联的平台类型(例如,操作系统、驱动程序等)。尽管例如web应用116的平台无关应用可以比本机应用更加便携和安全,但是这样的跨平台应用可能会缺少本机应用的某些执行能力。
更具体地,例如web应用116的非本机应用可以使用将被解释而非编译的脚本语言来编写,例如Javascript(JavascriptTM是SunMicrosystems,Inc的注册商标)。Web应用116和/或其他非本机应用的解释性特点可能会导致非本机应用的执行时间明显慢于经编译的本机应用。非本机应用还可能无法利用可供本机应用使用的底层库和/或应用编程接口(API)。因此,非本机应用可能会在某些任务中提供受限的功能。
特别地,web应用116可能无法提供在本机应用中可获得的计算密集型特征。这些特征可以包括但不限于:
●仿真:计算流体力学(CFD)、刚体力学、碰撞检测、分子力学、三维(3D)动画等。
●信号处理:音频编码和解码、视频编码和解码、图像处理、语音信号处理等。
●人工智能(AI):数据挖掘、机器学习、游戏AI,模式识别等。
●建模:金融建模、数学建模、科学建模、3D建模等。
●分析:数值分析、金融分析、工程分析、密码分析、统计数据分析等。
从广义来说,web应用116可能无法有效地实现需要执行例如浮点运算的复杂数学运算的那些特征。例如,web应用116可能过慢以至于无法执行快速傅里叶变换(FFT)、蒙特卡洛方法、矩阵运算、共轭梯度法和/或对大量输入数据的回归技术。
为了向用户提供计算密集型特征,与web应用116相关联的本机代码模块118可以用来代表web应用116执行计算密集型代码。类似于web应用116,本机代码模块118可以由web浏览器110从一个或多个服务器(例如,服务器1 104,服务器x 106)获得。例如,web应用116可以提供去往因特网上的本机代码模块118的超级链接。Web浏览器110继而可以从该超级链接中指定的统一资源定位符(URL)下载本机代码模块118。备选地,本机代码模块118可以由用户指定,或者由例如另一web应用和/或本机应用的外部源指定。
更具体地,本机代码模块118可以对应于这样的软件模块,其包含直接在计算系统102所提供的硬件(例如,CPU)上运行的本机代码。因此,本机代码模块118可以用来执行需要对计算系统102上的CPU资源进行大量访问的任务。特别地,本机代码模块118可以通过处理与web应用116相关联的输入数据,而向web应用116的用户提供一个或多个上文列举的计算密集型特征。可以通过使用输入数据来执行一系列数学计算(例如,上文描述的数学运算)来处理输入数据。
从经过处理的输入数据获得的输出数据可被提供给web应用116,以供web应用116使用。例如,输出数据可以由web应用116提供给用户,或者由web应用116用来为用户执行附加任务。输出数据还可被提供作为向与web应用116相关联的其他组件的输入数据,其中与web应用116相关联的其他组件例如本机应用、受信插件和/或一个或多个服务器(例如,服务器1104,服务器x 106)。
例如,web应用116可以向计算系统102的用户提供音频或视频编码和/或解码能力。首先,用户可以指定要进行解码的音频或视频文件和/或要进行编码的音频流或视频流。接下来,web应用116可以从服务器(例如,服务器1 104,服务器x 106)获得包含针对该文件或流的编解码器的本机代码模块(例如,本机代码模块118)。本机代码模块继而可以在计算系统102的CPU上执行,从而向用户提供编解码器的编码和/或解码能力。
类似地,计算系统102可以使用web应用116和本机代码模块118来执行用于分布式计算集群的计算密集型操作。更具体地,本机代码模块118可以由web应用116获得并由插件108执行,从而在计算系统102上创建分布式计算集群中的节点。计算密集型操作可由本机代码模块118在计算系统102上的CPU的未充分利用期间执行。来自本机代码模块118的输出可以被发送到服务器(例如,服务器1 104,服务器x 106),以辅助分析复杂的问题,诸如蛋白质折叠、未解数学问题、重力波的检测和/或股票预测。
在一个或多个实施方式中,插件108包括用以保证本机代码模块118的安全执行的多种机制。特别地,在执行之前,本机代码模块118可由插件108提供的验证器112进行验证。本机代码模块验证在发明人为J.Bradley Chen、Matthew T.Harren、MatthewPapakipos、David C.Sehr,和Bennet S.Yee的共同未决的非临时申请中进行了描述,该申请与本申请在2008年5月8日同日递交,名称为“Method for Validating an Untrusted Native Code Module”,序列号待分配,在此通过参考将其并入。
一旦本机代码模块118得到验证,本机代码模块118可以被加载到插件108所提供的安全运行时环境114中。在安全运行时环境中的本机代码执行在发明人为J.Bradley Chen、Matthew T.Harren、Matthew Papakipos、David C.Sehr,Bennet S.Yee和Gregory Dardyk的共同未决的非临时申请中进行了描述,该申请与本申请在2008年5月8日同日递交,名称为“Method for Safety Executing an UntrustedNative Code Module on a Computing Device”,序列号待分配,在此通过参考将其并入。
此外,由于本机代码模块118可以包括直接在硬件上运行的二进制代码,本机代码模块118对计算系统102的操作系统、web浏览器110和/或计算系统102上的其他软件组件而言可以是平台无关的。如上述参考的申请中所描述的,插件108和/或本机代码模块118还可以包括用于在多种指令集架构上执行的机制,包括对“胖二进制”和二进制翻译器的使用。
图2示出了本机代码模块对模块间通信(IMC)缓冲区的使用。特别地,图2示出了通过本机代码模块118的数据流。如图2中所示,本机代码模块118从第一模块间通信(IMC)缓冲区204获得输入数据208。如上所述,输入数据208可以由web应用116、用户和/或本机应用指定。输入数据208也可以从多种来源获得以置于IMC缓冲区204中,包括网络上的主机、盘、输入设备(例如,相机、麦克风等)和/或硬件设备(例如声卡、显卡等)。
本机代码模块118可以处理输入数据208以获得输出数据210,输出数据210被置于第二IMC缓冲区206中。更具体地,本机代码模块118可以通过使用输入数据208执行一系列数学计算而获得输出数据210。例如,本机代码模块118可以使用输入数据208执行一系列矩阵运算、数学变换和/或逆变换和/或其他浮点运算。输出数据210继而可从IMC缓冲区206被获得,以供web应用116和/或与web应用116相关联的受信插件202使用。特别地,web应用116和/或受信插件202可以使用输出数据210来为web应用116的用户或与web应用116相关联的实体执行附加任务。例如,输出数据210可被存储在提供给用户的文件中、绘制在图表或图形中、上传到分布式计算集群的数据库中和/或被用来修改其他应用的执行。如下文关于图3所讨论的,输出数据210还可以用于绘制3D图形模型。
在一个或多个实施方式中,IMC缓冲区204-206对应于共享存储器缓冲区,其用于促进本机代码模块118与诸如web应用116和/或受信插件202的外部组件之间的数据密集型协作。此外,如上述参考的申请中所述,通过IMC缓冲区204-206对数据的共享可由IMC运行时来管理。
图3示出了用于执行基于web的3D应用302的系统。3D应用302可以对应于在web浏览器300中执行的web应用。此外,3D应用302可以向3D应用的用户提供3D图形绘制和动画能力。例如,3D应用302可以是3D计算机游戏、CAD系统和/或科学建模和/或仿真应用。此外,3D应用302可以使用基于web的脚本语言(例如,Javascript)来编写。因此,3D应用302可能无法满足实时3D绘制和动画的要求。作为替代,3D应用302可以把图形绘制转载给图形插件306,并且把动画转载给插件304。
如图3中所示,插件304包括在CPU 318上执行的物理引擎310。在一个或多个实施方式中,物理引擎310对应于在插件304所提供的安全运行时环境中执行的本机代码模块。物理引擎310可以由3D应用302提供(例如,通过因特网下载),并且先于在插件304中执行而被验证。而且,物理引擎310可以包括本机代码,其在安全运行时环境所设定的约束内直接在CPU 318上执行。由此,物理引擎310在CPU 318上的执行可以为3D应用302提供3D应用302中对象的实时动画。
类似地,图形插件306包括与图形处理单元(GPU)320通信的绘制引擎312。在一个或多个实施方式中,图形插件306对应于受信插件,诸如图2中的受信插件。换言之,图形插件306可以由web浏览器300从受信来源下载,并且由web浏览器300安装,从而为3D应用302绘制图形。此外,绘制引擎312可以通过使用GPU 320执行与图形绘制有关的计算来提供图形硬件加速。图形插件306和绘制引擎312在发明人为Vangelis Kokkevis、Matthew Papakipos和Robin Green的共同未决的非临时申请中进行了描述,该申请与本申请同日提交,序列号和递交日待分配,名称为“WEB-BASEDGRAPHICS RENDERING SYSTEM”。
在一个或多个实施方式中,3D应用302协调物理引擎310与绘制引擎312的共同执行。更具体地,3D应用302可以对插件304和图形引擎306二者进行方法调用,以便将图形模型加载到绘制引擎312中以及将相应的物理模型加载到物理引擎310中。如下所述,3D应用302还可以使用共享存储器308来促进插件304与图形插件306之间的数据传递。另一方面,插件304和图形插件306可以直接彼此对接,以便对图形模型的动画和绘制进行同步。
特别地,3D应用302可以向图形插件306提供描述图形模型的输入文件。备选地,3D应用302可以向图形插件306进行一组描述图形模型的方法调用。图形模型继而可被加载到图形插件306的外部存储器中。接下来,3D应用302可以请求由插件304和/或图形插件306所提供的IMC运行时在共享存储器308的区域中分配一个或多个IMC缓冲区314-316。图形插件306继而可以将与物理仿真有关的数据加载到IMC缓冲区314-316中。例如,图形插件306可以将顶点位置、法线、三角面片索引和/或变换矩阵拷贝到IMC缓冲区314-316中。
为了赋予图形模型动画效果,物理引擎310可以从IMC缓冲区314-316进行读取,以创建与图形插件306中的图形模型相对应的物理模型。与物理模型有关的附加信息(例如,参数)可由插件304从3D应用302获得。接下来,物理引擎310可以执行更新物理模型的一系列物理仿真计算。例如,物理引擎310可以基于作用于物理模型中的对象上的一组力来计算顶点位置和速度。插件304继而可以利用新的顶点位置、速度和/或其他数据来更新IMC缓冲区314-316。最后,新的数据被图形插件306从IMC缓冲区314-316读取,并被用来更新图形模型。绘制引擎312继而可以将经过更新的图形模型传递给GPU 320以进行绘制。
绘制引擎312和物理引擎310可以在3D应用302的执行期间继续提供图形绘制和动画。例如,只要图形模型中的对象感觉到力,物理引擎310便可以继续更新图形模型。还可以由3D应用302向图形模型和/或物理模型中引入附加的对象和/或力。类似地,绘制引擎312可以按照3D应用302所指定的和/或GPU 320所支持的帧速率来绘制图形模型。因此,物理引擎310和绘制引擎312可以按照不同的频率运行。例如,物理引擎310可以运行得比绘制引擎快4倍。因此,针对物理引擎310对图形模型做出的每4次更新,绘制引擎312可以绘制1次图形模型。
图4示出了说明执行web应用的过程的流程图。在一个或多个实施方式中,一个或多个步骤可以被省略、重复和/或以不同的顺序执行。因此,图4中所示的步骤的特定排列不应当被解释为对技术范围的限制。
最初,web应用被加载到web浏览器中(操作402)。Web应用可由web浏览器从服务器获得。此外,web应用可以用来向用户提供例如金融建模、计算数学或科学和/或AI等计算密集型特征。为了以可实践方式实现此类特征,可以获得与web应用相关联的本机代码模块(操作404)。例如,可以从web应用所指定的来源下载本机代码模块。还可以在执行本机代码模块之前,对本机代码模块进行验证(操作406)。如果本机代码模块未经过验证,则不执行该本机代码模块并将其丢弃。
如果本机代码模块得到验证,则将该本机代码模块加载到安全运行时环境中(操作408)。安全运行时环境可以由与web浏览器相关联的插件提供。接下来,向本机代码模块提供与web应用相关联的输入数据(操作410)。可以使用IMC缓冲区向本机代码模块提供输入数据。
输入数据继而由本机代码模块进行处理(操作412),以获得输出数据(操作414)。输出数据继而被提供给web应用(操作416)以供web应用使用。类似于输入数据,也可以使用IMC缓冲区向web应用提供输出数据。例如,应用将输出数据用于仿真、信号处理、人工智能、建模和/或分析。此外,可选地,输出数据可被提供给与web应用相关联的受信插件(操作418),以供该受信插件使用。例如,输出数据可以由受信插件用来为web应用绘制图形。
已经提供的对系统实施方式的上述描述仅仅意在说明和描述。它们并非意在详尽或将该系统限制为所描述的形式。因此,对本领域从业人员来说许多的修改和变化都是显而易见的。此外,上述公开文本并不试图限制该系统。本系统的范围将由附加的权利要求进行限定。

Claims (27)

1.一种用于执行web应用的方法,包括:
在web浏览器中加载所述web应用;
将与所述web应用相关联的本机代码模块加载到安全运行时环境中;
将与所述web应用相关联的输入数据提供给所述本机代码模块;
使用所述本机代码模块来处理所述输入数据以获得输出数据;以及
将所述输出数据提供给所述web应用以供所述web应用使用。
2.根据权利要求1所述的方法,还包括:
在将所述本机代码模块加载到所述安全运行时环境中之前,验证所述本机代码模块。
3.根据权利要求1所述的方法,其中所述输出数据被提供给与所述web浏览器相关联的受信插件,以供所述受信插件使用。
4.根据权利要求3所述的方法,其中所述输出数据由所述受信插件用以为所述web应用绘制图形。
5.根据权利要求1所述的方法,其中所述本机代码模块为所述web应用提供以下至少一个:仿真、信号处理、人工智能、建模和分析。
6.根据权利要求1所述的方法,其中所述安全运行时环境由与所述web浏览器相关联的插件实现。
7.根据权利要求1所述的方法,其中所述web应用和所述本机代码模块是平台无关的。
8.根据权利要求1所述的方法,
其中使用第一模块间通信(IMC)缓冲区将所述输入数据提供给所述本机代码模块,以及
其中使用第二IMC缓冲区将所述输出数据提供给所述web应用。
9.根据权利要求1所述的方法,其中处理所述输入数据包括使用所述输入数据执行一系列数学计算。
10.一种用于执行web应用的系统,包括:
web浏览器,配置用于加载所述web应用;
与所述web应用相关联的本机代码模块;以及
安全运行时环境,配置用于执行所述本机代码模块,
其中所述本机代码模块配置用于:
获得与所述web应用相关联的输入数据;
处理所述输入数据以获得输出数据;以及
将所述输出数据提供给所述web应用以供所述web应用使用。
11.根据权利要求10所述的系统,还包括:
验证器,配置用于在执行所述本机代码模块之前验证所述本机代码模块。
12.根据权利要求11所述的系统,其中所述安全运行时环境和所述验证器使用与所述web浏览器相关联的插件实现。
13.根据权利要求10所述的系统,还包括:
与所述web浏览器相关联的受信插件,
其中所述输出数据被提供给所述受信插件,以供所述受信插件使用。
14.根据权利要求13所述的系统,其中所述输出数据由所述受信插件用以为所述web应用绘制图形。
15.根据权利要求10所述的系统,还包括:
第一模块间通信(IMC)缓冲区,配置用于将所述输入数据提供给所述本机代码模块;以及
第二IMC缓冲区,配置用于将所述输出数据提供给所述web应用。
16.根据权利要求10所述的系统,其中所述本机代码模块为所述web应用提供以下至少一个:仿真、信号处理、人工智能、建模和分析。
17.根据权利要求10所述的系统,其中所述web应用和所述本机代码模块是平台无关的。
18.根据权利要求10所述的系统,其中处理所述输入数据包括使用所述输入数据执行一系列数学计算。
19.一种存储指令的计算机可读存储介质,当所述指令由计算机执行时,使所述计算机执行用于执行web应用的方法,所述方法包括:
在web浏览器中加载所述web应用;
将与所述web应用相关联的本机代码模块加载到安全运行时环境中;
将与所述web应用相关联的输入数据提供给所述本机代码模块;
使用所述本机代码模块来处理所述输入数据以获得输出数据;以及
将所述输出数据提供给所述web应用以供所述web应用使用。
20.根据权利要求19所述的计算机可读存储介质,所述方法还包括:
在将所述本机代码模块加载到所述安全运行时环境中之前,验证所述本机代码模块。
21.根据权利要求19所述的计算机可读存储介质,其中所述输出数据被提供给与所述web浏览器相关联的受信插件,以供所述受信插件使用。
22.根据权利要求21所述的计算机可读存储介质,其中所述输出数据由所述受信插件用以为所述web应用绘制图形。
23.根据权利要求19所述的计算机可读存储介质,其中所述本机代码模块为所述web应用提供以下至少一个:仿真、信号处理、人工智能、建模和分析。
24.根据权利要求19所述的计算机可读存储介质,其中所述安全运行时环境由与所述web浏览器相关联的插件实现。
25.根据权利要求19所述的计算机可读存储介质,其中所述web应用和所述本机代码模块是平台无关的。
26.根据权利要求19所述的计算机可读存储介质,
其中使用第一模块间通信(IMC)缓冲区将所述输入数据提供给所述本机代码模块,以及
其中使用第二IMC缓冲区将所述输出数据提供给所述web应用。
27.根据权利要求19所述的计算机可读存储介质,其中处理所述输入数据包括使用所述输入数据执行一系列数学计算。
CN200980127703.8A 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统 Active CN102099798B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510689339.1A CN105320639B (zh) 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8132708P 2008-07-16 2008-07-16
US61/081,327 2008-07-16
US12/266,602 2008-11-07
US12/266,602 US9176754B2 (en) 2008-07-16 2008-11-07 Method and system for executing applications using native code modules
PCT/US2009/049679 WO2010008955A2 (en) 2008-07-16 2009-07-06 Method and system for executing applications using native code modules

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510689339.1A Division CN105320639B (zh) 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统

Publications (2)

Publication Number Publication Date
CN102099798A true CN102099798A (zh) 2011-06-15
CN102099798B CN102099798B (zh) 2015-11-25

Family

ID=41531227

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200980127703.8A Active CN102099798B (zh) 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统
CN201510689339.1A Active CN105320639B (zh) 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201510689339.1A Active CN105320639B (zh) 2008-07-16 2009-07-06 用于使用本机代码模块执行应用的方法和系统

Country Status (10)

Country Link
US (3) US9176754B2 (zh)
EP (1) EP2310949A4 (zh)
KR (1) KR101626429B1 (zh)
CN (2) CN102099798B (zh)
AU (1) AU2009271181B2 (zh)
BR (1) BRPI0915911A2 (zh)
CA (1) CA2730128A1 (zh)
DE (1) DE202009019143U1 (zh)
HK (1) HK1159279A1 (zh)
WO (1) WO2010008955A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929638A (zh) * 2012-11-07 2013-02-13 广州市动景计算机科技有限公司 扩展WebApp应用功能的方法和系统
CN104902464A (zh) * 2014-03-05 2015-09-09 中国移动通信集团江西有限公司 一种用户行为识别方法和装置
CN105745646A (zh) * 2013-09-05 2016-07-06 谷歌公司 本机应用程序搜索结果

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8413890B1 (en) * 2002-11-25 2013-04-09 Diebold Self-Service Systems Division Of Diebold, Incorporated Automated banking machine that operates responsive to data read from data bearing records
US8245049B2 (en) 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US8626919B1 (en) 2008-11-07 2014-01-07 Google Inc. Installer-free applications using native code modules and persistent local storage
US8352967B2 (en) 2008-11-10 2013-01-08 Google Inc. Safe browser plugins using native code modules
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US20110320475A1 (en) * 2010-06-25 2011-12-29 Nokia Corporation Methods, apparatuses and computer program products for extending the capabilities of platform-independent applications on devices
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US8913067B1 (en) 2011-03-01 2014-12-16 Google Inc. GPU accelerated compositing on a multithreaded browser
US9535765B1 (en) * 2011-03-28 2017-01-03 Google Inc. Opportunistic job Processing of input data divided into partitions of different sizes
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US20120317172A1 (en) 2011-06-13 2012-12-13 International Business Machines Corporation Mobile web app infrastructure
US9323871B2 (en) 2011-06-27 2016-04-26 Trimble Navigation Limited Collaborative development of a model on a network
US9195479B2 (en) * 2011-10-17 2015-11-24 Google Inc. Selective notification of native applications
WO2013074565A1 (en) 2011-11-15 2013-05-23 Trimble Navigation Limited Providing a real-time shared viewing experience in a three-dimensional modeling environment
EP2780826B1 (en) 2011-11-15 2020-08-12 Trimble Inc. Browser-based collaborative development of a 3d model
EP2780892B1 (en) 2011-11-15 2016-10-05 Trimble Navigation Limited Controlling rights to a drawing in a three-dimensional modeling environment
US10868890B2 (en) 2011-11-22 2020-12-15 Trimble Navigation Limited 3D modeling system distributed between a client device web browser and a server
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
KR101907660B1 (ko) 2011-12-15 2018-12-06 한국전자통신연구원 웹 기반의 운영체제를 탑재한 단말 장치 및 이를 이용한 서비스 제공 방법
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
US9774657B2 (en) * 2012-05-11 2017-09-26 Samsung Electronics Co., Ltd. Browser engine interfacing for accelerated physics engine
US9411761B2 (en) 2012-06-22 2016-08-09 Microsoft Technology Licensing, Llc Platform neutral device protocols
US8898680B2 (en) 2012-10-15 2014-11-25 Oracle International Corporation System and method for supporting asynchronous message processing in a distributed data grid
US9197446B2 (en) 2012-12-12 2015-11-24 Google Inc. Address pinning
CN103049320B (zh) 2012-12-17 2016-05-04 广州市动景计算机科技有限公司 在浏览器中启动外部应用程序的方法和装置
US11907496B2 (en) 2013-02-08 2024-02-20 cloudRIA, Inc. Browser-based application management
US9553919B2 (en) * 2013-02-27 2017-01-24 Quixey, Inc. Techniques for sharing application states
US20140282032A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Dynamically configuring user experiences with action uniform resource identifiers
CN105359090A (zh) 2013-04-26 2016-02-24 纽约市哥伦比亚大学理事会 用于移动应用的系统和方法
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine
US10824756B2 (en) 2013-09-20 2020-11-03 Open Text Sa Ulc Hosted application gateway architecture with multi-level security policy and rule promulgations
EP2851833B1 (en) 2013-09-20 2017-07-12 Open Text S.A. Application Gateway Architecture with Multi-Level Security Policy and Rule Promulgations
US9674225B2 (en) 2013-09-20 2017-06-06 Open Text Sa Ulc System and method for updating downloaded applications using managed container
JP5777843B1 (ja) * 2013-09-24 2015-09-09 株式会社 エーティーティーコンサルティング プロセッサ、処理装置、プログラム作成方法
US9639511B2 (en) * 2014-11-24 2017-05-02 Google Inc. Systems and methods for editing a file in a non-native application using an application engine
US9832207B2 (en) * 2014-12-23 2017-11-28 Mcafee, Inc. Input verification
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
US9448776B1 (en) * 2015-01-08 2016-09-20 AppNotch LLC Method and apparatus for converting a website into a native mobile application
US9961126B2 (en) * 2015-04-29 2018-05-01 International Business Machines Corporation Managing data access on a computing device
US11593075B2 (en) 2015-11-03 2023-02-28 Open Text Sa Ulc Streamlined fast and efficient application building and customization systems and methods
US9940218B2 (en) * 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary
US11388037B2 (en) 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
US10394584B2 (en) * 2017-12-18 2019-08-27 Atlassian Pty Ltd Native execution bridge for sandboxed scripting languages
US10620980B2 (en) 2018-03-28 2020-04-14 Microsoft Technology Licensing, Llc Techniques for native runtime of hypertext markup language graphics content
KR102144578B1 (ko) * 2019-04-09 2020-08-13 넷마블 주식회사 동적으로 로드되는 모듈에 기초하여 어플리케이션을 실행하는 방법 및 장치
US11331576B2 (en) 2020-04-13 2022-05-17 Electronic Arts Inc. Animation and physics synchronization
WO2021213680A1 (en) * 2020-04-24 2021-10-28 Robotify Labs Limited A computer implemented method of simulating a 3d object

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738469B1 (en) * 1998-05-20 2004-05-18 British Telecommunications Public Limited Company Method and system for performing dialling of a telephone number supplied from a data store
US7076042B1 (en) * 2000-09-06 2006-07-11 Cisco Technology, Inc. Processing a subscriber call in a telecommunications network
CN1834906A (zh) * 2005-03-15 2006-09-20 微软公司 丰富数据绑定应用程序
US20070157298A1 (en) * 2005-03-20 2007-07-05 Timothy Dingwall Method and system for providing user access to a secure application
US20080071884A1 (en) * 2006-09-15 2008-03-20 Emc Corporation Protecting client-side code

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987245A (en) * 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5974549A (en) 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6275938B1 (en) 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6128774A (en) 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
KR20010072477A (ko) 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
CA2305249A1 (en) * 2000-04-14 2001-10-14 Branko Sarcanin Virtual safe
US6697971B1 (en) 2000-10-24 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for detecting attempts to access data residing outside of allocated memory
DE60033164T2 (de) * 2000-12-22 2007-10-25 Sun Microsystems, Inc., Palo Alto Serverseitige Ausführung von Anwendungsmodulen in einem Client/Server-System
AU2002345683A1 (en) * 2001-06-13 2002-12-23 Rivar Technologies, Inc. System and method for integrated web-based software code environment
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7069562B2 (en) 2001-12-12 2006-06-27 Sun Microsystems, Inc. Application programming interface for connecting a platform independent plug-in to a web browser
US7292990B2 (en) * 2002-04-08 2007-11-06 Topcoder, Inc. System and method for software development
US20040199786A1 (en) 2002-12-02 2004-10-07 Walmsley Simon Robert Randomisation of the location of secret information on each of a series of integrated circuits
US20040123117A1 (en) 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
US7555538B2 (en) * 2002-12-26 2009-06-30 Research In Motion Limited System and method for building and execution of platform-neutral generic services' client applications
US7210121B2 (en) * 2003-02-07 2007-04-24 Sun Microsystems, Inc. Method and system for generating first class citizen application implementing native software application wrapper
US7337318B2 (en) * 2003-02-27 2008-02-26 International Business Machines Corporation Method and apparatus for preventing rogue implementations of a security-sensitive class interface
US7848834B2 (en) * 2003-03-28 2010-12-07 Gm Global Technology Operations, Inc. Computerized system for network-based management of engineering projects
US7320129B2 (en) * 2003-05-14 2008-01-15 Hewlett-Packard Development Company, L.P. Native language verification system and method
US20050193380A1 (en) 2004-02-27 2005-09-01 Vitanov Kamen B. System and method for executing wireless applications using common UI components from a UI repository
US7596694B1 (en) 2004-03-08 2009-09-29 Hewlett-Packard Development Company, L.P. System and method for safely executing downloaded code on a computer system
US7380276B2 (en) 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US20050283770A1 (en) 2004-06-18 2005-12-22 Karp Alan H Detecting memory address bounds violations
US7523450B2 (en) 2004-11-15 2009-04-21 International Business Machines Corporation Apparatus, system, and method for identifying fixed memory address errors in source code at build time
US20060143689A1 (en) 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code
US7337291B2 (en) 2005-01-14 2008-02-26 Microsoft Corporation Software memory access control
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7941797B2 (en) 2005-10-27 2011-05-10 International Business Machines Corporation Dynamically providing native libraries and their dependencies
US20070107057A1 (en) 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US20070261124A1 (en) 2006-05-03 2007-11-08 International Business Machines Corporation Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results
US7814465B2 (en) 2006-05-12 2010-10-12 Oracle America, Inc. Method and apparatus for application verification
US20080016339A1 (en) 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
JP2008027306A (ja) 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US8869294B2 (en) 2006-12-05 2014-10-21 Intel Corporation Mitigating branch prediction and other timing based side channel attacks
US8074274B2 (en) 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8141066B2 (en) * 2007-01-12 2012-03-20 Hewlett-Packard Development Company, L.P. Cross-platform architecture for replicating profiling scheme in a computer system
US8321861B2 (en) * 2008-02-20 2012-11-27 Arm Limited Non-native program execution across multiple execution environments
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8368705B2 (en) * 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8151349B1 (en) 2008-07-21 2012-04-03 Google Inc. Masking mechanism that facilitates safely executing untrusted native code
AU2011363943A1 (en) * 2011-03-31 2013-10-24 Irdeto B.V. Method of securing non-native code
EP3026560A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738469B1 (en) * 1998-05-20 2004-05-18 British Telecommunications Public Limited Company Method and system for performing dialling of a telephone number supplied from a data store
US7076042B1 (en) * 2000-09-06 2006-07-11 Cisco Technology, Inc. Processing a subscriber call in a telecommunications network
CN1834906A (zh) * 2005-03-15 2006-09-20 微软公司 丰富数据绑定应用程序
US20070157298A1 (en) * 2005-03-20 2007-07-05 Timothy Dingwall Method and system for providing user access to a secure application
US20080071884A1 (en) * 2006-09-15 2008-03-20 Emc Corporation Protecting client-side code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANDREAS HOLZAMMER: "Security Issues about Web Browser Add-ons", 《HTTP://WWW.NET.T-LABS.TU-BERLIN.DE/TEACHING/SS08/IS_SEMINAR/PDF/A.1.PDF》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929638A (zh) * 2012-11-07 2013-02-13 广州市动景计算机科技有限公司 扩展WebApp应用功能的方法和系统
WO2014071771A1 (zh) * 2012-11-07 2014-05-15 广州市动景计算机科技有限公司 扩展WebApp应用功能的方法和系统
CN105745646A (zh) * 2013-09-05 2016-07-06 谷歌公司 本机应用程序搜索结果
CN105745646B (zh) * 2013-09-05 2019-05-10 谷歌有限责任公司 本机应用程序搜索结果
CN104902464A (zh) * 2014-03-05 2015-09-09 中国移动通信集团江西有限公司 一种用户行为识别方法和装置
CN104902464B (zh) * 2014-03-05 2018-10-26 中国移动通信集团江西有限公司 一种用户行为识别方法和装置

Also Published As

Publication number Publication date
EP2310949A4 (en) 2012-08-01
EP2310949A2 (en) 2011-04-20
CN105320639B (zh) 2018-12-18
CN102099798B (zh) 2015-11-25
KR101626429B1 (ko) 2016-06-13
CN105320639A (zh) 2016-02-10
HK1159279A1 (zh) 2012-07-27
BRPI0915911A2 (pt) 2018-05-29
US20100017461A1 (en) 2010-01-21
US9176754B2 (en) 2015-11-03
WO2010008955A2 (en) 2010-01-21
US11514156B2 (en) 2022-11-29
AU2009271181B2 (en) 2015-02-12
DE202009019143U1 (de) 2017-01-20
US20230024083A1 (en) 2023-01-26
WO2010008955A3 (en) 2010-04-01
US20160048677A1 (en) 2016-02-18
KR20110034636A (ko) 2011-04-05
CA2730128A1 (en) 2010-01-21
AU2009271181A1 (en) 2010-01-21

Similar Documents

Publication Publication Date Title
CN102099798A (zh) 用于使用本机代码模块执行应用的方法和系统
CN102246146B (zh) 针对使用本地代码模块的web应用的硬件加速图形
US20160012350A1 (en) Interoperable machine learning platform
CN108460458B (zh) 在图形处理单元上执行计算图的方法、系统及存储介质
CN103718198A (zh) 预测模型应用编程接口
CN102609243B (zh) 仿真指针
CN110363303B (zh) 智能分配模型训练内存方法、装置及计算机可读存储介质
CN114667507A (zh) 使用基于应用的剖析的机器学习工作负载的弹性执行
CN1853164B (zh) 用于开发dsp编译器构件块的组合方法
CN114830135A (zh) 算子的层次分区
US20210295158A1 (en) End-to-end optimization
CN111045675A (zh) 一种基于Flutter的页面生成方法、装置、设备和存储介质
EP3137993A1 (en) Combining compute tasks for a graphics processing unit
CN115600644A (zh) 多任务处理方法、装置、电子设备及存储介质
Vepsäläinen et al. Resumability-a new primitive for developing web applications
Lazzaroni et al. Employing an IoT framework as a generic serious games analytics engine
CN111026945B (zh) 多平台爬虫调度方法、装置和存储介质
US10620980B2 (en) Techniques for native runtime of hypertext markup language graphics content
Ataş Open Cezeri Library: A novel java based matrix and computer vision framework
CN113835680A (zh) 应用程序的生成方法、装置、电子设备及计算机存储介质
Tang et al. Code reusability and transparency of agent-based modeling: a review from a cyberinfrastructure perspective
CN111913712A (zh) 用于在Web端部署神经网络模型的方法和装置
Górowski et al. Multi-agent Systems Programmed Visually with Google Blockly
Kolmogorov et al. Development of Programming Interface for Integrating Assembly Language with Python
Nepali Evaluation of GPU based Cloud Solutions (Scalability of Deep Learning in the Cloud)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1159279

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1159279

Country of ref document: HK

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.