CN102971688B - 跨平台应用程序框架 - Google Patents

跨平台应用程序框架 Download PDF

Info

Publication number
CN102971688B
CN102971688B CN201180027455.7A CN201180027455A CN102971688B CN 102971688 B CN102971688 B CN 102971688B CN 201180027455 A CN201180027455 A CN 201180027455A CN 102971688 B CN102971688 B CN 102971688B
Authority
CN
China
Prior art keywords
platform
layer
application program
source code
module
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.)
Active
Application number
CN201180027455.7A
Other languages
English (en)
Other versions
CN102971688A (zh
Inventor
N·J·克莱文杰
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.)
Zebra Technologies Corp
Original Assignee
ZIH Corp
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 ZIH Corp filed Critical ZIH Corp
Publication of CN102971688A publication Critical patent/CN102971688A/zh
Application granted granted Critical
Publication of CN102971688B publication Critical patent/CN102971688B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06313Resource planning in a project environment
    • 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/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Abstract

通过编译应用程序特定源代码部分地产生一个指令集。当在由设备提供的平台上本机地执行时,该指令集提供应用程序。通过编译相同业务逻辑源代码部分地产生另一个指令集。当在由另一个设备提供的另一个平台上本机地执行时,该另一个指令集提供相同应用程序。该业务逻辑源代码基本上没有对任何平台特定的代码。此外,该业务逻辑源代码大体上定义该应用程序的所有应用程序特定功能性。

Description

跨平台应用程序框架
相关申请
本申请以美国公司ITRGroup,Inc.(在除了美国之外的所有国家指定的申请人)以及美国公民NathanJ.Clevenger(仅在美国为指定的申请人)名义作为PCT国际专利申请在2010年4月15日提交,且要求在2010年4月15日提交的美国专利申请序列号61/324,672的优先权。
背景技术
在现今社会,日益复杂的移动计算设备已变得无处不在。此等移动计算设备不再只是具有打电话或收发短信的功能,而是在如今能够执行全面的软件应用程序。用于移动计算设备的软件应用程序可提供各种各样的用途。例如,用于移动计算设备的一些软件应用程序是简单视频游戏。在另一个示例中,用于移动计算设备的一些软件应用程序支持企业的销售或库存过程。
不同类型的移动计算设备具有不同操作系统以及能力。例如,一些移动电话使用操作系统,且其他移动电话使用操作系统。在另一个示例中,一些移动计算设备支持丰富、色彩饱满的图形用户界面,而其他移动计算设备仅提供简单的基于文本的界面。
因为不同类型的移动计算设备具有不同操作系统以及能力,所以如果开发者想要开发用于不同类型的移动计算设备的软件应用程序,那么就需要开发用于不同类型的移动计算设备中的每一个的软件应用程序的单独版本。例如,开发者需要开发用于移动电话的软件应用程序版本以及用于移动电话的另一种软件应用程序版本。开发用于不同类型的移动计算设备的软件应用程序的不同版本可能会是昂贵且耗时的过程。
发明内容
部分地通过编译业务逻辑源代码来产生一个计算机可读指令集。当在由设备提供的平台上本机地执行时,该计算机可读指令集提供应用程序。部分地通过编译相同业务逻辑源代码来产生另一个计算机可读指令集。当在由另一个设备提供的另一个平台上本机地执行时,该另一个计算机可读指令集提供相同应用程序。该业务逻辑源代码不含有对任何平台特定的代码。此外,该业务逻辑源代码定义该应用程序的所有应用程序特定功能性。
附图说明
图1是图示用于开发且分配应用程序的示例系统的框图;
图2是图示用于分配应用程序的系统的示例性替代实施例的框图;
图3是图示用于分配应用程序的系统的另一个示例性替代实施例的框图;
图4是图示用于产生应用程序的计算机可读指令的示例系统的框图;
图5是图示示例应用程序开发过程的流程图;
图6是图示示例软件系统的框图;
图7是图示用于使用基于客户端的部署技术来开发且分配应用程序的示例系统的框图;
图8是图示用于执行使用基于客户端的部署技术的应用程序的示例系统的框图;
图9是图示用于使用基于服务器的部署技术来开发且分配应用程序的示例系统的框图;
图10是图示用于执行使用基于服务器的部署技术的应用程序的示例系统的框图;
图11是图示用于开发且分配使用客户端壳部署技术的应用程序的示例系统的框图;
图12是图示用于执行使用客户端壳部署技术的应用程序的示例系统的框图;
图13是图示用于开发且分配混合应用程序的示例系统的框图;
图14是图示用于执行混合应用程序的示例系统的框图;
图15是图示容器模块的示例操作的流程图;
图16是图示应用程序模块的示例导航操作的流程图;
图17是图示示例计算设备的框图。
具体实施方式
图1是图示用于开发且分配应用程序的示例系统100的框图。在图1的示例中,开发者102开发应用程序。应用程序是用于向用户提供特定功能性的程序。开发者102可开发提供各种功能性的应用程序。例如,开发者102可开发用以显示最畅销书的列表的应用程序。在另一个示例中,开发者102可开发帮助用户订购机器零件的应用程序。
系统100包括一组计算设备104A至104N(统称为“计算设备104”)。在附图中,元件之间的椭圆表示为清楚起见从这些图省略一个或一个以上类似元件。包括字母A至N的参考符号并非想要指示元件的最小或最大数目。
计算设备是处理数据的设备。计算设备的示例类型包括移动设备,诸如电话、智能手机、功能手机、平板计算机、上网本、笔记本型计算机、携带型游戏机、个人媒体播放器,以及车载计算机。移动设备一般是设计成用手携带的计算设备。不同移动设备提供不同类型的平台。计算设备的示例类型又包括台式计算机、家用或商用电器、电视机顶盒、数字视频记录器设备、电视、游戏控制台、竞赛机、销售点计算机、电子库存管理设备、工业计算设备、服务器计算机,以及处理数据的其他类型的设备。在图1的示例中,该组计算设备104包括智能手机、功能手机、台式计算机,以及膝上型计算机。其他实施例可包括其他类型的计算设备。
不同的计算设备104提供不同平台。平台是应用程序可在上面运行的框架。平台的示例类型包括来自MicrosoftCorp.的WINDOWSPHONE操作系统、来自AppleInc.的操作系统、来自GoogleInc.的操作系统、来自MicrosoftCorp.的WINDOWS操作系统、Telnet框架,以及应用程序可在上面运行的其他类型的框架。
开发者102使用开发者计算系统106开发应用程序,使得应用程序的各个版本能够在由计算设备104提供的平台上运行。术语“计算系统”囊括包含一个或一个以上计算设备的系统。开发者计算系统106提供开发环境108来帮助开发者102开发应用程序。为了帮助开发者102开发应用程序,开发环境108提供帮助开发者102准备用于应用程序的源代码的工具。例如,开发环境108可提供帮助开发者102准备用于应用程序的源代码的文本编辑工具以及测试工具。
另外,开发环境108产生多个程序包112A至112N(统称为“程序包112”)。程序包112可对应于同一个应用程序,每个程序包被编译成在不同平台上执行或与不同平台相关联。程序包112含有不同计算机可读指令集。不同程序包112之一中的指令可在与程序包112相关联的平台上本机地执行。例如,程序包112A可含有第一平台可本机地执行的指令,且程序包112N可含有第二平台可本机地执行的指令。程序包112中的指令的执行使应用程序被提供给用户。在一些实施例中,程序包112的集合又可包括用于在同一个平台或其他平台上执行或与同一个平台或其他平台相关联的不同应用程序。
开发环境108通过编译源代码集来产生程序包112。每个源代码集包括业务逻辑源代码110以及不同的平台特定源代码集111。换句话说,开发者102使用业务逻辑源代码110以及平台特定源代码集111来产生程序包112。通过编译业务逻辑源代码110和不同平台特定源代码集111之一,开发环境108产生用于不同平台的不同计算机可执行指令集。
业务逻辑源代码110实质上定义应用程序的对应用程序特定的所有功能性。例如,业务逻辑源代码110可定义产生或检索将要由应用程序显示的数据的功能性。在一些实施例中,业务逻辑源代码110定义对应用程序特定的所有功能性。在其他实施例中,业务逻辑源代码110外部的少量代码定义或影响对应用程序特定的功能性。例如,在此等实施例中,业务逻辑源代码110外部的小于一百行代码定义对应用程序特定的功能性。
业务逻辑源代码110基本上没有对任何平台特定的代码。在一些实施例中,业务逻辑源代码110可不包括对任何平台特定的代码或功能代码。例如,在一些实施例中,业务逻辑源代码110不包括对平台、WINDOWSPHONE平台或任何其他平台的API特定的代码。在另一个示例中,业务逻辑源代码110不包括取决于哪个平台正运行应用程序而按条件执行的代码。在又一个示例中,业务逻辑源代码110不包括取决于应用程序正在哪个平台上运行而使应用程序呈现不同内容或具有不同导航结构的代码。在其他实施例中,业务逻辑源代码110可包括对平台特定的少量代码。例如,在一些实施例中,业务逻辑源代码110包括对具体平台特定的小于二十行代码。
平台特定源代码集111含有帮助应用程序在特定平台上操作的代码。平台特定代码集111与不同平台相关联。平台特定代码集111基本上没有定义对应用程序特定的功能性的代码。在一些实施例中,平台特定代码集111不包括定义对具体应用程序特定的功能性的任何代码。例如,在一些实施例中,平台特定代码集111可不包括定义特定应用程序的用户界面中的内容的代码、定义用户如何通过应用程序导航的代码,或仅针对特定地识别的应用程序执行的代码块。在一些实施例中,平台特定代码集111包括定义或影响对具体应用程序特定的功能性的少量代码。例如,在一些实施例中,平台特定代码集111中的每一个包括定义对具体应用程序特定的功能性的小于二十行代码。
因为平台特定代码集111基本上没有定义对应用程序特定的功能性的代码,所以开发者102和/或其他开发者可在许多应用程序中再使用平台特定代码集111,而无需进行对平台特定代码集111的任何,或至少基本的,修改。例如,开发者102可开发用于额外应用程序的业务逻辑源代码。在这个示例中,开发者102可接着使用用于额外应用程序的业务逻辑源代码连同先前使用的平台特定源代码集,来产生适用于在不同平台上执行的计算机可执行指令集。
在一些实施例中,开发者102可能需要修改少于二十行代码来适应供应用程序使用的平台特定代码111。此外,在一些实施例中,开发者102可能仅需要注释代码、移除代码注释,或修改参数值以便适应供应用程序使用的平台特定代码111。
在各种实施例中,开发者102可以以各种方式获得平台特定代码集111。例如,开发者102可从一个或一个以上外部方获得平台特定代码集111。在这个示例中,一个或一个以上外部方可包括与开发者102分开的供应商、零售商、顾问、其他开发者,或其他实体,或开发者102所属于的组织。此外,在这个示例中,开发者102可以事项或服务价值交换方式(诸如货币支付)从一个或一个以上外部方获得平台特定代码集111。此外,在这个示例中,开发者计算系统106可从由一个或一个以上外部方提供的数据存储系统下载或以其他方式复制平台特定代码集111。在另一个示例中,开发者102可编写平台特定代码集111。在一些实施例中,平台特定代码集111可在软件即服务(software-as-a-service,SaaS)基础上可得。
在一些实施例中,程序包112包括从平台特定代码集111编译的计算机可执行指令。例如,如果程序包112A与给定平台相关联,那么程序包112A可包括从与给定平台相关联的平台特定代码集111中的一个编译的计算机可执行指令。
在开发环境108产生程序包112之后,程序包112存储在数据存储系统114中。各种实施例以各种方式来实施数据存储系统114。例如,一些实施例将数据存储系统114实施为文件系统。在另一个示例中,数据存储系统114可被实施为关系数据库。
计算设备104从数据存储系统114获得程序包112。在各种实施例中,计算设备104以各种方式从数据存储系统114获得程序包112。例如,计算设备104可通过将请求发送给服务器(未图示)来获得一个适当的程序包112,服务器从数据存储系统114检索程序包112且将程序包112发送给计算设备104。在另一个示例中,计算设备可执行将程序包112从数据存储系统114推出到一个或多个计算设备104的分配过程。
使用开发者计算系统106或如在本文中以其他方式揭示而开发的应用程序可使用若干个不同系统来分配。例如,图2图示在用于分配应用程序的许多可能系统中用于分配应用程序的系统的示例性替代实施例的框图。在图2的示例中,如上文结合图1的示例所描述,应用程序分配系统200包括数据存储系统114以及计算设备104。为了获得程序包112,计算设备104经由网络202与应用程序商店204通信。网络202可包含各种类型的网络。例如,网络202可包含因特网、局域网、校园网或另一种类型的网络。
应用程序商店204是用于软件应用程序的电子商城。例如,应用程序商店204可以是AppleInc.的APPGoogle,Inc.的AndroidMarket、MicrosoftCorp.的WindowsPhoneMarketplace、ResearchInMotionLtd.的APPAmazon.com、或另一个用于软件应用程序的电子商城。在一些实施例中,应用程序商店204的所有者或操作员可拥有或操作数据存储系统114。在其他实施例中,应用程序商店204以及数据存储系统114由不同实体拥有和/或操作。
计算设备104的用户可使用计算设备104通过应用程序商店204购买应用程序。当计算设备104中的一个的用户购买应用程序时,应用程序商店204检索程序包112中的一个且将该程序包传输给该计算设备。在一些例子中,计算设备104的用户可从不同应用程序商店购买与不同平台相关联的程序包112中的一个。
图3是图示用于分配应用程序的系统的另一个示例性替代实施例的框图。在图3的示例中,应用程序分配系统300包括数据存储系统114。数据存储系统114存储程序包112。为了获得程序包112,计算设备104经由网络202与分配系统302通信。
分配系统302执行将程序包112自动地分配给计算设备104的过程。换句话说,分配系统302将程序包112推出到计算设备104。例如,计算设备104可与组织相关联,程序包112A可与第一平台相关联,且程序包112N可与第二、不同平台相关联。在这个示例中,分配系统302可与计算设备104通信,以判定计算设备104中的哪一个提供第一平台且计算设备104中的哪一个提供第二平台。在这个示例中,分配系统302将程序包112A推出到提供第一平台的计算设备104,且将程序包112N推出到提供第二平台的计算设备104。为了确保正确软件安装在企业的计算设备上,在组织设置中执行此自动分配过程可能会有用。
图4是图示用于产生应用程序的计算机可读指令的示例系统400的框图。如图4的示例中所图示,编译器应用程序402产生程序包112。在不同实施例中,程序包112可以是或可不是存档格式。在一些实施例中,编译器应用程序402是开发环境108的部分。在其他实施例中,编译器应用程序402与开发环境108分开。
通过编译业务逻辑源代码110以及平台特定源代码集111中的一或多个,编译器应用程序402产生程序包112。如上文所提及,业务逻辑源代码110定义对应用程序特定的应用程序的功能性。业务逻辑源代码110不包括对任何给定平台特定的代码。平台特定源代码集111含有帮助应用程序在特定平台上操作的代码。平台特定源代码集111是对具体平台特定的。
如图4的示例中所图示,业务逻辑源代码110包含应用程序源代码404以及层源代码406。应用程序源代码404以及层源代码406定义应用程序特定功能性,且基本上没有对任何给定平台特定的代码。应用程序源代码404定义应用程序初始化操作以及导航操作。层源代码406定义一个或一个以上层类。
平台特定源代码集111包括容器源代码集408A至408N(统称为“容器源代码集408”)以及绑定源代码集410A至410N(统称为“绑定源代码集410”)。容器源代码集408定义初始化应用程序的平台特定初始化操作。绑定源代码集410定义层输出操作,层输出操作产生可由不同平台使用的输出数据,以利用不同平台特有的用户界面功能来呈现层。容器源代码集408中的每一个含有对不同平台特定的代码。绑定源代码集410中的每一个含有对不同平台特定的代码。绑定源代码集410基本上没有定义对任何具体应用程序特定的功能性的代码。
在各种实施例中,层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410以各种高级编程语言编写。例如,在一些实施例中,层源代码406、应用程序源代码404、容器源代码集408和/或绑定源代码集410以C#编程语言、ObjectiveC编程语言、C编程语言、C++编程语言、Java编程语言或另一种类型的高级编程语言编写。因为层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410以高级编程语言编写,所以源代码中的语法错误可在编译时间被检测到而不是在执行时间被检测到。因为语法错误在编译时间被检测到而不是在执行时间被检测到,所以运行程序包112的计算设备可为更可靠的,这是因为此等计算设备不太可能由于此等语法错误而崩溃或挂起。此外,因为程序包112包含已编译的高级编程语言代码,所以与程序包含有解释性编程语言代码相比,应用程序可更有效地执行。因此,通过执行已编译的代码而不是解释性代码,运行程序包112的计算设备可更快速地且更可靠地操作。
在一些例子中,多个不同平台可与同一容器源代码集408和/或同一绑定源代码集410相关联。例如,以及两者可与同一容器源代码集408和/或同一绑定源代码集410相关联。在一些例子中,单个平台可与多个容器源代码集408或多个绑定源代码集410相关联。容器源代码集408和/或绑定源代码集410中的每一个可存储在不同文件中。
图5是图示示例应用程序开发过程500的流程图。开发者102执行应用程序开发过程500来开发可在多个平台上操作的应用程序。换句话说,开发者102使用应用程序开发过程500来开发跨平台应用程序。
为了创建应用程序,开发者102识别将要包括在应用程序中的层(502)。层包含由应用程序作为单元呈现给应用程序的用户的内容集合。层可含有各种各样的内容。例如,应用程序的层可含有书的大纲、电视节目表一览、体育比分、视频剪辑、应用程序的主菜单,以及由应用程序作为单元呈现给应用程序的用户的其他内容集合。
因为层中的内容作为单元呈现,所以没有必要执行导航操作来查看层中的额外内容。导航操作是改变当前由应用程序呈现给用户的层的操作。例如,在一些平台中,用户可能需要上下滑动鼠标滚轮来查看层中的额外内容,但将不需要导航离开层来查看额外内容。
不同平台可以以不同方式呈现同一层。例如,Telnet平台可在层中将书名列表呈现为表示书名的一系列纯文本字符串。在这个示例中,互动语音响应(IVR)平台可通过输出书名的讲话声音来呈现同一书名列表。此外,在这个示例中,平台可将同一书名列表呈现为表示书名的具丰富格式的文本字符串列表。
应用程序中的每一层与不同层统一资源标识符(URI)相关联。例如,应用程序中的第一层含有含书的大纲的文本区域,且应用程序中的第二层含有含另一本书的大纲的文本区域。在这个示例中,第一层可与层URI“http://www.example.com/application1/layer1?bookID=32”相关联,且第二层可与层URI“http://www.example.com/application1/layer1?bookID=525”相关联。
层包含一个或一个以上内容元素。内容元素包含将要由应用程序呈现给用户的结构化内容集合。各种内容元素以不同方式结构化内容集合。内容元素的示例类型包括列表、列表数据项、菜单、菜单项、图像、文本块、文本输入区域、地理地图、面板等等。不同平台可以以不同方式呈现相同内容元素。例如,平台可将菜单呈现为与菜单中的每个菜单项相关联的可选择图形元素列表。在这个示例中,Telnet系统可将同一菜单呈现为与菜单中的每个菜单项相关联的文本字符串列表。列表中的每个文本字符串与一个号码相关联。在这个示例中,Telnet系统又显示询问用户输入所需菜单项的号码的提示。
层的内容元素可包括导航元素。导航元素是在由用户选择时使应用程序导航到应用程序的另一个层的内容元素。每个导航元素指定在用户选择导航元素时应用程序导航到的层的层URI。如同其他类型的内容元素,不同平台可以以不同方式呈现导航元素。例如,在一些实施例中,web浏览器平台将导航元素呈现为超链接。在这个示例中,平台可将同一导航元素呈现为图形控制。
在一些可能实施例中,应用程序的层包括主页层。应用程序的主页层是应用程序的如下层,即在使用应用程序的情况下应用程序的用户默认地使用来开始工作的层。在各种应用程序中,主页层含有各种类型的内容。例如,在一些应用程序中,主页层表现得像应用程序的主菜单,且包含使用户能够导航到应用程序的各种其他层的导航元素。在其他应用程序中,主页层是用于应用程序的初始屏幕。
在开发者102识别将要包括在应用程序中的层之后,开发者102开发层源代码406(504)。选择性地,开发者102从已存在的层源代码库中选择层源代码406。就是说,层源代码406可在多个应用程序中再使用。
层源代码406定义一个或一个以上层类。一般地,层类中的每一个是特征化类的成员(对象)的属性和/或服务集合的描述性工具。层类中的每一个对应于已识别层中的不同者。层模块是软件对象,其是层类的例子。层模块表示层。
由层源代码406定义的层类中的每一个含有加载操作。加载操作将数据加载到层模块中。加载操作可执行各种各样的活动来将内容加载到适当层模块中。例如,加载操作可使用菜单项填充菜单。在另一个示例中,加载操作可从网络或数据库检索数据且将数据填充到文本块中。
不需要针对在不同平台上操作的应用程序的版本来开发或选择不同层源代码406。换句话说,层源代码406不是对任何平台特定的。因此,不管应用程序在哪个平台上操作,由层源代码406定义的加载操作将相同内容加载到层模块中。
为了开发应用程序,开发者102还要开发应用程序源代码404(506)。应用程序源代码404定义应用程序初始化操作以及导航操作。在执行时,应用程序初始化操作初始化导航图。导航图将层URI映射到层模块。在一些实施例中,应用程序源代码404自动地产生层URI。在其他实施例中,应用程序源代码404使用预定义的层URI。在应用程序接收导航请求时,导航操作使用导航图来从多个层模块中识别适当层模块。适当层模块与由导航请求指定的层URI相关联。接着调用适当层模块的加载操作来将内容加载到适当层模块中。导航请求是将应用程序从应用程序的一个层导航到应用程序的另一个层的请求。
不需要开发者102针对在不同平台上操作的应用程序的版本来开发不同应用程序源代码404。而是将相同应用程序源代码404用于在不同平台上操作的应用程序的版本中。换句话说,应用程序源代码404不是对任何平台特定的。因此,不管应用程序在哪个平台上操作,由应用程序源代码404指定的导航操作使用层源代码的相同加载操作。
应用程序的业务逻辑源代码110包含应用程序的应用程序源代码404以及层源代码406。业务逻辑源代码110不含有对任何平台特定的代码。此外,业务逻辑源代码110定义应用程序的对应用程序特定的所有功能性。换句话说,如由应用程序的用户感知的应用程序的功能性以不对任何平台特定的方式定义于业务逻辑源代码中。
此外,为了开发应用程序,开发者102选择应用程序在上面操作的一个或一个以上平台(508)。例如,开发者102可选择与以及相关联的平台。在另一个示例中,开发者102可选择与Telnet客户端相关联的平台。不同平台提供向用户呈现信息且从用户接收输入的不同应用程序编程接口(APIs)。
在选择应用程序在上面操作的平台之后,开发者102选择与选定平台相关联的绑定源代码集410(510)。在一些实施例中,开发者102获得预定义绑定源代码集的库。在此等实施例中,开发者102可从各种来源获得库。在各种实施例中,例如,开发者102可下载单项绑定、下载绑定集合、开发他或她自身的绑定以及相关联库,或从作为SaaS提供的库访问绑定。在使用中,开发者102可从存储在库中的绑定源代码集中选择与选定平台相关联的绑定源代码集410。例如,开发者102可以项或服务价值的交换形式从外部方获取库的副本和/或使用库的权利。库中的绑定源代码集可在应用程序的开发之前由开发者102或外部方添加到库。库中的绑定源代码集可在多个应用程序中以大体上相同形式再使用。例如,在一些实施例中,库中的绑定源代码集可在多个应用程序中以完全相同形式再使用。在其他实施例中,库中的绑定源代码集可在对绑定源代码集的微小改变(例如,小于二十行代码)之后在其他应用程序中再使用。
绑定源代码集410定义层输出操作,层输出操作产生可由不同平台使用的输出数据,以利用不同平台特有的用户界面功能呈现层。例如,绑定源代码集410A可定义层输出操作,层输出操作处理层模块利用设备特有的用户界面功能来呈现层。在这个示例中,绑定源代码集410B可定义层输出操作,层输出操作处理相同层模块利用基于的移动电话特有的用户界面功能来呈现层。
接着,开发者102开发容器源代码集408(512)。容器源代码集408中的每一个对应于选定平台中的不同者。如本文档中其他地方详细地描述,容器源代码集408中的每一个定义初始化应用程序的初始化操作。
在一些实施例中,开发者102从预先存在的容器源代码集的库获得容器源代码集408。这个库可以如本文中所论述的那样与开发者从库访问绑定的相同方式由开发者102、外部方或另一个实体开发、维护和/或扩展。在一些例子中,开发者102可以项或服务价值的交换形式从外部方接收库的副本和/或使用库的权利。在此等实施例中,开发者102通过修改库中预先存在的容器源代码集来开发容器源代码集408,使得容器源代码集408识别由应用程序的应用程序源代码404定义的应用程序类。因此,容器源代码集408对于应用程序以及选定平台中的单个平台是特定的。然而,容器源代码集408不定义使应用程序与其他应用程序区分开来的任何功能性。在本文中结合图15描述示例初始化操作。
接着,开发者102选择用于应用程序的部署技术(514)。用于应用程序的部署技术管理应用程序中的各种模块在何处操作。结合图7至图14描述应用程序使用各种部署技术的开发、分配以及执行。
在选择部署技术之后,一个或一个以上计算系统产生对应于选定平台的程序包112(516)。程序包112中的每一个包含从用于应用程序的应用程序源代码404、用于应用程序的层源代码406、用于特定平台的容器源代码508以及用于特定平台的绑定源代码集510编译的计算机可读指令集。当由提供选定平台的一个适当设备本机地执行时,程序包112中的每一个中的指令提供相同应用程序。
当在指令与平台之间没有中间软件需要执行指令时,指令在平台上本机地执行。例如,特殊插件或虚拟机无需在适当的选定平台上执行程序包中的指令。
在开发程序包112之后,开发者102分配程序包112以供在计算设备104上安装以及使用(518)。在各种实施例中,以各种方式分配程序包112。例如,在一些实施例中,使用诸如AppleInc.的APP的在线应用程序商店来分配程序包112。在其他实施例中,将程序包112直接分配给计算设备104。
图6是图示应用程序600中的示例模块的框图。如图6的示例中所图示,应用程序600包含容器模块602、应用程序模块604、层模块606A至606N(统称为“层模块606”)以及绑定模块608。应用程序的应用程序源代码404定义应用程序模块604的功能性。层源代码406中的不同层类定义层模块606中的不同者的功能性。容器源代码集408中的一个定义容器模块602的功能性。绑定源代码集410中的一个定义绑定模块608的功能性。
在应用程序600启动时,容器模块602开始执行。在容器模块602开始执行时,容器模块602执行初始化操作。初始化操作初始化应用程序。结合图15描述示例初始化操作。作为初始化操作的部分,容器模块602将初始导航请求提供给应用程序模块604。初始导航请求指定指示应用程序的主页层的层URI。
作为对接收导航请求的响应,应用程序模块604执行导航操作。在本文中结合图16描述示例导航操作。作为导航操作的部分,应用程序模块604使用导航图来识别适当层模块。适当层模块是与由导航请求指定的层URI相关联的层模块606中的一个。应用程序模块604接着将加载请求提供给适当层模块。加载请求是执行适当层模块的加载操作的请求。
在适当层模块接收加载请求时,适当层模块执行加载操作。加载操作将内容加载到适当层模块中。各种实施例以各种方式来实施加载操作。例如,在一些实施例中,每个层模块包含一个或一个以上内容元素。加载操作通过将数据加载到层模块的内容元素中的一个或多个中来将数据加载到层模块中。例如,层模块可含有表示列表的内容元素。在该示例中,加载操作可通过从网站检索最畅销书的书名且将书名加载到列表中来将数据加载到层模块中。层模块606中的每一个可包括不同内容元素且可不同地实施加载操作。因此,不同内容加载到层模块606的不同者中。
在适当层模块执行加载操作之后,适当层模块将加载完成事件提供给应用程序模块604。加载完成事件含有对适当层模块的参考。
在从适当层模块接收加载完成事件之后,应用程序模块604产生加载完成事件。由应用程序模块604产生的加载完成事件指示适当层模块已完成加载内容。在一些部署技术中,加载完成事件含有层参考。层参考包含指向适当层模块的指针。在其他部署技术中,加载完成事件含有适当层模块的序列化版本。
容器模块602侦听由应用程序模块604产生的加载完成事件。当容器模块602检测到由应用程序模块604产生的加载完成事件时,容器模块602将适当层模块的层参考或序列化版本提供给绑定模块608。
当绑定模块608接收适当层模块的层参考或序列化版本时,绑定模块608在适当层模块上执行层输出操作。层输出操作产生可由平台使用的输出数据,以将适当层模块呈现为平台特有的一个或一个以上用户界面功能。如下文描述,不同绑定模块可通过在适当层模块上执行层输出操作来产生各种类型的输出数据。
各种实施例以各种方式来实施层输出操作。例如,在一些实施例中,绑定源代码集410中的每一个定义内容输出操作。内容输出操作对应于不同类型的内容元素。例如,绑定源代码集410可包括用于列表的内容输出操作、用于列表数据项的内容输出操作、用于菜单的内容输出操作、用于菜单项的内容输出操作、用于图像的内容输出操作等等。
用于不同平台的绑定源代码集410中的内容输出操作产生可由不同平台使用来呈现内容元素的输出数据。例如,绑定源代码集410A可定义产生输出数据的内容输出操作,平台可使用该输出数据来呈现列表。在这个示例中,绑定源代码集410B可定义产生输出数据的内容输出操作,平台可使用该输出数据来呈现列表。
当在适当层模块上执行层输出操作时,绑定模块608利用用于适当层模块中的内容元素中的每一个的输出操作。例如,如果适当层模块的内容元素包括列表以及图像,那么当在适当层模块上执行层输出操作时,绑定模块608执行用于列表的输出操作以及用于图像的输出操作。以这个方式,层输出操作产生可用来将适当层模块的每个内容元素呈现为具体平台特有的一个或一个以上用户界面功能的输出数据。
当用户选择应用程序中的层中的导航元素时,应用程序模块604接收导航请求。导航请求指定应用程序的另一个层的层URI。当应用程序模块604接收导航请求时,上文描述的过程针对该另一个层再发生。
图7是图示用于使用基于客户端的部署技术来开发且分配应用程序的示例系统700的框图。当应用程序使用基于客户端的部署技术部署时,容器模块602、应用程序模块604、层模块606以及绑定模块608在客户端计算设备上操作。
如图7的示例中所图示,系统700包含开发者计算系统106。开发者计算系统106包括编译器应用程序402。在基于客户端的部署技术中,编译器应用程序402产生程序包112,使得程序包112中的每一个包括定义应用程序模块604、层模块606、容器模块以及绑定模块的已编译的指令。程序包112适用于安装在提供不同平台的计算设备上。
当使用基于客户端的部署技术部署应用程序时,将程序包112分配给计算设备104。为了便于解释,图7的示例仅图示触摸屏式智能手机以及功能手机。然而,在其他实施例中,计算设备104可以是各种各样不同类型的移动设备,诸如库存管理设备、移动电话、平板计算机、迷你笔记型计算机等等。此外,尽管仅示出移动设备,但应理解,在一些实施例中,在本文档中针对计算设备104描述的相同能力以及功能性可由诸如智能手机或平板计算机的移动设备或诸如台式计算机、服务器计算机等等的非移动设备执行。
在将程序包112分配给计算设备104之后,计算设备104安装程序包112。在安装之后,计算设备104执行程序包112中的指令。
图8是图示示例系统800的框图,示例系统800用于执行使用基于客户端的部署技术的应用程序。如图8的示例中所图示,系统800包含计算设备104A。尽管针对计算设备104A来描述图8的示例,但应理解,其它的计算设备104可利用类似系统来执行使用基于客户端的部署技术的应用程序。
计算设备104A包含输入系统802以及输出系统804。输入系统802使计算设备104A能够接收来自计算设备104A的用户806的输入。在各种实施例中,输入系统802可以是使计算设备104A能够接收来自用户806的输入的各种不同类型的系统。例如,输入系统802可以是触摸屏、键盘、小键盘、指针设备(例如,鼠标、触摸板、轨迹球等)、按钮阵列、麦克风,或使计算设备104A能够接收来自用户806的输入的另一种类型的系统。输出系统804使计算设备104A能够将输出提供给用户806。在各种实施例中,输出系统804可以是将输出提供给用户的各种不同类型的系统。例如,输出系统804可以是图形屏幕(例如,监视器、LCD屏幕、LED屏幕等)、扬声器系统,或能够将输出提供给用户的另一种类型的系统。此外,在一些实施例中,输入系统802以及输出系统804实体上是同一系统。例如,输入系统802以及输出系统804可以是单个触摸屏。
另外,计算设备104A提供操作系统808。操作系统808是管理计算设备104A的硬件资源且支持软件应用程序的操作的软件系统。在各种实施例中,操作系统808可以是各种不同类型的操作系统。例如,操作系统808可以是WINDOWSPHONE操作系统、WINDOWS操作系统、操作系统、OS操作系统、来自惠普公司(HewlettPackardCompany)的操作系统、Linux操作系统、操作系统、来自Google,Inc.的操作系统,或另一种类型的操作系统。
如图8的示例中所图示,计算设备104A包含程序包112A。程序包112A中的指令由计算设备104A的处理单元的执行使计算设备104A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。
为了使用应用程序,用户806使用输入系统802来将启动命令提供给操作系统808。作为响应,操作系统808将启动请求提供给容器模块602。在容器模块602接收启动请求之后,容器模块602、应用程序模块604、层模块606以及绑定模块608以上文结合图6的示例描述的方式运转。
在基于客户端的部署中,当绑定模块608处理层模块时,绑定模块608输出用户界面命令。用户界面命令使输出系统804呈现由层模块表示的层。例如,用户界面命令可使输出系统804显示层,或可使输出系统804输出表示层的音频信号。
图9是图示用于开发且分配使用基于服务器的部署技术的应用程序的示例系统900的框图。当应用程序使用基于服务器的部署技术部署时,容器模块602、应用程序模块604、层模块606以及绑定模块608在服务器系统902上操作。在将额外应用程序安装在计算设备104上是不可取的或不可能的情形中,基于服务器的部署技术可以是有用的。
如图9的示例中所图示,系统900包含开发者计算系统106。系统900又包含计算设备104。为了便于解释,在图9的示例中仅图示触摸屏式智能手机以及功能手机。然而,在其他实施例中,计算设备104可由各种各样不同类型的计算设备取代,诸如台式计算机、移动电话、平板计算机等等。
系统900还包含服务器系统902A至902N(统称为“服务器系统902”)。服务器系统902是计算机系统。服务器系统902可提供不同平台。例如,服务器系统902A可提供基于活动服务器页面(ActiveServerPage,ASP)的web服务器平台,服务器系统902B(未图示)可提供Telnet服务器平台,且服务器系统902N可提供基于PHP的web服务器平台。
为了使用基于服务器的部署技术产生应用程序,编译器应用程序402产生程序包112。程序包中的每一个与不同平台相关联。编译器应用程序402通过编译应用程序的层源代码406、应用程序的应用程序源代码404、用于平台的容器源代码集408以及用于平台的绑定源代码集410来产生程序包112。程序包112中的每一个包括定义层模块606、应用程序模块604、容器模块以及绑定模块的已编译的指令。程序包112中的每一个适用于安装在提供与程序包相关联的平台的服务器系统902上。
当使用基于服务器的部署技术部署应用程序时,将程序包112分配给服务器系统902且安装在服务器系统902上。在安装之后,服务器系统902执行程序包112中的指令以提供容器模块602、应用程序模块604、层模块606以及绑定模块608。
计算设备104不包括对应用程序特定的硬件或软件。例如,计算设备104A可以是标准电话,且应用程序的IVR版本安装在服务器系统902A。在这个示例中,用户可通过使用计算设备104A来呼叫服务器系统902A而与应用程序互动。在另一个示例中,用户可使用计算设备104N上的通用客户端应用程序来与应用程序互动。通用客户端应用程序包括没有与特定基于服务器的应用程序关联的应用程序。例如,用户可使用计算设备104N上的web浏览器应用程序来与应用程序的web版本互动。在另一示例中,用户可使用计算设备104N上的Telnet客户端来与应用程序的Telnet版本互动。
图10是图示示例系统1000的框图,示例系统1000用于执行使用基于服务器的部署技术的应用程序。如图10的示例中所图示,系统1000包含计算设备104A以及服务器系统902A。尽管针对计算设备104A以及服务器系统902A来描述图5的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用基于服务器的部署技术的应用程序。
如同图8的示例中图示的计算设备104A,图10的示例中图示的计算设备104A包含输入系统802、输出系统804以及操作系统808。
然而,取代包括程序包112A,图10的示例中图示的计算设备104A包含浏览器应用程序1002。在不同实施例中,浏览器应用程序1002可以是不同类型的web浏览器应用程序。例如,浏览器应用程序1002可以是来自Apple,Inc.的web浏览器应用程序、来自MicrosoftCorp.的INTERNETweb浏览器应用程序、来自MozillaFoundation的web浏览器应用程序、来自Google,Inc.的web浏览器应用程序,或另一个web浏览器应用程序。
尽管在图10的示例中计算设备104A提供web浏览器应用程序,但应理解,在应用程序使用基于服务器的部署技术部署的一些例子中,计算设备104A提供其他类型的通用客户端应用程序来取代浏览器应用程序1002。例如,计算设备104A可提供telnet客户端来取代浏览器应用程序1002。此外,在应用程序使用基于服务器的部署技术部署的一些例子中,计算设备104A不提供通用客户端应用程序或操作系统。
服务器系统902A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。图10的示例中图示的容器模块602、应用程序模块604、层模块606以及绑定模块608以类似于图6的示例中图示的容器模块602、应用程序模块604、层模块606以及绑定模块608的方式操作。
服务器系统902A还提供服务器应用程序1004。为了使用该应用程序,用户806使用输入系统802与浏览器应用程序1002互动。浏览器应用程序1002将web请求发送给服务器应用程序1004。web请求指定应用程序中的层的层URI。当服务器应用程序1004接收web请求时,服务器应用程序1004将导航请求提供给应用程序模块604。如先前所描述,应用程序模块604处理导航请求。随后,绑定模块608产生资源数据。资源数据表示由层URI指示的层。当服务器应用程序1004接收资源数据时,作为对web请求的响应,服务器应用程序1004将web响应发送给浏览器应用程序1002。web响应含有资源数据。
当浏览器应用程序1002接收web响应时,浏览器应用程序1002使用输出系统804来向用户806呈现层。随后,用户806可选择层的导航元素。当用户806选择导航元素时,浏览器应用程序1002将另一个web请求发送给服务器应用程序1004。该另一个web请求指定应用程序中的另一个层的层URI。服务器应用程序1004以与先前web请求相同的方式处理这个web请求。
图11是图示用于开发且分配使用客户端壳部署技术的应用程序的示例系统1100的框图。系统1100包含开发者计算系统106。另外,系统1100包含服务器系统902以及计算设备104。
为了使用客户端壳部署技术产生应用程序,编译器应用程序402产生程序包112以及壳应用程序包1102A至1102N(统称为“壳应用程序包1102”)。程序包112中的每一个与不同平台相关联。壳应用程序包1102中的每一个与不同平台相关联。
编译器应用程序402通过编译层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410来产生程序包112。程序包112中的每一个包括定义一个或一个以上层模块606、应用程序模块604、容器模块以及绑定模块的已编译的指令。程序包112中的每一个适用于安装在提供与程序包相关联的平台的服务器系统902上。壳应用程序包1102中的每一个包含当在提供与壳应用程序包相关联的平台的计算设备上执行时提供壳应用程序的指令。
在编译器应用程序402创建程序包112之后,将程序包112分配给服务器系统902且将其安装在服务器系统902上。另外,壳应用程序包1102安装在计算设备104上。在壳应用程序包1102安装在计算设备104上之后,计算设备104执行使计算设备104提供壳应用程序的在壳应用程序包1102中的计算机可读指令。壳操作在计算设备104上本机地操作。
从计算设备104的用户的角度来看,壳应用程序表现成执行应用程序的所有操作。然而,事实上,壳应用程序实际上将导航请求发送给服务器系统902,从服务器系统902接收序列化界面数据,且使用序列化界面数据来将应用程序的层呈现给用户。各种实施例以各种方式来格式化序列化界面数据。例如,可将序列化界面数据格式化为HTML数据、XML数据、图像数据,或以其他方式格式化的其他数据。在使应用程序的工作离开计算设备104完成,然而看起来应用程序是由计算设备104提供是有利的情形中,客户端壳部署技术可以是有用的。
图12是图示用于执行使用客户端壳部署技术的应用程序的示例系统1200的框图。如图12的示例中所图示,系统1200包含计算设备104A以及服务器系统902A。尽管针对计算设备104A以及服务器系统902A来描述图12的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用客户端壳部署技术的应用程序。
图12的示例中图示的计算设备104A类似于图8的示例中图示的计算设备104A。如同图8的示例中图示的计算设备104A,图12的示例中图示的计算设备104A提供输入系统802、输出系统804以及操作系统808。然而,计算设备104A提供壳应用程序1202来取代浏览器应用程序1002。执行壳应用程序包1102之一的指令使计算设备104A提供壳应用程序1202。
此外,图12的示例中图示的服务器系统902A类似于图10的示例中图示的服务器系统902A。如同图10的示例中图示的服务器系统902A,图12的示例中图示的服务器系统902A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。
为了使用应用程序,用户806使用输入系统802来命令操作系统808启动壳应用程序1202。在壳应用程序1202启动时,壳应用程序1202将初始导航请求提供给应用程序模块604。初始导航请求指定应用程序的主页层的层URI。如本文档中其他地方所描述,应用程序模块604处理导航请求。
当绑定模块608处理层模块时,绑定模块608将序列化界面数据提供给壳应用程序1202。序列化界面数据表示由层URI指示的应用程序的层。当壳应用程序1202接收序列化界面数据时,壳应用程序1202使用输出系统804来将应用程序的层呈现给用户806。用户806可选择层的导航元素。当用户806选择层的导航元素时,壳应用程序将另一个导航请求提供给容器模块602。该另一个导航请求指定与导航元素相关联的层URI。
图13是图示示例系统1300的框图,示例系统1300用于开发且分配使用混合部署技术的应用程序。当应用程序使用混合部署技术部署时,容器模块602以及绑定模块608在计算设备104上操作,而应用程序模块604以及层模块606在服务器系统902上操作。在平台特定代码在服务器系统上是不可取的情形中,混合部署技术可以是有用的。系统1300包含开发者计算系统106。另外,系统1300包含服务器系统902以及计算设备104。
为了使用混合部署技术产生应用程序,编译器应用程序402产生用于应用程序的服务器程序包1302。为了产生服务器程序包1302,编译器应用程序402编译用于应用程序的层源代码406以及应用程序源代码404。因此,服务器程序包1302包括定义一个或一个以上层模块606以及应用程序模块604的指令。服务器程序包1302适用于安装在由服务器系统902A提供的平台上。在编译器应用程序402产生服务器程序包1302之后,将服务器程序包1302分配给服务器系统902A且将其安装在服务器系统902A上。应理解,在其他实施例中,将服务器程序包1302分配给其它的服务器系统902且将其安装在其它的服务器系统902上。
此外,为了使用混合部署技术产生应用程序,编译器应用程序402产生用于选定平台的客户端程序包1304A至1304N(统称为“客户端程序包1304”)。编译器应用程序402通过编译用于选定平台的容器源代码集408以及绑定源代码集410来产生客户端程序包1304。因此,客户端程序包1304包括定义容器模块602以及绑定模块608的指令。每一个客户端程序包1304中的指令适用于不同平台上的本机执行。在编译器应用程序402产生客户端程序包1304之后,将客户端程序包1304分配给计算设备104且将其安装在计算设备104上。
图14是图示示例系统1400的框图,示例系统1400用于执行使用混合部署技术的应用程序。如图14的示例中所图示,系统1400包含计算设备104A以及服务器系统902A。尽管针对计算设备104A以及服务器系统902A来描述图14的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用混合部署技术的应用程序。
图14的示例中图示的计算设备104A类似于图8的示例中图示的计算设备104A。如同图8的示例中图示的计算设备104A,图14的示例中图示的计算设备104A提供输入系统802、输出系统804以及操作系统808。然而,作为对程序包112A的替代,计算设备104A包含客户端程序包1304A。客户端程序包1304A提供应用程序的容器模块602以及绑定模块608,而不是应用程序的应用程序模块604或层模块606。
此外,图14的示例中图示的服务器系统902A类似于图9的示例中图示的服务器系统902A。然而,图14的示例中图示的服务器系统902A包含服务器程序包1302。服务器程序包1302提供应用程序的应用程序模块604以及层模块606,而不是应用程序的容器模块602或绑定模块608。
为了使用应用程序,用户806使用输入系统802来命令操作系统808启动该应用程序。当应用程序启动时,容器模块602向服务器系统902A处的应用程序模块604提供初始导航请求。初始导航请求指定应用程序的主页层的层URI。如本文档中其他地方所描述,应用程序模块604处理初始导航请求。
随后,容器模块602接收来自应用程序模块604的加载完成事件。加载完成事件包含层模块的序列化版本。容器模块602将层模块的序列化版本提供给计算设备104A处的绑定模块608。绑定模块608接着处理层模块的序列化版本。当绑定模块608处理层模块的序列化版本时,绑定模块608输出使操作系统808使用输出系统804向用户806显示层的用户界面命令。用户806可选择层的导航元素。当用户806选择层的导航元素时,操作系统808将另一个导航请求提供给容器模块602。该另一个导航请求指定与导航元素相关联的层URI。
图15是图示容器模块602的示例初始化操作1500的流程图。图15的示例描述容器模块602、应用程序模块604、层模块606以及绑定模块608以特定方式实施的实施例。应理解,在其他实施例中,容器模块602、应用程序模块604、层模块606以及绑定模块608以其他方式实施。
如图15的示例中所图示,当容器模块602的执行开始(1502)时,初始化操作1500开始。在各种实施例中,容器模块602的执行可在各个时间开始。例如,在一些实施例中,当操作系统808响应于来自用户806的输入而启动应用程序时,容器模块602的执行开始。在其他实施例中,当服务器应用程序1004在服务器系统902A处开始时,容器模块602的执行开始。在其他实施例中,当服务器系统902中的一个开始时,容器模块602的执行开始。在其他实施例中,当服务器系统902A首次接收针对容器模块602的web请求或导航请求时,容器模块602的执行开始。
在容器模块602的执行开始之后,容器模块602初始化绑定模块608(1504)。在一些实施例中,绑定模块608遵循工厂设计模式。在此等实施例中,容器模块602通过调用绑定模块608的静态初始化方法来初始化绑定模块608。
当容器模块602初始化绑定模块时,不同绑定模块可执行不同动作。例如,一些绑定模块的初始化方法的调用使计算设备104A显示初始屏幕。在这个示例中,其他绑定模块的初始化方法的调用不使计算设备104A执行任何动作。
接着,容器模块602产生事件侦听器(1506)。在图15的示例中,应用程序源代码404定义抽象应用程序类。抽象应用程序类定义应用程序初始化操作以及导航操作。事件侦听器侦听由抽象应用程序类产生的加载完成事件。如本文档中其他地方所提及,加载完成事件包含层参考。在开发者102选择基于客户端的部署技术、基于服务器的部署技术或壳应用程序部署技术的例子中,加载完成事件包括层参考,且事件侦听器将层参考提供给绑定模块608。在开发者102选择混合部署技术的例子中,加载完成事件含有层模块的序列化版本,且事件侦听器将层模块的序列化版本提供给绑定模块608。
容器模块602接着实例化应用程序模块604(1508)。应用程序模块604是应用程序源代码404中定义的应用程序类的例子。应用程序类扩展了抽象应用程序类。应用程序类重写由抽象应用程序类定义的应用程序初始化操作。每当实例化应用程序类时,就调用应用程序模块604的应用程序初始化操作。
在执行时,应用程序模块604的应用程序初始化操作实例化层模块606。层模块606中的每一个是在层源代码406中定义的不同层类的例子。层类中的每一个扩展了抽象层类。抽象层类定义加载操作。层类中的每一个以不同方式实施加载操作。因此,层模块的加载操作具有不同行为。
此外,在执行时,应用程序模块604的应用程序初始化操作产生将层URI映射到层模块的导航图。导航图是将层URI映射到层模块的软件对象。不同应用程序具有不同应用程序类。不同应用程序类实施不同应用程序初始化方法。因此,不同应用程序可初始化不同导航图。
应用程序初始化操作还初始化用于应用程序的样式。用于应用程序的样式可控制应用程序中文本的外观。在一些实施例中,样式又可针对内容元素的个别层或类型来初始化。
下文是在一些实施例中使用的示例代码应用程序类:
在实例化应用程序对象之后,容器模块602将应用程序对象参考提供给绑定模块608(1510)。应用程序对象参考是对应用程序对象的参考。在图15的示例中,绑定模块608具有应用程序属性。容器模块602将应用程序对象参考指派给绑定模块608的应用程序属性。
容器模块602接着产生初始导航请求(1512)。初始导航请求指定应用程序的主页层的层URI。在图15的示例中,容器模块602通过调用抽象应用程序类的导航方法来产生初始导航请求,从而提供主页层的层URI作为参数。
下文是由控制台绑定(Consolebinding)使用的示例容器源代码。控制台绑定可由Telnet平台使用:
下文是由压缩绑定(Compactbinding)使用的示例容器源代码。压缩绑定可由MICROSOFTWINDOWSCE平台使用。
下文是由单一接触绑定(MonoTouchbinding)使用的示例容器源代码。单一接触绑定可由APPLEIPHONE以及APPLEIPAD平台使用。
图16是图示应用程序模块604的示例导航操作1600的流程图。在一些实施例中,每次应用程序模块604接收导航请求时,应用程序模块604就执行导航操作1600。
如图16的示例中所图示,当应用程序模块604接收导航请求(1602)时,导航操作1600开始。导航请求指定层URI。层URI包含根部分以及参数部分。层URI的参数部分包含零个或零个以上参数。每一个参数是名称-值对。例如,“http://example.com/booksapp?bookId=234&lang=eng”可以是层URI。在这个示例中,“http://example.com/booksapp”是层URI的根部分。在这个示例中,层URI的参数部分包含两个参数:“bookId=234”以及“lang=eng”。
作为对接收导航请求的响应,应用程序模块604使用由导航请求指定的层URI来识别适当层模块(1604)。适当层模块是层模块606中的一个。在各种实施例中,应用程序模块604以各种方式识别适当层模块。例如,在一些实施例中,应用程序模块604使用导航图来识别适当层模块。在这个示例中,导航图包含条目集合。每个条目将满足正则表达式的任何层URI映射到一个具体的层模块606中。
在识别适当层模块之后,应用程序模块604将加载请求提供给适当层模块(1606)。在各种实施例中,应用程序模块604以各种方式将加载请求提供给适当层模块。例如,在一些实施例中,应用程序模块604通过呼叫适当层模块的加载操作来将加载请求提供给适当层模块。当应用程序模块604呼叫适当层模块的加载操作时,应用程序模块604将层URI中指定的参数提供给加载操作。
适当层模块可执行各种活动来将内容加载到适当层模块中。例如,适当层模块可从因特网获得数据,且将数据加载到层中的各种内容项中。在这个示例中,适当层模块可从网站请求最畅销书的列表,且将这些书中的每一个的书名放到层中的列表中的列表项中。在另一个示例中,适当层模块可与相机、麦克风、扬声器以及计算设备104的其他类型的功能互动以将内容加载到层中。在这个示例中,此互动仅能针对一些类型的移动设备。
在呼叫适当层模块上的加载操作之后,应用程序模块604产生加载完成事件(1608)。加载完成事件包含层参考。层参考指示存储由适当层模块的加载操作产生的层数据结构的位置。
图17是图示示例计算设备1700的框图。在一些实施例中,开发者计算系统106、计算设备104和/或服务器系统902使用像计算设备1700的一个或一个以上计算设备实施。应理解,在其他实施例中,开发者计算系统106、计算设备104和/或服务器系统902使用具有除了图17的示例中图示的硬件组件以外的硬件组件的计算设备实施。
在不同实施例中,计算设备以不同方式实施。例如,在图17的示例中,计算设备1700包含内存1702、处理系统1704、二级存储设备1706、网络接口卡1708、视频接口1710、显示设备1712、外部组件接口1714、外部存储设备1716、输入设备1718、打印机1720,以及通信媒体1722。在其他实施例中,计算设备使用更多或更少的硬件组件实施。例如,在另一个示例性实施例中,计算设备不包括视频接口、显示设备、外部存储设备或输入设备。
内存1702包括能够存储数据和/或指令的一个或一个以上计算机可读数据存储媒体。如本文档中所使用,数据存储媒体是存储可由计算设备读取的数据和/或软件指令的设备或制品。在不同实施例中,内存1702以不同方式实施。例如,在各种实施例中,内存1702使用各种类型的计算机可读数据存储媒体实施。计算机可读数据存储媒体的示例类型包括,但并不限于:动态随机存取内存(DRAM)、双倍数据速率同步动态随机存取内存(DDRSDRAM)、减少延迟DRAM、DDR2SDRAM、DDR3SDRAM、RambusRAM、固态内存、闪存、只读内存(ROM)、电可擦可编程ROM,以及存储数据的其他类型的设备和/或制品。
处理系统1704包括选择性地执行软件指令的一个或一个以上物理集成电路。在各种实施例中,处理系统1704以各种方式实施。例如,在一个示例性实施例中,将处理系统1704实施为一个或一个以上处理核心。例如,在这个示例性实施例中,处理系统1704可实施为一个或一个以上IntelCORETM系列微处理器。在另一个示例性实施例中,将处理系统1704实施为一个或一个以上分开的微处理器或微控制器。在又一个示例性实施例中,将处理系统1704实施为提供特定功能性的ASIC。在又一个示例性实施例中,处理系统1704通过使用ASIC且通过执行软件指令来提供特定功能性。
在不同实施例中,处理系统1704执行不同指令集中的软件指令。例如,在各种实施例中,处理系统1704执行诸如以下各个的指令集中的软件指令:x86指令集、POWER指令集、RISC指令集、SPARC指令集、IA-64指令集、MIPS指令集和/或其他指令集。
二级存储设备1706包括一个或一个以上计算机可读数据存储媒体。二级存储设备1706存储不由处理系统1704直接可访问的数据以及软件指令。换句话说,处理系统1704执行I/O操作来从二级存储设备1706检索数据和/或软件指令。在各种实施例中,二级存储设备1706由各种类型的计算机可读数据存储媒体实施。例如,二级存储设备1706可由一个或一个以上磁盘、磁带驱动器、CD-ROM光盘、DVD-ROM光盘、蓝光光盘、固态内存设备、伯努利盒(Bernoullicartridge),和/或其他类型的计算机可读数据存储媒体实施。
网络接口卡1708使计算设备1700能够将数据发送给计算机通信网络且从计算机通信网络接收数据。在不同实施例中,网络接口卡1708以不同方式实施。例如,在各种实施例中,将网络接口卡1708实施为以太网接口、令牌环(token-ring)网络接口、光纤网络接口、无线网络接口(例如,WiFi、WiMax等),或另一种类型的网络接口。
视频接口1710使计算设备1700能够将视频信息输出给显示设备1712。在不同实施例中,视频接口1710以不同方式实施。例如,在一个示例性实施例中,将视频接口1710集成到计算设备1700的母板中。在另一个示例性实施例中,视频接口1710是视频扩展卡。视频扩展卡的示例类型包括由安大略省马卡姆市(Markham,Ontario)的ATITechnologies,Inc.制造的图形卡、由加利福尼亚州圣客拉拉县(SantaClara,California)的NvidiaCorporation制造的图形卡,以及其他类型的图形卡。
在各种实施例中,将显示设备1712实施为各种类型的显示设备。显示设备的示例类型包括,但并不限于:阴极射线管显示器、LCD显示面板、等离子屏显示面板、触摸式显示面板、LED屏、投影仪,以及其他类型的显示设备。在各种实施例中,视频接口1710以各种方式与显示设备1712通信。例如,在各种实施例中,视频接口1710通过通用串行总线(USB)连接器、VGA连接器、数字可视化界面(DVI)连接器、S-视频连接器、高分辨率多媒体界面(HDMI)接口、显示器端口连接器或其他类型的连接器与显示设备1712通信。
外部组件接口1714使计算设备1700能够与外部设备通信。在各种实施例中,外部组件接口1714以不同方式实施。例如,在一个示例性实施例中,外部组件接口1714是USB接口。在其他示例性实施例中,计算设备1700是火线(FireWire)接口、串行端口接口、并行端口接口、PS/2接口,和/或使计算设备1700能够与外部组件通信的另一种类型的接口。
在不同实施例中,外部组件接口1714使计算设备1700能够与不同外部组件通信。例如,在图17的示例中,外部组件接口1714使计算设备1700能够与外部存储设备1716、输入设备1718以及打印机1720通信。在其他实施例中,外部组件接口1714使计算设备1700能够与更多或更少的外部组件通信。外部组件的其他示例类型包括,但并不限于:扬声器、手机充电插孔(phonechargingjack)、调制解调器、媒体播放器端口(mediaplayerdock)、其他计算设备、扫描仪、数字相机、指纹读取器,以及可连接到计算设备1700的其他设备。
外部存储设备1716是包含一个或一个以上计算机可读数据存储媒体的外部组件。计算设备1700的不同实施与不同类型的外部存储设备对接。外部存储设备的示例类型包括,但并不限于:磁带驱动器、闪存模块、磁盘驱动器、光盘驱动器、闪存单元、压缩磁盘驱动器(zipdiskdrives)、光盘库(opticaljukebox),以及包含一个或一个以上计算机可读数据存储媒体的其他类型的设备。输入设备1718是将用户输入提供给计算设备1700的外部组件。计算设备1700的不同实施与不同类型的输入设备对接。输入设备的示例类型包括,但并不限于:键盘、鼠标、轨迹球、触笔输入设备、小键盘、麦克风、游戏杆、触摸式显示屏,以及将用户输入提供给计算设备1700的其他类型的设备。打印机1720是将数据打印到纸上的外部设备。计算设备1700的不同实施与不同类型的打印机对接。打印机的示例类型包括,但并不限于:激光打印机、喷墨打印机、照片打印机、复印机、传真机、收据打印机、点阵打印机,或将数据打印到纸上的其他类型的设备。
通信媒体1722促进计算设备1700的硬件组件之间的通信。在不同实施例中,通信媒体1722促进计算设备1700的不同组件之间的通信。例如,在图17的示例中,通信媒体1722促进内存1702、处理系统1704、二级存储设备1706、网络接口卡1708、视频接口1710以及外部组件接口1714之间的通信。在计算设备1700的不同实施中,通信媒体1722以不同方式实施。例如,在计算设备1700的不同实施中,通信媒体1722可实施为PCI总线、PCI串行总线、加速图形端口(AGP)总线、互连、串行高级技术附件(ATA)互连、并行ATA互连、光纤信道互连、USB总线、小型计算系统界面(SCSI)接口,或另一种类型的通信媒体。
内存1702存储各种类型的数据和/或软件指令。例如,在图17的示例中,内存1702存储基本输入/输出系统(BIOS)1724、操作系统1726、应用程序软件1728以及程序数据1730。BIOS1724包括在由处理系统1704执行时使计算设备1700开机的软件指令集。操作系统1726包括如下软件指令集,即在由处理系统1704执行时使计算设备1700提供使计算设备1700的活动以及资源共享协调的操作系统的软件指令集。操作系统的示例类型包括,但并不限于:MicrosoftLinux、Unix、AppleOSAppleHPGoogleOS、GoogleOS等等。应用程序软件1728包括在由处理系统1704执行时使计算设备1700将应用程序提供给计算设备1700的用户的软件指令集。程序数据1730是由应用程序软件1728产生和/或使用的数据。
上文描述的各种实施例仅通过图示的方式提供,且不应解释为限制性的。本领域的技术人员将容易地认识到可在不遵循本文中图示且描述的示例性实施例以及应用的情况下进行的各种修改以及改变。例如,图中所示的操作仅仅是示例。在各种实施例中,类似操作可包括比图中所示的步骤更多或更少的步骤。此外,在其他实施例中,类似操作可以是以不同于图中所示的操作的次序的步骤。

Claims (19)

1.一种用于跨平台应用程序的方法,其包含:
输入业务逻辑源代码,所述业务逻辑源代码不含有对任何平台特定的大量代码,且所述业务逻辑源代码实质上定义一应用程序的对所述应用程序特定的所有功能性;
编译与第一平台相关联的平台特定代码以及所述业务逻辑源代码,从而产生第一计算机可执行指令集,所述第一计算机可执行指令集的执行使提供所述第一平台的设备提供所述应用程序;以及
编译与第二平台相关联的平台特定代码以及所述业务逻辑源代码,从而产生第二计算机可执行指令集,所述第二计算机可执行指令集的执行使提供所述第二平台的设备提供所述应用程序;
其中产生所述第一计算机可执行指令集包含编译第一平台特定代码集,所述第一平台特定代码集是对所述第一平台特定的;
其中产生所述第二计算机可执行指令集包含编译第二平台特定代码集,所述第二平台特定代码集是对所述第二平台特定的;
其中产生所述第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子;
其中产生所述第二计算机可执行指令集包含编译所述层源代码;
其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且
其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
2.一种用于跨平台应用程序的方法,其包含:
通过编译第一源代码集来产生第一计算机可执行指令集,所述第一源代码集包括业务逻辑源代码,所述第一计算机可执行指令集适用于在第一平台上执行;以及
通过编译第二源代码集来产生第二计算机可执行指令集,所述第二源代码集包括所述业务逻辑源代码,所述第二计算机可执行指令集适用于在第二平台上执行,其中所述业务逻辑源代码基本上没有对所述第一平台特定的代码且基本上没有对所述第二平台特定的代码,其中所述业务逻辑源代码实质上定义一应用程序的对所述应用程序特定的所有功能性;
其中产生所述第一计算机可执行指令集包含编译第一平台特定代码集,所述第一平台特定代码集是对所述第一平台特定的;
其中产生所述第二计算机可执行指令集包含编译第二平台特定代码集,所述第二平台特定代码集是对所述第二平台特定的;
其中产生所述第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子;
其中产生所述第二计算机可执行指令集包含编译所述层源代码;
其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且
其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
3.根据权利要求2所述的方法,其进一步包含:从由外部方提供的数据存储系统复制所述第一平台特定代码集。
4.根据权利要求2所述的方法,
其中所述应用程序具有层集,所述层中的每一个与层URI相关联;且
其中产生所述第一计算机可执行指令集包含编译应用程序源代码,所述应用程序源代码不含有对所述第一平台或所述第二平台特定的代码,所述应用程序源代码定义应用程序模块的功能性,所述应用程序模块具有在接收导航请求时调用的导航操作,所述导航操作在由所述导航请求指定的层URI与所述层模块相关联时向所述层模块提供加载请求,所述加载请求包含执行所述层模块的所述加载操作的请求。
5.根据权利要求4所述的方法,
其中所述第一平台特定代码集定义第一绑定模块的功能性,所述第一绑定模块具有层输出操作,所述层输出操作处理层模块以产生输出数据,用于利用所述第一平台特有的用户界面功能来呈现层;且
其中所述第二平台特定代码集定义第二绑定模块的功能性,所述第二绑定模块具有不同层输出操作,所述不同层输出操作处理层模块以产生输出数据,用于利用所述第二平台特有的用户界面功能来呈现所述层。
6.根据权利要求5所述的方法,其中产生所述第一计算机可执行指令集包含产生第一程序包,所述第一程序包包含定义所述层模块、所述应用程序模块以及所述第一绑定模块的功能性的计算机可执行指令,所述第一程序包适用于安装在提供所述第一平台的计算设备上。
7.根据权利要求4所述的方法,其进一步包含产生包含计算机可执行指令的壳应用程序包,当所述计算机可执行指令在设备上执行时会使所述设备提供表现成执行所述应用程序操作的壳应用程序,所述壳应用程序实际上将导航请求发送给所述应用程序模块,且从第一绑定模块接收序列化界面数据,所述应用程序模块以及所述第一绑定模块在服务器系统处操作。
8.根据权利要求4所述的方法,其中产生所述指令集包含:
产生客户端程序包,所述客户端程序包包含定义第一绑定模块的功能性的指令,所述客户端程序包适用于安装在提供所述第一平台的计算设备上;以及
产生服务器程序包,所述服务器程序包包含定义所述层模块以及所述应用程序模块的功能性的指令,所述服务器程序包适用于安装在服务器设备上。
9.根据权利要求2所述的方法,其进一步包含:
将所述第一计算机可执行指令集分配给提供所述第一平台且能够执行所述第一计算机可执行指令集的设备;以及
将所述第二计算机可执行指令集分配给提供所述第二平台且能够执行所述第二计算机可执行指令集的设备。
10.根据权利要求9所述的方法,
其中分配所述第一计算机可执行指令集包含使所述第一计算机可执行指令集在应用程序商店可购买到;且
其中分配所述第二计算机可执行指令集包含使所述第二计算机可执行指令集在所述应用程序商店或另一个应用程序商店可购买到。
11.根据权利要求9所述的方法,其进一步包含:
其中分配所述第一计算机可执行指令集包含将所述第一计算机可执行指令集推出到组织中提供所述第一平台的设备;且
其中分配所述第二计算机可执行指令集包含将所述第二计算机可执行指令集推出到所述组织中提供所述第二平台的设备。
12.根据权利要求2所述的方法,其中所述业务逻辑源代码不包括取决于哪个平台正运行所述应用程序而按条件执行的代码。
13.一种用于跨平台应用程序的方法,其包含:
从一个或一个以上外部方获得第一平台特定代码集以及第二平台特定代码集,所述第一平台特定代码集与第一平台相关联,所述第二平台特定代码集与第二平台相关联;
开发用于第一应用程序的业务逻辑源代码,所述业务逻辑源代码实质上定义所述第一应用程序的对所述第一应用程序特定的所有功能性,所述第一平台特定代码集以及所述第二平台特定代码集基本上没有对所述第一应用程序特定的代码;
使用一个或一个以上计算设备产生第一计算机可执行指令集以及第二计算机可执行指令集,其中所述一个或一个以上计算设备通过编译第一源代码集来产生所述第一计算机可执行指令集,所述第一源代码集包括所述业务逻辑源代码以及所述第一平台特定代码集;且
其中所述一个或一个以上计算设备通过编译第二源代码集来产生所述第二计算机可执行指令集,所述第二源代码集包括所述业务逻辑源代码以及所述第二平台特定代码集;
其中产生所述第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子;
其中产生所述第二计算机可执行指令集包含编译所述层源代码;
其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且
其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
14.根据权利要求13所述的方法,其进一步包含:
开发用于第二应用程序的业务逻辑源代码;以及
使用用于所述第二应用程序的所述业务逻辑源代码、第一平台特定源代码集以及第二平台特定源代码集以产生适用于在所述第一平台以及所述第二平台上执行的计算机可执行指令集。
15.根据权利要求13所述的方法,其进一步包含:
在第一设备上安装所述第一计算机可执行指令集,所述第一设备提供所述第一平台,所述第一计算机可执行指令集由所述第一设备的执行使所述第一设备仅使用所述第一平台特有的用户界面功能呈现所述第一应用程序的用户界面;以及
在第二设备上安装所述第二计算机可执行指令集,所述第二设备提供所述第二平台,所述第二计算机可执行指令集由所述第二设备的执行使所述第二设备仅使用所述第二平台特有的用户界面功能呈现所述第一应用程序的所述用户界面。
16.一种计算系统,其包含:
一个或一个以上数据存储媒体,其存储:
计算机可执行指令;以及
用于应用程序的业务逻辑源代码,所述业务逻辑源代码基本上没有对任何平台特定的源代码,所述业务逻辑源代码实质上定义所述应用程序的对所述应用程序特定的所有功能性;以及
处理单元,所述处理单元从所述一个或一个以上数据存储媒体读取所述指令且执行所述指令,所述指令由所述处理单元的执行使所述计算系统使用所述业务逻辑源代码产生多个程序包,所述程序包适用于在不同平台上执行,所述程序包在所述平台上的执行使提供所述平台的计算设备提供所述应用程序;
其中所述处理单元配置为产生第一计算机可执行指令集包含编译第一平台特定代码集,所述第一平台特定代码集是对所述第一平台特定的;
其中所述处理单元还配置为产生第二计算机可执行指令集包含编译第二平台特定代码集,所述第二平台特定代码集是对所述第二平台特定的;
其中产生所述第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子;
其中产生所述第二计算机可执行指令集包含编译所述层源代码;
其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且
其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
17.根据权利要求16所述的计算系统,其中所述不同平台包括由不同类型的移动设备提供的平台。
18.一种计算系统,其包括:
通过编译与第一平台相关联的第一平台特定代码以及业务逻辑源代码来产生第一指令集的装置,所述第一平台特定代码是对所述第一平台特定,所述第一指令集的执行使提供所述第一平台的设备提供应用程序,所述业务逻辑源代码不含有对任何平台特定的大量代码,所述业务逻辑源代码实质上定义所述应用程序的对所述应用程序特定的所有功能性;以及
通过编译与第二平台相关联的第二平台特定代码以及业务逻辑源代码来产生第二指令集的装置,所述第二平台特定代码是对所述第二平台特定,所述第二指令集的执行使提供所述第二平台的设备提供所述应用程序;
其中产生第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子;
其中产生第二计算机可执行指令集包含编译所述层源代码;
其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且
其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
19.根据权利要求18所述的计算系统的计算机可读数据存储媒体,
其中所述业务逻辑源代码定义多个层;
其中所述第一指令集的执行使提供所述第一平台的所述设备将内容加载到所述层中且使用所述第一平台特有的用户界面功能在所述层中显示所述内容;且
其中所述第二指令集的执行使提供所述第二平台的所述设备将所述内容加载到所述层中且使用所述第一平台特有的用户界面功能在所述层中显示所述内容。
CN201180027455.7A 2010-04-15 2011-04-15 跨平台应用程序框架 Active CN102971688B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US32467210P 2010-04-15 2010-04-15
US61/324,672 2010-04-15
PCT/US2011/032714 WO2011130651A1 (en) 2010-04-15 2011-04-15 Cross-platform application framework

Publications (2)

Publication Number Publication Date
CN102971688A CN102971688A (zh) 2013-03-13
CN102971688B true CN102971688B (zh) 2016-03-16

Family

ID=44789174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180027455.7A Active CN102971688B (zh) 2010-04-15 2011-04-15 跨平台应用程序框架

Country Status (11)

Country Link
US (3) US8601449B2 (zh)
EP (1) EP2558921A4 (zh)
JP (1) JP5845522B2 (zh)
KR (1) KR101807897B1 (zh)
CN (1) CN102971688B (zh)
AU (1) AU2011239471A1 (zh)
BR (1) BR112012026301A2 (zh)
CA (1) CA2796433C (zh)
MX (1) MX2012012015A (zh)
SG (1) SG184864A1 (zh)
WO (1) WO2011130651A1 (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2777594A1 (en) * 2009-10-15 2011-04-21 Web Impact Inc. System and method for managing applications for multiple computing endpoints and multiple endpoint types
SG184864A1 (en) 2010-04-15 2012-11-29 Itr Group Inc Cross-platform application framework
US8275672B1 (en) 2011-04-04 2012-09-25 Google Inc. Coordinating multiple devices in a product purchasing system
US8635522B2 (en) * 2011-05-12 2014-01-21 Sybase, Inc. Hybrid web container for cross-platform mobile applications
WO2013022987A1 (en) * 2011-08-09 2013-02-14 Rafter, Inc. Systems and methods for generating comparison information for all course books in student schedules
US8819638B2 (en) * 2011-09-20 2014-08-26 Alcatel Lucent Application protoyping suite
WO2013066286A1 (en) * 2011-10-31 2013-05-10 Hewlett-Packard Development Company, L.P. Remote software depolyment across a network
US9268546B2 (en) 2011-12-07 2016-02-23 Yahoo! Inc. Deployment and hosting of platform independent applications
US9197720B2 (en) 2011-12-07 2015-11-24 Yahoo! Inc. Deployment and hosting of platform independent applications
US9946526B2 (en) * 2011-12-07 2018-04-17 Excalibur Ip, Llc Development and hosting for platform independent applications
US9158520B2 (en) * 2011-12-07 2015-10-13 Yahoo! Inc. Development of platform independent applications
CN103248662B (zh) * 2012-02-13 2017-11-03 联想(北京)有限公司 数据处理方法和装置
US20150088974A1 (en) * 2012-03-10 2015-03-26 Evado Holdings Pty Ltd Method and System of Application Development for Multiple Device Client Platforms
US8910115B2 (en) * 2012-04-02 2014-12-09 Kony Solutions, Inc. Systems and methods for application development
US9176751B2 (en) * 2012-04-04 2015-11-03 Xerox Corporation Tools and methods for customizing multi-function devices
CN103713889B (zh) * 2012-09-29 2018-07-13 三亚中兴软件有限责任公司 一种应用的开发、编译和调试方法以及装置
US20140149966A1 (en) * 2012-11-27 2014-05-29 Inadev Corporation Application, build, integration, and release management system and method
US9239713B1 (en) * 2013-03-06 2016-01-19 MobileForce Software, Inc. Platform independent rendering for native mobile applications
US9218162B1 (en) * 2013-03-06 2015-12-22 MobileForce Software, Inc. Cross-platform mobile application specification and automatic synthesizer
US9430207B1 (en) * 2013-03-13 2016-08-30 MobileForce Software, Inc. Automated cross-platform native mobile application generation with cloud driven user interface and workflow synthesis
US9104519B1 (en) * 2013-06-17 2015-08-11 Symantec Corporation Provisioning partner aware apps on sandboxed operating systems
US9032379B2 (en) * 2013-06-21 2015-05-12 Oracle International Corporation Platform specific optimizations in static compilers
WO2015030759A1 (en) * 2013-08-29 2015-03-05 Hewlett-Packard Development Company, L.P. Application broadcast and compilation
TWI700640B (zh) * 2013-09-16 2020-08-01 系微股份有限公司 與其他設備共享應用程式的系統和方法
US20150128110A1 (en) * 2013-11-05 2015-05-07 Alexander Falk Mobile application development and deployment
US9170808B2 (en) * 2013-11-07 2015-10-27 Sap Se Dynamic containerization
CN103677824A (zh) * 2013-12-06 2014-03-26 无锡易视腾科技有限公司 基于定制浏览器的ott终端解决方案
US9692808B2 (en) * 2014-01-24 2017-06-27 Adobe Systems Incorporated Code path directives for controlling in-app experiences
US9880816B2 (en) * 2014-11-27 2018-01-30 Sap Se Simulator with local resource capabilities
US9501263B2 (en) * 2014-12-18 2016-11-22 Oracle International Corporation Automated model derivation and alignment
US9582225B2 (en) 2015-03-27 2017-02-28 Kyocera Document Solutions Inc. Document solution management platform in a decentralized environment
US9965271B2 (en) * 2015-04-28 2018-05-08 Microsoft Technology Licensing, Llc Projection of build and design-time inputs and outputs between different build environments
US10459600B2 (en) 2015-06-24 2019-10-29 Microsoft Technology Licensing, Llc Conversion of platform-independent accessibility logic into platform-specific accessibility functionality
US20170052780A1 (en) * 2015-08-21 2017-02-23 Zih Corp. Methods and Apparatus to Adapt Legacy Applications to Target Platforms
CN107239265B (zh) * 2016-03-28 2020-04-07 阿里巴巴集团控股有限公司 Java函数与C函数的绑定方法及装置
US10506017B2 (en) 2016-05-20 2019-12-10 Adobe Inc. Manipulation of PDF file content through HTTP requests
US10372443B2 (en) * 2016-10-18 2019-08-06 Oracle International Corporation Multi-platform pattern-based user interfaces
CN108614705B (zh) * 2017-02-07 2022-06-03 腾讯科技(深圳)有限公司 一种数据编译处理方法及终端
TWI667613B (zh) * 2017-11-02 2019-08-01 聲達資訊股份有限公司 前端整合開發管理系統及其方法
CN109445777B (zh) * 2017-12-29 2022-10-28 贵阳朗玛信息技术股份有限公司 基于Android平台多个定制产品的开发框架及方法
WO2019155369A1 (en) * 2018-02-07 2019-08-15 Patni Sangeeta Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
US10437572B1 (en) * 2018-08-03 2019-10-08 King Fahd University Of Petroleum And Minerals Methods, computer readable media, and systems for compiling concise expressive design pattern source code
CN109582316A (zh) * 2018-11-15 2019-04-05 北京深思数盾科技股份有限公司 一种跨平台编译方法、装置、系统、服务器及存储介质
US10838744B2 (en) * 2018-12-04 2020-11-17 Sap Se Web component design and integration system
US11232172B2 (en) 2018-12-04 2022-01-25 Sap Se Collaborative web application and data system
CN109814853A (zh) * 2019-01-18 2019-05-28 宜创(北京)科技有限公司 基于可视化的多平台数据生成方法、装置、设备及介质
US10789048B2 (en) * 2019-01-30 2020-09-29 Salesforce.Com, Inc. Namespace and class utilities for managed packages
WO2021062165A1 (en) * 2019-09-27 2021-04-01 Openedge Payments Llc Systems and methods for uniform, cross-platform transactions
KR20220030081A (ko) * 2020-09-02 2022-03-10 삼성전자주식회사 전자장치 및 그 제어방법
KR20220064780A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 전자 장치 및 이의 제어 방법
WO2022203381A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 단일 페이지 애플리케이션 방식의 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
WO2022203391A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 반응형 또는 적응형 웹 구현을 위한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
WO2022203387A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 소스 컴파일러를 구비한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
CN113204347B (zh) * 2021-04-02 2022-03-22 北京易捷思达科技发展有限公司 适用于软件包的处理方法、装置及电子设备
US11809376B2 (en) 2021-05-13 2023-11-07 International Business Machines Corporation Building a file system for multiple architectures
CN114225384B (zh) * 2021-12-02 2022-09-16 广州三七极创网络科技有限公司 基于可组合gm指令的通讯方法、系统、设备及存储介质
US11904870B2 (en) * 2021-12-27 2024-02-20 Gm Cruise Holdings Llc Configuration management system for autonomous vehicle software stack
CN117234470B (zh) * 2023-10-08 2024-02-23 开物数智(安徽)智能科技有限公司 一种基于低代码平台的跨端表单开发系统及方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014821A (ja) 2000-06-29 2002-01-18 Toshiba Corp サーバクライアントシステム及びこのサーバクライアントシステムにおけるアプリケーション配布方法を記憶した記憶媒体
JP2002202886A (ja) 2000-10-27 2002-07-19 Toshiba Corp アプリケーション開発システム、その方法およびアプリケーション開発プログラムおよびアプリケーション生成方法
US20060036941A1 (en) * 2001-01-09 2006-02-16 Tim Neil System and method for developing an application for extending access to local software of a wireless device
US7096491B2 (en) * 2001-07-20 2006-08-22 Hewlett-Packard Development Company, L.P. Mobile code security architecture in an application service provider environment
AU2002355575A1 (en) * 2001-08-08 2003-02-24 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
US7305671B2 (en) * 2002-03-22 2007-12-04 Sun Microsystems, Inc. Conversion of an object model to a source file generation model
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
US7587712B2 (en) * 2003-12-19 2009-09-08 Marvell International Ltd. End-to-end architecture for mobile client JIT processing on network infrastructure trusted servers
US20060129972A1 (en) * 2004-11-30 2006-06-15 Tyburski John C Application developer and method for generating platform independent code
US7810082B2 (en) * 2005-07-22 2010-10-05 Telefonaktiebolaget L M Ericsson (Publ) System and method for transforming generic software code into operator specific code
US20070250828A1 (en) 2005-11-16 2007-10-25 Tseitlin Ariel D Portable libraries
US7890853B2 (en) * 2006-02-13 2011-02-15 Nextair Corporation Apparatus and machine-readable medium for generating markup language representing a derived entity which extends or overrides attributes of a base entity
US8117611B2 (en) * 2006-03-01 2012-02-14 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
US8027362B2 (en) 2006-03-01 2011-09-27 Symbol Technologies, Inc. Methods and systems for pushing and pulling network data in user interface design
JP2008250838A (ja) * 2007-03-30 2008-10-16 Kddi Corp ソフトウェア生成装置、方法、およびプログラム
US20090037287A1 (en) * 2007-07-31 2009-02-05 Ahmad Baitalmal Software Marketplace and Distribution System
US20120167047A1 (en) * 2007-12-17 2012-06-28 Infogin Ltd. System and method for automatic creation of web content for mobile communicators
US20090172657A1 (en) * 2007-12-28 2009-07-02 Nokia, Inc. System, Method, Apparatus, Mobile Terminal and Computer Program Product for Providing Secure Mixed-Language Components to a System Dynamically
EP2245835A2 (en) * 2008-02-08 2010-11-03 Ecrio, Inc. System, method and apparatus for controlling multiple applications and services on a digital electronic device
US20090228868A1 (en) * 2008-03-04 2009-09-10 Max Drukman Batch configuration of multiple target devices
US20090228862A1 (en) * 2008-03-04 2009-09-10 Anders Bertelrud Modularized integrated software development environments
US8904368B2 (en) * 2008-03-31 2014-12-02 International Business Machines Corporation Instantiating a composite application for different target platforms
US8745573B2 (en) * 2008-06-16 2014-06-03 Beek Fund B.V. L.L.C. Platform-independent application development framework
US9110873B2 (en) * 2008-06-27 2015-08-18 Microsoft Technology Licensing, Llc Platform-independent data application description language
EP2294508A4 (en) * 2008-06-30 2013-10-16 Mominis Ltd METHOD FOR GENERATING AND DISTRIBUTING A COMPUTER APPLICATION
US8762963B2 (en) * 2008-12-04 2014-06-24 Beck Fund B.V. L.L.C. Translation of programming code
US8607224B2 (en) * 2009-05-28 2013-12-10 Yahoo! Inc. System for packaging native program extensions together with virtual machine applications
US20110078678A1 (en) * 2009-09-30 2011-03-31 Open Kernel Labs Methods and apparatus for producing cross-platform software applications
SG184864A1 (en) 2010-04-15 2012-11-29 Itr Group Inc Cross-platform application framework

Also Published As

Publication number Publication date
US20140181802A1 (en) 2014-06-26
WO2011130651A1 (en) 2011-10-20
US20110258595A1 (en) 2011-10-20
CA2796433C (en) 2017-12-12
BR112012026301A2 (pt) 2016-07-12
KR101807897B1 (ko) 2017-12-11
US9665841B2 (en) 2017-05-30
JP5845522B2 (ja) 2016-01-20
EP2558921A1 (en) 2013-02-20
CA2796433A1 (en) 2011-10-20
KR20130086138A (ko) 2013-07-31
MX2012012015A (es) 2013-06-05
CN102971688A (zh) 2013-03-13
AU2011239471A1 (en) 2012-11-08
US20160110667A1 (en) 2016-04-21
SG184864A1 (en) 2012-11-29
JP2013529328A (ja) 2013-07-18
EP2558921A4 (en) 2014-07-23
US8601449B2 (en) 2013-12-03
US9218175B2 (en) 2015-12-22

Similar Documents

Publication Publication Date Title
CN102971688B (zh) 跨平台应用程序框架
Steele et al. The Android developer's cookbook: building applications with the Android SDK
Meier Professional Android 4 application development
Jackson et al. Android apps for absolute beginners
KR101025949B1 (ko) Xml 표현에서 z-order 엘리먼트들의 정밀립 제어
Meier et al. Professional Android
US20140047409A1 (en) Enterprise application development tool
Schwarz et al. The Android developer's cookbook: building applications with the Android SDK
Murphy et al. Beginning Android 3
CN111708528A (zh) 一种小程序的生成方法、装置、设备及存储介质
Panigrahy Xamarin Mobile Application Development for Android
CN107463406A (zh) 发布移动应用的方法和电子设备
Ostrander Android UI Fundamentals: Develop and Design
Boyer et al. Android application development cookbook
US20140304690A1 (en) Systems and Methods for Outputting an Application to Another Environment
WO2021084101A1 (en) Systems and methods for replacing a theme of a virtual environment
Steele et al. The Android Developer's Collection (Collection)
Harwani Android Programming Unleashed
Anderson Beginning Flash, Flex, and AIR Development for Mobile Devices
Boyer Android 9 Development Cookbook: Over 100 recipes and solutions to solve the most common problems faced by Android developers
Williams Xamarin Blueprints
Chawla et al. Scientific Research and Development of Mobile Application for Android Platform
Harwani PhoneGap Build: Developing Cross Platform Mobile Applications in the Cloud
Dewey Getting Started with Windows 8 Apps: A Guide to the Windows Runtime
Mehdi Timespan-museum without walls mobile application

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: 1183127

Country of ref document: HK

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160216

Address after: Illinois

Applicant after: ZIH Corp.

Address before: American Minnesota

Applicant before: ITR Group Inc.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190307

Address after: Illinois State

Patentee after: Zebra Technology Company

Address before: Illinois

Patentee before: ZIH Corp.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1183127

Country of ref document: HK