Фреймворк и ide в чем разница
Framework — термин, имеющий размытое значение. Обычно используется в программировании, обозначая «простую концептуальную структуру, используемую для решения сложной, проблемной задачи» . Значение этого термина существенно зависит от контекста его использования.
Conceptual Framework — абстрактная структура, используется в исследованиях для определения возможных способов решения проблемы, или представления идеи.
Software Framework — каркас программной системы (или подсистемы) . Может включать вспомогательные программы, библиотеки кода, язык сценариев и другое ПО, облегчающее разработку и объединение разных компонентов большого программного проекта. Обычно объединение происходит за счёт использования единого API.
Примеры: системы управления контентом (CMS).
Отличается от библиотеки (library) тем, что выполняет код написанный для него, а не исполняется сам. Пример программного каркаса — CMF (Content Management Framework), а пример библиотеки — модуль email.
Также в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, framework содержит в себе большое число разных по тематике библиотек.
Application Framework — каркас приложения (открытая инфраструктура приложения) . Это software framework, который используется, чтобы обеспечивать выполнение стандартной структуры приложения для определённой операционной системы. Каркасы приложения стали популярны с появлением GUI, который имел тенденцию к распространению стандартой структуры для приложений. С их использованием стало гораздо проще создавать средства для автоматического создания GUI, так как структура внутренней реализации кода приложения стала известна заранее. Для обеспечения каркаса обычно используются техники объектно-ориентированного программирования, например части приложения могут наследоваться от базовых классов фреймворка.
Один из первых коммерческих каркасов приложения был MacApp, написанный Apple Computer под Macintosh. Первоначально созданный с помощью расширенной (объектно-ориентированной) версии языка Паскаль, впоследствии он был переписан на C++. Другие популярные каркасы для Macintosh включали Metrowerks Powerplant и MacZoop (все основаны на Carbon)
Также существуют каркасы, которые создают одинаковые приложения для Linux, Macintosh и Windows из одного и того же исходного кода, например widget toolkit, wxWidgets, Qt или FOX toolkit.
Framework — термин, имеющий размытое значение. Обычно используется в программировании, обозначая «простую концептуальную структуру, используемую для решения сложной, проблемной задачи» . Значение этого термина существенно зависит от контекста его использования.
Conceptual Framework — абстрактная структура, используется в исследованиях для определения возможных способов решения проблемы, или представления идеи.
Software Framework — каркас программной системы (или подсистемы) . Может включать вспомогательные программы, библиотеки кода, язык сценариев и другое ПО, облегчающее разработку и объединение разных компонентов большого программного проекта. Обычно объединение происходит за счёт использования единого API.
Примеры: системы управления контентом (CMS).
Отличается от библиотеки (library) тем, что выполняет код написанный для него, а не исполняется сам. Пример программного каркаса — CMF (Content Management Framework), а пример библиотеки — модуль email.
Также в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, framework содержит в себе большое число разных по тематике библиотек.
Application Framework — каркас приложения (открытая инфраструктура приложения) . Это software framework, который используется, чтобы обеспечивать выполнение стандартной структуры приложения для определённой операционной системы. Каркасы приложения стали популярны с появлением GUI, который имел тенденцию к распространению стандартой структуры для приложений. С их использованием стало гораздо проще создавать средства для автоматического создания GUI, так как структура внутренней реализации кода приложения стала известна заранее. Для обеспечения каркаса обычно используются техники объектно-ориентированного программирования, например части приложения могут наследоваться от базовых классов фреймворка.
Один из первых коммерческих каркасов приложения был MacApp, написанный Apple Computer под Macintosh. Первоначально созданный с помощью расширенной (объектно-ориентированной) версии языка Паскаль, впоследствии он был переписан на C++. Другие популярные каркасы для Macintosh включали Metrowerks Powerplant и MacZoop (все основаны на Carbon)
CSS-фреймворк — это библиотека, подразумевающая более
простое, совместимое со стандартами оформление страниц,
с использованием каскадных таблиц стилей. Так же, как и
в различных языках программирования, такой фреймворк —
это набор готовых приёмов, который, в данном случае,
используется для вёрстки веб-страниц.
Фреймворк ближе относится к понятию дизайна архитектуры программы, чем к классам и паттернам.
Классы - это самый низкий уровень программы написанной на объектно-ориентированном языке, на основе классов создаются объекты обладающие состоянием и ПОВЕДЕНИЕМ (методами), которые меняют состояние объекта. например метод Лети - заставляет объект лететь и рассчитывать траекторию полета. Объект летчик, вызывает метод объекта самолет и тот летит. Самолет в свою очередь оповещает летчика о параметрах полета, чтобы летчик на основе этих данных мог принимать решения и дергать иные методы самолета, управляя им. Так можно сказать что обязанности (методы) этих объектов распределены и связаны.
Паттерны проектирования - это описание наиболее оптимальных способов ГРУППИРОВКИ объектов и РАСПРЕДЕЛЕНИЯ между ними обязанностей (МЕТОДОВ) для решения какой-то ОТДЕЛЬНОЙ ЗАДАЧИ, часто возникающей перед программистом, пишущим ЛЮБУЮ программу.
Фреймворк это архитектурное решение состоящее из ГРУППИРОВКИ различных ПАТТЕРНОВ проектирования и иных специфичных РЕШЕНИЙ по распределению обязанностей (оно же поведений, оно же методов) на уровне разработки дизайна архитектуры для целого КЛАССА ПРОГРАММ.
Например одни фреймворки созданы для класса программ, создающих графический интерфейс (JAVAFX) другие для создания веб сайтов (Spring WEB MVC) и так далее. В том же Спринге существует несколько видов этого фреймворка, помогающего писать тот или иной класс программ.
ЛИчно я сравниваю фреймворк с книжкой раскраской. Есть некоторый скелет, очертания фигуры, которые мы уже потом закрашиваем кодом подгоняя под наши вкусы и конкретную ситуацию. Фреймворк может содержать ттак же какие -то готовые реализованные классы, в нашем случае пусть это будут цвета без примесей в стандартном наборе красок из магазина, мы можем закрашивать наш краскас ими, а можем и сами расширить поведение методов фреймворка переопределяя методы его классов и таким образом смешивать и создавать наши собственные цвета.
Фрейморк - это реализация и использование опыта и накопленных знаний о том классе программ для которых он написан, те цвета и ту форму которую для вас разработали и просчитали опытные разработчики вы можете теперь использовать и разрисовывать своими или уже готовыми цветами. Это существенно ускоряет и упрощает процесс разработки, что особенно важно для бизнес приложений, так как бизнес ждать не любит. Однако знание фреймворка демотивирует вас в изучении основ языка, его инструментальных библиотек и паттернов проектирования, ведь за вас уже сделали большую часть работы, все продумали и все спроектировали. Осталось дергать за готовые методы и этого вполне достаточно, чтобы сделать приличное приложение или веб сервис. Это надо иметь в виду и всегда спрашивать себя - а как бы я нарисовал это животное или фигуру если бы я сам создавал книжку раскраску, какой бы набор стандартных цветов создал я, наиболее подходящий для этого класса сущностей?
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago .
I want some examples. I always get confused, so with some examples I might be able to figure it out better.
Also: Is Eclipse an API or IDE?
Аналогия С Автомобилем
IDE: MS Office программирования. Здесь вы вводите свой код, а также некоторые дополнительные функции, чтобы сделать вас более счастливым программистом. (например,В Eclipse, В NetBeans). кузов автомобиля: это то, что вы действительно касаетесь, видите и работаете.
библиотека: библиотека представляет собой набор функций, часто сгруппированных в несколько программных файлов, но упакованных в один архивный файл. Этот содержит программы, созданные другими людьми, так что вам не придется изобретать колесо. (например,С JUnit.банку, log4j.jar). Библиотека обычно играет ключевую роль, но делает всю свою работу за кулисами, у нее нет GUI. двигатель автомобиля.
API: документация издателя библиотеки. это, как вы должны использовать мою библиотеку. (например,API для настройки log4j, junit API). пользователь автомобиля руководство-да, автомобили тоже приходят с одним!
5 Answers 5
An IDE is an integrated development environment - a suped-up text editor with additional support for developing (such as forms designers, resource editors, etc), compiling and debugging applications. e.g Eclipse, Visual Studio.
A Library is a chunk of code that you can call from your own code, to help you do things more quickly/easily. For example, a Bitmap Processing library will provide facilities for loading and manipulating bitmap images, saving you having to write all that code for yourself. Typically a library will only offer one area of functionality (processing images or operating on zip files)
An API (application programming interface) is a term meaning the functions/methods in a library that you can call to ask it to do things for you - the interface to the library.
An SDK (software development kit) is a library or group of libraries (often with extra tool applications, data files and sample code) that aid you in developing code that uses a particular system (e.g. extension code for using features of an operating system (Windows SDK), drawing 3D graphics via a particular system (DirectX SDK), writing add-ins to extend other applications (Office SDK), or writing code to make a device like an Arduino or a mobile phone do what you want). An SDK will still usually have a single focus.
A toolkit is like an SDK - it's a group of tools (and often code libraries) that you can use to make it easier to access a device or system. Though perhaps with more focus on providing tools and applications than on just code libraries.
A framework is a big library or group of libraries that provides many services (rather than perhaps only one focussed ability as most libraries/SDKs do). For example, .NET provides an application framework - it makes it easier to use most (if not all) of the disparate services you need (e.g. Windows, graphics, printing, communications, etc) to write a vast range of applications - so one "library" provides support for pretty much everything you need to do. Often a framework supplies a complete base on which you build your own code, rather than you building an application that consumes library code to do parts of its work.
There are of course many examples in the wild that won't exactly match these descriptions though.
Так в чём на самом деле разница между фрэймворком, библиотекой и API? Есть мнение, что всё это близкие понятия, везде есть классы и методы которые можно встроить в клиентский код. И всё же, похоже есть существенные отличия?
Метафорически — библиотека — это часть приложения. Фрэймворк — это скелет, API – внешние части указанного приложения. Фрэймворк, ко всему прочему, в отличии от API использует инверсию управления.
Начнём с API. Это самый простой вариант: возможность для приложения обратиться к коду вне этого приложения. Это набор функциональности для того, чтобы заставить внешнюю для программы сущность сделать свою работу.
Пример из реальной жизни: у вас есть в квартире водопровод, а API — телефон сантехника, который этот водопровод может починить, если надо.
Теперь, библиотека — это готовый к использованию набор кода, который бежит в контексте приложения, и точно так же выполняет свою работу. То есть библиотека становится при подключении частью приложения. Разница между библиотекой и API может быть довольно тонкой: например, WinAPI предоставляет функциональность, которая в общем-то иногда происходит и в рамках процесса. Тем не менее, это считается обращением к внешней для приложения платформе.
Пример из реальной жизни: вы сами не сколачиваете шкаф, а покупаете домой готовый, ставите в свою квартиру и пользуетесь им. Шкаф — ваша подключаемая библиотека.
Ну и фреймворк — его функции, в отличие от библиотеки, не вызываются вами, а наоборот, ваш код вызывается из него. Фреймворк можно представить себе в виде полуфабриката приложения, к которому вы дописываете нужную функциональность сами.
Пример из реальной жизни: вы покупаете почти готовую квартиру, а мебель, обои и шкафы добавляете сами. Квартира — ваш фреймворк, она уже почти готова. Вы не можете так просто переделать число комнат или превратить её в корабль, вместо этого вы только добавляете внутреннюю функциональность: паркетный пол, махровый халат в ванной и кота.
Сегодня слово «framework» стало обыденным в web dev'е. Как только jQuery и Prototype, Rails и Django получили широкое распространение, кажется, что теперь каждый использует какой-нибудь framework для создания своего сайта.
Но что же такое framework? Они полезны программистам, или даже веб дизайнеры могут воспользоваться их преимуществами.
Итак, давайте договоримся — хотя бы на протяжении этой статьи — считать, что “framework” — это набор инструментов, библиотек, хорошего кода, который поможет превратить рутинные задачи в модули, которые можно использовать неоднократно. Задача framework'а — позволить дизайнеру или разработчику сфокусироваться на задачах, являющимися уникальными в рамках данного проекта. Иначе говоря, не изобретать колесо раз за разом. Вобщем, это подход, выбранный вышеуказанными web и JavaScript framework'ами.
Возможно, и вы сможете извлечь выгоду от аналогичной абстракции CSS кода в течение дизайна вашего сайта. Те, кто по достоинству смогут оценить данных подход — это дизайнеры, работающие над несколькими подобными друг другу сайтами. К тому же, дизайнеры, работающие в команде, могут работать, используя один и тот же framework. Например, я работаю в газете, и все наши 20 с небольшим сайта имеют много общего. Из-за того, что это, в основном, новостные сайты, они по определению больше схоже, чем различны. Но даже дизайнер-одиночка, который работает над совершенно разными проектами, может найти элементы, которые можно внести в его основной framework.
- Массовый сброс стандартных браузерных стилей. К примеру, установка margin и padding в 0 у всех элементов, отключение border’ов у frameset’ов и изображений, и т.д.
- Создание примерного типа оформления: margin’ы у блочных элементов, таких, как параграфы, заголовки, списки, и т.д.
- Создание простых стилей для форм.
- Создание нескольких CSS-классов, которые я постоянно использую, к примеру, .hide (где я устанавливаю display:none) и .mute (где я устанавливаю меньший размер шрифта и, иногда, более светлый цвет).
К тому же, многие сайты используют одни и те же виджеты, такие как drop-down меню, закладки в навигации, кнопки, и т.д. Эти вещи хорошо подходят для абстракции. Помимо этого, вы можете выработать некоторые свои идиомы, как скажем, список фотографий, показывающийся в виде thumbnail’ов. Вы можете стандартизировать CSS класс “thumbnail-list”, и в следующий раз вам всего лишь потребуется вставить этот класс, чтобы получить работающий вариант.
Имея такой framework, вы сможете быстро окунуться в создание новой страницы. Вы создаете новый (X)HMTL документ, подключаете framework, и вам уже не потребуется времени, чтобы избавиться от ненужных отступов, у вас уже будет нужная вам типографика, чистые формы, работающие виджеты и много другое!
Вероятно, что вам захочется как-то изменить внешний вид конретного сайта. Чтобы это осуществить, все что вам нужно, это добавить или изменить уже существующий стиль. К примеру, если ваш framework устанвливает стандартную панель с навигацией для каждого «ul» с классом “tabs”, который имеет серый фон и черные границы. Чтобы это изменить, вам всего лишь потребуется добавить (или изменить существующий) стиль. Например:
- reset.css—отвечает за сброс стандартных стилей.
- type.css—отвечает за типографику.
- grid.css—отвечает за компоновку.
- widgets.css—отвечает за виждеты: tab’ы, drop-down меню и кнопки «читать далее».
- base.css—подключает все остальные страницы стилей, так что мы можем обращаться только к base.css из нашего (X)HTML документа, чтобы использовать весь framework.
На практике, мы, веб дизайнеры, так же как и наши коллеги из мира программирования, имеем привычку часто повторятся. Мы каждый раз отключаем стандартные стили, пишем занового стили для tab’ов, и это повторяется от проекта к проекту. Потратьте немного времени на написание своего framework’а, абстрагируйте там то, что вы можете использовать несколько раз. Это поможет вам быстро начать создавать новую страницу, или поддерживать уже существующую. Позаботьтесь об этом, ведь это не требует особых знаний и не повредит вашим проектам, а главное, сэкономит время на создания дизайна следующего.
Я хочу несколько примеров. Я всегда путаюсь, поэтому с некоторыми примерами я мог бы понять это лучше.
также: является ли Eclipse API или IDE?
An IDE - интегрированная среда разработки-текстовый редактор suped-up с дополнительной поддержкой разработки (например, конструкторов форм, редакторов ресурсов и т. д.), компиляции и отладки приложений. e.g Eclipse, Visual Studio.
A библиотека - это кусок кода, который вы можете вызвать из своего собственного кода, чтобы помочь вам делать вещи быстрее/легче. Например, библиотека обработки растровых изображений предоставляет средства для загрузки и управления растровым изображением снимки, избавляя вас от необходимости писать весь код самостоятельно. Как правило, библиотека предлагает только одну область функциональности (обработка изображений или работа с zip-файлами)
An API (интерфейс прикладного программирования) - это термин, означающий функции/методы в библиотеке, которые вы можете вызвать, чтобы попросить его сделать что-то для вас-интерфейс к библиотеке.
An SDK (software development kit) - это библиотека или группа библиотек (часто с дополнительные средства приложения, файлы с данными и пример кода), что поможет вам в разработке кода, который использует конкретной системы (например, расширение код для использования функций операционной системы (Windows SDK), то чертеж 3D-графики по определенной системе (в DirectX SDK) для написания надстройки для расширения возможностей других приложений (офис СДК), или писать код, чтобы сделать устройство как Arduino или мобильный телефон делай, что хочешь). SDK по-прежнему будет иметь один фокус.
A набор инструментов как SDK-это группа инструментов (и часто библиотек кода), которые можно использовать для облегчения доступа к устройству или системе. Хотя, возможно, больше внимания уделяется предоставлению инструментов и приложений, чем просто библиотекам кода.
A framework - это большая библиотека или группа библиотек, которая предоставляет множество услуг (а не, возможно, только одну сфокусированную способность, как большинство библиотек/SDK). Например, .NET предоставляет платформу приложений - это упрощает использование большинства (если нет все) из разрозненных сервисов, которые вам нужны (например, Windows, графика, печать, связь и т. д.), Чтобы написать широкий спектр приложений - поэтому одна "библиотека" обеспечивает поддержку почти всего, что вам нужно сделать. Часто фреймворк предоставляет полную базу, на которой вы создаете свой собственный код, а не приложение, которое использует библиотечный код для выполнения части своей работы.
есть, конечно, много примеров в дикой природе, которые не будут точно соответствовать этим описаниям хотя.
наборы
Что такое комплект? Это совокупность множества связанных элементов, которые работают вместе, чтобы предоставить конкретную услугу. Когда кто-то говорит, аптечку, вы получаете все необходимое для ЧП: пластыри, аспирин, бинты и антисептик, и т. д.
SDK: Макдональдс Хэппи Мил. У вас есть все, что вам нужно (и не нужно) аккуратно упаковано: main конечно, напиток, десерт и бонусная игрушка. SDK-это набор различных программных компонентов, собранных в пакет, так что они "готовы к действию" прямо из коробки. Он часто включает в себя несколько библиотек и can, но может не обязательно включать Плагины, документацию API, даже саму IDE. (например, комплект для разработки iOS).
набор инструментов: графический интерфейс. ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ. ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ. Когда вы слышите "инструментарий" в контексте программирования, он часто ссылается на набор библиотек, предназначенных для разработки GUI. Поскольку наборы инструментов ориентированы на пользовательский интерфейс, они часто поставляются с плагинами (или автономными IDE), которые предоставляют утилиты рисования экрана. (например,GWT)
рамки: хотя это не распространенное понятие, фреймворк можно рассматривать как набор. Он также имеет библиотеку (или коллекцию библиотек, которые работают вместе), которая обеспечивает определенную структуру кодирования и шаблон (таким образом, слово,рамки). (например, Весна Framework)
Рассмотрим Разработку Android:
IDE: Eclipse etc..
библиотека: android.приложение.Библиотека действий (класс со всем кодом)
API: интерфейс в основном все функции с ведьмой мы называем
SDK: Android SDK предоставляет вам библиотеки API и инструменты разработчика, необходимые для создания, тестирования и отладки приложений для Android (- - - - инструменты-DDMS, эмулятор - - - - платформы-версии ОС Android, - - - - инструменты платформы-ADB, - - - - API docs)
ToolKit: может быть ADT Bundle
Framework: большая библиотека, но больше ориентированная на архитектуру
SDK представляет к набору разработки программного обеспечения, и IDE представляет к интегрированной среде разработки. IDE-это программное обеспечение или программа, используемая для записи, компиляции, запуска и отладки, например Xcode. SDK является базовым ядром IDE, включает в себя все библиотеки платформы, к которым приложение должно получить доступ. Он более прост, чем IDE, потому что обычно не имеет графических инструментов.
IDE Даже ваш блокнот-это IDE. Каждая программа вам написать/скомпилировать код с-это IDE.
библиотека Куча кода, который упрощает функции/методы для быстрого использования.
API Программный интерфейс для функций / конфигурации, с которыми вы работаете, его использование часто документируется.
SDK Дополнительно и/или для целей разработки / тестирования.
набор инструментов Крошечные приложения для быстрого использования, часто GUIs.
GUI Приложения с графическим интерфейсом, не требует знания программирования в отличие от API.
рамки Куча API/огромная библиотека / фрагменты, завернутые в пространство имен/или инкапсулированные из внешней области для компактной обработки без конфликтов с другим кодом.
MVC Шаблон дизайна, разделенный в моделях, представлениях и контроллерах для огромных приложения. Они не зависят друг от друга и могут быть изменены/улучшены/заменены без необходимости заботиться о другом коде.
Автомобиль (Модель)
объекта представленный.
Пример в нем: HTML-форма.
Камера (Вид)
что-то, что может видеть объект(автомобиль).
Пример в нем: браузер, который отображает веб-сайт с формой.
Драйвер (Контроллер)
кто-то, кто водит машину.
Пример в нем: функции, которые обрабатывают данные формы, которые передаются.
фрагментов Небольшие коды только нескольких строк, может быть, даже не полный, но стоит для быстрой доли.
Плагины Эксклюзивные функции для определенных фреймворков / API / библиотек только.
дополнения Дополнительные модули или услуги для конкретных ГИС.
Читайте также: