Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Что такое framework и runtime?

#framework #runtime


Нигде не нашел чёткого опрделения этми двумя понятиям.

Я понимаю фреймворк, как платформу, которая необходима для работы каких-либо приложений.
Например, набор динамически линкуемых библиотек для нескольких приложений - уже фреймворк.
Также под это определение подохдит и Java Runtime Environment (в том числе и JVM).
Однако что такое рантайм? С одной стороны это всего лишь фаза выполнения программы.
С другой стороны есть куча терминов, как runtime libraries, runtime system... Что вкладывает
майкрософт в это понятие тоже неясно. Объясните, пожалуйста!
    


Ответы

Ответ 1



Между библиотекой и фреймворком разница небольшая, но принципиальна. Если Ваш код просто использует функции модуля, то этот модуль скорее всего библиотека. А вот если модуль заставляет Вас писать код так как он хочет и сам его вызывает, то это уже фреймворк. А вот собственно модуль - это набор файлов-исходников (иногда уже скомпилированных). runtime - это часть кода, существует в выполнимом файле (либо в отдельных so/dll) и обеспечивает всякие "удобства". Например, узнать тип объекта или сделать те же виртуальные вызовы. Добавляется обычно компилятором и обычный пользователь может даже не знать о нем. Также словом runtime называют то время, когда программа выполняется. Что конкретно имеется ввиду - нужно сдедить за контекстом. runtime libraries - это библиотеки, которые используются во время работы программы. Иногда библиотеки поставляются в двух видах - для разработки и для обычной работы (вторые часто оптимизированы и с них выброшено лишнее). Хороший пример - bpl файлы делфи. Для одного и того же компонента могут быть библиотеки, которые содержат всякие инструметы для IDE, а есть которые только для работоспособности кода. JRE - это не фреймворк, это runtime библиотека. Хотя с другой стороны это фреймворк для байткода. Но так как на байткоде пищут только особые извращенцы, то обычному программисту это не фреймфорк. А вот вся java - это один сплошной фреймворк:)

Ответ 2



Хотелось бы немного дополнить данный ранее ответ. Framework vs Library. И то, и то - набор каких-то полезностей и функциональностей, но принципиальная разница в Inversion Of Control. Поясню: представь себе консольное приложение, в которым ты спрашиваешь у пользователя какие-то данные, а затем проводишь вычисления и отдаешь результат. В ходе вычислений ты можешь использовать, например, библиотеку математических функций, но ты САМ задаешь ход и структуру программы, а функциями из библиотеки просто пользуешься по мере необходимости. Во фреймворках же происходит инверсия контроля, т.е. ход программы определяет ФРЕЙМВОРК, а тебе надо как бы заполнить определенные пустые места своим кодом (например, написать контроллер в MVC- фреймворках). Runtime. Под "runtime" скорее всего ты имеешь в виду вспомогательные программы, которые используются при исполнении основных программ через определенное API. Например, JS-движок браузера использует event loop и через разные API (например, XMLHttpRequest) получает дополнительные возможности, которые к самому JS не относятся. Эти API по сути и есть runtime, которые расширяют возможности и помогают выполнить код скрипта. При этом со стороны, взаимодействуя с API, может показаться, что эти возможности как бы принадлежат самому JS или же являются вызовами каких-то библиотечных функций, хотя на самом деле они могут быть реализованы вообще по-другому и к JS отношение не имеют.

Комментариев нет:

Отправить комментарий