CN105229603A - 控制对应用编程接口的运行时访问 - Google Patents
控制对应用编程接口的运行时访问 Download PDFInfo
- Publication number
- CN105229603A CN105229603A CN201480022956.XA CN201480022956A CN105229603A CN 105229603 A CN105229603 A CN 105229603A CN 201480022956 A CN201480022956 A CN 201480022956A CN 105229603 A CN105229603 A CN 105229603A
- Authority
- CN
- China
- Prior art keywords
- api
- programming interface
- application programming
- observability
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000011161 development Methods 0.000 claims description 38
- 230000008859 change Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001737 promoting effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及用于控制对应用编程接口的运行时访问的方法、***和计算机程序产品。本发明的实施例允许库开发者更准确且容易地控制他们的库的API中的哪些可被动态地调用。由此,他们进行服务和版本化的负担可被更适当地控制。此外,应用开发者可控制这样的API中的哪些进一步从动态调用场景中排除以最小化运行时支持开销(例如,阻止元数据的生成)。
Description
背景
背景和相关技术
计算机***及相关技术影响社会的许多方面。的确,计算机***处理信息的能力已转变了人们生活和工作的方式。现在,计算机***通常执行在计算机***出现以前人工执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机***彼此耦合并耦合到其他电子设备以形成计算机***及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机***和/或多个不同的计算环境中。
在代码开发期间,软件开发者通常使用应用编程接口(API)来促进各软件组件之间的通信。API可包括针对与该API相关联的例程、数据结构、对象类以及变量的规范。由此,一个开发者可使用API规范来确定如何调用由另一开发者编写的API。
通常,一个软件开发者(库开发者)开发具有多个相关API的代码,该多个相关API被分组到提供指定功能性的库中。软件开发者可通过将库内相应的API展示为公共API来使得该功能性的各部分变得对其他程序可用。由此,另一开发者(应用开发者)可从他们的代码中通过对公共API的调用来访问功能性的可用部分。软件开发者还可将该功能性的其他部分维持为私有的。私有功能性可在该库内的各API之间内部地使用或用于访问其他库中的其他私有API。提供私有功能性的API不直接被展示给其他程序。
然而,许多运行时环境许可代码动态地调用第三方库中的任一API(例如,使用反射来访问元数据)。由此,应用程序或库可标识并调用另一库内的私有API。当软件开发者将API维持为私有的时,该软件开发者不希望该API被外部地调用。不幸的是,对这类库的内部实现细节的服务或版本化改变(诸如例如,对私有方法的重命名或移除)会潜在地致使在使用这些库的应用中的破坏性改变。
此外,对动态调用的运行时支持携带大小和工作集开销(例如,元数据)。无论API是否实际上被动态地调用,大小和工作集开销都针对API(私有或公共)维持。维持对于不被调用的API的大小和工作集开销不必要地消耗计算资源。
简要概述
本发明涉及用于控制对应用编程接口的运行时访问的方法、***和计算机程序产品。本发明的各实施例包括控制对应用编程接口(API)的运行时访问。运行时环境基于API类型向动态访问请求(例如,通过反射或其他动态调用技术)提供对API的默认可见性。例如,对非公共API的默认可见性可阻止动态访问。
被组合在库中的一组API被访问。该组API包括一个或多个公共API以及一个或多个非公共API。从该组API中标识针对其被提供到动态访问请求的默认可见性要被更改的API。
通过将属性应用到该API来更改对该API的默认可见性。该属性在运行时向运行时环境指示动态访问请求要被提供对该API的经更改的可见性。更改可见性可包括许可对非公开API的动态访问,而默认地动态访问不被许可。
其他实施例包括减少对可访问的API的默认可见性。应用的应用代码被访问。该应用代码引用被组合在库中的一个或多个可访问的API。在该应用代码中被引用的可访问的API被标识。该可访问的API是从该一个或多个可访问的API中选择的。
确定了该可访问的API在运行时不被动态地访问。属性被应用到该可访问的API以减少对该可访问的API的默认可见性。该属性在运行时向运行时环境指示动态访问请求(例如,通过反射或其他动态调用技术)要被提供对该可访问的API的经减少的可见性。减少对API的可见性可相应地减少元数据生成。在一些实施例中,减少对API的可见性包括阻止对该API的动态访问。
其他实施例包括向消费者提供对API的指定可见性。可执行代码在运行时环境中被执行。可执行代码是从应用代码中导出的。在可执行代码的执行期间,从消费者接收到对于执行该可执行代码的一部分的动态调用。该可执行代码的该部分是从应用代码的引用库中的API的一部分中导出的。基于该API的类型来访问对于该API的运行时默认可见性。
应用到该API的任何属性被访问。应用到该API的属性可指示API的作者想要更改对该API的运行时默认可见性。应用到应用代码的该部分的任何属性被访问。应用到应用代码的该部分的属性可指示应用代码的作者想要提供比如应用到该API的任何属性所更改的运行时默认可见性指示的对该API的更少的可见性。
基于以下中的一个或多个来确定对该API的经计算的可见性:对该API的运行时默认可见性、应用到该API的任何属性以及应用到应用代码的引用该API的任何属性。动态调用被提供对该API的经计算的可见性。
本概述被提供以便以简化形式介绍概念的选集,所述概念将在以下详细描述中进一步描述。该概述不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在被用来帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中:
图1示出促进控制对应用编程接口的运行时访问的示例计算机架构。
图2示出用于控制对应用编程接口的运行时访问的示例方法的流程图。
图3示出促进减少对可访问的应用编程接口的默认可见性的示例计算机架构。
图4示出用于减少对可访问的应用编程接口的默认可见性的示例方法的流程图。
图5示出促进向消费者提供对应用编程接口的指定可见性的示例计算机架构。
图6示出用于向消费者提供对应用编程接口的指定可见性的示例方法的流程图。
详细描述
本发明涉及用于控制对应用编程接口的运行时访问的方法、***和计算机程序产品。本发明的各实施例包括控制对应用编程接口(API)的运行时访问。运行时环境基于API类型向动态访问请求(例如,通过反射或其他动态调用技术)提供对API的默认可见性。例如,对非公共API的默认可见性可阻止动态访问。
被组合在库中的一组API被访问。该组API包括一个或多个公共API以及一个或多个非公共API。从该组API中标识针对其被提供到动态访问请求的默认可见性要被更改的一API。
通过将一属性应用到该API来更改对该API的默认可见性。该属性在运行时向运行时环境指示动态访问请求要被提供对该API的经更改的可见性。更改可见性可包括许可对非公开API的动态访问,而默认地动态访问不被许可。
其他实施例包括减少对可访问的API的默认可见性。应用的应用代码被访问。该应用代码引用被组合在库中的一个或多个可访问的API。在该应用代码中被引用的可访问的API被标识。该可访问的API是从该多个可访问的API中选择的。
确定了该可访问的API在运行时不被动态地访问。一属性被应用到该可访问的API以减少对该可访问的API的默认可见性。该属性在运行时向运行时环境指示动态访问请求(例如,通过反射或其他动态调用技术)要被提供对该可访问的API的经减少的可见性。减少对API的可见性可相应地减少元数据生成。在一些实施例中,减少对API的可见性包括阻止对该API的动态访问。
其他实施例包括向消费者提供对API的指定可见性。可执行代码在运行时环境中被执行。可执行代码是从应用代码中导出的。在可执行代码的执行期间,从消费者接收到对于执行该可执行代码的一部分的动态调用。该可执行代码的该部分是从应用代码的引用库中的API的一部分中导出的。基于该API的类型来访问对于该API的运行时默认可见性。
应用到该API的任何属性被访问。应用到该API的属性可指示API的作者想要更改对该API的运行时默认可见性。应用到应用代码的该部分的任何属性被访问。应用到应用代码的该部分的属性可指示应用代码的作者想要提供比如应用到该API的任何属性所更改的运行时默认可见性指示的对该API的更少的可见性。
基于以下中的一个或多个来确定对该API的经计算的可见性:对该API的运行时默认可见性、应用到该API的任何属性以及应用到应用代码的引用该API的任何属性。动态调用被提供对该API的经计算的可见性。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和***存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机***访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(SSD)(如基于RAM)、闪存、相变存储器(PCM)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为使得电子数据能够在计算机***和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。
此外,在到达各种计算机***组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机***RAM和/或计算机***处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机***组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。更具体而言,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机***配置的网络计算环境中实践,这些计算机***配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器***、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机***两者都执行任务的分布式***环境中实施。在分布式***环境中,程序模块可位于本地和远程存储器存储设备中。
本发明的各实施例还可以在云计算环境中实现。在该描述和下面的权利要求书中,“云计算”被定义为用于允许对可配置计算资源的共享池的按需网络访问的模型。例如,云计算机可被部署于市场以提供对可配置计算资源的共享池的普遍存在且方便的按需访问。可配置计算资源的共享池可经由虚拟化而被快速地供应,并可利用低管理努力或服务提供商交互来释放,并随后相应被缩放。
云计算模型可由各种特性组成,诸如举例来说按需自服务、广泛网络访问、资源池、快速灵活性、测定的服务等。云计算模型还可展现各种服务模型,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础结构即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在该描述和权利要求书中,“云计算环境”是其中采用了云计算的环境。
本发明的实施例允许库开发者更准确且容易地控制他们的库的API中的哪些可被动态地调用。由此,他们的服务和版本化的负担可被更适当地控制。此外,应用开发者可控制这样的API中的哪些进一步从动态调用场景中排除以最小化运行时支持开销。
图1示出促进控制对应用编程接口(API)的访问的示例计算机架构100。参考图1,计算机架构100包括开发环境101和运行时环境102。开发环境101和运行时环境102可通过诸如***总线、局域网(“LAN”)、广域网(“WAN”)和甚至因特网等之类的网络彼此连接(或作为网络的一部分)。因此,开发环境101和运行时环境102以及任何其他连接的计算机***和它们的组件都能够创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或使用其他非数据报协议)。
开发环境101可以是提供用于软件开发的工具的软件应用,包括但不限于:源代码编辑器、构建自动化、调试器、版本控制***、类浏览器、对象检查器、类分层结构图等。在一些实施例中,开发环境101包括集成开发环境(IDE)或被包括在集成开发环境(IDE)中。库开发者可使用开发环境101来将属性应用到API以改变该API对动态访问请求的可见性。
运行时环境102可以是提供用于软件执行的工具的软件应用。运行时环境102可包括用于执行在软件开发环境101中开发的代码的编译器(例如,即时(JIT)编译器)和/或解释器。在一些实施例中,运行时环境102包括集成开发环境(IDE)或被包括在集成开发环境(IDE)中。运行时环境102可包括用于动态地请求对API进行访问的机制(例如,反射)。
开发环境101和执行环境102可被集成到相同的环境内或可驻留在分开的环境中。
运行时环境102包括可见性计算模块109。可见性计算模块被配置成基于API类型(例如,内部、私有、公开等)和应用的属性来计算对API的可见性。默认可见性规则108可定义针对每个API类型的默认可见性(例如,许可动态访问或移除动态访问)。应用的属性可被用于更改或覆盖默认可见性。由此,应用的属性给予库开发者对各个API能如何被动态地访问的更准确的控制。
在一些实施例中,默认可见性规则108定义动态访问针对被指示为私有或内部的API被移除。库开发者可使用开发环境101来将一属性应用到私有或内部API。应用的属性可指示针对该私有或内部API而言动态访问将被许可。在接收到对于该私有或内部API的动态调用之际,可见性计算模块109可确定该应用的属性覆盖针对该私有或内部API的(经移除的动态访问的)默认可见性。由此,该动态调用被许可访问该私有或内部API。
图2示出用于控制对应用编程接口(API)的访问的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
方法200包括访问被组合在库中的一组应用编程接口(API),该组应用编程接口(API)包括一个或多个公共应用编程接口(API)以及一个或多个非公共应用编程接口(API)(201)。例如,开发环境101可访问库103。库103包括一个或多个公共API,该一个或多个公共API包括公共API104。库103包括一个或多个非公共(例如,私有或内部)API,该一个或多个非公共API包括非公共API106。
方法200包括从该组应用编程接口(API)中标识针对其提供给动态访问请求的默认可见性要被更改的一应用编程接口(API)(202)。例如,开发环境101(可能响应于作者输入)可标识针对非公共API106的动态访问请求(例如,使用反射或其他动态调用技术)的默认可见性要被更改。
方法200包括通过将一属性应用到应用编程接口(API)来将对应用编程接口(API)的默认可见性更改为经更改的可见性,该属性在运行时向运行时环境指示动态访问请求要被提供对应用编程接口(API)的经更改的可见性(203)。例如,作者113可在开发环境101处输入可见性输入112。响应于可见性输入112,开发环境101可将属性107应用到非公共API106。属性107可向运行时环境102指示在默认可见性规则108中定义的针对非公共API的默认可见性要针对非公共API106而更改。
随后,库103可与其他源代码一起被编译为可执行代码111。在可执行代码111的执行期间,可见性计算模块109在计算对非公共API106的可见性时可考虑默认可见性规则108和属性107两者。在一些实施例中,属性107指示对非公共API106的动态访问被允许,即使默认可见性规则108指示对非公共API的动态访问要被阻止。
图3示出促进减少对可访问的应用编程接口(API)的默认可见性的示例计算机架构100。参考图3,计算机架构300包括开发环境301和运行时环境302。开发环境301和运行时环境302可通过诸如***总线、局域网(“LAN”)、广域网(“WAN”)和甚至因特网等之类的网络彼此连接(或作为网络的一部分)。因此,开发环境301和运行时环境302以及任何其他连接的计算机***和它们的组件都能够创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或使用其他非数据报协议)。
开发环境301可以是提供用于软件开发的工具的软件应用,包括但不限于:源代码编辑器、构建自动化、调试器、版本控制***、类浏览器、对象检查器、类分层结构图等。在一些实施例中,开发环境301包括集成开发环境(IDE)或被包括在集成开发环境(IDE)中。应用开发者可使用开发环境301来将一属性应用到引用可访问的API(例如,被包括在第三方库中)的代码。应用到引用可访问的API的代码的属性可被用于减少对该可访问的API的默认可见性。
运行时环境302可以是提供用于软件执行的工具的软件应用。运行时环境可包括用于执行在软件开发环境301中开发的代码的编译器(例如,即时(JIT)编译器)和/或解释器。在一些实施例中,运行时环境302包括集成开发环境(IDE)或被包括在集成开发环境(IDE)中。运行时环境302可包括用于动态地请求对API进行访问的机制(例如,反射)。
开发环境301和执行环境302可被集成到相同的环境内或可驻留在分开的环境中。
运行时环境302包括可见性计算模块309。可见性计算模块309被配置成基于应用到引用可访问的API(例如,被属性化为许可动态访问的公共API或非公共API)的代码的属性来计算对该可访问的API的可见性。默认可见性规则308可许可对可访问的API的动态访问。由此,应用的属性给予应用开发者排除对以其他方式可访问的API(例如,被包括在第三方库中)的动态访问的机制。排除对以其他方式可访问的API的动态访问可最小化运行时支持开销(例如,元数据生成)并从而保存资源。
图4示出用于减少对可访问的应用编程接口(API)的默认可见性的示例方法400的流程图。方法400将参考计算机架构300的组件和数据来描述。
方法400包括访问一应用的应用代码,该应用代码引用被组合在库中的一个或多个可访问的应用编程接口(API)(401)。例如,开发环境301可访问应用代码314。开发环境310还可访问库30。应用代码314可引用包括在库303中的一个或多个API,诸如例如API304和306。
方法400包括标识在应用代码中被引用的可访问的应用编程接口(API),该可访问的应用编程接口(API)选自该一个或多个可访问的应用编程接口(API)(402)。例如,开发环境301可标识被API引用316引用的API306。
方法400包括确定该可访问的应用编程接口(API)在运行时将不被动态地访问(403)。例如,开发环境301(可能响应于作者输入)可确定对API306的动态访问要被阻止。
方法400包括通过将一属性应用到该应用代码的引用该可访问的应用编程接口(API)的部分来将对该可访问的应用编程接口(API)的默认可见性减少为经减少的可见性,该属性在运行时向运行时环境指示动态访问请求要被提供对该可访问的应用编程接口(API)的经减少的可见性(404)。例如,作者313可在开发环境301处输入可见性输入312。响应于可见性输入312,开发环境301可将属性317应用到API引用316(对API306的引用)。属性317可向运行时环境302指示针对API306的默认可见性要被减少。
随后,应用代码314以及库303可(可能与其他源代码)一起被编译为可执行代码311。在可执行代码311的执行期间,可见性计算模块309在计算对API306的可见性时可考虑默认可见性规则308和属性317两者。在一些实施例中,属性317指示对API306的动态访问被阻止,即使默认可见性规则308指示对可访问的API的动态访问要被允许。
对API的受限可见性可包括不生成该API的元数据。例如,如在计算机架构300中描绘的,不生成API306的元数据。另一方面,可生成API304(从应用代码314中被引用的另一可访问的API)的元数据319。
图5示出促进向消费者提供对应用编程接口(API)的指定可见性的示例运行时环境500。参考图5,运行时环境500包括可见性计算模块501和消费者531。可见性计算模块501和消费者531可通过诸如***总线、局域网(“LAN”)、广域网(“WAN”)和甚至因特网等之类的网络彼此连接(或作为网络的一部分)。因此,可见性计算模块501和消费者531以及任何其他连接的计算机***和它们的组件都能够创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或使用其他非数据报协议)。
运行时环境500可以是提供用于软件执行的工具的软件应用。运行时环境可包括用于执行在软件开发环境500中开发的代码的编译器(例如,即时(JIT)编译器)和/或解释器。在一些实施例中,运行时环境500包括集成开发环境(IDE)或被包括在集成开发环境(IDE)中。运行时环境500可包括用于动态地请求对API进行访问的机制(例如,反射)。
运行时环境500包括可见性计算模块501。可见性计算模块501被配置成计算对在库中被分组在一起的多个API中的每个API的可见性。可基于API类型(例如,内部、私有、公共)、应用到API的属性(例如,库作者)以及应用到引用API的应用的属性来计算该API的可见性。应用的属性可被用于更改、覆盖、减少等默认可见性。
在一些实施例中,默认可见性规则502定义针对非公共(例如,私有或内部)API移除动态访问以及针对公共API许可动态访问。然而,非公共API的作者(例如,库作者)可将属性应用到该非公共API以覆盖默认可见性并许可对该非公共API的动态访问。类似地,公共API的作者(例如,库作者)可将属性应用到该公共API以覆盖默认可见性并拒绝对该公共API的动态访问。其他默认可见性规则也是可能的。
对于任何动态地可访问的API(无论是默认地动态地可访问的还是根据所应用的属性而动态地可访问的),第三方作者(例如,应用作者)可将属性应用到引用该动态地可访问的API的代码以从该API中移除动态访问。由此,应用作者可最小化运行时支持开销(例如,元数据生成)并从而节省资源。
图6示出用于向消费者提供对应用编程接口(API)的指定可见性的示例方法600的流程图。方法600将参考运行时环境500的组件和数据来描述。
方法600包括在运行时环境中执行可执行代码,该可执行代码是从应用代码中导出的(601)。例如,可执行代码可在运行时环境500中被执行。可执行代码503可从包括对包含在库中的API的引用的应用代码中导出。例如,API引用511和517可引用被包含在库中的API。被包含在库中的API可包括API513和518。
方法600包括在可执行代码的执行期间,方法600包括接收来自消费者的对执行该可执行代码的一部分的动态调用,该可执行代码的该部分是从该应用代码的引用库内的应用编程接口(API)的一部分中导出的(602)。例如,可从消费者531接收到动态调用521。动态调用521可以是对执行可执行代码503的一部分的调用。
在一个实施例中,动态调用521是对执行包括API引用511的可执行代码的调用。API引用511可引用API513或API518。在另一实施例中,动态调用521是对执行包括API引用517的可执行代码的调用。API引用517可引用API513或API518。
方法600包括基于该应用编程接口(API)的类型来访问对该应用编程接口(API)的运行时默认可见性(603)。如类型514所指示的,API513是非公共API。由此,当API引用对API513进行引用时,可从(针对API513的)默认可见性规则502中访问针对非公共API的运行时默认可见性(例如,阻止对非公共API的动态访问)。如类型519所指示的,API518是公共API。由此,当API引用对API518进行引用时,可从(针对API518的)默认可见性规则502中访问针对公共API的运行时默认可见性(例如,允许对公共API的动态访问)。
方法600包括访问应用到应用编程接口(API)的任何属性,应用到应用编程接口(API)的属性指示应用编程接口(API)的作者想要更改对应用编程接口(API)的运行时默认可见性。例如,当API引用对API513进行引用时,属性516可被访问。属性516可指示库作者想要更改对API513的运行时默认可见性(如在默认可见性规则502中定义的)。例如,默认地,对于非公共API的动态访问可被阻止。然而,属性513可指示对于API513的动态访问将被许可。
方法600包括访问应用到应用代码的引用应用编程接口(API)的部分的任何属性,应用到该应用代码的该部分的属性指示应用代码的作者想要将对应用编程接口(API)的可见性提供到比如被应用到应用编程接口(API)的任何属性所更改的运行时默认可见性所指示的更轻的程度(605)。例如,当动态调用521是对于执行包括API引用511的可执行代码的调用时,属性512可被访问。属性512可指示应用作者想要减少对引用API(例如,API513或API518)的可见性。例如,属性512可指示对引用API(例如,API513或API518)的动态访问将被阻止。由此,即使库作者以其他方式许可对于一API的动态访问,应用开发者可应用属性512来阻止对该API的动态访问。
方法600包括基于以下中的一个或多个来确定对应用编程接口(API)的经计算的可见性:对应用编程接口(API)的运行时默认可见性、应用到应用编程接口(API)的任何属性以及应用到应用代码的引用应用编程接口(API)的部分的任何属性(606)。由此,可见性计算模块501可基于针对API的类型的默认可见性(如在默认可见性规则502中定义的)、应用到API的任何属性以及应用到引用该API的API引用的任何属性来确定对该API的经计算的可见性522。
方法600包括根据经计算的可见性来向动态调用提供对应用编程接口(API)的可见性(607)。例如,消费者531可被提供对可执行代码503中被动态调用的API的可见性522。动态调用521的结果524还可被返回到消费者531。结果524可指示对于被动态调用的API的动态访问不被许可。
在可执行代码503中,引用代码和API的各种不同的组合是可能的。在一个实施例中,动态调用521使用API引用511来调用API513。在这个实施例中,从针对API类型514的默认可见性(例如,如在默认可见性规则502中定义的)、属性512和属性516中确定可见性522。在另一实施例中,动态调用521使用API引用511来调用API518。在这个实施例中,从针对API类型519的默认可见性(例如,如在默认可见性规则502中定义的)和属性512中确定可见性522。
在进一步实施例中,动态调用521使用API引用517来调用API513。在这个进一步实施例中,从针对API类型514的默认可见性(例如,如在默认可见性规则502中定义的)和属性516中确定可见性522。在附加的实施例中,动态调用521使用API引用517来调用API518。在这个进一步实施例中,从针对API类型519的默认可见性(例如,如在默认可见性规则502中定义的)中确定可见性522。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
Claims (10)
1.一种在计算机***处用于控制对于应用编程接口(API)的运行时访问的方法,所述计算机***包括用于开发包括所述应用编程接口(API)的可执行代码的开发环境,所述可执行代码用于运行在能动态地请求访问所述应用编程接口(API)的运行时环境中,所述运行时环境基于应用编程接口(API)类型来向动态访问请求提供对应用编程接口(API)的默认可见性,所述方法包括:
访问被组合在库中的一组应用编程接口(API),该组应用编程接口(API)包括一个或多个公共应用编程接口(API)以及一个或多个非公共应用编程接口(API);
从该组应用编程接口(API)中标识针对其提供给动态访问请求的所述默认可见性要被更改的应用编程接口(API);以及
通过将属性应用到所述应用编程接口(API)来将对所述应用编程接口(API)的所述默认可见性更改为经更改的可见性,所述属性在运行时向所述运行时环境指示动态访问请求要被提供对所述应用编程接口(API)的所述经更改的可见性。
2.如权利要求1所述的方法,其特征在于,标识应用编程接口(API)包括向所述应用编程接口(API)的作者展示所述应用编程接口(API);以及
其中更改所述应用编程接口(API)的所述默认可见性包括所述应用编程接口(API)的所述作者更改所述应用编程接口的所述默认可见性。
3.如权利要求1所述的方法,其特征在于,标识应用编程接口(API)包括标识非公共应用编程接口(API),针对所述非公共应用编程接口(API)的默认可见性阻止对所述非公共应用编程接口(API)的动态访问。
4.如权利要求3所述的方法,其特征在于,更改所述应用编程接口(API)的所述默认可见性包括将一属性应用到所述非公共应用编程接口(API),所述属性更改所述非公共应用编程接口(API)的所述默认可见性以允许对所述非公共应用编程接口(API)的动态访问。
5.如权利要求1所述的方法,其特征在于,标识应用编程接口(API)包括标识公共应用编程接口(API),针对所述公共应用编程接口(API)的默认可见性允许对所述公共应用编程接口(API)的动态访问。
6.如权利要求5所述的方法,其特征在于,更改所述应用编程接口(API)的所述默认可见性包括将属性应用到所述公共应用编程接口(API),所述属性更改所述公共应用编程接口(API)的所述默认可见性以阻止对所述公共应用编程接口(API)的动态访问。
7.一种在计算机***处用于减少对可访问的应用编程接口(API)的默认可见性的方法,所述计算机***包括用于开发包括应用编程接口(API)的可执行代码的开发环境,所述可执行代码用于运行在能动态地请求访问应用编程接口(API)的运行时环境中,所述运行时环境具有对所述可访问的应用编程接口(API)的默认可见性,所述方法包括:
访问一应用的应用代码,所述应用代码引用被组合在库中的一个或多个可访问的应用编程接口(API);
标识在所述应用代码中被引用的可访问的应用编程接口(API),所述可访问的应用编程接口(API)选自所述一个或多个可访问的应用编程接口(API);
确定所述可访问的应用编程接口(API)在运行时将不被动态地访问;
通过将一属性应用到所述应用代码的引用所述可访问的应用编程接口(API)的一部分来将对所述可访问的应用编程接口(API)的所述默认可见性减少为经减少的可见性,所述属性在运行时向所述运行时环境指示动态访问请求要被提供对所述可访问的应用编程接口(API)的所述经减少的可见性。
8.如权利要求7所述的方法,其特征在于,将属性应用到所述应用代码的引用所述可访问的应用编程接口(API)的一部分包括所述应用代码的作者将属性应用到所述应用代码的引用所述可访问的应用编程接口(API)的一部分。
9.如权利要求7所述的方法,其特征在于,将属性应用到所述应用代码的引用所述可访问的应用编程接口(API)的一部分包括将属性应用到以下之一:所述应用代码的引用公共API的一部分或所述应用代码的引用非公共API的一部分。
10.一种在计算机***处向消费者提供对应用编程接口(API)的指定可见性的方法,所述计算机***包括能请求对应用编程接口(API)的动态访问的运行时环境,所述运行时环境基于应用编程接口(API)类型向动态访问请求提供对应用编程接口(API)的默认可见性,所述方法包括:
在所述运行时环境中执行可执行代码,所述可执行代码是从应用代码中导出的;
在所述可执行代码的执行期间:
接收来自消费者的对执行所述可执行代码的一部分的动态调用,所述可执行代码的该部分从所述应用代码的引用库内的应用编程接口(API)的一部分中导出;
基于所述应用编程接口(API)的类型来访问对所述应用编程接口(API)的运行时默认可见性;
访问应用到所述应用编程接口(API)的任何属性,应用到所述应用编程接口(API)的属性指示应用编程接口(API)的作者想要更改对所述应用编程接口(API)的所述运行时默认可见性;
访问应用到所述应用代码的引用所述应用编程接口(API)的该部分的任何属性,应用到所述应用代码的该部分的属性指示所述应用代码的作者想要将对应用编程接口(API)的可见性提供到比如被应用到所述应用编程接口(API)的任何属性所更改的运行时默认可见性所指示的更轻的程度;
基于以下中的一个或多个来确定对所述应用编程接口(API)的经计算的可见性:对所述应用编程接口(API)的运行时默认可见性、应用到所述应用编程接口(API)的任何属性以及应用到所述应用代码的引用所述应用编程接口(API)的该部分的任何属性;以及
根据所述经计算的可见性来向所述动态调用提供对所述应用编程接口(API)的可见性。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/867,143 | 2013-04-22 | ||
US13/867,143 US8990839B2 (en) | 2013-04-22 | 2013-04-22 | Controlling runtime access to application programming interfaces |
PCT/US2014/034739 WO2014176137A1 (en) | 2013-04-22 | 2014-04-21 | Controlling runtime access to application programming interfaces |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105229603A true CN105229603A (zh) | 2016-01-06 |
CN105229603B CN105229603B (zh) | 2019-03-22 |
Family
ID=50771633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480022956.XA Active CN105229603B (zh) | 2013-04-22 | 2014-04-21 | 控制对应用编程接口的运行时访问 |
Country Status (11)
Country | Link |
---|---|
US (3) | US8990839B2 (zh) |
EP (2) | EP2989539B1 (zh) |
JP (1) | JP6473442B2 (zh) |
KR (1) | KR102183185B1 (zh) |
CN (1) | CN105229603B (zh) |
AU (2) | AU2014257298B2 (zh) |
BR (1) | BR112015026327B1 (zh) |
CA (1) | CA2907904A1 (zh) |
MX (1) | MX357050B (zh) |
RU (1) | RU2658190C2 (zh) |
WO (1) | WO2014176137A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111201509A (zh) * | 2017-07-10 | 2020-05-26 | 门德斯科技有限公司 | 创建软件应用时对使用者进行支持的方法和实现该方法的计算机程序及在该方法中可用的编程接口 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195440B2 (en) * | 2013-11-26 | 2015-11-24 | International Business Machines Corporation | Intelligent data source selection in application development |
US9430200B1 (en) * | 2015-06-04 | 2016-08-30 | Microsoft Technology Licensing Llc | Cross-library framework architecture feature sets |
US10158647B2 (en) * | 2015-08-25 | 2018-12-18 | Oracle International Corporation | Permissive access control for modular reflection |
US10282184B2 (en) | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
US10352717B2 (en) * | 2017-02-28 | 2019-07-16 | Google Llc | Navigation application programming interface |
US10664943B2 (en) * | 2017-06-02 | 2020-05-26 | Apple Inc. | Compound shader object and use thereof |
US10572275B2 (en) * | 2017-06-15 | 2020-02-25 | Microsoft Technology Licensing, Llc | Compatible dictionary layout |
US10817280B1 (en) * | 2018-05-21 | 2020-10-27 | Amazon Technologies, Inc. | Overriding shared service interfaces |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
EP3582103A1 (en) * | 2018-06-14 | 2019-12-18 | QlikTech International AB | Methods and systems for application program interface management |
US10467062B1 (en) | 2019-03-11 | 2019-11-05 | Coupang, Corp. | Systems and methods for managing application programming interface information |
CN112612508A (zh) * | 2020-12-24 | 2021-04-06 | 新华三云计算技术有限公司 | Api网关中的api版本控制方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1341238A (zh) * | 1999-11-17 | 2002-03-20 | 布尔Cp8公司 | 在配备数据处理资源的多用途平台式***中加载应用的方法,对应的执行***和方法 |
CN1578939A (zh) * | 2001-08-29 | 2005-02-09 | 格鲁斯番维拉塔公司 | 用于安全对象操作的密钥界面 |
CN1723451A (zh) * | 2001-12-18 | 2006-01-18 | 电子湾有限公司 | 对在线商业站点进行第三方访问的优先级设置 |
US20070022418A1 (en) * | 2005-07-22 | 2007-01-25 | Sbc Knowledge Ventures, L.P. | Method and system of managing configuration profiles of a plurality of deployed network elements |
CN1940865A (zh) * | 2005-09-29 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种应用编程接口控制方法和控制功能模块 |
US20090249374A1 (en) * | 2008-03-31 | 2009-10-01 | Stefan Hepper | Dynamic template instantiation |
CN102112990A (zh) * | 2008-06-27 | 2011-06-29 | 微软公司 | 为计算过程授予最小特权访问 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199117B1 (en) | 1992-03-30 | 2001-03-06 | International Business Machines Corporation | Generalized control for starting of tasks (processes and threads) |
AU6440398A (en) * | 1997-02-26 | 1998-09-18 | Siebel Systems, Inc. | Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions |
US20050091576A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Programming interface for a computer platform |
US20030018694A1 (en) | 2000-09-01 | 2003-01-23 | Shuang Chen | System, method, uses, products, program products, and business methods for distributed internet and distributed network services over multi-tiered networks |
US7028305B2 (en) | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US6964033B2 (en) * | 2001-06-20 | 2005-11-08 | Sun Microsystems, Inc. | Object band customization of Java runtime environments |
US20030188183A1 (en) * | 2001-08-27 | 2003-10-02 | Lee Lane W. | Unlocking method and system for data on media |
US7162721B2 (en) * | 2001-12-03 | 2007-01-09 | Sun Microsystems, Inc. | Application-independent API for distributed component collaboration |
US20050050057A1 (en) * | 2003-08-25 | 2005-03-03 | Microsoft Corporation | System and method for integrating management of resources between application services and applications |
US7409676B2 (en) * | 2003-10-20 | 2008-08-05 | International Business Machines Corporation | Systems, methods and computer programs for determining dependencies between logical components in a data processing system or network |
US20060031681A1 (en) * | 2004-08-05 | 2006-02-09 | Motorola, Inc. | Method and system for controlling access to a wireless client device |
WO2006095335A2 (en) * | 2005-03-07 | 2006-09-14 | Noam Camiel | System and method for a dynamic policies enforced file system for a data storage device |
US20070074033A1 (en) * | 2005-09-29 | 2007-03-29 | Research In Motion Limited | Account management in a system and method for providing code signing services |
US7730539B2 (en) * | 2005-10-21 | 2010-06-01 | Microsoft Corporation | Authenticating third party products via a secure extensibility model |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US7716246B2 (en) * | 2005-11-30 | 2010-05-11 | Microsoft Corporation | Dynamic mechanism for providing metadata |
US7680866B2 (en) * | 2006-01-31 | 2010-03-16 | Siemens Corporation | System and method for managing relational numerical data for monitoring systems |
US9027039B2 (en) | 2007-01-29 | 2015-05-05 | Intel Corporation | Methods for analyzing, limiting, and enhancing access to an internet API, web service, and data |
US20090007068A1 (en) * | 2007-06-27 | 2009-01-01 | Microsoft Corporation | Accessing Non-Public Code |
US8209675B2 (en) | 2007-07-25 | 2012-06-26 | Sap Ag | Method and system for customizing a software application |
US8239340B2 (en) | 2008-04-11 | 2012-08-07 | Trevor Hanson | Message conduit systems with algorithmic data stream control and methods for processing thereof |
US20110055744A1 (en) * | 2009-08-28 | 2011-03-03 | Ryan Christopher N | Visual Linking of Elements to Model Attributes |
US8438294B2 (en) * | 2010-04-07 | 2013-05-07 | Apple Inc. | Application programming interface, system, and method for collaborative online applications |
JP5318830B2 (ja) * | 2010-08-25 | 2013-10-16 | 株式会社日立ソリューションズ | WebAPIサーバプログラム、WebAPI公開方法 |
US8681630B1 (en) * | 2010-09-21 | 2014-03-25 | Google Inc. | Configurable rate limiting using static token buckets, and applications thereof |
US8863156B1 (en) * | 2011-01-04 | 2014-10-14 | AppCentric Solutions, LLC | API wizard |
US20120260233A1 (en) | 2011-04-07 | 2012-10-11 | Infosys Technologies Limited | Method and system for automating development and customization of business applications |
US8997069B2 (en) | 2011-04-13 | 2015-03-31 | Microsoft Technology Licensing, Llc | API descriptions |
US20120290560A1 (en) * | 2011-05-13 | 2012-11-15 | Kushal Das | Mechanism for efficiently querying application binary interface/application programming interface-related information |
-
2013
- 2013-04-22 US US13/867,143 patent/US8990839B2/en active Active
-
2014
- 2014-04-21 JP JP2016510711A patent/JP6473442B2/ja active Active
- 2014-04-21 RU RU2015145292A patent/RU2658190C2/ru active
- 2014-04-21 EP EP14725877.6A patent/EP2989539B1/en active Active
- 2014-04-21 BR BR112015026327-5A patent/BR112015026327B1/pt active IP Right Grant
- 2014-04-21 WO PCT/US2014/034739 patent/WO2014176137A1/en active Application Filing
- 2014-04-21 CN CN201480022956.XA patent/CN105229603B/zh active Active
- 2014-04-21 CA CA2907904A patent/CA2907904A1/en not_active Abandoned
- 2014-04-21 MX MX2015014870A patent/MX357050B/es active IP Right Grant
- 2014-04-21 AU AU2014257298A patent/AU2014257298B2/en active Active
- 2014-04-21 KR KR1020157033296A patent/KR102183185B1/ko active IP Right Grant
- 2014-04-21 EP EP21212020.8A patent/EP3982257A1/en active Pending
-
2015
- 2015-03-03 US US14/636,196 patent/US9785483B2/en active Active
-
2017
- 2017-09-19 US US15/709,460 patent/US11003511B2/en active Active
-
2019
- 2019-09-13 AU AU2019229450A patent/AU2019229450B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1341238A (zh) * | 1999-11-17 | 2002-03-20 | 布尔Cp8公司 | 在配备数据处理资源的多用途平台式***中加载应用的方法,对应的执行***和方法 |
CN1578939A (zh) * | 2001-08-29 | 2005-02-09 | 格鲁斯番维拉塔公司 | 用于安全对象操作的密钥界面 |
CN1723451A (zh) * | 2001-12-18 | 2006-01-18 | 电子湾有限公司 | 对在线商业站点进行第三方访问的优先级设置 |
US20070022418A1 (en) * | 2005-07-22 | 2007-01-25 | Sbc Knowledge Ventures, L.P. | Method and system of managing configuration profiles of a plurality of deployed network elements |
CN1940865A (zh) * | 2005-09-29 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种应用编程接口控制方法和控制功能模块 |
US20090249374A1 (en) * | 2008-03-31 | 2009-10-01 | Stefan Hepper | Dynamic template instantiation |
CN102112990A (zh) * | 2008-06-27 | 2011-06-29 | 微软公司 | 为计算过程授予最小特权访问 |
Non-Patent Citations (1)
Title |
---|
JAMES GOSLING等: "The Java Language Specification-Second Edition", 《ADDISION-WESLEY》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111201509A (zh) * | 2017-07-10 | 2020-05-26 | 门德斯科技有限公司 | 创建软件应用时对使用者进行支持的方法和实现该方法的计算机程序及在该方法中可用的编程接口 |
CN111201509B (zh) * | 2017-07-10 | 2023-10-24 | 门德斯科技有限公司 | 创建软件应用时对使用者进行支持的方法和实现该方法的计算机程序及在该方法中可用的编程接口 |
Also Published As
Publication number | Publication date |
---|---|
US20150169387A1 (en) | 2015-06-18 |
KR102183185B1 (ko) | 2020-11-25 |
EP2989539A1 (en) | 2016-03-02 |
RU2015145292A (ru) | 2017-04-26 |
EP3982257A1 (en) | 2022-04-13 |
BR112015026327B1 (pt) | 2022-05-17 |
US20190095256A1 (en) | 2019-03-28 |
AU2014257298A1 (en) | 2015-10-15 |
EP2989539B1 (en) | 2022-08-17 |
US9785483B2 (en) | 2017-10-10 |
US11003511B2 (en) | 2021-05-11 |
RU2015145292A3 (zh) | 2018-03-27 |
AU2019229450A1 (en) | 2019-10-03 |
AU2019229450B2 (en) | 2020-12-10 |
JP2016517120A (ja) | 2016-06-09 |
CN105229603B (zh) | 2019-03-22 |
JP6473442B2 (ja) | 2019-02-20 |
KR20160003023A (ko) | 2016-01-08 |
BR112015026327A2 (pt) | 2017-07-25 |
MX2015014870A (es) | 2016-03-09 |
AU2014257298B2 (en) | 2019-06-13 |
RU2658190C2 (ru) | 2018-06-19 |
BR112015026327A8 (pt) | 2019-12-24 |
WO2014176137A1 (en) | 2014-10-30 |
CA2907904A1 (en) | 2014-10-30 |
MX357050B (es) | 2018-06-25 |
US20140317641A1 (en) | 2014-10-23 |
US8990839B2 (en) | 2015-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105229603A (zh) | 控制对应用编程接口的运行时访问 | |
US11762634B2 (en) | Systems and methods for seamlessly integrating multiple products by using a common visual modeler | |
US20130238772A1 (en) | Cloud bursting and management of cloud-bursted applications | |
US10411977B2 (en) | Visualization of workload distribution on server resources | |
US8938712B2 (en) | Cross-platform virtual machine and method | |
CN102591710B (zh) | 共享对象表示 | |
US20140164386A1 (en) | Intelligent software installation | |
US9135001B2 (en) | Dynamically configuring an integrated development environment | |
CN109196484B (zh) | 在具有多个存储器的***中灵活的优化数据处理 | |
CN104021027A (zh) | 提供虚拟装置的方法和设备 | |
CN112152988B (zh) | 用于异步nbmp请求处理的方法、***以及计算机设备和介质 | |
Martínez et al. | Proposal for an integrated framework for mobile applications development | |
KR20220074133A (ko) | 시설 관리 서비스 제공 방법 및 장치 | |
CN110333914A (zh) | 一种用于执行目标操作的方法与设备 | |
CN112148935B (zh) | 用于多实例的nbmp功能执行的方法和装置 | |
US20230143717A1 (en) | Method for providing interactive computing service for artificial intelligence practice | |
Griera Jorba | Improving the reliability of an offloading engine for android mobile devices and testing its performance with interactive applications | |
CN102609300B (zh) | 用于com聚集的受保护和虚拟接口 | |
Marchenkov et al. | Smart-M3 CuteSIB Demo for a Wireless Router with OpenWrt-Based Firmware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |