Генерирование и кэширование кода программного обеспечения

Иллюстрации

Показать все

Изобретение относится к способу генерирования кода программного обеспечения. Технический результат заключается в обеспечении генерирования и кэширования кода программного обеспечения, которое может включать в себя исходный код, который не был скомпилирован, так что это программное обеспечение может быть скомпилировано и исполнено без задержки. Принимают запрос на исполнение программного обеспечения, которое включает в себя исходный код, при этом исходный код представляет собой файл сценария для страницы веб-сайта, для которой явная ссылка на этот файл сценария не была получена. В ответ на этот запрос определение, был ли второй код сгенерирован из исходного кода и сохранен в энергонезависимой памяти, при этом это определение, был ли второй код сгенерирован из исходного кода и сохранен в энергонезависимой памяти, содержит проверку на предмет второго кода в некотором известном местоположении энергонезависимой памяти, причем это известное местоположение выводится из ссылки, которая идентифицирует исходное местоположение исходного кода, причем исходное местоположение доступно по сети. 3 н. и 10 з.п. ф-лы, 6 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

[0001] Языки сценариев можно обнаружить в различных средах. Например, многие Интернет браузеры имеют язык сценариев, который позволяет web-страницам настраивать свое поведение на основании ввода пользователя и прочих данных. Языки сценариев также можно обнаружить в средах за пределами Интернет браузеров. Одна проблема с языками сценариев состоит в том, что они могут быть медленными - в особенности при запуске и возможно при каждом исполнении - в сравнении с обычными программами, которые были скомпилированы.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0003] Вкратце, аспекты описываемого в данном документе предмета изобретения относятся к генерированию и кэшированию кода программного обеспечения. В аспектах, целевое устройство может принимать программное обеспечение для установки. Программное обеспечение может включать в себя исходный код, который не был скомпилирован. Целевое устройство может устанавливать программное обеспечение и указывать, что исходный код пакета должен быть скомпилирован в промежуточный или исполняемый код, который сохраняется постоянно. Если целевое устройство принимает запрос на исполнение программного обеспечения до того, как оно скомпилировано, то целевое устройство может скомпилировать и исполнить программное обеспечение без задержки. Если целевое устройство принимает запрос на исполнение программного обеспечения после того, как оно скомпилировано, то целевое устройство может получить и исполнить скомпилированный код. Вышеприведенное поведение также может быть применено к коду сценариев, полученному от сервера, удаленного по отношению к целевому устройству.

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

[0005] Фраза «описываемый в данном документе предмет изобретения» относится к предмету изобретения, который описывается в Подробном Описании, до тех пор, пока контекст явно не указывает обратное. Понятие «аспекты» следует читать как «по меньшей мере, один аспект». Идентификация аспектов предмета изобретения, описываемого в Подробном Описании, не предназначена идентифицировать ключевые или неотъемлемые признаки заявленного предмета изобретения.

[0006] Описанные выше аспекты и прочие аспекты описываемого в данном документе предмета изобретения иллюстрируются в качестве примера и не ограничиваются сопроводительными фигурами, на которых подобные цифровые обозначения указывают аналогичные элементы, и на которых:

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

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

[0009] Фиг. 3 иллюстрирует примерную структуру данных, которая может быть использована в соответствии с аспектами описываемого в данном документе предмета изобретения;

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

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

ПОДРОБНОЕ ОПИСАНИЕ

ОПРЕДЕЛЕНИЯ

[0012] Используемое в данном документе понятие «включает в себя» и его варианты следует читать как неограниченные понятия, которые означают «включает в себя, но не ограничивается». Понятие «или» следует читать как «и/или» до тех пор, пока контекст явно не диктует обратное. Понятие «основан на» следует читать как «основан, по меньшей мере, частично на». Понятия «один вариант осуществления» и «вариант осуществления» следует читать как «по меньшей мере, один вариант осуществления». Понятие «другой вариант осуществления» следует читать как «по меньшей мере, один другой вариант осуществления».

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

[0014] Иногда в данном документе могут использоваться понятия «первый», «второй», «третий» и т.д. Без дополнительного контекста, использование этих понятий в формуле изобретения не предназначено предполагать очередность, а наоборот используется в целях идентификации. Например, фразы «первая версия» и «вторая версия» не обязательно означают, что первая версия является самой первой версией или была создана до второй версии или даже что первая версия запрашивается или функционирует перед второй версией. Наоборот, эти фразы используются для идентификации разных версий.

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

[0016] Прочие определения, явные или не явные, могут быть включены ниже.

ПРИМЕРНАЯ СРЕДА ФУНКЦИОНИРОВАНИЯ

[0017] Фиг. 1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой могут быть реализованы аспекты описываемого в данном документе предмета изобретения. Среда 100 вычислительной системы является лишь одним примером подходящей вычислительной среды и не предназначена предложить каких-либо ограничений на объем использования или функциональность аспектов описываемого в данном документе предмета изобретения. Так же не следует интерпретировать вычислительную среду 100 как обладающую любой зависимостью или требованием в отношении любого одного или сочетания компонентов, проиллюстрированных в примерной среде 100 функционирования.

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

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

[0020] Со ссылкой на Фиг. 1, примерная система для реализации аспектов описываемого в данном документе предмета изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компьютер может включать в себя любое электронное устройство, которое выполнено с возможностью исполнения инструкций. Компоненты компьютера 110 могут включать в себя блок 120 обработки, системную память 130, и системную шину 121, которая связывает различные компоненты системы, включая системную память, с блоком 120 обработки. Системная шина 121 может быть любой из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину, и локальную шину, используя любую из многообразия архитектур шины. В качестве примера, а не ограничения, такие архитектуры включают в себя: шину Архитектуры Промышленного Стандарта (ISA), шину Архитектуры Микро Канала (MCA), шину Усовершенствованного ISA (EISA), локальную шину Ассоциации по Стандартам в Области Видеоэлектроники (VESA), шину Межсоединения Периферийных Компонентов (PCI) также известную как шина расширения, шина Межсоединения Периферийных Компонентов Расширенная (PCI-X), Усовершенствованный Графический Порт (AGP), и экспресс PCI (PCIe).

[0021] Блок 120 обработки может быть соединен с устройством 122 безопасности аппаратного обеспечения. Устройство 122 безопасности может хранить и способно генерировать криптографические ключи, которые могут быть использованы для обеспечения безопасности для различных аспектов компьютера 110. В одном варианте осуществления, устройство 122 безопасности может быть выполнено в виде чипа Доверенного Платформенного Модуля (TPM), Устройства Безопасности TPM, или подобного.

[0022] Компьютер 110, как правило, включает в себя многообразие считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми доступными носителями, доступ к которым может быть получен посредством компьютера 110, и включают в себя как энергозависимые, так и энергонезависимые носители, и съемные и несъемные носители. В качестве примера, а не ограничения, считываемые компьютером носители могут быть выполнены в виде компьютерных носителей данных и средств связи.

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

[0024] Средства связи, как правило, воплощают считываемые компьютером инструкции, структуры данных, программные модули, и прочие данные в модулированном сигнале данных, таком как несущая волна или иной механизм транспортировки, и включают в себя любые средства доставки информации. Понятие «модулированный сигнал данных» означает сигнал, который обладает одной или более из его характеристик, которые установлены или изменены таким образом, что кодируют информацию в сигнале. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводная сеть или непосредственное проводное соединение, и беспроводные средства, такие как акустические, RF, инфракрасные, и прочие беспроводные средства. Сочетания любых из вышеприведенных средств также должно включаться в объем понятия считываемые компьютером носители.

[0025] Системная память 130 включает в себя компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство 131 (ROM) и запоминающее устройство 132 с произвольной выборкой (RAM). Базовая система 133 ввода/вывода (BIOS), содержащая основные подпрограммы, которые помогают осуществлять перенос информации между элементами внутри компьютера 110, как например, во время запуска, как правило, хранится в ROM 131. RAM 132, как правило, содержит данные и/или программные модули, которые сразу же доступны и/или в настоящий момент обрабатываются блоком 120 обработки. В качестве примера, а не ограничения, Фигура 1 иллюстрирует операционную систему 134, прикладные программы 135, прочие программные модули 136, и данные 137 программы.

[0026] Компьютер 110 также может включать в себя прочие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Лишь в качестве примера, Фиг. 1 иллюстрирует накопитель 141 на жестком диске, который осуществляет считывание с или запись на несъемный, энергонезависимый магнитный носитель, накопитель 151 на магнитном диске, который осуществляет считывание с или запись на съемный, энергонезависимый магнитный диск 152, и накопитель 155 на оптическом диске, который осуществляет считывание с или запись на съемный, энергонезависимый оптический диск 156, такой как CD ROM или иной оптический носитель. Прочие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут быть использованы в примерной среде функционирования, включают в себя кассеты с магнитной лентой, карты флэш-памяти, и прочие твердотельные средства хранения, цифровые универсальные диски, прочие оптические диски, цифровые видеоленты, твердотельное RAM, твердотельное ROM, и подобное. Накопитель 141 на жестком диске может быть соединен с системной шиной 121 посредством интерфейса 140, а накопитель 151 на магнитном диске и накопитель 155 на оптическом диске могут быть соединены с системной шиной 121 посредством интерфейса для съемной энергонезависимой памяти, такого как интерфейс 150.

[0027] Накопители и связанные с ними компьютерные носители данных, рассмотренные выше и проиллюстрированные на Фиг. 1, обеспечивают средство хранения считываемых компьютером инструкций, структур данных, программных модулей, и прочих данных для компьютера 110. На Фиг. 1, например, накопитель 141 на жестком диске иллюстрируется как хранящий операционную систему 144, прикладные программы 145, прочие программные модули 146, и данные 147 программы. Следует отметить, что эти компоненты могут либо быть точно такими же как или отличаться от операционной системы 134, прикладных программ 135, прочих программных модулей 136, и данных 137 программы. В данном документе операционной системе 144, прикладным программам 145, прочим программным модулям 146, и данным 147 программы даны отличные номера для иллюстрации того, что, минимум, они являются другими копиями.

[0028] Пользователь может вводить команды и информацию в компьютер 110 посредством устройств ввода, таких как клавиатура 162 и указывающее устройство 161, как правило, именуемое как мышь, шаровой манипулятор, или сенсорная панель. Прочие устройства ввода (не показаны) могут включать в себя микрофон, игровой манипулятор, игровую панель, спутниковую антенну, сканер, сенсорный экран, планшет рукописного ввода, устройство захвата жестов, или подобное. Эти и прочие устройства ввода часто соединены с блоком 120 обработки посредством интерфейса 160 ввода пользователя, который соединен с системной шиной, но могут быть соединены посредством другого интерфейса и структур шины, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).

[0029] Монитор 191 или другой тип дисплейного устройства также соединен с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору, компьютер также может включать в себя прочие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть соединены посредством выходного периферийного интерфейса 195.

[0030] Компьютер 110 может функционировать в сетевой среде, используя логические соединения с одним или более удаленными компьютерами, таким как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим общим сетевым узлом, и, как правило, включает в себя много или все из элементов, описанных выше в отношении компьютера 110, несмотря на то, что на Фиг. 1 иллюстрируется только запоминающее устройство 181 памяти. Логические соединения, изображенные на Фиг. 1, включают в себя локальную сеть 171 (LAN) и глобальную сеть 173 (WAN), однако также могут включать в себя другие сети. Такие сетевые среды имеют место в офисах, компьютерных сетях масштаба предприятия, интрасетях, и Интернет.

[0031] При использовании в сетевой среде LAN, компьютер 110 соединен с LAN 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде WAN, компьютер 110 может включать в себя модем 172 или иное средство для установления связи через WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть соединен с системной шиной 121 через интерфейс 160 ввода пользователя или другой соответствующий механизм. В сетевой среде, программные модули, изображенные как относящиеся к компьютеру 100, или их части, могут храниться на удаленном запоминающем устройстве памяти. В качестве примера, а не ограничения, Фигура 1 иллюстрирует удаленные прикладные программы 185 как размещенные на устройстве 181 памяти. Следует иметь в виду, что показанные сетевые соединения являются примерными и могут использоваться прочие средства создания линии связи между компьютерами.

ГЕНЕРИРОВАНИЕ И КЭШИРОВАНИЕ КОДА

[0032] Как упомянуто ранее, в сравнении с обычными программами, которые были скомпилированы, язык сценариев может казаться медленным для пользователя, в особенности при первоначальном запуске.

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

[0034] Обращаясь к Фиг. 2, система 205 может включать в себя компоненты 210 сценариев, хранилище 220, механизм 225 связи, и прочие компоненты (не показаны). Система 205 может содержать одно или более вычислительные устройства. Такие устройства могут включать в себя, например, персональные компьютеры, серверные компьютеры, переносные устройства или устройства класса лэптоп, многопроцессорные системы, основанные на микроконтроллере системы, абонентские телевизионные приставки, программируемую потребительскую электронику, сетевые PC, миникомпьютеры, компьютеры класса мэйнфрейм, сотовые телефоны, персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включая подключаемые, мультимедийный центр, или другие приборы, встроенные или прикрепленные к автомобилю вычислительные устройства, прочие мобильные устройства, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и подобное.

[0035] Там, где система 205 содержит одно устройство, примерное устройство, которое может быть выполнено с возможностью работы в качестве системы 205, выполнено в виде компьютера 110 с Фиг. 1. Там, где система 205 содержит несколько устройств, каждое из нескольких устройств может быть выполнено в виде аналогично или по-другому сконфигурированного компьютера 110 с Фиг. 1.

[0036] Компоненты 210 сценариев могут включать в себя установщик 215, генератор 216 кода, диспетчер 217 кэша, диспетчер 218 исполнения, и прочие компоненты (не показаны). Используемое в данном документе понятие компонент следует читать как включающий в себя все или часть из: устройства, совокупности из одного или более модулей программного обеспечения или ее частей, некоторого сочетания одного или более модулей программного обеспечения или их частей и одного или более устройств или их частей, и подобное.

[0037] Механизм 225 связи позволяет системе 205 осуществлять связь с прочими объектами. Например, механизм 225 связи может позволять системе 205 осуществлять связь с другими объектами для получения пакетов и/или кода сценариев, которые могут кэшироваться в системе 205. Механизм 255 связи может быть сетевым интерфейсом или адаптером 170, модемом 172, или любым другим механизмом для установления связи, как описано в связи с Фиг. 1.

[0038] Хранилище 220 является любым носителем данных, выполненным с возможностью предоставления доступа к данным. Используемый в данном документе доступ может включать в себя считывание данных, запись данных, удаление данных, обновление данных, сочетание, включающее в себя два или более из вышеперечисленных действий, и подобное. Хранилище может включать в себя энергозависимую память (например, RAM, кэш в памяти, или подобное) и энергонезависимую память (например, постоянное средство хранения).

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

[0040] Хранилище 220 может быть выполнено в виде средства хранения на жестком диске, другого энергонезависимого средства хранения, временной памяти, такой как RAM, другого средства хранения, некоторого сочетания вышеприведенного, и подобного, и может быть распределено между несколькими устройствами. Хранилище 220 может быть внешним, внутренним, или включать в себя компоненты, которые являются как внутренними, так и внешними по отношению к системе 205.

[0041] Для уменьшения времени запуска и исполнения, сокращения объема памяти, обеспечения защиты от вмешательства, и по другим причинам, генератор 216 кода может компилировать исходный код в байт-код или некоторый другой промежуточный код или исполняемый код. Код включает в себя инструкции, которые указывают действия, которые должен предпринять компьютер. Код также может включать в себя данные, ресурсы, переменные, определения, зависимости, ассоциации, и подобное, что включает в себя информацию, отличную от действий, которые должен предпринять компьютер. Например, код может включать в себя изображения, web-страницы, HTML, XML, иной контент, и подобное. В варианте осуществления, код может быть включен в проект программного обеспечения. Программное обеспечение может включать в себя или ссылаться на одну или более части кода, данные, ресурсы, переменные, определения, зависимости, ассоциации, и подобное, что включает в себя информацию, отличную от действий, которые должен предпринять компьютер, информацию конфигурации, и подобное.

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

[0043] Установщик 215 может устанавливать пакеты в систему 205. Пакет может включать в себя одно или более приложений программного обеспечения. Установщик 215 может включать в себя обработчик расширения применения, который обеспечивает возможность выполнения настраиваемых действий на основании: установленного пакета; целевой машины, на которой установлен пакет; критерия, основанного на том, включает ли пакет код сценариев; или других критериев.

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

[0045] Генератор 216 кода может брать элементы из структуры данных и может генерировать байт-код, исполняемый код, или некий другой код из кода, соответствующего каждому из элементов. Элемент может включать в себя файл, который включает в себя сценарий, часть файла (например, сценарий, встроенный в страницу HTML), скомпилированы код, или подобное. Для простоты понятие байт-код часто используется в данном документе для обозначения кода, который генерирует генератор 216 кода. Тем не менее, следует понимать, что генератор 216 кода не ограничивается генерированием и кэшированием байт-кода и может, в некоторых реализациях, генерировать и кэшировать другие типы кода, включая те типы кода, которые были упомянуты ранее.

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

[0047] Используемое в данном документе понятие «процесс» и его варианты может включать в себя один или более традиционные процессы, потоки, компоненты, библиотеки, объекты, которые выполняют задачи, и подобное. Процесс может быть реализован в аппаратном обеспечении, программном обеспечении, или сочетании аппаратного и программного обеспечения. В варианте осуществления, процесс является любым механизмом, однако называемым, способным или используемым при выполнении действия. Процесс может быть распределенным между несколькими устройствами или одним устройством.

[0048] В одной реализации, генератор 216 кода также может быть использован для генерирования кода на лету (например, как код встречается). Например, если пользователь устанавливает программное обеспечение и желает запустить программное обеспечение перед тем, как генерируется байт-код для всего пакета, который включает в себя программное обеспечение, то генератор 216 кода может быть использован для генерирования кода для программного обеспечения по мере необходимости. Другими словами, пользователю не требуется ждать пока генератор 216 кода сгенерирует байт-код для всего пакета, до того как пользователю будет разрешено исполнение программного обеспечения пакета. В дополнение, могут присутствовать другие ситуации, при которых исходный код для компонента поменялся и где генератор 216 кода может быть использован для генерирования байт-кода для компонента в ускоренном порядке.

[0049] Кроме того, генератор 216 кода может быть использован по запросу для компилирования кода и кэширования кода. Например, в приложении Интернет браузера, ссылки на новый код могут выявляться динамически. Например, web-документ может включать в себя ссылки на другой код, который должен быть загружен и исполнен. Генератор 216 кода может быть использован для компилирования кода, на который ссылаются посредством этих ссылок, и кэширования скомпилированного кода для ускорения последующих исполнений кода.

[0050] Генератор 216 кода может быть реализован в или может использовать «песочницу» для генерирования кода. Песочница является средой с ограниченными правами в отношении данных, к которым она может получить доступ. В одной реализации, генератор 216 кода может быть реализован в качестве процесса с ограниченными правами. Процессу может быть передан дескриптор на файл байт-кода, из которого процесс может осуществлять считывание и в который может осуществлять запись, и может быть предоставлен доступ только для считывания к исходному коду. В целях обеспечения безопасности, процесс может не иметь доступа к другим ресурсам, кроме тех, что упомянуты выше.

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

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

[0053] После записи байт-кода в файл, процесс может электронным образом подписывать или иным образом «пломбировать» файл, таким образом, чтобы можно было обнаружить любые модифицирования файла. Опломбирование файла может быть выполнено в виде множества криптографических и/или связанных с файловой системой форм, которые будут понятны специалистам в соответствующей области. Например, в одной реализации, файловая система может устанавливать расширенный атрибут на файл после опломбирования. Если после этого файл модифицируется, то расширенный атрибут может быть изменен для указания того, что файл более не опломбирован.

[0054] Запись байт-кода в хранилище 220 иногда именуется в данном документе как кэширование байт-кода. Диспетчер 217 кэша может функционировать для сохранения байт-кода в хранилище 220 и предоставления доступа к байт-коду по запросу. Диспетчер 217 кэша может гарантировать то, что байт-код сохраняется постоянно в хранилище 220, так что байт-код доступен после перезапуска системы 205. Диспетчер 217 кэша также может сохранять копию байт-кода в основной памяти, высокоскоростной кэш-памяти, видео памяти, другой памяти, включая энергозависимую и энергонезависимую память или подобное, если требуется, для обеспечения быстрого доступа к байт-коду.

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

[0056] Если более чем один пользователь устанавливает пакет, то реализация может кэшировать несколько копий или лишь одну копию байт-кода для пакета в хранилище 220. Там, где пакет направлен на более чем одну архитектуру процессора (например, 32-битную и 64-битную), генератор 216 кода может генерировать и кэшировать целевой байт-код для каждой архитектуры процессора.

[0057] В некоторых реализациях, может присутствовать несколько инициирующих событий для повторного генерирования байт-кода пакета. Например, если была нарушена пломба файла, который включает в себя байт-код (например, обнаружено вмешательство), испортились носители данных, или другие данные указывают на то, что кэш может быть недействительным или не нетронутым, это может служить в качестве инициирующего события в отношении того, что должен быть повторно сгенерирован байт-код пакета. В данном случае, если диспетчер 218 исполнения определяет, что пломба была нарушена, то диспетчер 218 исполнения может выдать инструкцию генератору 216 кода на повторное генерирование байт-кода для пакета. Генератор 216 кода может повторно генерировать байт-код образом аналогичным тому, каким генератор 216 кода первый раз генерировал байт-код (например, помещая элементы, соответствующие компонентам пакета в очередь или другую структуру данных, указывающую потребность в генерировании байт-кода).

[0058] В качестве другого примера, если среда, использующая байт-код, была модернизирована до новой версии, то это может инициировать повторное генерирование байт-кода. Например, если Интернет браузер или другая среда исполнения была обновлена до новой версии, которая имеет другую грамматику или синтаксис байт-кода, то это может инициировать повторное генерирование байт-кода, подходящего для новой версии. В данном примере, инициирующее событие может происходить, когда пользователь пытается исполнить программное обеспечение, связанное с байт-кодом. Это может вызывать повторное генерирование байт-кода по использованию и может избегать одновременного повторного генерирования байт-кода для всех установленных пакетов.

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

[0060] В качестве другого примера, если должна быть установлена новая версия пакета, это может служить инициирующим событием для повторного генерирования байт-кода.

[0061] В качестве другого примера, если по каким-либо причинам байт-код удален, это может служить инициирующим событием для повторного генерирования байт-кода.

[0062] В хранилище 220, могут храниться исходный код и соответствующий байт-код, в одном примере, как иллюстрируется на Фиг. 3. Фиг. 3 иллюстрирует примерную структуру данных, которая может использоваться в соответствии с аспектами описываемого в данном документе предмета изобретения. В одной реализации, структура данных, иллюстрируемая на Фиг. 3, может иметь таблицу, которая указывает файлы исходного кода и представления в байт-коде, которые доступны в структуре данных. Таблица может также включать в себя данные, которые указывают на то, где файлы исходного кода и