Управление доступом во время выполнения к интерфейсам прикладного программирования

Иллюстрации

Показать все

Изобретение относится к области интерфейсов прикладного программирования. Техническим результатом является управление доступом во время исполнения к интерфейсам прикладного программирования (API). Варианты осуществления изобретения дают возможность разработчикам библиотек более точно и легко управлять тем, какой из API их библиотек может вызываться динамически. Таким образом, их нагрузка по обслуживанию и управлению версиями может более надлежащим образом управляться. Дополнительно, разработчики приложений могут управлять тем, какие из таких API следует в дальнейшем исключать из сценариев динамических вызовов, с тем, чтобы минимизировать объем служебной информации для поддержки во время выполнения (например, запрещать формирование метаданных). 3 н. и 5 з.п. ф-лы, 6 ил.

Реферат

Уровень техники

[0001] Описание предшествующего уровня техники

[0002] Вычислительные системы и связанная технология затрагивают множество аспектов общества. На самом деле, способность вычислительной системы обрабатывать информацию преобразовала способ, которым мы живем и работаем. Вычислительные системы сегодня, как правило, выполняют множество задач (к примеру, обработку текста, планирование, учет и т.д.), которые до появления компьютерной системы выполнялись вручную. Позднее, компьютерные системы соединены между собой и с другими электронными устройствами, с тем, чтобы формировать как проводные, так и беспроводные компьютерные сети, по которым компьютерные системы и другие электронные устройства могут передавать электронные данные. Соответственно, выполнение многих вычислительных задач распределяется по определенному числу различных компьютерных систем и/или по определенному числу различных вычислительных окружений.

[0003] В ходе разработки кода, разработчики программного обеспечения зачастую используют интерфейсы прикладного программирования (API) для того, чтобы упрощать связь между программными компонентами. API может включать в себя спецификации для процедур, структур данных, классов объектов и переменных, ассоциированных с API. В связи с этим, один разработчик может использовать спецификацию API для того, чтобы определять то, как вызывать API, написанный другим разработчиком.

[0004] Зачастую, один разработчик программного обеспечения (разработчик библиотек) разрабатывает код, имеющий определенное число связанных API, которые группируются в библиотеку, предлагающую указываемую функциональность. Разработчик программного обеспечения может делать части функциональности доступными для других программ посредством раскрытия соответствующих API в библиотеке в качестве общедоступных API. Таким образом, другой разработчик (разработчик приложений) может осуществлять доступ к доступным частям функциональности из их кода через вызовы в общедоступные API. Разработчик программного обеспечения также может поддерживать другие части функциональности в качестве частных. Частная функциональность может использоваться внутренне между API в библиотеке либо для того, чтобы осуществлять доступ к другим частным API в других библиотеках. API, предоставляющие частную функциональность, не раскрываются непосредственно для других программ.

[0005] Тем не менее, многие среды выполнения разрешают коду динамически вызывать любой API в сторонней библиотеке (например, с использованием отражения, чтобы осуществлять доступ к метаданным). В связи с этим, прикладная программа или библиотека может идентифицировать и вызывать частные API в другой библиотеке. Когда разработчик программного обеспечения поддерживает API, который является частным, разработчик программного обеспечения не ожидает, что API вызывается внешне. К сожалению, изменения обслуживания или управления версиями внутренних сведений по реализации таких библиотек, такие как, например, переименования или удаления частных способов, имеют потенциал вызывания прерывающих изменений в приложениях, использующих эти библиотеки.

[0006] Помимо этого, поддержка во время выполнения динамических вызовов переносит служебную информацию по размеру и рабочим наборам (например, метаданные). Объем служебной информации по размеру и рабочим наборам поддерживается для API (частных или общедоступных) независимо от того, вызываются или нет API фактически динамически. Поддержание объема служебной информации по размеру и рабочим наборам для невостребованных API излишне использует вычислительные ресурсы.

Сущность изобретения

[0007] Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для управления доступом во время выполнения к интерфейсам прикладного программирования. Варианты осуществления изобретения включают в себя управление доступом во время выполнения к интерфейсам прикладного программирования (API). Среда выполнения предоставляет запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) с видимостью по умолчанию в API на основе API-типа. Например, видимость по умолчанию в не общедоступные API может запрещать динамический доступ.

[0008] К набору API, комбинированных в библиотеку, осуществляется доступ. Набор API включает в себя один или более общедоступных API и один или более не общедоступных API. Из набора API идентифицируется API, для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ.

[0009] Видимость по умолчанию в API изменена посредством применения атрибута к API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в API. Изменение видимости может включать в себя разрешение динамического доступа к не общедоступному API, для которого по умолчанию динамический доступ не разрешается.

[0010] Другие варианты осуществления включают в себя уменьшение видимости по умолчанию в доступный API. К коду приложения для приложения осуществляется доступ. Код приложения ссылается на один или более доступных API, комбинированных в библиотеку. Доступный API, на который ссылаются в коде приложения, идентифицирован. Доступный API выбирается из числа одного или более доступных API.

[0011] Определяется то, что к доступному API не должен динамически осуществляться доступ во время выполнения. Атрибут применяется к доступному API, чтобы уменьшать видимость по умолчанию в доступный API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) должны предоставляться с уменьшенной видимостью в доступный API. Уменьшение видимости в API может, соответственно, уменьшать формирование метаданных. В некоторых вариантах осуществления, уменьшение видимости в API включает в себя запрещение динамического доступа в API.

[0012] Дополнительные варианты осуществления включают в себя предоставление потребителю указанной видимости в API. Исполняемый код выполняется в среде выполнения. Исполняемый код извлекается из кода приложения. В ходе выполнения исполняемого кода, динамический вызов принимается от потребителя, чтобы выполнять часть исполняемого кода. Часть исполняемого кода извлекается из части кода приложения, которая ссылается на API в библиотеке. К видимости по умолчанию во время выполнения в API осуществляется доступ на основе типа API.

[0013] К атрибутам, применяемым к API, осуществляется доступ. Атрибуты, применяемые к API, могут служить признаком желания, автором API, изменять видимость по умолчанию во время выполнения в API. К атрибутам, применяемым к части кода приложения, осуществляется доступ. Атрибуты, применяемые к части кода приложения, могут служить признаком желания, автором кода приложения, предоставлять меньшую видимость в API, чем указывается посредством видимости по умолчанию во время выполнения, измененной посредством атрибутов, применяемых к API.

[0014] Вычисленная видимость в API определяется на основе одного или более из следующего: видимость по умолчанию во время выполнения в API, атрибуты, применяемые к API, и атрибуты, применяемые к части кода приложения, которая ссылается на API. Динамический вызов содержит вычисленную видимость в API.

[0015] Это краткое изложение сущности изобретения предоставлено для представления в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявленного изобретения.

[0016] Дополнительные признаки и преимущества изобретения частично излагаются в нижеприведенном описании и частично должны становиться очевидными из описания либо могут быть изучены при практическом использовании изобретения. Признаки и преимущества изобретения могут быть реализованы и получены посредством инструментов и комбинаций, конкретно указанных в прилагаемой формуле. Эти и другие признаки настоящего изобретения должны становиться более очевидными из нижеприведенного описания и формулы изобретения или могут быть изучены при практическом использовании изобретения, как изложено далее.

Краткое описание чертежей

[0017] Чтобы описывать способ, которым могут быть получены вышеуказанные и другие преимущества и признаки изобретения, более подробное описание изобретения, вкратце описанного выше, должно быть представлено посредством ссылки на его конкретные варианты осуществления, которые проиллюстрированы на прилагаемых чертежах. При условии того, что эти чертежи изображают только типичные варианты осуществления изобретения и, следовательно, не должны рассматриваться как ограничивающие его объем, изобретение описывается и поясняется с дополнительной спецификой и подробностью посредством использования прилагаемых чертежей, на которых:

[0018] Фиг.1 иллюстрирует примерную компьютерную архитектуру, которая упрощает управление доступом во время выполнения к интерфейсу прикладного программирования.

[0019] Фиг.2 иллюстрирует блок-схему последовательности операций примерного способа для управления доступом во время выполнения к интерфейсу прикладного программирования.

[0020] Фиг.3 иллюстрирует примерную компьютерную архитектуру, которая упрощает уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования.

[0021] Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа для уменьшения видимости по умолчанию в доступный интерфейс прикладного программирования.

[0022] Фиг.5 иллюстрирует примерную компьютерную архитектуру, которая упрощает предоставление потребителю указанной видимости в интерфейс прикладного программирования.

[0023] Фиг.6 иллюстрирует блок-схему последовательности операций примерного способа для предоставления потребителю указанной видимости в интерфейс прикладного программирования.

Подробное описание изобретения

[0024] Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для управления доступом во время выполнения к интерфейсам прикладного программирования. Варианты осуществления изобретения включают в себя управление доступом во время выполнения к интерфейсам прикладного программирования (API). Среда выполнения предоставляет запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) с видимостью по умолчанию в API на основе API-типа. Например, видимость по умолчанию в не общедоступные API может запрещать динамический доступ.

[0025] К набору API, комбинированных в библиотеку, осуществляется доступ. Набор API включает в себя один или более общедоступных API и один или более не общедоступных API. Из набора API идентифицируется API, для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ.

[0026] Видимость по умолчанию в API изменена посредством применения атрибута к API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в API. Изменение видимости может включать в себя разрешение динамического доступа к не общедоступному API, для которого по умолчанию динамический доступ не разрешается.

[0027] Другие варианты осуществления включают в себя уменьшение видимости по умолчанию в доступный API. К коду приложения для приложения осуществляется доступ. Код приложения ссылается на один или более доступных API, комбинированных в библиотеку. Доступный API, на который ссылаются в коде приложения, идентифицирован. Доступный API выбирается из множества доступных API.

[0028] Определяется то, что к доступному API не должен динамически осуществляться доступ во время выполнения. Атрибут применяется к доступному API, чтобы уменьшать видимость по умолчанию в доступный API. Атрибут указывает среде выполнения во время выполнения то, что запросы на динамический доступ (например, посредством отражения или других технологий динамических вызовов) должны предоставляться с уменьшенной видимостью в доступный API. Уменьшение видимости в API может, соответственно, уменьшать формирование метаданных. В некоторых вариантах осуществления, уменьшение видимости в API включает в себя запрещение динамического доступа в API.

[0029] Дополнительные варианты осуществления включают в себя предоставление потребителю указанной видимости в API. Исполняемый код выполняется в среде выполнения. Исполняемый код извлекается из кода приложения. В ходе выполнения исполняемого кода, динамический вызов принимается от потребителя, чтобы выполнять часть исполняемого кода. Часть исполняемого кода извлекается из части кода приложения, которая ссылается на API в библиотеке. К видимости по умолчанию во время выполнения в API осуществляется доступ на основе типа API.

[0030] К атрибутам, применяемым к API, осуществляется доступ. Атрибуты, применяемые к API, могут служить признаком желания, автором API, изменять видимость по умолчанию во время выполнения в API. К атрибутам, применяемым к части кода приложения, осуществляется доступ. Атрибуты, применяемые к части кода приложения, могут служить признаком желания, автором кода приложения, предоставлять меньшую видимость в API, чем указывается посредством видимости по умолчанию во время выполнения, измененной посредством атрибутов, применяемых к API.

[0031] Вычисленная видимость в API определяется на основе одного или более из следующего: видимость по умолчанию во время выполнения в API, атрибуты, применяемые к API, и атрибуты, применяемые к части кода приложения, которая ссылается на API. Динамический вызов содержит вычисленную видимость в API.

[0032] Варианты осуществления настоящего изобретения могут содержать или использовать компьютер специального назначения или общего назначения, включающий в себя компьютерные аппаратные средства, такие как, например, один или более процессоров и системное запоминающее устройство, как подробнее поясняется ниже. Варианты осуществления в пределах объема настоящего изобретения также включают в себя физические и другие машиночитаемые носители для переноса или сохранения машиноисполняемых инструкций и/или структур данных. Эти машиночитаемые носители могу представлять собой любые доступные носители, к которым можно осуществлять доступ посредством компьютерной системы общего назначения или специального назначения. Машиночитаемые носители, которые сохраняют машиноисполняемые инструкции, представляют собой компьютерные носители (устройства) хранения данных. Машиночитаемые носители, которые переносят машиноисполняемые инструкции, представляют собой среды передачи. Таким образом, в качестве примера, а не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два совершенно различных типа машиночитаемых носителей: компьютерные носители (устройства) хранения данных и среды передачи.

[0033] Компьютерные носители (устройства) хранения данных включают в себя RAM, ROM, EEPROM, CD-ROM, полупроводниковые накопители (SSD) (к примеру, на основе RAM), флэш-память, запоминающее устройство на фазовых переходах (PCM) или другие типы запоминающего устройства, другие устройства хранения на оптических дисках, устройства хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных и к которому может осуществляться доступ посредством компьютера общего назначения или специального назначения.

[0034] "Сеть" задается одна или более линий связи для передачи данных, которые обеспечивают транспортировку электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или предоставляется по сети или другим соединениям связи (проводным, беспроводным либо комбинации проводных и беспроводных) в компьютер, компьютер надлежащим образом рассматривает соединение в качестве среды передачи. Среды передачи могут включать в себя сеть и/или линии связи для передачи данных, которые могут использоваться для того, чтобы переносить требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных, и к которым может осуществляться доступ посредством компьютера общего назначения или специального назначения. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.

[0035] Дополнительно, после достижения различных компонентов компьютерной системы, средство программного кода в форме машиноисполняемых инструкций или структур данных передаваться автоматически из сред передачи в компьютерные носители (устройства) хранения данных (или наоборот). Например, машиноисполняемые инструкции или структуры данных, принятые по сети или линии связи для передачи данных, могут быть буферизованы в RAM внутри сетевого интерфейсного модуля (например, NIC) и затем в конечном счете переданы в RAM компьютерной системы и/или в менее энергозависимые компьютерные носители (устройства) хранения данных в компьютерной системе. Таким образом, следует понимать, что компьютерные носители (устройства) хранения данных могут быть включены в компоненты компьютерной системы, которые также (или даже главным образом) используют среды передачи.

[0036] Машиночитаемые инструкции содержат, например, инструкции и данные, которые при выполнении в процессоре инструктируют компьютеру общего назначения, компьютеру специального назначения или устройству обработки специального назначения выполнять определенную функцию или группу функций. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, к примеру, на языке ассемблера или даже в исходном коде. Хотя изобретение описано на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен описанными признаками или этапами, описанными выше. Наоборот, описанные признаки и этапы раскрываются как примерные формы реализации формулы изобретения.

[0037] Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, сетевые PC, миникомпьютеры, мэйнфреймы, мобильные телефоны, PDA, планшетные компьютеры, устройства поискового вызова, маршрутизаторы, коммутаторы и т.п. Изобретение также может осуществляться на практике в распределенных системных окружениях, в которых локальные и удаленные компьютерные системы, которые соединены (посредством проводных линий связи для передачи данных, беспроводных линий связи для передачи данных или посредством комбинации проводных и беспроводных линий связи для передачи данных) через сеть, выполняют задачи. В распределенном системном окружении, программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.

[0038] Варианты осуществления изобретения также могут реализовываться в облачных вычислительных окружениях. В этом описании и прилагаемой формуле изобретения, "облачные вычисления" задаются как модель для обеспечения сетевого доступа по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов. Например, облачные вычисления могут использоваться на рынке для того, чтобы предлагать повсеместный и удобный доступ по запросу к совместно используемому пулу конфигурируемых вычислительных ресурсов. Совместно используемый пул конфигурируемых вычислительных ресурсов может быстро инициализироваться через виртуализацию и высвобождаться при небольших затратах на управление или взаимодействие с поставщиком услуг, а затем масштабироваться соответствующим образом.

[0039] Модель облачных вычислений может состоять из различных характеристик, таких как, например, самообслуживание по запросу, широкополосный доступ к сети, объединение ресурсов в пул, быстрая эластичность, обслуживание на основе измеряемых показателей и т.д. Модель облачных вычислений также может раскрывать различные модели предоставления услуг, такие как, например, программное обеспечение как услуга (SaaS), платформа как услуга (PaaS) и инфраструктура как услуга (IaaS). Модель облачных вычислений также может быть развернута с использованием различных моделей развертывания, таких как частное облако, коллективное облако, общедоступное облако, гибридное облако и т.д. В этом описании и в формуле изобретения, "облачное вычислительное окружение" представляет собой окружение, в котором используются облачные вычисления.

[0040] Варианты осуществления изобретения дают возможность разработчикам библиотек более точно и легко управлять тем, какой из API их библиотек может вызываться динамически. Таким образом, их нагрузка по обслуживанию и управлению версиями может более надлежащим образом управляться. Дополнительно, разработчики приложений могут управлять тем, какие из таких API следует в дальнейшем исключать из сценариев динамических вызовов, с тем, чтобы минимизировать объем служебной информации для поддержки во время выполнения.

[0041] Фиг.1 иллюстрируют примерную компьютерную архитектуру 100, которая упрощает управление доступом к интерфейсу прикладного программирования (API). Ссылаясь на фиг.1, компьютерная архитектура 100 включает в себя среду 101 разработки и среду 102 выполнения. Среда 101 разработки и среда 102 выполнения могут соединяться между собой (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, среда 101 разработки и среда 102 выполнения, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0042] Среда 101 разработки может представлять собой приложение, которое предоставляет средства для разработки программного обеспечения, включающие в себя, но не только: редактор исходного кода, автоматизацию сборки, отладчик, систему управления версиями, средство просмотра классов, инспектор объектов, схему иерархии классов и т.д. В некоторых вариантах осуществления, среда 101 разработки включает в себя или включена в интегрированную среду разработки (IDE). Разработчик библиотек может использовать среду 101 разработки для того, чтобы применять атрибут к API, чтобы изменять видимость API для запросов на динамический доступ.

[0043] Среда 102 выполнения может представлять собой приложение, которое предоставляет средства для выполнения программного обеспечения. Среда 102 выполнения может включать в себя компилятор (например, оперативный (JIT) компилятор) и/или интерпретатор для выполнения кода, разработанного в среде разработки программного обеспечения 101. В некоторых вариантах осуществления, среда 102 выполнения включает в себя или включена в интегрированную среду разработки (IDE). Среда 102 выполнения может включать в себя механизмы (например, отражение) для динамического запроса доступа к API.

[0044] Среда 101 разработки и среда 102 выполнения могут быть интегрированы в идентичную среду или могут постоянно размещаться в отдельных средах.

[0045] Среда 102 выполнения включает в себя модуль 109 вычисления видимости. Модуль вычисления видимости выполнен с возможностью вычислять видимость в API на основе API-типа (например, внутренний, частный, общедоступный и т.д.) и применяемых атрибутов. Правила 108 видимости по умолчанию могут задавать видимость по умолчанию (например, разрешать динамический доступ или удалять динамический доступ) для каждого API-типа. Применяемые атрибуты могут использоваться для того, чтобы изменять или переопределять видимость по умолчанию. В связи с этим, применяемые атрибуты предоставляют разработчику библиотек более точный управлением тем, как к отдельным API может динамически осуществляться доступ.

[0046] В некоторых вариантах осуществления, правила 108 видимости по умолчанию задают то, что динамический доступ удаляется для API, указываемых в качестве частных или внутренних. Разработчик библиотек может использовать среду 101 разработки для того, чтобы применять атрибут к частному или внутреннему API. Применяемый атрибут может указывать то, что динамический доступ должен разрешаться для частного или внутреннего API. После приема динамического вызова в частный или внутренний API модуль 109 вычисления видимости может определять то, что применяемый атрибут переопределяет видимость по умолчанию (удаленного динамического доступа) для частного или внутреннего API. В связи с этим, для динамического вызова разрешается доступ к частному или внутреннему API.

[0047] Фиг.2 иллюстрирует блок-схему последовательности операций примерного способа 200 для управления доступом к интерфейсу прикладного программирования (API). Ниже описывается способ 200 относительно компонентов и данных компьютерной архитектуры 100.

[0048] Способ 200 включает в себя осуществление доступа к набору интерфейсов прикладного программирования (API), комбинированных в библиотеку, причем набор интерфейсов прикладного программирования (API) включает в себя один или более общедоступных интерфейсов прикладного программирования (API) и один или более не общедоступных интерфейсов прикладного программирования (API) (201). Например, среда 101 разработки может осуществлять доступ к библиотеке 103. Библиотека 103 включает в себя один или более общедоступных API, включающих в себя общедоступный API 104. Библиотека 103 включает в себя один или более не общедоступных (например, частных или внутренних) API, включающих в себя не общедоступный API 106.

[0049] Способ 200 включает в себя идентификацию интерфейса прикладного программирования (API) из набора интерфейсов прикладного программирования (API), для которого должна быть изменена видимость по умолчанию, предоставленная для запросов на динамический доступ (202). Например, среда 101 разработки (возможно в ответ на ввод автора) может идентифицировать то, что должна быть изменена видимость по умолчанию для запросов на динамический доступ (например, с использованием отражения или других технологий динамических вызовов) в не общедоступный API 106.

[0050] Способ 200 включает в себя изменение видимости по умолчанию в интерфейс прикладного программирования (API) на измененную видимость посредством применения атрибута к интерфейсу прикладного программирования (API), причем атрибут указывает для среды выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для измененной видимости в интерфейс прикладного программирования (API) (203). Например, автор 113 может вводить ввод 112 видимости в среду 101 разработки. В ответ на ввод 112 видимости, среда 101 разработки может применять атрибут 107 к необщедоступному API 106. Атрибут 107 может указывать среде 102 выполнения то, что видимость по умолчанию для необщедоступных API, заданных в правилах 108 видимости по умолчанию, должна быть изменена для необщедоступного API 106.

[0051] Затем, библиотека 103 может быть компилирована вместе с другим исходным кодом в исполняемый код 111. В ходе выполнения исполняемого кода 111, модуль 109 вычисления видимости может рассматривать как правила 108 видимости по умолчанию, так и атрибут 107 при вычислении видимости в не общедоступный API 106. В некоторых вариантах осуществления, атрибут 107 указывает то, что динамический доступ к не общедоступному API 106 разрешается, даже если правила 108 видимости по умолчанию указывают то, что динамический доступ к не общедоступным API должен запрещаться.

[0052] Фиг.3 иллюстрирует примерную компьютерную архитектуру 100, которая упрощает уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования (API). Ссылаясь на фиг.3, компьютерная архитектура 300 включает в себя среду 301 разработки и среду 302 выполнения. Среда 301 разработки и среда 302 выполнения могут соединяться между собой (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, среда 301 разработки и среда 302 выполнения, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0053] Среда 301 разработки может представлять собой приложение, которое предоставляет средства для разработки программного обеспечения, включающие в себя, но не только: редактор исходного кода, автоматизацию сборки, отладчик, систему управления версиями, средство просмотра классов, инспектор объектов, схему иерархии классов и т.д. В некоторых вариантах осуществления, среда 301 разработки включает в себя или включена в интегрированную среду разработки (IDE). Разработчик приложений может использовать среду 301 разработки для того, чтобы применять атрибут к коду, ссылающемуся на доступный API (например, включенный в стороннюю библиотеку). Атрибуты, применяемые к коду, ссылающемуся на доступный API, могут использоваться для того, чтобы уменьшать видимость по умолчанию в доступный API.

[0054] Среда 302 выполнения может представлять собой приложение, которое предоставляет средства для выполнения программного обеспечения. Среда выполнения может включать в себя компилятор (например, оперативный (JIT) компилятор) и/или интерпретатор для выполнения кода, разработанного в среде 301 разработки программного обеспечения. В некоторых вариантах осуществления, среда 302 выполнения включает в себя или включена в интегрированную среду разработки (IDE). Среда 302 выполнения может включать в себя механизмы (например, отражение) для динамического запроса доступа к API.

[0055] Среда 301 разработки и среда 302 выполнения могут быть интегрированы в идентичную среду или могут постоянно размещаться в отдельных средах.

[0056] Среда 302 выполнения включает в себя модуль 309 вычисления видимости. Модуль 309 вычисления видимости выполнен с возможностью вычислять видимость в доступный API (например, общедоступный API или не общедоступный API с атрибутами для того, чтобы разрешать динамический доступ) на основе атрибутов, применяемых к коду, ссылающемуся на доступный API. Правила 308 видимости по умолчанию могут разрешать динамический доступ к доступным API. В связи с этим, применяемые атрибуты предоставляют разработчику приложений механизм для того, чтобы исключать иным способом доступные API (например, включенные в стороннюю библиотеку) из динамического доступа. Исключение иным способом доступного API из динамического доступа минимизирует объем служебной информации для поддержки во время выполнения (например, формирование метаданных) и за счет этого экономит ресурсы.

[0057] Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа 400 для уменьшения видимости по умолчанию в доступный интерфейс прикладного программирования (API). Ниже описывается способ 400 относительно компонентов и данных компьютерной архитектуры 300.

[0058] Способ 400 включает в себя осуществление доступа к коду приложения для приложения, причем код приложения ссылается на один или более доступных интерфейсов прикладного программирования (API), комбинированных в библиотеку (401). Например, среда 301 разработки может осуществлять доступ к коду 314 приложения. Среда 310 разработки также может осуществлять доступ к библиотеке 30. Код 314 приложения может ссылаться на один или более API, таких как, например, API 304 и 306, включенные в библиотеку 303.

[0059] Способ 400 включает в себя идентификацию доступного интерфейса прикладного программирования (API), на который ссылаются в коде приложения, причем доступный интерфейс прикладного программирования (API) выбирается из числа одного или более доступных интерфейсов прикладного программирования (API) (402). Например, среда 301 разработки может идентифицировать API 306, на который ссылаются посредством ссылки 316 на API.

[0060] Способ 400 включает в себя определение того, что к доступному интерфейсу прикладного программирования (API) не должен динамически осуществляться доступ во время выполнения (403). Например, среда 301 разработки (возможно в ответ на ввод автора) может определять то, что динамический доступ к API 306 должен запрещаться.

[0061] Способ 400 включает в себя уменьшение видимости по умолчанию в доступный интерфейс прикладного программирования (API) до уменьшенной видимости посредством применения атрибута к части кода приложения, ссылающейся на доступный интерфейс прикладного программирования (API), причем атрибут указывает для среды выполнения во время выполнения то, что запросы на динамический доступ должны предоставляться для уменьшенной видимости в доступный интерфейс прикладного программирования (API) (404). Например, автор 313 может вводить ввод видимости 312 в среду 301 разработки. В ответ на ввод видимости 312, среда 301 разработки может применять атрибут 317 к ссылке 316 на API (ссылке на API 306). Атрибут 317 может указывать среде 302 выполнения то, что видимость по умолчанию для API 306 должна уменьшаться.

[0062] Затем, код 314 приложения и библиотека 303 могут быть компилированы (возможно с другим исходным кодом) в исполняемый код 311. В ходе выполнения исполняемого кода 311, модуль 309 вычисления видимости может рассматривать как правила 308 видимости по умолчанию, так и атрибут 317 при вычислении видимости в API 306. В некоторых вариантах осуществления, атрибут 317 указывает то, что динамический доступ к API 306 запрещается, даже если правила 308 видимости по умолчанию указывают то, что динамический доступ к доступным API должен разрешаться.

[0063] Ограниченная видимость в API может включать в себя неформирование метаданных для API. Например, как проиллюстрировано в компьютерной архитектуре 300, метаданные не формируются для API 306. С другой стороны, метаданные 319 могут формироваться для API 304 (другого доступного API, на который ссылаются из кода 314 приложения).

[0064] Фиг.5 иллюстрирует примерную среду 500 выполнения, которая упрощает предоставление потребителю указанной видимости в интерфейс прикладного программирования (API). Ссылаясь на фиг.5, среда 500 выполнения включает в себя модуль 501 вычисления видимости и потребитель 531. Модуль 501 вычисления видимости и потребитель 531 могут соединяться между (или быть частью) по сети, такой как, например, системная шина, локальная вычислительная сеть (LAN), глобальная вычислительная сеть (WAN) и даже Интернет. Соответственно, модуль 501 вычисления видимости и потребитель 531, а также все остальные соединенные компьютерные системы и их компоненты могут создавать связанные с сообщениями данные и обмениваться связанными с сообщениями данными (например, через датаграммы по Интернет-протоколу (IP) и другие протоколы верхнего уровня, которые используют IP-датаграммы, такие как протокол управления передачей (TCP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP) и т.д. или с использованием других протоколов не на основе датаграмм), по сети.

[0065] Среда 500 выполнения