CN103597447B - 高级语言和本机语言之间的通信协议 - Google Patents

高级语言和本机语言之间的通信协议 Download PDF

Info

Publication number
CN103597447B
CN103597447B CN201180065620.8A CN201180065620A CN103597447B CN 103597447 B CN103597447 B CN 103597447B CN 201180065620 A CN201180065620 A CN 201180065620A CN 103597447 B CN103597447 B CN 103597447B
Authority
CN
China
Prior art keywords
order
programming language
application
identifier
class
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.)
Expired - Fee Related
Application number
CN201180065620.8A
Other languages
English (en)
Other versions
CN103597447A (zh
Inventor
S·C·德特威勒
J·E·玛尔
P·R·怀特
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.)
NGMOCO LLC
Original Assignee
NGMOCO 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 NGMOCO LLC filed Critical NGMOCO LLC
Publication of CN103597447A publication Critical patent/CN103597447A/zh
Application granted granted Critical
Publication of CN103597447B publication Critical patent/CN103597447B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/4401Bootstrapping
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

公开了一种用于在客户端设备上在两个编程语言之间通信的系统和方法。高级语言的命令被编码为包含由分隔符分离的数字序列的字符串,其中命令的每个组成部分被编码为不同的数字。编码的字符串被传递为在客户端设备上本机运行的编译代码,并且本机代码将字符串解码为对应的本机命令并且执行该本机命令。该通信协议允许以高级代码编写的应用执行通常仅针对本机代码设置的功能,诸如与web服务器进行通信以及修改保存在存储器中的文件。高级代码还可以在不经历一些操作系统对用于应用二进制文件的传送设置的限制的情况下被传送到客户端设备,这允许应用开发人员自动地向用户发送应用更新。

Description

高级语言和本机语言之间的通信协议
相关申请的交叉引用
本申请要求2010年12月14日提交的美国临时申请No.61/422,843以及2011年12月13日提交的美国专利申请No.13/324,940的权益,其全部公开内容通过引用合并于此。
技术领域
本公开一般地涉及编程语言的领域,并且更具体地,涉及在两种不同的编程语言之间的通信。
背景技术
软件应用通常作为二进制可执行文件来发行和分发。开发人员将代码编译成二进制可执行文件,并且用户将该编译的应用二进制文件下载到其客户端设备上并且在其客户端设备上运行该编译的应用二进制文件。在公开发行之前进行编译的类似过程用于分发对软件应用的更新和补丁。尽管该过程允许开发人员保护其源代码,并且对用户提供在其客户端设备上本机运行的可执行代码,但是该过程还带来了使得对于特定平台没有吸引力的很多限制和缺点。
一个缺点在于作为防止用户运行未授权代码的方法,一些操作系统对向客户端设备传送可执行二进制文件进行限制。操作系统开发人员可以将这些限制作为对抗病毒或其他恶意代码的传播的安全措施,或者他们可以简单地使用这些限制作为对操作系统施加更多控制的方法。在一些情况下,操作系统可以包括用于管理可执行二进制文件的分发的集中式分发服务,并且被分发的二进制文件可以由分发服务的管理员来进行审查和批准。例如,苹果iOS移动操作系统包括用于分发应用和更新的APP STORE,并且发布到APP STORE的内容在被分发给用户之前经历批准过程。在其他情况下,操作系统允许用户自由下载可执行二进制文件,但是操作系统可以在执行新的应用或应用对现有应用的更新之前针对管理员密码或一些其他种类的授权来提示用户。
这些限制使软件开发人员难以分发可执行二进制文件。具体地,如果更新经受审查过程,或者如果更新在被应用之前需要用户授权,则发行和分发更新和补丁的过程可能会变得明显更慢。结果,很难迅速地向用户分发更新。此外,如果开发人员希望分发针对用户的设备配置、位置或人口统计信息而定制的更新,则定制的更新的每种变换可能都必须在被分发之前经历审查过程。
附图说明
所公开的实施例具有其他优点和特征,这些其他优点和特征从具体实施方式、所附权利要求和附图中变得更显而易见。以下是附图的简要介绍。
图1是图示根据一个实施例的适用于以高级语言递送应用和更新的系统环境的网络示图。
图2是图示根据一个实施例的客户端设备的应用客户端模块的框图。
图3是图示根据一个实施例的用于在应用运行之前自动应用对请求的应用的更新的示例性过程的交互示图。
图4是根据一个实施例的从高级语言的命令到编码的字符串的映射的示例。
图5是图示根据一个实施例的用于将高级命令转译成对应的本机命令并且执行对应的本机命令的过程的流程图。
图6是图示根据一个实施例的用于针对应用的单个处理帧执行多个命令的示例性过程的交互示图。
图7是根据一个实施例的用于针对应用注册新的对象的示例性过程的交互示图。
具体实施方式
附图和下面的描述仅以说明的方式涉及优选实施例。应当注意,从下面的讨论中,这里所公开的结构和方法的替代实施例将很容易被视作在不背离所要求保护的原理的情况下采用的可行的替代。
现在将具体参考几个实施例,在附图中示出了这些实施例的示例。应当注意,在任何可实践的情况下,可以在附图中使用相似或相同的附图标记,并且相似或相同的附图标记可以指示相似或相同的功能。附图仅出于说明的目的来描绘所公开的系统(或方法)的实施例。本领域技术人员从下面的描述中将容易地认识到,可以在不背离这里描述的原理的情况下采用这里说明的结构和方法的替代实施例。
配置概述
作为分发可执行二进制文件的替代,应用和更新可以以诸如JavaScript的高级语言来被编写和分发到客户端设备。为了运行高级应用,用户在其客户端设备上安装应用客户端模块。应用客户端模块实施通信协议,该通信协议允许高级语言与在客户端设备上本机运行的编译代码通信。该通信协议允许高级应用访问通常针对本机代码所保留的系统资源,诸如联网设备和物理传感器。结果,以高级语言编写的应用可以执行通常限制为可执行应用二进制文件的任务,这允许高级应用提供与二进制应用的用户体验类似的用户体验。
通信协议通过将高级命令编码为包含一系列数字和控制字符的字符串来进行操作。每个数字表示命令的不同组成部分,诸如类标识符、方法标识符以及传递到该方法的一个或多个参数。编码的字符串被发送到应用客户端模块的不同组件,该应用客户端模块将字符串解码为本机命令并且执行该命令。为了减小高级代码的复杂度并且由此减少用于操作通信协议的计算资源,应用客户端模块还包含若干应用编程接口(API),该若干应用编程接口(API)允许提供用于访问诸如图形处理器、物理传感器和网络接口这样的系统资源的简化命令。本机代码还可以使用该通信协议来将命令发布为高级代码。
由于用于命令的编码和解码过程使用大量的计算资源,所以应用客户端模块还可以实施排队机制以一次编码和解码若干命令。在一个实施例中,在被称为处理帧的预定时间间隔期间发布的高级命令以命令被发布的次序被添加到队列中。在处理帧的结束处,该队列中的命令被编码为字符串。随后,该字符串被解码为本机命令,并且以对应的高级命令被添加到该队列的次序相同的次序来执行本机命令。该排队机制允许应用客户端模块通过一次编码和解码多个命令来改善性能,同时仍然保持高级命令的原始次序。
通过以高级语言来分发可执行内容,该内容不经历操作系统可能对二进制应用和更新的分发设置的限制。当以高级语言向客户端设备传送应用或更新时,操作系统将该活动解释为数据的传送,而不是可执行代码的传送,并且在不施加与传送可执行代码相关联的限制的情况下允许该传送进行。结果,高级应用能够在应用引导过程期间检查并且应用更新,并且开发人员还能够通过自动地分发适应用户的地理位置、人口统计组、设备配置和其他个人信息的高级更新来提供定制用户体验。虽然下载和执行高级应用的该过程可能会绕过被集成到应用分发系统或操作系统中的一些安全措施,但是应用客户端模块包含通过限制被授予各个高级应用的权限级别来维持客户端设备的安全性的特征。
系统架构的概述
图1是图示根据一个实施例的适合于以高级语言递送应用和更新的系统环境的网络示图。除了其他组件,该系统环境包括应用服务器102、网络104和客户端设备100。在其它实施例中,在系统环境中可以存在更少、附加或不同的组件。具体地,虽然仅描绘了一个客户端设备100和一个服务器104,但是可以存在连接到网络102的其他客户端设备或服务器。
应用服务器102操作支持应用客户端模块116的基于服务器的服务以及可以保存在客户端设备100上的任何高级应用。具体地,应用服务器102使高级应用和更新可用于向用户分发,因此应用客户端模块116可以自动地或者响应于用户请求而从应用服务器102检索更新和新的应用。应用服务器102还可以提供其他应用相关服务,诸如应用集成的社交联网或者数据收集和分析。虽然应用服务器102被描绘成单个实体,但是应用服务器102的功能可以分散在多个计算设备、计算集群或数据中心中,并且应用服务器102的组件可以驻留在多个地理位置中。
应用服务器102通过网络104与多个客户端设备100进行通信。网络104可以包括本领域公知的标准通信技术和协议的任何组合。例如,可以通过诸如以太网、802.11、CDMA、3G、4G或数字订户线(DSL)这样的链接技术来通过网络104进行通信。网络104可以支持多个联网协议,包括超文本传输协议(HTTP)、传输控制协议/因特网协议(TCP/IP)或者文件传输协议,并且通过网络104传送的任何数据可以利用诸如传输层安全性(TLS)、安全套接字层(SSL)和因特网协议安全(IPsec)这样的技术来进行加密。
图1还包含客户端设备100的详细视图。除了其他组件,该客户端设备100包括处理器106、存储器108、网络接口设备110、物理传感器112、客户端设备API114以及应用客户端模块116。客户端设备100的组件106、108、110、112、114、116通过系统总线118以通信的方式耦合。作为一个整体,客户端设备100可以是包括这些组件106、108、110、112、114、116的任何计算设备,诸如智能电话、个人数字助理(PDA)、平板计算机、膝上型计算机或台式计算机。
处理器106执行计算机可读指令。处理器106可以访问存储器108以检索用于执行的指令或者读取或写入数据。虽然图1中仅示出了单个处理器106,但是客户端设备100可以包含可以并行操作的多个处理器106。客户端设备100还可以包含用于图形处理或音频处理的专用处理器106。存储器108是能够存储可以由处理器106执行的计算机可读指令和数据的任何非瞬态计算机可读存储介质。存储器108可以包括易失性存储器(例如,随机存取存储器)和非易失性存储器(例如,硬盘驱动、固态驱动、压缩盘,磁带等)的组合。网络接口设备110连接到网络104,并且在网络104和客户端设备100的其他组件之间交换数据。
物理传感器112可以包括监视客户端设备的定向或环境的任何设备。例如,传感器可以包括加速度计、陀螺仪、全球定位服务(GPS)接收器、罗盘或环境光检测器。物理传感器112还可以包括用于记录对客户端设备100的用户输入的设备,诸如外部按钮、键盘、鼠标、触摸屏或麦克风。
操作系统可以提供一个或多个客户端设备应用编程接口(API)114,该一个或多个应用客户端设备应用编程接口(API)114允许二进制软件应用与客户端设备100的物理组件进行交互。操作系统可以包括用于与物理传感器112、网络接口设备110或者诸如可以由专用图形或音频处理器106控制的屏幕或扬声器这样的输出设备进行交互的API。
应用客户端模块116实施通信协议,该通信协议允许以高级编程语言编写的一个或多个应用与本地代码通信。通信协议的一个益处在于,该协议允许高级应用执行通常针对本机代码所保留的任务,诸如修改保存在存储器108中的其他应用或者通过网络接口设备110与应用服务器102进行通信。为了流线化高级应用和本地代码之间的通信,应用客户端模块116还包含简化由操作系统提供的API114和高级应用之间的交互的应用客户端API的集合。虽然应用客户端模块116被示出为单独的实体,但是用于执行应用客户端模块116的功能的逻辑可以整体或者部分地驻留在处理器106或存储器108上。另外,全部或部分的应用客户端模块116可以被实现为单独的硬件设备,诸如专用集成电路(ASIC)或者现场可编程门阵列(FPGA)。
应用客户端模块
现在参考图2,图示了图1中示出的应用客户端模块116的具体视图。除了其他组件,应用客户端模块116可以包含引导应用200、一个或多个其他高级应用202、高级API204、本机API206、高级对象注册表(registry)208、本机对象注册表210、解释器212以及一组简化的设备API214。应用客户端的其他实施例可以包含附加、更少或不同的组件。
引导应用200是以解释的高级编程语言(例如,JavaScript)编写的应用,该应用接收对高级应用200、202的引用并且尝试更新所引用的应用。在接收到引用的应用之后,引导应用200询问应用服务器102以确定所引用的应用的更新版本是否可用于下载。如果引导应用200在应用服务器102上找到了更新,那么引导应用200自动地检索并且应用该更新。因为该更新也是以高级语言编写的,所以可以在没有来自用户或操作系统的任何介入或授权的情况下检索和应用该更新。
当应用客户端模块116接收到对启动应用202的请求时,本机API206向引导应用200发出两个命令。第一个命令包含对引导应用200的引用,这使得引导应用200对本身进行更新。第二个命令包含对所请求的应用202的引用,这使得引导应用200更新所请求的应用202。参考图3来详细描述更新引导应用200和所请求的应用202的过程。
高级应用202是诸如可以被下载到客户端设备100的游戏、图像编辑器或多媒体回放程序这样的软件应用。下载可以由客户端设备100的用户或者由应用客户端模块116内的另一应用202来发起。类似于引导应用202,高级应用202也以解释的高级编程语言来编写。如这里使用的高级编程语言是代替在被分发给客户端设备之前被编译,而可以由解释器212在客户端设备上执行的任何编程语言(例如,JavaScript)。除了高级代码,应用202还可以包含其它数据项,诸如图像、视频、音频片段或明文(p1aintext)。由于高级应用202是以高级编程语言编写的,所以操作系统将高级应用202的下载解释为数据文件的下载。结果,该下载不受到操作系统可能对可执行二进制应用的下载设置的任何限制。虽然这可能绕过一些可能被集成到操作系统中的安全功能,但是解释器212和本机API206包含调整被准许接入下载的高级应用202的级别的安全功能。
高级API和本机API206是提供用于简化设备API中的功能的统一接口的应用编程接口(API)。当API204、206包含匹配类和方法时,高级API204以与引导应用200和其他应用202相同的高级语言来编写,而本机API206是在客户端设备100上本机运行的二进制文件。高级API204和本机API206还包含下述逻辑,该逻辑用于以队列排列用于单个处理帧的命令,向解释器212发送要被编码为字符串的队列,并且将该字符串解码回命令。参考图4来详细描述编码功能,并且参考图6来详细描述排队机制。通过使各个简化设备API214的功能统一,开发人员可以参考单个API以与客户端设备100上的硬件进行交互。这简化了开发过程,并且减少了类或方法被归属到错误的API的可能性。
高级对象注册表208和本机对象注册表210在运行应用202中保持活动对象的镜像(mirrored)注册表。在一个实施例中,对象初始地被注册在高级对象注册表208中,并且随后将条目镜像映射(mirror)到本机对象注册表210。参考图7来详细描述注册新的对象以及在两个注册表208、210之间镜像映射对象的过程。
解释器212加载并且执行高级代码,诸如在引导应用200、其他应用202和高级API204中的代码。当应用200、202包括要由本机代码执行的命令时,解释器212对该命令进行编码,并且将该命令发送到本机API206以被解码和执行。存在解释器212的两个独立实例。应用解释器212A具有访问客户端设备100的低权限。例如,应用解释器212A能够访问屏幕上的图形、用户界面(UI)和音频功能以及其他应用相关的功能。同时,系统解释器212B具有访问客户端100的高权限,包括对可能造成系统不稳定的客户端设备100的部分的访问。例如,系统解释器212B可以使用网络接口110来向应用服务器102传送授权凭证,或者修改存储在存储器108中的引导应用200或其他应用202。
因为引导应用200频繁使用高权限功能,诸如访问应用服务器102和修改存储在存储器108中的应用200、202,所以由系统解释器212B来执行引导应用200。其他应用202由应用解释器212A来执行。如果其他应用202中的一个包括要以高权限执行的命令,则应用解释器212A将该命令发送到本机API206,并且本机API206确定是否应当允许该命令。例如,本机API206可以允许执行用于从应用服务器102中检索社交联网数据的命令,但是该API206可能不允许应用202执行用于任意修改或擦除另一应用202的命令。如果本机API206允许高权限命令执行,那么该命令被路由到系统解释器212以供执行。该配置允许应用202访问客户端设备100的高权限功能,同时仍然通过提供针对不适当和可能有害的高权限命令的保护来维护客户端设备100的安全性。
简化的设备API214提供了高级应用200、202可以用来与由操作系统提供的客户端设备114进行交互的简化接口。例如,简化的图形API214A可以提供简化的方法来以单个命令在屏幕上定位图像,而使相同的图像位于屏幕上的相同位置中可能需要对于客户端设备API114中的适当图形API的复杂的调用序列。此外,应用客户端模块116可以实施不同版本的简化设备API214以与不同客户端设备100上的客户端设备API114进行交互。例如,苹果iOS中的图形API可能需要第一命令序列来在屏幕上定位图像,而使用GOOGLE安卓操作系统中的图形API来定位图像可能需要与第一命令序列不同的第二命令序列。在该情况下,简化图形API214A的iOS版本中的简化的定位图像命令将执行第一命令序列,并且简化图形API214A的安卓版本中的定位图像命令将执行第二命令序列。结果,简化的设备API214提供可以用于与不同设备100和不同操作系统的硬件、固件和软件层进行交互的命令的标准集合,这允许在引导应用200、其他应用202和高级API204中的相同的高级代码在不同的设备配置中起作用。
镜像API204、206,镜像对象注册表208、210,解释器212和简化的API214一起提供了在高级应用202和操作系统的内置API114之间的标准化接口。这意味着只要应用客户端模块116被安装在设备上,相同的高级应用202就可以在不同的操作系统和不同的客户端设备100上执行。因此,开发人员可以联络跨多个操作系统和设备的更广泛的用户受众,而无需编写多个OS特定或者设备特定的版本的应用202。
应用自动更新
图3是图示根据一个实施例的在应用的引导过程期间自动地更新高级应用200的示例性过程的、在应用服务器102、本机API206、系统解释器212B和应用解释器212A之间的交互示图。当应用客户端模块116接收300到对于运行应用的请求时,该过程开始。该请求通常作为来自传感器112中的一个(例如,触摸屏)的用户输入而被接收,但是该请求还可以源自不同的源,诸如不同的应用。在应用客户端模块116处接收到该请求之后,其被路由到本机API206,本机API206通过发出302指令系统解释器212B更新引导应用200的第一命令来进行响应。
为了更新引导应用200,系统解释器212B利用对其本身进行更新的指令来加载和执行引导应用200。引导应用200中的高级代码使得系统解释器212B检查304应用服务器102以确定引导应用的较新版本是否可用。系统解释器212B能够通过使用对于与网络接口设备110进行交互的解释器212B的较高访问权限来访问304应用服务器102,并且向应用服务器102发送适当的授权凭证。
如果在应用服务器102上没有找到更新,那么系统解释器212B跳过更新过程308,并且关闭310该引导应用。如果找到了对引导应用200的更新,那么系统解释器212B从应用服务器102接收306更新,并且应用308该更新。在一个实施例中,系统解释器212B在更新过程308期间用更新的版本来替换整个引导应用200。替代地,系统解释器212B可以在更新过程308期间替换引导应用200中的高级代码的子集(例如,仅新的或不同的几行代码)。再次,因为系统解释器212B具有比应用解释器212A更高的权限,所以系统解释器212B能够修改引导应用200。
在系统解释器212B更新308引导应用200之后,系统解释器212B关闭引导应用310,并且使用返回声明来返回312到本机API。接下来,本机API206发出314指令系统解释器212B更新被请求的应用202的第二命令。系统解释器212B使用类似的过程来更新所请求的应用202。首先,系统解释器212B利用用于更新所请求的应用202的指令来加载引导应用200。引导应用202中的高级代码使得系统解释器212B检查316应用服务器102上的所请求的应用202的更新版本。再次,如果在应用服务器102上没有更新可用,则系统解释器212B跳过更新过程320并且关闭322引导应用,而不修改所请求的应用202。如果有可用的更新,那么系统解释器212B接收318并且应用320该更新。除了新的或不同的高级代码,对于所请求的应用202的更新还可以包括附加数据对象,诸如电影、音频片段、图像或明文。
当更新所请求的应用202时,系统解释器212B可以接收318对用户的个人信息定制的更新(例如,用户的地理位置、人口统计信息、设备配置等)。应用服务器102可以在更新请求316时从客户端设备100上的各种传感器122(例如,GPS接收器)获取用户的个人信息。替代地,用户可能已经自发地预先向应用服务器102提供了该信息(例如,当使用应用服务器的社交联网功能时)。在应用该更新之后,系统解释器212A关闭322引导应用200,并且使用第二返回声明来返回到本机API206。最后,本机API206发出326指令低权限的应用解释器212A加载并且执行328所请求的应用的第三命令。
该配置出于若干原因是有利的。通过在启动应用202之前自动地更新引导应用200和所请求的应用202,在不需要用户手动请求更新的情况下,引导应用200和所请求的应用202都保持是最新的。此外,基于用户的个人信息来定制应用更新的能力还允许应用开发人员提供更丰富和更个性化的用户体验。
将命令编码为字符串
图4图示了根据一个实施例的从高级语言的命令400到编码的字符串410的映射的示例。解释器212将高级命令400编码为字符串410,并且将该字符串发送到本机API206,在本机API206处字符串410被解码并且作为本机命令来执行。通过该编码方法定义的通信协议允许高级语言执行通常针对本机代码所保留的命令。
高级语言的命令400可以包括,例如,类402、方法404和四个输入参数406。编码的字符串410可以包括例如与类402相对应的数字类标识符412、与方法404相对应的数字方法标识符414以及输入参数406的值416。解释器212和本机API206针对每个方法来预先确定输入参数406的次序,使得当本机API206对字符串410进行解码时表示参数406的值的字符串410中的数字146可以被映射成正确的参数。在替代实施例中,命令400和编码的字符串410可以包括附加的、更少或不同的组成部分。例如,命令400可以包括附加的参数406,这可以使得编码的字符串包括附加的参数值416。
除了表示高级命令的类、方法和参数的数字之外,编码的字符串410还包含两种类型的控制字符。第一类型的控制字符(冒号)418指示命令的开始,并且第二类型的控制字符(逗号)420分离字符串410中的不同条目。虽然如图4中所示在整个字符串410中添加了空格来促进可读性,但是空格不具有功能并且可以被省略。编码的字符串410还包含指示类内的对象的特定实例的实例标识符422。当在高级对象注册表208中注册了对象时,高级API204对该对象的实例指派实例标识符422,并且解释器212在编码命令400时从高级对象注册表208中检索实例标识符422。在图4中示出的实施例中,实例标识符422位于数字方法标识符414和参数的值416之间。
类402和方法404与其相应的数字标识符412、414之间的映射被配置为使得可以使用编码的字符串410来将原始命令400重新创建为本机命令。在一个实施例中,预先确定从文本标识符402、404到数字标识符412、414的映射,但是在解释器212和本机API206之间可以随机地生成和再现该映射。此外,在方法404和数字方法标识符414之间的映射可能不是一对一映射。具有类似功能的方法404可以被映射成相同的数字方法标识符414。例如,用于旋转、平移和缩放屏幕上的子画面(sprite)的方法404可以被映射成与用于变换屏幕上的子画面的本机API中的一般化的方法相对应的数字标识符414。在替代实施例中,类402和方法404可以被映射成单个复合数字标识符,而不是两个分离的数字标识符402、404。再次,映射不需要是一对一映射。只要本机API206能够将高级命令400再现为本机命令,就可以对映射过程进行任何其他改变。
图5是图示根据一个实施例的用于将以高级语言编写的命令转译成本机命令并且执行该本机命令的流程图。当解释器212从高级API204接收到500高级命令的队列时,该过程开始。参考图6来详细描述将高级命令聚集在队列中的过程。解释器212根据参考图4描述的过程来将高级命令编码505为字符串。解释器212以与对应的高级命令在队列中的次序相同的次序来布置编码的字符串,使得这些命令可以以其被排队的相同次序来被执行。
在接收到500高级命令的队列并且将这些命令编码505为字符串之后,解释器212向本机API206发送510该编码的命令。本机API206通过使在编码过程505期间执行的映射过程逆转来将该字符串解码515为本机命令。最后,本机API206使用在本机API206和本机对象注册表210中的匹配类和对象来执行520解码的本机命令。
在高级脚本语言和本机代码之间的交互
现在参考图6和图7,图示了高级应用可以如何使用图4中示出的通信协议来与客户端设备100上的并且在应用客户端模块116内的资源进行交互的两个示例。图6是图示根据一个实施例的用于处理在单个处理帧中的命令序列的交互示图。在高级,应用202在固定时间间隔期间发出一个或多个命令,并且高级API204将命令添加到队列。固定时间间隔被称为处理帧。在处理帧的结束处,使用参考图4描述的通信协议来编码队列中的命令并将其传送到本机API206并且解码为本机命令。排队机制保持原始高级命令在编码和解码的整个过程中的次序,因此可以以应用202发出对应的高级命令的次序相同的次序来执行本机命令。
当本机API206请求600用于下一处理帧的命令时,该过程开始。该请求被编码为字符串并且被发送到解释器212,该解释器212对该请求进行解码并且将其传递602到高级API204。高级API204在应用202中分析该高级代码并且检索要被编码的第一命令604。检索到的命令可以执行通常针对本机代码保留的任何功能,诸如显示或修改屏幕上的子画面、回放音频片段、读取或写入存储器108中的文件或者监视来自物理传感器112的输入。在检索604到第一命令之后,高级API将第一命令添加606到队列。
在检索604和排队606第一命令之后,高级API204执行相同的过程以对其他命令进行检索608和排队610。虽然仅针对总共两个命令示出了检索和排队过程,但是高级API204可以在处理帧的持续时间中继续将其他高级命令添加到队列中。根据参考图4描述的通信协议,在处理帧的结束处,高级API204向解释器212发送612高级命令的队列,并且解释器212将每个排队的命令编码614为字符串。
解释器212向本机API206发送616编码的字符串队列,本机API206将该字符串解码为本机命令,并且执行620、622该本机命令。因为在对命令排队606、610、编码614、传送616和解码618的同时保持了原始高级命令的次序,所以以与高级命令被排队的相同的次序来执行620、622本机命令。因为以不正确的次序执行命令可能产生不正确的结果,所以保留命令的次序是重要的。例如,如果平移和旋转步骤以相反的次序执行,则用于将图像放置于屏幕上、平移该图像并且关于原点旋转该图像的命令序列可能产生不同的结果。
因为跨高级和本机代码之间的处理边界的过程(例如,编码614、发送616和解码618命令的过程)可能是相对地资源密集的,所以排队机制降低了处理开销,并且提高了应用202的性能。如果客户端设备100是具有有限处理能力和电池寿命的移动设备,则这特别重要。通过一次处理整个处理帧的命令,应用客户端模块每处理帧跨越处理边界一次而不是每命令跨越处理边界一次。
图7是图示根据一个实施例的用于将新的对象注册在应用客户端模块116所保持的两个不同的对象注册表208、210上的过程的交互示图。用于注册对象的过程以与参考图6描述的过程相同的方式开始。首先,本机API206请求700用于下一处理帧的命令。本机API206将该请求编码为字符串并且将该请求发送到解释器212,该解释器212对该请求进行解码,并且将其传递702到高级API204。高级API204分析应用202中的该高级代码,并且检索704要被编码的下一命令。如果高级API检索704到用于注册新的对象的命令,那么高级API204在将命令添加到队列708之前将该对象注册706在高级对象注册表208中。
在一个实施例中,高级API204在将新的对象注册706在高级注册表208中时对该新的对象指派实例标识符。注册命令还可以包含用于标识被注册的对象的类型的类标识符。类标识符和实例标识符一起允许高级API204唯一地标识对象,并且两个标识符被保存在对象注册表中。在替代实施例中,类标识符和实例标识符可以合并成可以用于唯一地标识该对象的单个复合标识符。
在处理帧的结束处,高级API204向解释器212发送710排队的命令,并且使用参考图5和图6描述的过程来编码712、发送714和解码716队列中的命令。如图4中所示,实例和类标识符作为字符串的一部分被编码和发送。虽然在图7中仅示出了一个注册命令,但是高级API204可以在检索704和排队708所示的对象注册命令之前或之后,在处理帧期间检索其他命令并且将其添加到队列中。在用于处理帧的命令被解码716成本机命令之后,本机API206执行对象注册命令并且将该对象注册718在本机对象注册表210中。使用相同的数字实例标识符来将该对象注册718在本机对象注册表210中。该过程允许应用客户端模块116保持对象注册表的两个镜像副本208、210,使得可以由本机代码来执行引用一个或多个对象的命令。
所公开的配置有益地允许开发人员编写对于用户来说可与在客户端设备100上本机运行的应用区分的高级软件应用202。简化的设备API214和在应用客户端模块116中实现的通信协议的组合允许高级应用202访问通常针对本机应用保留的系统资源,诸如图形功能、用户接口功能、联网设备110和物理传感器112。结果,开发人员能够编写执行与本机应用相同的功能的高级应用202。此外,所公开的配置允许高级应用202在不经历客户端设备100的操作系统可能对本机应用的更新设置的任何限制的情况下被更新。这允许应用客户端模块116自动地应用适应用户的地理位置、人口统计信息、客户端设备配置或其他个人具体信息的更新,这导致了提高高级应用202的值的更定制化的用户体验。
其他配置考虑
在本说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。虽然一个或多个方法的独立操作被图示和描述为单独的操作(例如,在图5中),但是一个或多个独立操作可能同时执行,并且不需要以图示的次序执行操作。示例性配置中被表示为单独组件的结构和功能可以被实现为组合的结构或组件。类似地,表示为单个组件的结构和功能可以被实现为单独组件。这些和其他变体、修改、添加和改善落在本主题的范围内。
特定实施例在这里被描述为包括逻辑或很多组件、模块或机制(例如,在图1、图2、图3、图6和图7中)。模块可以构成软件模块(例如,在机器可读介质上实现或者在发送信号中实现的代码)或硬件模块。硬件模块是能够执行特定操作的有形单元,并且可以以特定的方式进行配置或布置。在示例性实施例中,一个或多个计算机系统(例如,单机、客户端或服务器计算机系统)或者计算机系统的一个或多个硬件模块(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为进行操作以执行如这里描述的特定操作的硬件模块。
在各种实施例中,硬件模块可以被机械地或电子地实现。例如,硬件模块可以包括专用电路或永久配置的逻辑(例如,作为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))以执行特定操作。硬件模块还可以包括可编程逻辑或电路(例如,包括在通用处理器或其它可编程处理器内),其由软件临时配置为执行特定操作。应当认识到,用于机械地、以专用和永久配置的电路或者以临时配置的电路(例如,由软件配置的)实现硬件模块的决定可以由成本和时间考虑来驱动。
这里描述的示例性方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置成执行相关操作的一个或多个处理器来执行。不论临时还是永久配置,这样的处理器可以构成进行操作以执行一个或多个操作或功能的处理器实现的模块。这里涉及的模块可以在一些示例实施例中包括处理器实现的模块。
一个或多个处理器还可以进行操作以支持在“云计算”环境中或作为“软件即服务”(SaaS)的相关操作的性能。例如,至少一些操作可以由计算机组(作为包括处理器的机器的示例)来执行,这些操作可经由网络(例如,因特网)并且经由一个或多个适当的接口(例如,应用程序接口(API))来访问。
特定操作的执行可以分布在一个或多个处理器中,而不仅驻留在单个机器内,而是跨多个机器来部署。在一些示例性实施例中,一个或多个处理器或处理器实现的模块可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例性实施例中,一个或多个处理器或处理器实现的模块可以跨多个地理位置来分布。
本说明书的一些部分在对机器存储器(例如,计算机存储器)内存储为比特或二进制数字信号的数据的操作的符号表示或算法方面而提出。这些算法或符号表示是由数据处理领域的普通技术人员使用以对本领域技术人员传达其工作实质的技术的示例。如这里使用的“算法”是产生期望结果的类似处理或操作的自洽序列。在该上下文中,算法和操作涉及对物理量的物理操纵。通常但不是必须的,这样的量可以采取能够由机器存储、访问、传送、组合、比较或以其他方式操纵的电、磁或光信号的形式。有时并且主要是出于一般使用的原因,方便地使用诸如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字符”、“项”、“编号”、“数字”等的词语来指代这样的信号。然而,这些词语仅是方便的标签并且要与适当的物理量相关联。
除非特别地另外声明,使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等的词语的这里的讨论可以指机器(例如,计算机)的动作或过程,该机器可以对表示为在一个或多个存储器(例如,易失性存储器、非易失性存储器或其组合)、寄存器或接收、存储、传送或显示信息的其他机器组件内的物理(例如,电、磁或光)量的数据进行操纵和转换。
如这里使用的对“一个实施例”或“实施例”的任何引用指结合实施例描述的具体元素、特征、结构或特征被包括在至少一个实施例中。短语“在一个实施例中”在本说明书中的不同位置中的的出现不一定全部涉及同一实施例。
一些实施例可以使用表达“耦合”和“连接”及其派生词来进行描述。例如,一些实施例可以使用术语“耦合”来描述以指示两个或更多个元件处于直接物理或电接触。然而,术语“耦合”还可以指两个或更多个元件彼此不直接接触,但是仍然彼此协作或交互。实施例并不限于该上下文。
如这里使用的术语“包括”、“包含”、“具有”或其任何其他变体意在涵盖非排他性包括。例如,包括一系列元素的过程、方法、物品或装置不必仅限于那些元素,而是可以包括没有明确列出或者对这样的过程、方法、物品或装置所固有的其它元素。另外,除非另外明确地相反说明,“或”指兼或而非互斥或。例如,条件A或B通过下面中的任何一个来满足:A为真(或存在)并且B为假(或不存在),A为假(或不存在)并且B为真(或存在),以及A和B都为真(或存在)。
另外,“一”的使用用于描述本实施例的元件和组件。这样仅仅是为了方便并且给出本发明的一般含义。该描述应当被解读为包括一个或至少一个,并且单数也包括复数,除非以其他方式明显指出。
在阅读本公开时,本技术领域的技术人员将通过这里公开的原理理解用于在高级和本机代码之间通信的系统和过程的其他替代结构和功能设计。因此,尽管已经说明和描述了具体实施例和应用,但是应当理解,所公开的实施例不限于这里公开的确切构成和组件。可以在不脱离所附权利要求所定义的精神和范围的情况下在这里公开的方法和装置的布置、操作和细节中作出对于本领域技术人员显而易见的各种修改、改变和变化。

Claims (20)

1.一种用于在两种编程语言之间通信的方法,包括:
接收第一编程语言的一个或多个命令,每个命令包括多个组成部分;
将接收到的命令中的每一个命令编码为字符串,所述字符串包括:
第一类型的控制字符,所述第一类型的控制字符标记所述命令的开始,
标识所述命令的所述多个组成部分的多个数字,所述多个组成部分包括至少类标识符、方法标识符以及一个或多个输入参数,以及
第二类型的控制字符,所述第二类型的控制字符使所述多个数字中的各个数字分离;
将编码的字符串解码为第二编程语言的至少一个命令,所述第二编程语言的每个命令与接收到的所述第一编程语言的命令中的一个命令相对应,并且执行与对应的接收到的所述第一编程语言的命令相似的任务;以及
执行所述第二编程语言的所述至少一个命令。
2.根据权利要求1所述的方法,其中接收所述第一编程语言的一个或多个命令包括:接收包含所述一个或多个命令的队列,所述命令在所述队列中的次序指示所述命令将要被执行的次序。
3.根据权利要求2所述的方法,其中执行所述第二编程语言的至少一个命令包括:以与对应的所述第一编程语言的命令在所述队列中被布置的次序相同的次序来执行所述至少一个命令。
4.根据权利要求1所述的方法,其中接收到的所述第一编程语言的命令中的每一个命令包括:
类标识符,所述类标识符标识对象的类型;
方法标识符,所述方法标识符标识在所标识的类内的成员功能;以及
将在所标识的方法中使用的一个或多个输入参数。
5.根据权利要求4所述的方法,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符的第一数字;
标识所述方法标识符的第二数字;
标识在所标识的类内的对象的实例的第三数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
6.根据权利要求4所述的方法,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符和所述方法标识符的第一数字;
标识在所标识的类内的对象的实例的第二数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
7.一种用于在高级编程语言和在计算系统上本机运行的二进制代码之间通信的计算系统,包括:
处理器;以及
解释器模块,所述解释器模块被配置成:
接收高级编程语言的一个或多个命令,每个命令包括多个组成部分,以及
将接收到的命令中的每一个命令编码为字符串,所述字符串包括:标记所述命令的开始的第一类型的控制字符,标识所述命令的所述多个组成部分的多个数字,所述多个组成部分包括至少类标识符、方法标识符以及一个或多个输入参数,以及使所述多个数字中的各个数字分离的第二类型的控制字符;以及
本机模块,所述本机模块被配置成:
从所述解释器模块接收一个或多个字符串,
将所述一个或多个字符串解码为由所述二进制代码可执行的至少一个命令,每个可执行的命令与接收到的所述高级编程语言的命令中的一个命令相对应,并且执行与对应的所述高级编程语言的命令相似的任务;以及
执行所述至少一个可执行的命令。
8.根据权利要求7所述的系统,其中接收所述高级编程语言的一个或多个命令包括:接收包含所述一个或多个命令的队列,所述命令在所述队列中的次序指示所述命令将被执行的次序。
9.根据权利要求8所述的系统,其中所述本机模块进一步被配置为以与所述对应的所述高级编程语言的命令在所述队列中被布置的次序相同的次序来执行所述至少一个命令。
10.根据权利要求7所述的系统,其中接收到的所述高级编程语言的命令中的每一个命令包括:
类标识符,所述类标识符标识对象的类型;
方法标识符,所述方法标识符标识在所标识的类内的成员功能;以及
将在所标识的方法中使用的一个或多个输入参数。
11.根据权利要求10所述的系统,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符的第一数字;
标识所述方法标识符的第二数字;
标识在所标识的类内的对象的实例的第三数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
12.根据权利要求10所述的系统,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符和所述方法标识符的第一数字;
标识在所标识的类内的对象的实例的第二数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
13.根据权利要求7所述的系统,进一步包括一个或多个高级应用,所述一个或多个高级应用包含以所述高级编程语言编写的多个命令(高级命令)。
14.根据权利要求13所述的系统,其中所述高级应用中的一个高级应用是包含高级命令的引导应用,所述高级命令被配置成,当由所述解释器模块编码并且由所述本机模块解码和执行时,使得所述处理器:
从远程应用服务器接收一个或多个附加高级命令;以及
通过执行以下各项中的至少一项来修改所述高级应用中的一个高级应用:
用所述附加高级命令中的至少一个高级命令来替换所述高级应用中的所述多个高级命令中的至少一个高级命令;以及
将所述附加高级命令中的至少一个高级命令插入到所述高级应用中的所述多个高级命令中。
15.一种用于在两种编程语言之间通信的设备:
用于接收第一编程语言的一个或多个命令的装置;
用于将接收到的命令中的每一个命令编码为字符串的装置,所述字符串包括:
第一类型的控制字符,所述第一类型的控制字符标记所述命令的开始,
标识所述命令的组成部分的多个数字,所述组成部分包括至少类标识符、方法标识符以及一个或多个输入参数,以及
第二类型的控制字符,所述第二类型的控制字符使所述多个数字中的各个数字分离;
用于将编码的字符串解码为第二编程语言的至少一个命令的装置,每个所述第二编程语言的命令与接收到的所述第一编程语言的命令中的一个命令相对应,并且执行与对应的所述第一编程语言的命令相似的任务;以及
用于执行所述第二编程语言的所述至少一个命令的装置。
16.根据权利要求15所述的设备,其中接收所述第一编程语言的一个或多个命令包括:接收包含所述一个或多个命令的队列,所述命令在所述队列中的次序指示所述命令将被执行的次序。
17.根据权利要求16所述的设备,其中执行所述第二编程语言的所述至少一个命令包括:以与对应的所述第一编程语言的命令在所述队列中被布置的次序相同的次序来执行所述至少一个命令。
18.根据权利要求15所述的设备,其中接收到的所述第一编程语言的命令中的每一个命令包括:
类标识符,所述类标识符标识对象的类型;
方法标识符,所述方法标识符标识在所标识的类内的成员功能;以及
将在所标识的方法中使用的一个或多个输入参数。
19.根据权利要求18所述的设备,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符的第一数字;
标识所述方法标识符的第二数字;
标识在所标识的类内的对象的实例的第三数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
20.根据权利要求18所述的设备,其中标识所述命令的所述组成部分的所述多个数字包括:
标识所述类标识符和所述方法标识符的第一数字;
标识在所标识的类内的对象的实例的第二数字;以及
与所述一个或多个输入参数的值相对应的一个或多个附加数字。
CN201180065620.8A 2010-12-14 2011-12-14 高级语言和本机语言之间的通信协议 Expired - Fee Related CN103597447B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US42284310P 2010-12-14 2010-12-14
US61/422,843 2010-12-14
US13/324,940 2011-12-13
US13/324,940 US8959492B2 (en) 2010-12-14 2011-12-13 Communication protocol between a high-level language and a native language
PCT/US2011/064966 WO2012082936A2 (en) 2010-12-14 2011-12-14 A communication protocol between a high-level language and a native language

Publications (2)

Publication Number Publication Date
CN103597447A CN103597447A (zh) 2014-02-19
CN103597447B true CN103597447B (zh) 2017-03-29

Family

ID=46245351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180065620.8A Expired - Fee Related CN103597447B (zh) 2010-12-14 2011-12-14 高级语言和本机语言之间的通信协议

Country Status (7)

Country Link
US (1) US8959492B2 (zh)
EP (1) EP2652608A4 (zh)
JP (1) JP5948342B2 (zh)
KR (1) KR101866945B1 (zh)
CN (1) CN103597447B (zh)
CA (1) CA2819691A1 (zh)
WO (1) WO2012082936A2 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140373144A9 (en) 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
US9106697B2 (en) 2010-06-24 2015-08-11 NeurallQ, Inc. System and method for identifying unauthorized activities on a computer system using a data structure model
US8959142B2 (en) 2012-02-29 2015-02-17 Microsoft Corporation Combining server-side and client-side user interface elements
US10142122B1 (en) 2012-04-11 2018-11-27 Google Llc User interfaces, systems and methods for configuring smart devices for interoperability with a smart hub device
US9198204B2 (en) 2012-04-11 2015-11-24 Google Inc. Apparatus and method for seamless commissioning of wireless devices
US10075334B1 (en) 2012-04-11 2018-09-11 Google Llc Systems and methods for commissioning a smart hub device
US10397013B1 (en) 2012-04-11 2019-08-27 Google Llc User interfaces, systems and methods for configuring smart devices for interoperability with a smart hub device
US8887178B1 (en) 2012-10-23 2014-11-11 Google Inc. Method to customize native operating system views using web technologies in mobile devices
US9723091B1 (en) 2012-11-09 2017-08-01 Noble Systems Corporation Variable length protocol using serialized payload with compression support
GB201303081D0 (en) * 2013-02-21 2013-04-10 Postcode Anywhere Europ Ltd Common service environment
US9922580B2 (en) 2013-04-30 2018-03-20 Google Llc Apparatus and method for the virtual demonstration of a smart phone controlled smart home using a website
US10088818B1 (en) 2013-12-23 2018-10-02 Google Llc Systems and methods for programming and controlling devices with sensor data and learning
US9082018B1 (en) 2014-09-30 2015-07-14 Google Inc. Method and system for retroactively changing a display characteristic of event indicators on an event timeline
US9692748B2 (en) * 2014-09-24 2017-06-27 Oracle International Corporation Unified provisioning of applications on devices in an enterprise system
US10601604B2 (en) 2014-11-12 2020-03-24 Google Llc Data processing systems and methods for smart hub devices
CA2973367A1 (en) 2015-01-07 2016-07-14 Countertack Inc. System and method for monitoring a computer system using machine interpretable code
JP5894320B1 (ja) 2015-07-09 2016-03-23 株式会社 ディー・エヌ・エー 情報処理装置及び情報処理プログラム
US9747145B2 (en) * 2015-10-08 2017-08-29 Ca, Inc. Mobile application configuration agnostic to operating system versions
US20190139008A1 (en) * 2016-04-19 2019-05-09 Digitzs Solutions, Inc. Reducing Complexity When Integrating Services Functionalities
US10365916B2 (en) 2016-04-19 2019-07-30 Dropbox, Inc. Providing access to a hybrid application offline
JP6876235B2 (ja) * 2016-09-27 2021-05-26 富士フイルムビジネスイノベーション株式会社 電子装置及び画像処理装置
US10613882B2 (en) 2016-10-14 2020-04-07 Seagate Technology Llc Active drive API
CN111178008A (zh) * 2019-12-19 2020-05-19 清华大学 一种面向数字字符的数据编码方法、解析方法及系统
EP4226240A1 (en) * 2020-10-09 2023-08-16 Conektto, Inc. Natural language processing of api specifications for automatic artifact generation
US11507288B2 (en) * 2021-04-15 2022-11-22 Dell Products L.P. Detecting and reconfiguring of boot parameters of a remote non-volatile memory express (NVME) subsystem

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04142629A (ja) * 1990-10-03 1992-05-15 Fujitsu Ltd 高級言語処理装置
US5875335A (en) 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
BR9713267A (pt) * 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
US7028312B1 (en) 1998-03-23 2006-04-11 Webmethods XML remote procedure call (XML-RPC)
US6698014B1 (en) 1999-10-14 2004-02-24 Convert Systems Inc. System for automatically converting source code from one programming language to another
US6920636B1 (en) 1999-12-15 2005-07-19 Microsoft Corporation Queued component interface passing for results outflow from queued method invocations
EP1182547A1 (de) 2000-08-24 2002-02-27 Wincor Nixdorf GmbH & Co KG Programmkopplungsmethode
US6993568B1 (en) 2000-11-01 2006-01-31 Microsoft Corporation System and method for providing language localization for server-based applications with scripts
WO2003036464A2 (en) * 2001-10-22 2003-05-01 Sun Microsystems, Inc. Inter-process communication using different programming languages
US7574714B2 (en) * 2002-08-23 2009-08-11 At&T Intellectual Property I, L.P. System and method for providing interoperability between different programming protocols
US7272821B2 (en) 2003-08-25 2007-09-18 Tech Mahindra Limited System and method of universal programming language conversion
US7761843B2 (en) 2005-07-01 2010-07-20 Ronald Ortscheid Computer source code generator
US7536537B2 (en) 2006-04-20 2009-05-19 Harris Corporation Simultaneous dual booting of platforms
US8510647B2 (en) 2006-04-29 2013-08-13 Jennifer Madden Computer programming and markup language source code visualization tool
US7992139B2 (en) * 2006-11-29 2011-08-02 International Business Machines Corporation Method, system and program product for transforming a single language program into multiple language programs
CA2695677C (en) * 2007-11-13 2013-08-20 Nokia Corporation A method and an apparatus comprising a browser
US8266604B2 (en) * 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US8250523B2 (en) * 2009-01-29 2012-08-21 Microsoft Corporation Source code wrapper generation
US8332815B2 (en) * 2009-03-17 2012-12-11 International Business Machines Corporation Enhanced development tool for utilizing a javascript object notation (JSON) bridge for non-java-based component communication within java-based composite applications
US8364946B2 (en) * 2010-03-22 2013-01-29 Ishebabi Harold Reconfigurable computing system and method of developing application for deployment on the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接

Also Published As

Publication number Publication date
CN103597447A (zh) 2014-02-19
WO2012082936A3 (en) 2013-12-12
JP2014507023A (ja) 2014-03-20
CA2819691A1 (en) 2012-06-21
WO2012082936A2 (en) 2012-06-21
WO2012082936A8 (en) 2013-06-27
KR101866945B1 (ko) 2018-07-19
US20120167063A1 (en) 2012-06-28
KR20140019776A (ko) 2014-02-17
EP2652608A4 (en) 2014-10-22
JP5948342B2 (ja) 2016-07-06
EP2652608A2 (en) 2013-10-23
US8959492B2 (en) 2015-02-17

Similar Documents

Publication Publication Date Title
CN103597447B (zh) 高级语言和本机语言之间的通信协议
US10505982B2 (en) Managing security agents in a distributed environment
US8863008B2 (en) Automatic removal of sensitive information from a computer screen
CN106063185B (zh) 用于安全地共享数据的方法和装置
CN106664323B (zh) 企业系统中的设备上的应用的统一供应
CN106030528B (zh) 数据代理服务
CN105917627B (zh) 云服务定制执行环境方法及系统
US9674171B2 (en) System, method and computer program product for providing notifications from a virtual device to a disconnected physical device
CN108595970A (zh) 处理组件的配置方法、装置、终端及存储介质
US10699023B1 (en) Encryption profiles for encrypting user-submitted data
US9697629B1 (en) System, method and computer product for user performance and device resolution settings
US20150249617A1 (en) Enrolling a mobile device with an enterprise mobile device management environment
US9619673B1 (en) System, method and computer program product for capturing touch events for a virtual mobile device platform
CN107710209A (zh) 用于在计算设备中使用按应用简档的系统和方法
JP2019511785A (ja) モバイルクラウドサービスのための予め形成された命令
US10169548B2 (en) Image obfuscation
JP6887429B2 (ja) 統合検索のためのサポートを伴う保護されたフィールド上の自動動作検出
CN108205619B (zh) 一种基于安卓系统的多用户管理方法及其装置
US11882154B2 (en) Template representation of security resources
US9560110B1 (en) Synchronizing shared content served to a third-party service
US11381710B2 (en) Contextual masking of objects in social photographs
US20200014652A1 (en) Message Data Transfer
US11588903B2 (en) User switching for multi-user devices
US20230039068A1 (en) Media transit management in cyberspace
JP7252696B2 (ja) ソフトウェア配布を可能にする

Legal Events

Date Code Title Description
C06 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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170329

Termination date: 20201214

CF01 Termination of patent right due to non-payment of annual fee