#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 отношение не имеют.
Комментариев нет:
Отправить комментарий