BR112015026327B1 - Método para alterar visibilidade de tempo de execução de uma interface de programação de aplicativo, método para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível, e método para proporcionar a um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo - Google Patents
Método para alterar visibilidade de tempo de execução de uma interface de programação de aplicativo, método para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível, e método para proporcionar a um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo Download PDFInfo
- Publication number
- BR112015026327B1 BR112015026327B1 BR112015026327-5A BR112015026327A BR112015026327B1 BR 112015026327 B1 BR112015026327 B1 BR 112015026327B1 BR 112015026327 A BR112015026327 A BR 112015026327A BR 112015026327 B1 BR112015026327 B1 BR 112015026327B1
- Authority
- BR
- Brazil
- Prior art keywords
- api
- application programming
- programming interface
- visibility
- application
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000011161 development Methods 0.000 claims description 33
- 238000004364 calculation method Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 abstract description 3
- 238000012423 maintenance Methods 0.000 abstract description 3
- 239000008186 active pharmaceutical agent Substances 0.000 abstract 2
- 230000005540 biological transmission Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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
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
MÉTODO PARA ALTERAR VISIBILIDADE DE TEMPO DE EXECUÇÃO DE UMA INTERFACE DE PROGRAMAÇÃO DE APLICATIVO (API), MÉTODO PARA REDUZIR A VISIBILIDADE PREESTABELECIDA DENTRO DE UMA INTERFACE DE PRO- GRAMAÇÃO DE APLICATIVO (API) ACESSÍVEL E MÉTODO PAR A PROPORCIONAR A UM CONSUMIDOR VISIBILIDADE ESPECIFICADA DENTRO DE UMA INTERFACE DE PROGRAMAÇÃO DE APLICATIVO (API) A invenção refere-se a métodos, sistemas e produtos de programa de computador para controlar acesso em tempo de execução às interfaces de programação de aplicativo. Concretizações da invenção permitem aos desenvolvedores de biblioteca mais precisamente e facilmente controlar quais de suas APIs de bibliotecas podem ser chamadas dinamicamente. Assim, sua carga de manutenção e de atualização de versão pode ser mais apropriadamente controlada. Adicionalmente, desenvolvedores de aplicativo podem controlar quais APIs adicionalmente excluir dos cenários de chamada dinâmica, para minimizar a sobrecarga de suporte em tempo de execução (por exemplo, impedir a geração de metadados).
Description
[001] Os sistemas de computador e a tecnologia relacionada afetam vários aspectos da sociedade. Na verdade, a habilidade do sistema de computador em processar informação tem transformado o modo em que nós vivemos e trabalhamos. Atualmente, os sistemas de computador normalmente executam um grande número de tarefas (por exemplo, processamento de texto, programação de atividades, contabilidade, etc.) que anterior ao advento do sistema de computador eram executadas manualmente. Mais recentemente, os sistemas de computador têm sido acoplados uns com os outros e com outros dispositivos eletrônicos para formar tanto redes de computadores com uso de fios como sem uso de fios através das quais os sistemas de computador e outros dispositivos eletrônicos podem transferir dados eletrônicos. Por consequência, o desempenho de várias tarefas de computação é distribuído através de vários diferentes sistemas de computador e/ou de vários diferentes ambientes de computação.
[002] Durante o desenvolvimento de código, os desenvolvedores de software frequentemente utilizam Interfaces de Programação de Aplicativo (APIs) para facilitar comunicação entre os componentes de software. Uma API pode incluir uma especificação para as rotinas, estruturas de dados, classes de objeto, e variáveis associadas com a API. Assim, um desenvolvedor pode utilizar uma especificação de API para determinar como chamar uma API escrita por outro desenvolvedor.
[003] Frequentemente, um desenvolvedor de software (um desenvolvedor de biblioteca) desenvolve código possuindo várias APIs relacionadas que são agrupadas em uma biblioteca oferecendo funcionalidade especificada. O desenvolvedor de software pode pegar partes da funcionalidade disponível para outros programas por expor APIs correspondentes dentro da biblioteca como APIs públicas. Assim, outros desenvolvedores (um desenvolvedor de aplicativo) pode acessar as partes de funcionalidade disponíveis a partir de dentro de seu código através de chamadas para as APIs públicas. O desenvolvedor de software também pode manter outras partes da funcionalidade como privadas. A funcionalidade privada pode ser utilizada internamente entre APIs dentro da biblioteca ou para acessar outras APIs privadas em outras bibliotecas. APIs proporcionando a funcionalidade privada não são diretamente expostas para outros programas.
[004] Entretanto, vários ambientes em tempo de execução permitem código dinamicamente chamar qualquer API em uma biblioteca externa (por exemplo, utilizando reflexão para acessar metadados). Assim, o programa aplicativo ou biblioteca pode identificar e chamar APIs privadas dentro de outra biblioteca. Quando um desenvolvedor de software mantém uma API como privada, o desenvolvedor de software não espera que a API seja externamente chamada. Infelizmente, manutenção ou alterações de versão para os detalhes internos de implementação de tais bibliotecas, tais como, por exemplo, novos nomes ou remoções de métodos privados, possuem o potencial de causar alterações interruptivas em aplicativos utilizando estas bibliotecas.
[005] Em adição, o suporte em tempo de execução para chamadas dinâmicas suporta uma sobrecarga de tamanho e de conjunto operante (por exemplo, metadados). A sobrecarga de tamanho e de conjunto operante é mantida para APIs (privadas ou públicas), sejam ou não as APIs realmente chamadas dinamicamente. Manter a sobrecarga de tamanho e de conjunto operante para APIs não chamadas desnecessariamente consume recursos de computação.
[006] A presente invenção se estende para métodos, sistemas e produtos de programa de computador para controlar acesso em tempo real a interfaces de programação de aplicativo. Concretizações da invenção incluem controlar acesso em tempo de execução a interfaces de programação de aplicativo (APIs). Um ambiente de tempo de execução proporciona solicitações dinâmicas de acesso (por exemplo, através de reflexão ou de outras técnicas de chamada dinâmica) com uma visibilidade preestabelecida dentro das APIs baseada no tipo da API. Por exemplo, a visibilidade preestabelecida dentro de APIs não públicas pode impedir acesso dinâmico.
[007] Um conjunto de APIs combinadas em uma biblioteca é acessado. O conjunto de APIs inclui uma ou mais APIs públicas e uma ou mais APIs não públicas. Uma API é identificada no meio do conjunto de APIs para o qual a visibilidade preestabelecida proporcionada para solicitações de acesso dinâmico é para ser alterada.
[008] A visibilidade preestabelecida dentro da API é alterada pela aplicação de um atributo para a API. O atribuo indica para o ambiente de tempo de execução que solicitações de acesso dinâmico são para ser proporcionadas com a visibilidade alterada dentro da API. Alterar a visibilidade pode incluir permitir acesso dinâmico a uma API não pública onde por condição preestabelecida o acesso dinâmico não é permitido.
[009] Outras concretizações incluem reduzir a visibilidade preestabelecida para uma API acessível. O código de aplicativo para um aplicativo é acessado. O código de aplicativo se refere a uma ou mais APIs acessíveis combinadas em uma biblioteca. Uma API acessível referida dentro do código de aplicativo é identificada. A API acessível é selecionada dentre as uma ou mais APIs acessíveis.
[0010] É determinado que a API acessível não é para ser dinamicamente acessada em tempo de execução. Um atributo é aplicado para a API acessível para reduzir a visibilidade preestabelecida dentro da API acessível. O atributo indica para um ambiente de tempo de execução no tempo de execução que solicitações de acesso dinâmico (por exemplo, através de reflexão ou de outras técnicas de chamada dinâmica) são para ser proporcionadas com visibilidade reduzida dentro da API acessível. Reduzir a visibilidade dentro de uma API pode de forma correspondente reduzir a geração de metadados. Em algumas concretizações, reduzir a visibilidade dentro de uma API inclui impedir acesso dinâmico à API.
[0011] Concretizações adicionais incluem proporcionar para um consumidor visibilidade especificada dentro de uma API. Código executável é executado em um ambiente de tempo de execução. O código executável é derivado a partir do código de aplicativo. Durante a execução do código executável, uma chamada dinâmica é recebida a partir de um consumidor para executar uma parte do código executável. A parte do código executável é derivada a partir de uma parte do código de aplicativo que se refere a uma API dentro de uma biblioteca. Uma visibilidade preestabelecida em tempo de execução dentro da API é acessada baseada no tipo da API.
[0012] Quaisquer atributos aplicados para a API são acessados. Os atributos aplicativos para a API podem ser indicativos de um desejo pelo auto da API de alterar a visibilidade preestabelecida em tempo de execução dentro da API. Quaisquer atributos aplicados para a parte do código de aplicativo são acessados. Os atributos aplicados para a parte do código de aplicativo podem ser indicativos de um desejo pelo autor de que o código de aplicativo proporcione menos visibilidade dentro da API do que indicado pela visibilidade preestabelecida em tempo de execução como alterada por quaisquer atributos aplicados para a API.
[0013] Uma visibilidade calculada dentro da API é determinada baseada em um ou mais dentre: a visibilidade preestabelecida em tempo de execução dentro da API, quaisquer atributos aplicados para a API, e quaisquer atributos aplicados para a parte do código de aplicativo que faz referência à API. A chamada dinâmica é proporcionada com a visibilidade calculada dentro da API.
[0014] Este Sumário é proporcionado para introduzir uma seleção de conceitos de uma forma simplificada, os quais são adicionalmente descritos abaixo na Descrição Detalhada. Este Sumário não é pretendido para identificar aspectos chave ou aspectos essenciais do assunto reivindicado, nem é pretendido para ser utilizado como um auxílio ao determinar o escopo do assunto reivindicado.
[0015] Aspectos e vantagens adicionais da invenção serão expostos na descrição a seguir, e em parte serão óbvios a partir da descrição, ou podem ser aprendidos pela prática da invenção. Os aspectos e vantagens da invenção podem ser imaginados e obtidos por meio dos instrumentos e combinações particularmente salientados nas concretizações anexas. Estes e outros aspectos da presente invenção irão se tornar mais totalmente aparentes a partir da descrição e das concretizações anexas seguintes, ou podem ser aprendidos pela prática da invenção como exposta daqui para frente.
[0016] De modo a descrever a maneira na qual as vantagens citadas acima e outras vantagens e aspectos podem ser obtidos, uma descrição mais particular da invenção resumidamente descrita acima será produzida por referência às concretizações específicas da mesma que são ilustradas nos desenhos anexos. Entendendo que estes desenhos representam somente concretizações típicas da invenção e, portanto, não são para ser considerados como sendo limitativos de seu escopo, a invenção será descrita e explicada com especificidade e detalhes adicionais através do uso dos desenhos acompanhantes, nos quais:
[0017] A Figura 1 ilustra uma arquitetura de computador ilustrativa que facilita controlar acesso em tempo de execução a uma interface de programação de aplicativo.
[0018] A Figura 2 ilustra um fluxograma de um método ilustrativo para controlar acesso em tempo de execução a uma interface de programação de aplicativo.
[0019] A Figura 3 ilustra uma arquitetura de computador ilustrativa que facilita reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível.
[0020] A Figura 4 ilustra um fluxograma de um método ilustrativo para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível.
[0021] A Figura 5 ilustra uma arquitetura de computador ilustrativa que facilita proporcionar para um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo.
[0022] A Figura 6 ilustra um fluxograma de um método ilustrativo para proporcionar para um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo.
[0023] A presente invenção se estende para métodos, sistemas e produtos de programa de computador para controlar acesso em tempo de execução a interfaces de programação de aplicativo. Concretizações da invenção incluem controlar acesso em tempo de execução a uma interface de programação de aplicativo (API). Um ambiente de tempo de execução proporcionar solicitações de acesso dinâmico (por exemplo, através da reflexão ou de outras técnicas de chamada dinâmica) com uma visibilidade preestabelecida dentro das APIs baseada no tipo da API. Por exemplo, a visibilidade preestabelecida dentro de APIs não públicas pode impedir acesso dinâmico.
[0024] Um conjunto de APIs combinadas em uma biblioteca é acessado. O conjunto de APIs inclui uma ou mais APIs públicas e uma ou mais APIs não públicas. Uma API identificada dentre o conjunto de APIs para a qual a visibilidade preestabelecida é proporcionada para solicitações de acesso dinâmico é para ser alterada.
[0025] A visibilidade preestabelecida dentro da API é alterada pela aplicação de um atributo para a API. O atributo indica para o ambiente de tempo de execução no tempo de execução que solicitações de acesso dinâmico são para ser proporcionadas com a visibilidade alterada dentro da API. Alterar a visibilidade pode incluir permitir acesso dinâmico a uma API não pública onde por condição preestabelecida o acesso dinâmico não é permitido.
[0026] Outras concretizações incluem reduzir a visibilidade preestabelecida dentro de uma API acessível. O código de aplicativo para um aplicativo é acessado. O código de aplicativo se refere a uma ou mais APIs acessíveis combinadas em uma biblioteca. Uma API acessível referida dentro do código de aplicativo é identificada. A API acessível é selecionada dentre as várias APIs acessíveis.
[0027] É determinado que a API acessível não é para ser dinamicamente acessada em tempo de execução. Um atributo é aplicado para a API acessível para reduzir a visibilidade preestabelecida dentro da API acessível. O atributo indica para um ambiente de tempo de execução em tempo de execução que solicitações de acesso dinâmico (por exemplo, através de reflexão ou de outras técnicas de chamada) são para ser proporcionadas com visibilidade reduzida dentro da API acessível. Reduzir a visibilidade dentro de uma API pode de forma correspondente reduzir a geração de metadados. Em algumas concretizações, reduzir a visibilidade dentro de uma API inclui impedir acesso dinâmico à API.
[0028] Concretizações adicionais incluem proporcionar para um consumidor visibilidade especificada dentro de uma API. Código executável é executado em um ambiente de tempo de execução. O código executável é derivado a partir do código de aplicativo. Durante a execução do código executável, uma chamada dinâmica é recebida a partir de um consumidor para executar uma parte do código executável. A parte do código executável é derivada a partir de uma parte do código de aplicativo que faz referência a uma API dentro de uma biblioteca. Uma visibilidade preestabelecida em tempo de execução dentro da API é acessada baseada no tipo da API.
[0029] Quaisquer atributos aplicados para a API são acessados. Os atributos aplicados para a API podem ser indicativos de um desejo pelo autor da API de alterar a visibilidade preestabelecida em tempo de execução dentro da API. Quaisquer atributos aplicados para a parte do código de aplicativo são acessados. Os atributos aplicados para a parte do código de aplicativo podem ser indicativos de um desejo pelo autor do código de aplicativo de proporcionar menos visibilidade dentro da API do que indicada pela visibilidade preestabelecida em tempo de execução como alterada por quaisquer atributos aplicativos para a API.
[0030] Uma visibilidade calculada dentro da API é determinada baseada em um ou mais dentre: a visibilidade preestabelecida em tempo de execução dentro da API, quaisquer atributos aplicados para a API, e quaisquer atributos aplicados para a parte do código de aplicativo que faz referência à API. A chamada dinâmica é proporcionada com visibilidade calculada dentro da API.
[0031] Concretizações da presente invenção podem compreender ou utilizar um computador de propósito especial ou de propósito geral incluindo hardware de computador, tal como, por exemplo, um ou ais processadores e memória do sistema, como discutido abaixo em maiores detalhes. Concretizações dentro do escopo da presente invenção também incluem meios físicos e outros meios legíveis por computador para transportar ou armazenar instruções e/ou estruturas de dados executáveis por computador. Tais meios legíveis por computador podem ser qualquer meio disponível que possa ser acessado por um sistema de computador de propósito geral ou de propósito especial. Meios legíveis por computador que armazenam instruções executáveis por computador são meios (dispositivos) de armazenamento do computador. Meios legíveis por computador que transportam instruções executáveis por comutador são meios de transmissão. Assim, a título de exemplo e não de limitação, concretizações da invenção podem compreender pelo menos dois tipos distintamente diferentes de meios legíveis por computador: meios (dispositivos) de armazenamento do computador e meios de transmissão.
[0032] Os meios (dispositivos) de armazenamento do computador incluem RAM, ROM, EEPROM, CD-ROM, unidades de estado sólido ("SSDs") (por exemplo, baseadas na RAM), memória Flash, memória com troca de fase ("PCM"), outros tipos de memória, outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser utilizado para armazenar meios de código de programa desejados na forma de instruções ou estruturas de dados executáveis por computador e que possa acessado por um computador de propósito geral ou de propósito especial.
[0033] Uma "rede" é definida como uma ou mais ligações de dados que permitem o transporte de dados eletrônicos entre sistemas e/ou módulos de computador e/ou outros dispositivos eletrônicos. Quando informação é transferida ou proporcionada através de uma rede ou de outra conexão de comunicações (seja fisicamente conectada, sem uso de fios, ou uma combinação de fisicamente conectada ou sem uso de fios) para um computador, o computador apropriadamente visualiza a conexão como um meio de transmissão. Meios de transmissão podem incluir uma rede e/ou ligações de dados que posem ser utilizadas para transportar meios desejados de código de programa na forma de instruções ou de estruturas de dados executáveis por computador e que podem ser acessadas por um computador de propósito geral ou de propósito especial. Combinações do dito acima também devem estar incluídas dentro do escopo de meios legíveis por computador.
[0034] Adicionalmente, ao alcançar vários componentes do sistema de computador, os meios de código de programa na forma de instruções ou de estruturas de dados executáveis por computador podem ser transferidos automaticamente do meio de transmissão para o meio (dispositivos) de armazenamento do computador (ou vice versa). Por exemplo, instruções ou estruturas de dados executáveis por computador recebidas através de uma rede ou ligação de dados podem ser colocadas em memória temporária na RAM dentro de um módulo de interface de rede (por exemplo, um "NIC"), e então, eventualmente transferidas para a RAM do sistema de computador e/ou para meios (dispositivos) de armazenamento do computador menos voláteis em um sistema de computador. Assim, deve ser entendido que os meios (dispositivos) de armazenamento do computador podem estar incluídos em componentes do sistema de computador que também (ou meios principalmente) utilizam meios de transmissão.
[0035] Instruções executáveis por computador compreendem, por exemplo, instruções e dados que quando executados em um processador causam que um computador de propósito geral, computador de propósito especial, ou dispositivo de processamento de propósito especial execute alguma função ou grupo de funções. As instruções executáveis por computador podem ser, por exemplo, binários, instruções em formato intermediário tal como linguagem assembly, ou mesmo código fonte. Apesar de o assunto ter sido descrito em linguagem específica para aspectos estruturais ou atos metodológicos, é para ser entendido que o assunto definido nas concretizações anexas não está necessariamente limitado aos aspectos ou atos descritos acima. Ao invés disso, os aspectos e atos descritos são revelados como formas ilustrativas para implementar as concretizações.
[0036] Os versados na técnica irão apreciar que a invenção pode ser praticada em ambientes de computação em rede com vários tipos de configurações de sistema de computador, incluindo computadores pessoais, computadores de mesa, computadores laptop, processadores de mensagem, dispositivos portáteis, sistemas multiprocessador, eletroeletrônicos baseados em microprocessador ou programáveis, PCs de rede, minicomputadores, computadores de grande porte, telefones celulares, PDAs, tablets, pagers, roteadores, comutadores, dentre outros. A invenção também pode ser praticadas em ambientes de sistema distribuído onde sistemas de computador, local e remoto, que são ligados (por ligações de dados fisicamente conectadas, ligações de dados sem uso de fios, ou por uma combinação de ligações de dados fisicamente conectada e sem uso de fios) através de uma rede, ambos executam tarefas. Em um ambiente de sistema distribuído, módulos de programa podem estar localizados tanto nos dispositivos de armazenamento em memória locais como remotos.
[0037] Concretizações da invenção também podem ser implementadas em ambientes de computação em nuvem. Nesta descrição e nas concretizações seguintes, "computação em nuvem" é definida como um modelo para permitir acesso à rede sob demanda a um grupo compartilhado de recursos de computação configuráveis. Por exemplo, a computação em nuvem pode ser empregada no mercado para oferecer acesso sob demanda ubíquo e conveniente ao grupo compartilhado de recursos de computação configuráveis. O grupo compartilhado de recursos de computação configuráveis pode ser rapidamente aprovisionado via virtualização e liberação com pouco esforço de gerenciamento ou interação com o provedor de serviço, e então por consequência dimensionado.
[0038] Um modelo de computação em nuvem pode ser composto de várias características tais como, por exemplo, autosserviço sob demanda, acesso amplo à rede, consulta de recursos, elasticidade rápida, serviço medido, e assim por diante. Um modelo de computação em nuvem também pode expor vários modelos de serviço, tal como, por exemplo, Software como um Serviço ("SaaS"), Plataforma como um Serviço ("PaaS"), e Infraestrutura como um Serviço ("IaaS"). Um modelo de computação em nuvem também pode ser implementado utilizando diferentes modelos de implementação tais como nuvem privada, nuvem da comunidade, nuvem pública, nuvem híbrida, dentre outros. Nesta descrição e nas concretizações, um "ambiente de computação em nuvem" é um ambiente no qual a computação em nuvem é empregada.
[0039] Concretizações da invenção permitem desenvolvedores de biblioteca mais precisamente e facilmente controlar quais de suas APIs das bibliotecas podem ser chamadas dinamicamente. Assim, seus problemas de manutenção e de atualização de versão podem ser mais apropriadamente controlados. Adicionalmente, desenvolvedores de aplicativo podem controlar quais APIs adicionalmente excluir dos cenários de chamada dinâmica, para minimizar a sobrecarga de suporte em tempo de execução.
[0040] A Figura 1 ilustra uma arquitetura de computador ilustrativa 100 que facilita controlar acesso a uma interface de programação de aplicativo (API). Referindo-se à Figura 1, a arquitetura de computador 100 inclui o ambiente de desenvolvimento 101 e o ambiente de tempo de execução 102. O ambiente de desenvolvimento 101 e o ambiente de tempo de execução 102 podem ser conectados um com o outro através (ou ser parte) de uma rede, tal como, por exemplo, um barramento do sistema, uma Rede de Área Local ("LAN"), uma Rede de Longa Distância ("WAN"), e mesmo a Internet. Por consequência, o ambiente de desenvolvimento 101 e o ambiente de tempo de execução 102, bem como outros sistemas de computador conectados e seus componentes, podem aumentar os dados relacionados com mensagem e trocar dados relacionados com mensagem (por exemplo, datagramas do Protocolo Internet ("IP") e outros protocolos de camada mais elevada que utilizam datagramas IP, tal como, Protocolo de Controle de Transmissão ("TCP"), Protocolo de Transferência de Hipertexto ("HTTP"), Protocolo Simples de Transferência de Correio ("SMTP"), etc., ou utilizando outros protocolos que não são de datagrama) através da rede.
[0041] O ambiente de desenvolvimento 101 pode ser um aplicativo de software que proporciona facilidades para desenvolvimento de software, incluindo, mas não limitado a: um editor de código fonte, automação de construção, um depurador, um sistema de controle de versão, um navegador de classe, um inspetor de objeto, um digrama de hierarquia de classes, etc. Em algumas concretizações, o ambiente de desenvolvimento 101 inclui ou está incluído em um Ambiente de Desenvolvimento Integrado (IDE). Um desenvolvedor de biblioteca pode utilizar o ambiente de desenvolvimento 101 para aplicar um atributo para uma API para alterar a visibilidade da API para as solicitações de acesso dinâmico.
[0042] O ambiente de tempo de execução 102 pode ser um aplicativo de software que proporciona facilidade para execução de software. O ambiente de tempo de execução 102 pode incluir um compilador (por exemplo, compilador no momento certo (JIT)) e/ou um interpretador para executar código desenvolvido no ambiente de desenvolvimento de software 101. Em algumas concretizações, o ambiente de tempo de execução 102 inclui ou está incluído em um Ambiente de Desenvolvimento Integrado (IDE). O ambiente de tempo de execução 102 pode incluir mecanismos (por exemplo, reflexão) para dinamicamente solicitar acesso a uma API.
[0043] O ambiente de desenvolvimento 101 e o ambiente de execução 102 podem ser integrados no mesmo ambiente ou podem ser residentes em ambientes separados.
[0044] O ambiente de tempo de execução 102 inclui o módulo de cálculo de visibilidade 109. O módulo de cálculo de visibilidade é configurado para calcular a visibilidade dentro de uma API baseado no tipo da API (por exemplo, interna, privada, pública, etc.) e nos atributos aplicados. As regras de visibilidade preestabelecida 108 podem definir uma visibilidade preestabelecida (por exemplo, permitir acesso dinâmico ou remover acesso dinâmico) para cada tipo de API. Os atributos aplicados podem ser utilizados para alterar ou sobrepor uma visibilidade preestabelecida. Assim, os atributos aplicados fornecem para um desenvolvedor de biblioteca controle mais preciso sobre como APIs individuais podem ser acessadas dinamicamente.
[0045] Em algumas concretizações, regras de visibilidade preestabelecida 108 definem que o acesso dinâmico é removido para APIs indicadas como privadas ou internas. Um desenvolvedor de biblioteca pode utilizar o ambiente de desenvolvimento 101 para aplicar um atributo para a API privada ou interna. O atributo aplicado pode indicar que acesso dinâmico é para ser permitido para a API interna ou privada. Ao receber uma chamada dinâmica para a API privada ou interna, o módulo de cálculo de visibilidade 109 pode determinar que o atributo aplicado sobrepõe a visibilidade preestabelecida (de acesso dinâmico removido) para a API privada ou interna. Assim, é permitido o acesso da chamada dinâmica à API privada ou interna.
[0046] A Figura 2 ilustra um fluxograma de um método ilustrativo 200 para controlar acesso a uma interface de programação de aplicativo (API). O método 200 será descrito com respeito aos componentes e dados da arquitetura de computador 100.
[0047] O método 200 inclui acessar um conjunto de interfaces de programação de aplicativo (APIs) combinadas em uma biblioteca, o conjunto de interfaces de programação de aplicativo (APIs) incluindo uma ou mais interfaces de programação de aplicativo (APIs) pública e uma ou mais interfaces de programação de aplicativo (APIs) não públicas (201). Por exemplo, o ambiente de desenvolvimento 101 pode acessar a biblioteca 103. A biblioteca 103 inclui uma ou mais APIs pública incluindo a API pública 104. A biblioteca 103 inclui uma ou mais APIs não públicas (por exemplo, privadas ou internas) incluindo a API não pública 106.
[0048] O método 200 inclui identificar uma interface de programação de aplicativo (API) a partir do conjunto de interfaces de programação de aplicativo (APIs) para a qual a visibilidade preestabelecida proporcionada para solicitações de acesso dinâmico é para ser alterada (202). Por exemplo, o ambiente de desenvolvimento 101 (possivelmente em resposta à entrada do autor) pode identificar que a visibilidade preestabelecida para solicitações de acesso dinâmico (por exemplo, utilizando reflexão ou outras técnicas de chamada dinâmica) dentro da API não pública 106 é para ser alterada.
[0049] O método 200 inclui alterar a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) para uma visibilidade alterada pela aplicação de um atributo para a interface de programação de aplicativo (API), o atributo indicando para o ambiente de tempo de execução no tempo de execução que é para ser proporcionada a visibilidade alterada para as solicitações de acesso dinâmico dentro da interface de programação de aplicativo (API) (203). Por exemplo, o autor 113 pode entrar com a entrada de visibilidade 112 no ambiente de desenvolvimento 101. Em resposta à entrada de visibilidade 112, o ambiente de desenvolvimento 101 pode aplicar o atributo 107 para a API não pública 106. O atributo 107 pode indicar para o ambiente de tempo de execução 102 que a visibilidade preestabelecida para APIs não públicas definidas nas regras de visibilidade preestabelecida 108 é para ser alterada para a API não pública 106.
[0050] Subsequentemente, a biblioteca 103 pode ser compilada junto com outro código fonte para o código executável 111. Durante a execução do código executável 111, o módulo de cálculo de visibilidade 109 pode considerar tanto as regras de visibilidade preestabelecida 108 como o atributo 107 quando calculando a visibilidade dentro da API não pública 106. Em algumas concretizações, o atributo 107 indica que o acesso dinâmico para a API não pública 106 é permitido mesmo que, no entanto, as regras de visibilidade preestabelecida 108 indiquem que o acesso dinâmico às APIs não públicas é para ser impedido.
[0051] A Figura 3 ilustra uma arquitetura de computador ilustrativa 100 que facilita reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo (API) acessível. Referindo-se à Figura 3, a arquitetura de computador 300 inclui o ambiente de desenvolvimento 301 e o ambiente de tempo de execução 302. O ambiente de desenvolvimento 301 e o ambiente de tempo de execução 302 podem ser conectados um com o outro através (ou ser parte) de uma rede, tal como, por exemplo, um barramento do sistema, uma Rede de Área Local ("LAN"), uma Rede de Longa Distância ("WAN"), e mesmo a Internet. Por consequência, o ambiente de desenvolvimento 301 e o ambiente de tempo de execução 302 bem como quaisquer outros sistemas de computador conectados e seus componentes, podem criar dados relacionados com mensagem e trocar os dados relacionados com mensagem (por exemplo, datagramas do Protocolo Internet ("IP") e outros protocolos de camadas mais elevadas que utilizam datagramas IP, tais como Protocolo de Controle de Transmissão ("TCP"), Protocolo de Transferência de Hipertexto ("HTTP"), Protocolo Simples de Transferência de Correio ("SMTP"), etc., ou utilizando outros protocolos que não são de datagrama) através da rede.
[0052] O ambiente de desenvolvimento 301 pode ser um aplicativo de software que proporciona facilidades para desenvolvimento de software, incluindo, mas não limitadas a: um editor de código fonte, automação incorporada, um depurador, um sistema de controle de versão, um navegador de classes, um inspetor de objeto, um diagrama de hierarquia de classe, etc. Em algumas concretizações, o ambiente de desenvolvimento 301 inclui ou está incluído em um Ambiente de Desenvolvimento Integrado (IDE). Um desenvolvedor de aplicativo pode utilizar o ambiente de desenvolvimento 301 para aplicar um atributo para código fazendo referência a uma API acessível (por exemplo, incluída em uma biblioteca externa). Os atributos aplicados para o código fazendo referência a uma API acessível podem ser utilizados para reduzir a visibilidade preestabelecida dentro da API acessível.
[0053] O ambiente de tempo de execução 302 pode ser um aplicativo de software que proporciona facilidades para execução de software. O ambiente de tempo de execução pode incluir um compilador (por exemplo, um compilador de momento certo (JIT)) e/ou um interprete para executar código desenvolvido no ambiente de desenvolvimento de software 301. Em algumas concretizações, o ambiente de tempo de execução 302 inclui ou está incluído em um Ambiente de Desenvolvimento Integrado (IDE). O ambiente de tempo de execução 302 pode incluir mecanismos (por exemplo, reflexão) para dinamicamente solicitar acesso a uma API.
[0054] O ambiente de desenvolvimento 301 e o ambiente de tempo de execução 302 podem ser integrados dentro do mesmo ambiente ou podem ser residentes em ambientes separados.
[0055] O ambiente de tempo de execução 302 inclui o módulo de cálculo de visibilidade 309. O módulo de cálculo de visibilidade 309 é configurado para calcular a visibilidade dentro de uma API acessível (por exemplo, API pública ou API não pública atribuída para permitir acesso dinâmico) baseado nos atributos aplicados para código fazendo referência à API acessível. Regras de visibilidade preestabelecida 308 podem permitir acesso dinâmico às API acessíveis. Assim, os atributos aplicados fornecem para um desenvolvedor de aplicativo um mecanismo para excluir APIs de outro modo acessíveis (por exemplo, incluídas em uma biblioteca externa) do acesso dinâmico. Excluir uma API de outro modo acessível do acesso dinâmico minimiza a sobrecarga de suporte em tempo de execução (por exemplo, geração de metadados) e desse modo, conserva recursos.
[0056] A Figura 4 ilustra um fluxograma de um método ilustrativo 400 para reduzir visibilidade preestabelecida dentro de uma interface de programação de aplicativo (API) acessível. O método 400 será descrito com respeito aos componentes e dados da arquitetura de computador 300.
[0057] O método 400 inclui acessar código de aplicativo para um aplicativo, o código de aplicativo fazendo referência a uma ou mais interfaces de programação de aplicativo (APIs) acessíveis combinadas em uma biblioteca (401). Por exemplo, o ambiente de desenvolvimento 301 pode acessar o código de aplicativo 314. O ambiente de desenvolvimento 310 também pode acessar a biblioteca 30. O código de aplicativo 314 pode fazer referência a uma ou mais APIs, tais como, por exemplo, as APIs 304 e 306, incluídas na biblioteca 303.
[0058] O método 400 inclui identificar uma interface de programação de aplicativo (API) acessível referida dentro do código de aplicativo, a interface de programação de aplicativo (API) acessível selecionada de entre a uma ou mais interfaces de programação de aplicativo (APIs) (402) acessíveis. Por exemplo, o ambiente de desenvolvimento 301 pode identificar a API 306 referida pela referência da API 316.
[0059] O método 400 inclui determinar que a interface de programação de aplicativo (API) acessível não é para ser dinamicamente acessada em tempo de execução (403). Por exemplo, o ambiente de desenvolvimento 301 (possivelmente em resposta à entrada do autor) pode determinar que acesso dinâmico à API 306 é para ser impedido.
[0060] O método 400 inclui reduzir a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) acessível para uma visibilidade reduzida pela aplicação de um atributo para a parte do código de aplicativo fazendo referência à interface de programação de aplicativo (API) acessível, o atributo indicando para o ambiente de tempo de execução que a visibilidade reduzida é para ser proporcionada para as solicitações de acesso dinâmico dentro da interface de programação de aplicativo (API) acessível (404). Por exemplo, o autor 313 pode informar a entrada de visibilidade 312 no ambiente de desenvolvimento 301. Em resposta à entrada de visibilidade 312, o ambiente de desenvolvimento 301 pode aplicar o atributo 317 para a referência de API 316 (uma referência à API 306). O atributo 317 pode indicar para o ambiente de tempo de execução 302 que a visibilidade preestabelecida para a API 306 é para ser reduzida.
[0061] Subsequentemente, o código de aplicativo 314 e a biblioteca 303 podem ser compilados juntos (possivelmente com outro código fonte) no código executável 311. Durante a execução do código executável 311, o módulo de cálculo de visibilidade 309 pode considerar tanto as regras de visibilidade preestabelecida 308 como o atributo 317 quando calculando a visibilidade dentro da API 306. Em algumas concretizações, o atributo 317 indica que o acesso dinâmico à API 306 é impedido mesmo que, no entanto, as regras de visibilidade preestabelecida 308 indiquem que o acesso dinâmico às APIs acessíveis é para ser permitido.
[0062] A visibilidade limitada dentro de uma API pode incluir não gerar metadados para a API. Por exemplo, como representado na arquitetura de computador 300, metadados não são gerados para a API 306. Por outro lado, os metadados 319 podem ser gerados para a API 304 (outra API acessível referenciada a partir do código de aplicativo 314).
[0063] A Figura 5 ilustra um ambiente de tempo de execução ilustrativo 500 que facilita proporcionar para um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo (API). Referindo-se à Figura 5, o ambiente de tempo de execução 500 inclui o módulo de cálculo de visibilidade 501 e o consumidor 531. O módulo de cálculo de visibilidade 501 e o consumidor 531 podem ser conectados um com o outro através (ou ser parte) de uma rede, tal como, por exemplo, um barramento do sistema, uma Rede de Área Local ("LAN"), uma Rede de Longa Distância ("WAN"), e mesmo da Internet. Por consequência, o módulo de cálculo de visibilidade 501 e o consumidor 531, bem como quaisquer outros sistemas de computador conectados e seus componentes, podem criar dados relacionados com mensagem e trocar dados relacionados com mensagem (por exemplo, datagramas do Protocolo Internet ("IP") e outros protocolos de camada mais elevada que utilizam datagramas IP, tais como, o Protocolo de Controle de Transmissão ("TCP"), o Protocolo de Transferência de Hipertexto ("HTTP"), o Protocolo Simples de Transferência de Correio ("SMTP"), etc., ou utilizando outro protocolo(s) que não seja de datagrama através da rede.
[0064] O ambiente de tempo de execução 500 pode ser um aplicativo de software que proporcionar facilidades para execução de software. O ambiente de tempo de execução pode incluir um compilador (por exemplo, um compilador de momento certo (JIT)) e/ou um interpretador para executar código desenvolvido no ambiente de desenvolvimento de software 500. Em algumas concretizações, o ambiente de tempo de execução 500 inclui ou está incluído em um Ambiente de Desenvolvimento Integrado (IDE). O ambiente de tempo de execução 500 pode incluir mecanismos (por exemplo, reflexão) para dinamicamente solicitar acesso a uma API.
[0065] O ambiente de tempo de execução 500 inclui o módulo de cálculo de visibilidade 501. O módulo de cálculo de visibilidade 501 é configurado para calcular a visibilidade dentro de cada uma das várias APIs agrupadas juntas em uma biblioteca. A visibilidade pode ser calculada para uma API baseada em um tipo da API (por exemplo, interna, privada, pública), nos atributos aplicados (por exemplo, um autor da biblioteca) para a API, e nos atributos aplicados para o aplicativo que faz referência à API. Os atributos aplicados podem ser utilizados para alterar, sobrepor, reduzir, etc., uma visibilidade preestabelecida.
[0066] Em algumas concretizações, as regras de visibilidade preestabelecida 502 definem que acesso dinâmico é removido para APIs não públicas (por exemplo, privadas ou internas) e que o acesso dinâmico é permitido para APIs públicas. Entretanto, o autor de uma API não pública (por exemplo, um autor de biblioteca) pode aplicar um atributo para a API não pública para sobrepor a visibilidade preestabelecida e permitir acesso dinâmico à API não pública. Da mesma forma, o autor de uma API pública (por exemplo, um autor de biblioteca) pode aplicar um atributo para a API pública para sobrepor a visibilidade preestabelecida e negar acesso dinâmico à API pública. Outras regras de visibilidade preestabelecida também são possíveis.
[0067] Para quaisquer APIs dinamicamente acessíveis (sejam dinamicamente acessíveis por condição preestabelecida ou dinamicamente acessíveis por um atributo aplicado), um autor externo (por exemplo, um autor de aplicativo) pode aplicar um atributo para código fazendo referência à API dinamicamente acessível para remover acesso dinâmico da API. Assim, um autor de aplicativo pode minimizar a sobrecarga de suporte em tempo de execução (por exemplo, geração de metadados) e desse modo conservar recursos.
[0068] A Figura 6 ilustra um fluxograma de um método ilustrativo 600 para proporcionar para um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo (API). O método 600 será descrito com respeito aos componentes e dados do ambiente de tempo de execução 500.
[0069] O método 600 inclui executar código executável no ambiente de tempo de execução, o código executável derivado a partir do código de aplicado (601). Por exemplo, o código executável pode ser executado no ambiente de tempo de execução 500. O código executável 503 pode ser derivado a partir do código de aplicativo que inclui referências às APIs contidas em uma biblioteca. Por exemplo, às referências à API 511, e 517 podem fazer referência às APIs contidas em uma biblioteca. As APIs contidas na biblioteca podem incluir as APIs 513 e 518.
[0070] O método 600 inclui durante a execução do código executável, o método 600 inclui receber uma chamada dinâmica a partir de um consumidor para executar uma parte do código executável, a parte do código executável derivada a partir de uma parte do código de aplicativo que faz referência a uma interface de programação de aplicativo (API) dentro de uma biblioteca (602). Por exemplo, a chamada dinâmica 521 pode ser recebida a partir do consumidor 531. A chamada dinâmica 521 pode ser uma chamada para executar uma parte do código executável 503.
[0071] Em uma concretização, a chamada dinâmica 531 é uma chamada para executar código executável que inclui a referência à API 511. A referência à API 511 pode fazer referência à API 513 ou à API 518. Em outra concretização, a chamada dinâmica 521 é uma chamada para executar código executável que inclui a referência à API 517. A referência à API 517 pode fazer referência à API 513 ou à API 518.
[0072] O método 600 inclui acessar uma visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API) baseada no tipo da interface de programação de aplicativo (API) (603). Como indicado pelo tipo 514, a API 513 é uma API não pública. Assim, quando uma referência à API faz referência à API 513, uma visibilidade preestabelecida em tempo de execução (por exemplo, impedindo acesso dinâmico) para APIs não públicas pode ser acessada a partir das regras de visibilidade preestabelecida 502 (para a API 513). Como indicado pelo tipo 519, a API 6518 é uma API pública. Assim, quando uma referência à API faz referência à API 518, uma visibilidade preestabelecida em tempo de execução (por exemplo, permitindo acesso dinâmico) para APIs públicas pode ser acessada a partir das regras de visibilidade preestabelecida 502 (para a API 518).
[0073] O método 600 inclui acessar quaisquer atributos aplicados para a interface de programação de aplicativo (API), atributos aplicados para a interface de programação de aplicativo (API) indicativos de um desejo pelo autor da interface de programação de aplicativo (API) de alterar a visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API) (604). Por exemplo, quando uma referência à API faz referência à API 513, o atributo 516 pode ser acessado. O atributo 516 pode indicar um desejo pelo autor da biblioteca de alterar a visibilidade preestabelecida em tempo de execução (como definida nas regras de visibilidade preestabelecida 502) dentro da API 513. Por exemplo, por condição preestabelecida, o acesso dinâmico às APIs não públicas pode ser impedido. Entretanto, o atributo 513 pode indicar que o acesso dinâmico à API 513 é para ser permitido.
[0074] O método 600 pode incluir acessar quaisquer atributos aplicados para a parte do código de aplicativo que faz referência à interface de programação de aplicativo (API), atributos aplicados para a parte do código de aplicativo indicativos de um desejo do autor do código de aplicativo em proporcionar visibilidade dentro da interface de programação de aplicativo (API) para uma extensão menor do que indicada pela visibilidade preestabelecida em tempo de execução como alterada por quaisquer atributos aplicados para a interface de programação de aplicativo (API) (605). Por exemplo, quando a chamada dinâmica 521 é uma chamada para executar código executável que inclui a referência à API 511, o atributo 512 pode ser acessado. O atributo 512 pode indicar um desejo por um autor do aplicativo de reduzir a visibilidade dentro de uma API de referência (por exemplo, API 513 ou API 518). Por exemplo, o atributo 512 pode indicar que o acesso dinâmico à API de referência (por exemplo, API 513 ou API 518) é para ser impedido. Assim, mesmo se o autor da biblioteca de outro modo permite acesso dinâmico a uma API, o desenvolvedor de aplicativo pode aplicar o atributo 512 para impedir acesso dinâmico à API.
[0075] O método 600 inclui determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) baseado em um ou mais dentre: a visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API), quaisquer atributos aplicados para uma interface de programação de aplicativo (API), e em quaisquer atributos aplicados para a parte do código de aplicativo que faz referência à interface de programação de aplicativo (API) (606). Assim, o módulo de cálculo de visibilidade 501 pode determinar uma visibilidade calculada 522 dentro de uma API baseado em uma visibilidade preestabelecida para o tipo de API (como definida nas regras de visibilidade preestabelecida 502), em quaisquer atributos aplicados para a API, e em quaisquer atributos aplicados para uma referência à API que faz referência à API.
[0076] O método 600 inclui proporcionar a chamada dinâmica com visibilidade dentro da interface de programação de aplicativo (API) de acordo com a visibilidade calculada (607). Por exemplo, o consumidor 531 pode receber a visibilidade 522 dentro de uma API dinamicamente chamada no código executável 503. Os resultados da chamada dinâmica 521 também podem ser retornados para o consumidor 531. Os resultados 524 podem indicar que o acesso dinâmico à API dinamicamente chamada não é permitido.
[0077] Dentro do código executável 503, várias diferentes combinações de código de referência e de APIs são possíveis. Em uma concretização, a chamada dinâmica 521 utiliza a referência à API 511 para chamar a API 513. Nesta concretização, a visibilidade 522 é determinada a partir de uma visibilidade preestabelecida para o tipo de API 514 (por exemplo, como definida nas regras de visibilidade preestabelecida 502), do atributo 512, e do atributo 516. Em outra concretização, a chamada dinâmica 521 utiliza a referência à API 511 para chamar a API 518. Nesta concretização, a visibilidade 522 é determinada a partir de uma visibilidade preestabelecida para o tipo de API (por exemplo, como definida nas regras de visibilidade preestabelecida 502) e no atributo 512.
[0078] Em uma concretização adicional, a chamada dinâmica 521 utiliza a referência à API 517 para chamar a API 513. Nesta concretização adicional, a visibilidade 522 é determinada a partir de uma visibilidade preestabelecida para o tipo de API 514 (por exemplo, como definida nas regras de visibilidade preestabelecida 502) e no atributo 516. Em uma concretização adicional, a chamada dinâmica 521 utiliza a referência à API 517 para chamar a API 518. Nesta concretização adicional, a visibilidade 522 é determinada a partir de uma visibilidade preestabelecida para o tipo de API 519 (por exemplo, como definida nas regras de visibilidade preestabelecida 502).
[0079] A presente invenção pode ser incorporada em outras formas específicas sem afastamento de seu espírito ou características essenciais. As concretizações descritas são para ser consideradas em todos os aspectos somente como ilustrativas e não restritivas. Portanto, o escopo da invenção é indicado pelas concretizações anexas ao invés do que pela descrição precedente. Todas as alterações que surjam dentro do significado e faixa de equivalência das concretizações são para ser abrangidas dentro de seu escopo.
Claims (20)
1. Método para alterar visibilidade de tempo de execução de uma interface de programação de aplicativo (API), em um sistema de computador, o sistema de computador incluindo um ambiente de desenvolvimento para desenvolver código executável que inclui interfaces de programação de aplicativo (APIs), o código executável para execução em um ambiente de tempo de execução que pode dinamicamente solicitar acesso às interfaces de programação de aplicativo (APIs), o ambiente de tempo de execução proporcionando solicitações de acesso dinâmico com uma visibilidade preestabelecida dentro das interfaces de programação de aplicativo (APIs) baseada no tipo da interface de programação de aplicativo (API), o método caracterizado pelo fato de que compreende as etapas de: acessar um conjunto de interfaces de programação de aplicativo (APIs) combinadas em uma biblioteca, o conjunto de interfaces de programação de aplicativo (APIs) incluindo uma ou mais interfaces de programação de aplicativo (APIs) públicas e uma ou mais interfaces de programação de aplicativo (APIs) não públicas; identificar uma interface de programação de aplicativo (API) a partir do conjunto de interfaces de programação de aplicativo (APIs) para a qual a visibilidade preestabelecida proporcionada para solicitações de acesso dinâmico é para ser alterada, uma visibilidade preestabelecida dentro da interface de programação de aplicativo (API) definida por um tipo de interface de programação de aplicativo (API) da interface de programação de aplicativo (API), a visibilidade preestabelecida definindo quais outros componentes de software podem acessar a interface de programação de aplicativo (API) em tempo de execução; e sobrepor a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) ao atribuir um atributo adicional à interface de programação de aplicativo (API), o atributo adicional indicando para um módulo de cálculo de visibilidade de tempo de execução que solicitações de acesso dinâmico de tempo de execução para acessar a interface de programação de aplicativo (API) são para serem avaliadas utilizando o atributo adicional atribuído à interface de programação de aplicativo (API).
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que identificar uma interface de programação de aplicativo (API) compreende expor a interface de programação de aplicativo (API) para o autor da interface de programação de aplicativo (API).
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que sobrepor a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) compreende o autor da interface de programação de aplicativo (API) alterando a visibilidade preestabelecida da interface de programação de aplicativo.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que identificar uma interface de programação de aplicativo (API) compreende identificar uma interface de programação de aplicativo (API) não pública, a visibilidade preestabelecida para a interface de programação de aplicativo (API) não pública impedindo solicitações de acesso dinâmico à interface de programação de aplicativo (API) não pública.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que sobrepor a visibilidade preestabelecida da interface de programação de aplicativo (API) compreende atribuir um atributo à interface de programação de aplicativo (API) não pública, o atributo sobrepondo a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) não pública de modo a permitir solicitações de acesso dinâmico à interface de programação de aplicativo (API) não pública.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que identificar uma interface de programação de aplicativo (API) compreende identificar uma interface de programação de aplicativo (API) pública, a visibilidade preestabelecida para a interface de programação de aplicativo (API) pública permitindo solicitações de acesso dinâmico à interface de programação de aplicativo (API) pública.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que sobrepor a visibilidade preestabelecida da interface de programação de aplicativo (API) compreende atribuir atributo à interface de programação de aplicativo (API) pública, o atributo sobrepondo a visibilidade preestabelecida para a interface de programação de aplicativo (API) pública de modo a impedir solicitações de acesso dinâmico à interface de programação de aplicativo (API) pública.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que solicitações de acesso dinâmico utilizam reflexão.
9. Método para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo (API) acessível, em um sistema de computador, o sistema de computador incluindo um ambiente de desenvolvimento para desenvolver código executável que inclui interfaces de programação de aplicativo (APIs), o código executável para execução em um ambiente de tempo de execução que pode dinamicamente solicitar acesso às interfaces de programação de aplicativo (APIs), o ambiente de tempo de execução possuindo visibilidade preestabelecida dentro das interfaces de programação de aplicativo (APIs), o método caracterizado pelo fato de que compreende as etapas de: acessar código de aplicativo para um aplicativo, o código de aplicativo fazendo referência a uma ou mais interfaces de programação de aplicativo (APIs) combinadas em uma biblioteca; identificar uma interface de programação de aplicativo (API) acessível referida dentro do código de aplicativo, a interface de programação de aplicativo (API) acessível selecionada a partir da uma ou mais interfaces de programação de aplicativo (APIs) acessíveis, uma visibilidade preestabelecida dentro da interface de programação de aplicativo (API) definida por um tipo de interface de programação de aplicativo (API) da interface de programação de aplicativo (API), a visibilidade preestabelecida definindo quais outros componentes de software podem acessar a interface de programação de aplicativo (API) em tempo de execução; determinar que a interface de programação de aplicativo (API) é acessível a uma pluralidade de componentes de software em tempo de execução com base no tipo de interface de programação de aplicativo (API); sobrepor a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) acessível ao atribuir um atributo adicional à parte do código de aplicativo fazendo referência à interface de programação de aplicativo (API) acessível, o atributo adicional indicando para um módulo de cálculo de visibilidade de tempo de execução que solicitações de acesso dinâmico de tempo de execução são para serem evitadas por pelo menos um da pluralidade de componentes de software.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que identificar uma interface de programação de aplicativo (API) acessível referida dentro do código de aplicativo compreende identificar a interface de programação de aplicativo (API) acessível fazendo referência ao autor do código de aplicativo.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que atribuir um atributo adicional a uma parte do código de aplicativo compreende o autor do código de aplicativo atribuído o atributo adicional para a parte do código de aplicativo.
12. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que atribuir um atributo adicional a uma parte do código de aplicativo compreende atribuir um atributo adicional a uma parte do código de aplicativo fazendo referência a uma API pública.
13. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que atribuir um atributo adicional a uma parte do código de aplicativo compreende atribuir um atributo adicional a uma parte do código de aplicativo fazendo referência a uma API não pública, a API não pública possuindo um atributo adicional que indica que acesso dinâmico à API não pública é permitido.
14. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que sobrepor a visibilidade preestabelecida dentro da interface de programação de aplicativo (API) compreende atribuir atributo à parte do código de aplicativo fazendo referência à interface de programação de aplicativo (API) para indicar ao módulo de cálculo de visibilidade que metadados para a interface de programação de aplicativo (API) não são para serem gerados em tempo de execução.
15. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que solicitações de acesso dinâmico utilizam reflexão.
16. Método para proporcionar a um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo (API), em um sistema de computador, o sistema de computador incluindo um ambiente de execução que pode solicitar acesso dinâmico às interfaces de programação de aplicativo (APIs), o ambiente de tempo de execução proporcionando solicitações de acesso dinâmico com uma visibilidade preestabelecida dentro das interfaces de programação de aplicativo (APIs) com base no tipo de interface de programação de aplicativo (API), o método caracterizado pelo fato de que compreende as etapas de: executar código executável no ambiente de tempo de execução, o código executável derivado a partir do código de aplicativo; durante a execução do código executável: receber uma chamada dinâmica a partir de um consumidor para executar uma parte do código executável, a parte do código executável derivada a partir de uma parte do código de aplicativo que faz referência a uma interface de programação de aplicativo (API) dentro de uma biblioteca; acessar uma visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API) com base no tipo da interface de programação de aplicativo (API), a visibilidade preestabelecida definindo quais outros componentes de software podem acessar a interface de programação de aplicativo (API) em tempo de execução; acessar quaisquer atributos adicionais atribuídos à interface de programação de aplicativo (API), os atributos adicionais atribuídos indicativos de um desejo do autor da interface de programação de aplicativo (API) para sobrepor a visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API); acessar quaisquer atributos adicionais atribuídos à parte do código de aplicativo que faz referência à interface de programação de aplicativo (API), os atributos adicionais atribuídos à parte do código de aplicativo indicativos de um desejo do autor do código de aplicativo para ajustar acesso em tempo de execução da interface de programação de aplicativo (API) para uma visibilidade mais restritiva do que a visibilidade preestabelecida sobreposta poderia permitir; determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) com base em um ou mais dentre: a visibilidade preestabelecida em tempo de execução dentro da interface de programação de aplicativo (API), quaisquer atributos adicionais atribuídos à interface de programação de aplicativo (API), e quaisquer atributos adicionais atribuídos à parte do código de aplicativo; e proporcionar a chamada dinâmica visibilidade calculada dentro da interface de programação de aplicativo (API).
17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) compreende determinar uma visibilidade calculada para uma API com base em um tipo de API, em um atributo atribuído à API, e em um atributo atribuído a código que faz referência à API.
18. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) compreende determinar uma visibilidade calculada para uma API com base em um tipo de API e em um atributo atribuído à API.
19. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) compreende determinar uma visibilidade calculada para uma API com base em um tipo de API e em um atributo atribuído à parte de código.
20. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que determinar uma visibilidade calculada dentro da interface de programação de aplicativo (API) compreende determinar uma visibilidade calculada para uma API com base unicamente em um tipo de API.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/867,143 US8990839B2 (en) | 2013-04-22 | 2013-04-22 | Controlling runtime access to application programming interfaces |
US13/867,143 | 2013-04-22 | ||
PCT/US2014/034739 WO2014176137A1 (en) | 2013-04-22 | 2014-04-21 | Controlling runtime access to application programming interfaces |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112015026327A2 BR112015026327A2 (pt) | 2017-07-25 |
BR112015026327A8 BR112015026327A8 (pt) | 2019-12-24 |
BR112015026327B1 true BR112015026327B1 (pt) | 2022-05-17 |
Family
ID=50771633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112015026327-5A BR112015026327B1 (pt) | 2013-04-22 | 2014-04-21 | Método para alterar visibilidade de tempo de execução de uma interface de programação de aplicativo, método para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível, e método para proporcionar a um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo |
Country Status (11)
Country | Link |
---|---|
US (3) | US8990839B2 (pt) |
EP (2) | EP3982257A1 (pt) |
JP (1) | JP6473442B2 (pt) |
KR (1) | KR102183185B1 (pt) |
CN (1) | CN105229603B (pt) |
AU (2) | AU2014257298B2 (pt) |
BR (1) | BR112015026327B1 (pt) |
CA (1) | CA2907904A1 (pt) |
MX (1) | MX357050B (pt) |
RU (1) | RU2658190C2 (pt) |
WO (1) | WO2014176137A1 (pt) |
Families Citing this family (13)
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 |
US10104090B2 (en) * | 2015-08-25 | 2018-10-16 | Oracle International Corporation | Restrictive access control for modular reflection |
US10360008B2 (en) | 2016-09-16 | 2019-07-23 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
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 |
EP3428793A1 (de) * | 2017-07-10 | 2019-01-16 | Siemens Aktiengesellschaft | Verfahren zur unterstützung eines anwenders bei einer erstellung einer software-applikation und computerprogramm mit einer implementation des verfahrens sowie im rahmen eines solchen verfahrens verwendbare programmierschnittstelle |
US10817280B1 (en) * | 2018-05-21 | 2020-10-27 | Amazon Technologies, Inc. | Overriding shared service interfaces |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
US11275624B2 (en) * | 2018-06-14 | 2022-03-15 | 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版本控制方法、装置及存储介质 |
Family Cites Families (36)
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) |
WO1998038587A1 (en) * | 1997-02-26 | 1998-09-03 | Siebel Systems, Inc. | Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions |
FR2801118B1 (fr) * | 1999-11-17 | 2001-12-21 | Bull Cp8 | Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque |
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 |
AU2002332710A1 (en) * | 2001-08-29 | 2003-03-18 | Globespanvirata Incorporated | Secure access to software functionalities |
US7162721B2 (en) * | 2001-12-03 | 2007-01-09 | Sun Microsystems, Inc. | Application-independent API for distributed component collaboration |
US7305469B2 (en) * | 2001-12-18 | 2007-12-04 | Ebay Inc. | Prioritization of third party access to an online commerce site |
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 |
US7657871B2 (en) * | 2005-07-22 | 2010-02-02 | Sbc Knowledge Ventures, L.P. | Method and system of managing configuration profiles of a plurality of deployed network elements |
CN100498697C (zh) * | 2005-09-29 | 2009-06-10 | 腾讯科技(深圳)有限公司 | 一种应用编程接口控制方法和控制功能模块 |
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 |
WO2008094540A1 (en) | 2007-01-29 | 2008-08-07 | Mashery, Inc. | 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 |
US8312425B2 (en) * | 2008-03-31 | 2012-11-13 | International Business Machines Corporation | Dynamic template instantiation |
US8239340B2 (en) | 2008-04-11 | 2012-08-07 | Trevor Hanson | Message conduit systems with algorithmic data stream control and methods for processing thereof |
US8397290B2 (en) * | 2008-06-27 | 2013-03-12 | Microsoft Corporation | Granting least privilege access for computing processes |
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 KR KR1020157033296A patent/KR102183185B1/ko active IP Right Grant
- 2014-04-21 CN CN201480022956.XA patent/CN105229603B/zh active Active
- 2014-04-21 EP EP21212020.8A patent/EP3982257A1/en active Pending
- 2014-04-21 JP JP2016510711A patent/JP6473442B2/ja active Active
- 2014-04-21 WO PCT/US2014/034739 patent/WO2014176137A1/en active Application Filing
- 2014-04-21 RU RU2015145292A patent/RU2658190C2/ru active
- 2014-04-21 CA CA2907904A patent/CA2907904A1/en not_active Abandoned
- 2014-04-21 AU AU2014257298A patent/AU2014257298B2/en active Active
- 2014-04-21 BR BR112015026327-5A patent/BR112015026327B1/pt active IP Right Grant
- 2014-04-21 EP EP14725877.6A patent/EP2989539B1/en active Active
- 2014-04-21 MX MX2015014870A patent/MX357050B/es active IP Right Grant
-
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
Also Published As
Publication number | Publication date |
---|---|
KR102183185B1 (ko) | 2020-11-25 |
EP3982257A1 (en) | 2022-04-13 |
WO2014176137A1 (en) | 2014-10-30 |
MX357050B (es) | 2018-06-25 |
CN105229603B (zh) | 2019-03-22 |
AU2014257298B2 (en) | 2019-06-13 |
RU2658190C2 (ru) | 2018-06-19 |
US9785483B2 (en) | 2017-10-10 |
JP6473442B2 (ja) | 2019-02-20 |
BR112015026327A2 (pt) | 2017-07-25 |
AU2019229450A1 (en) | 2019-10-03 |
US11003511B2 (en) | 2021-05-11 |
KR20160003023A (ko) | 2016-01-08 |
US20190095256A1 (en) | 2019-03-28 |
RU2015145292A3 (pt) | 2018-03-27 |
JP2016517120A (ja) | 2016-06-09 |
US8990839B2 (en) | 2015-03-24 |
US20150169387A1 (en) | 2015-06-18 |
CN105229603A (zh) | 2016-01-06 |
CA2907904A1 (en) | 2014-10-30 |
MX2015014870A (es) | 2016-03-09 |
RU2015145292A (ru) | 2017-04-26 |
EP2989539B1 (en) | 2022-08-17 |
BR112015026327A8 (pt) | 2019-12-24 |
US20140317641A1 (en) | 2014-10-23 |
AU2019229450B2 (en) | 2020-12-10 |
EP2989539A1 (en) | 2016-03-02 |
AU2014257298A1 (en) | 2015-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112015026327B1 (pt) | Método para alterar visibilidade de tempo de execução de uma interface de programação de aplicativo, método para reduzir a visibilidade preestabelecida dentro de uma interface de programação de aplicativo acessível, e método para proporcionar a um consumidor visibilidade especificada dentro de uma interface de programação de aplicativo | |
Reghenzani et al. | The real-time linux kernel: A survey on preempt_rt | |
Gu et al. | Building certified concurrent OS kernels | |
US20150058586A1 (en) | Guarded Memory Access in a Multi-Thread Safe System Level Modeling Simulation | |
Stilkerich et al. | Tailor‐made JVMs for statically configured embedded systems | |
Dennis et al. | Two-stage agent program verification | |
Jeong et al. | Dataflow model–based software synthesis framework for parallel and distributed embedded systems | |
US10819752B2 (en) | Systems and methods for quantitative assessment of a computer defense technique | |
Olden | Performance Analysis of SWE Implementations based on modern parallel Runtime Systems | |
US9477696B2 (en) | Serializing resource utilization using hardware built-in functions | |
Khaitan et al. | PARAGON: an approach for parallelization of power system contingency analysis using Go programming language | |
Kiss | Build automation systems against CI lock-in-A comparative study of Dagger and Mage | |
Kahanwal | Towards High Performance Computing (HPC) Through Parallel Programming Paradigms and Their Principles | |
Carvalho et al. | Functionality farming in POK/rodosvisor | |
Dazzi | Let's annotate to let our code run in parallel | |
Annemarija Samusa | Time-Triggered Execution of 3-Phase Tasks on the RP2040—A Framework Avoiding Memory Contention by Design | |
Brown et al. | Run-time extensibility: anything less is unsustainable | |
Decký | Component-based General-purpose Operating System | |
McCurdy et al. | Memphis on an XT5: Pinpointing Memory Performance Problems on Cray Platforms | |
Bychkov et al. | Technologies of Heterogeneous Programming Systems Integration in the Informational Computing Environment of Mathematical Modeling and Data Analysis | |
Wehrmeister et al. | Applying the SEEP method in the design of a real-time embedded control system for a motorized wheelchair | |
Falessi et al. | Experiences, Strategies and Challenges in Adapting PVM to VxWorks TM Hard Real-Time Operating System, for Safety-Critical Software | |
Li | Performance analysis and improvement of guestVM for running OSGi-based MacroComponents | |
Deuso et al. | Applications for 68 Node Raspberry Pi 3 Education Cluster | |
Kostin et al. | Development of Parallel Computing Framework to Enhance Radiation Transport Code Capabilities for Rare Isotope Beam Facility Design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 21/04/2014, OBSERVADAS AS CONDICOES LEGAIS |