Чем sdk отличается от framework
Так в чем разница? Это в первую очередь маркетинговая игра семантики или существуют реальные различия в том, как разработчики должны взаимодействовать с программным обеспечением (и, наоборот, как разработчики могут ожидать поведения программного обеспечения)? Ожидается, что один будет выше или ниже другого и т. д.?
Обновлено: этот вопрос относится к SDK и фреймворкам в целом, а не только к двум упомянутым выше.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 8
Итак, вы можете разработать Framework, состоящий исключительно из библиотек, но если вы назовете его SDK, вы должны будете предложить что-то для поддержки разработки.
Другой пример: Qt framework (библиотеки) и Qt SDK (Qt framework + qmake + Qt Creator + Qt Linguist + . )
Microsoft SDK может использоваться разработчиком для создания своих программ. Конечным пользователям это обычно не нужно.
В двух словах разница заключается в следующем:
- Вы вызываете функции SDK.
- Фреймворк вызывает ваши функции.
SDK похож на набор инструментов с множеством инструментов, и вы выбираете, какие из них использовать и как. У вас есть контроль, но вам нужно принять множество решений. Это довольно низкий уровень.
Фреймворк принимает за вас множество решений, поэтому вам не придется изобретать велосипед; Это больше подход «заполнить пробелы». Меньше свободы, но вы сэкономите много времени и, возможно, избежите некоторых ошибок.
Потому что пункты списка неверны. Вызываемые вами функции - это API, а не SDK. SDK - вещь "серого цвета". Это просто фреймворк с дополнительными функциями, которые могут вам помочь.
Я был лидером в разработке Zend Framework до выпуска 1.0. Мы часто получали комментарии о том, что это не «фреймворк» в том смысле, которого ожидали разработчики - они говорили, что это скорее библиотека классов.
Они ожидали, что фреймворк больше похож на набор классов, которые должен можно использовать вместе для работы. Фреймворк также может включать в себя набор соглашений о кодировании, которые помогут вам организовать свой код определенным образом. Также фреймворк может налагать соглашения об именах для ваших классов и сущностей базы данных. И, наконец, инструменты генерации кода.
Zend Framework разрабатывался как слабосвязанный, поэтому при желании можно было использовать любой из классов отдельно. Это наложило несколько соглашений на ваш код или вашу базу данных. И мы намеревались разработать генераторы кода, но еще не реализовали их.
Но я все еще чувствовал, что Zend Framework квалифицируется как фреймворк, а не как SDK, еще одним способом: фреймворк - это расширяемый. Он разработан как набор объектно-ориентированных базовых классов, и предполагаемое использование заключается в том, что разработчики либо extend этих классов, либо пишут простые классы подключаемых модулей для добавления функциональности.
Традиционный SDK - это не расширяемый. Вы просто вызываете методы API в предоставленных классах, они делают то, что делают, а вы имеете дело с результатом. Любая настройка связана с тем, как вы используете API и как вы используете результаты.
Библиотека классов предоставляет классы, которые обычно используют одну и ту же приблизительную область применения (математика, рендеринг), но предназначены для использования в основном независимо друг от друга.
Фреймворк предоставляет классы, которые вместе образуют основу для приложения, которое вы только расширяете и конкретизируете.
SDK содержит все необходимое для использования технологии, для которой предоставляется SDK. Он часто содержит документацию, образцы и инструменты вместе с фактическим основным контентом, который может быть фреймворком, библиотекой классов или даже чем-то совершенно другим.
Я просто скопирую из Википедии:
A library is a collection of subroutines or classes used to develop software. Libraries contain code and data that provide services to independent programs. This allows code and data to be shared and changed in a modular fashion.
A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API. Unlike libraries, however, the overall program's flow of control is not dictated by the caller, but by the framework. This inversion of control is the distinguishing feature of software frameworks.
A software development kit (SDK or "devkit") is typically a set of development tools that allows a software engineer to create applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform. It may be something as simple as an application programming interface in the form of some files to interface to a particular programming language or include sophisticated hardware to communicate with a certain embedded system. Common tools include debugging aids and other utilities often presented in an IDE. SDKs also frequently include sample code and supporting technical notes or other supporting documentation to help clarify points from the primary reference material.
А какая разница с «двигателем»
@Delta - это что-то вроде фреймворка, который также предоставляет среду выполнения, с которой взаимодействуют ваши программы. Я думаю, что основная идея заключается в том, что движок «работает» с вашим кодом, контролирующим или «управляющим» действиями.
So what's the difference? Is it primarily a marketing game of semantics, or are there actual differences in how developers are expected to interact with the software (and conversely, how the developers can expect the software to behave)? Is one expected to be higher- or lower-level than the other, etc?
EDIT: This question applies to SDKs and frameworks in general, not just the two mentioned above.
Похожие вопросы
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.
Так в чем же разница? Является ли это в первую очередь маркетинговой игрой семантики или существуют реальные различия в том, как разработчики должны взаимодействовать с программным обеспечением (и наоборот, как разработчики могут ожидать, что программное обеспечение будет вести себя)? Ожидается ли, что один будет на более высоком или низком уровне, чем другой, и т. Д.?
РЕДАКТИРОВАТЬ: Этот вопрос относится к SDK и фреймворкам в целом, а не только к двум, упомянутым выше.
Таким образом, вы можете разработать Framework, состоящий исключительно из библиотек, но если вы назовете его SDK, вы должны будете предложить что-то для поддержки разработки.
Я просто скопирую из Википедии:
Библиотека - это набор подпрограмм или классов, используемых для разработки программного обеспечения. Библиотеки содержат код и данные, которые предоставляют услуги независимым программам. Это позволяет совместно использовать код и данные и изменять их по модульному принципу.
Программная среда в компьютерном программировании - это абстракция, в которой общий код, обеспечивающий общие функциональные возможности, может выборочно переопределяться или специализироваться пользовательским кодом, обеспечивающим определенные функциональные возможности. Фреймворки аналогичны программным библиотекам в том, что они представляют собой повторно используемые абстракции кода, заключенного в четко определенный API. Однако, в отличие от библиотек, общий поток управления программой определяется не самим вызывающим, а структурой. Эта инверсия управления является отличительной чертой программных платформ.
Набор для разработки программного обеспечения (SDK или «devkit») обычно представляет собой набор инструментов для разработки, который позволяет разработчику программного обеспечения создавать приложения для определенного пакета программного обеспечения, структуры программного обеспечения, аппаратной платформы, компьютерной системы, игровой консоли, операционной системы. или аналогичная платформа. Это может быть что-то такое же простое, как интерфейс прикладного программирования в виде некоторых файлов для взаимодействия с конкретным языком программирования или сложное аппаратное обеспечение для связи с определенной встроенной системой. Общие инструменты включают средства отладки и другие утилиты, часто представленные в IDE. SDK также часто включают в себя пример кода и сопроводительные технические примечания или другую сопроводительную документацию, чтобы помочь прояснить моменты из основного справочного материала.
В двух словах, разница в следующем:
- Вы вызываете функции SDK.
- Платформа вызывает ваши функции.
SDK - это как набор инструментов с множеством инструментов, и вы выбираете, какие из них использовать и как. У вас есть контроль, но и много решений. Это довольно низкий уровень.
Фреймворк принимает множество решений за вас, поэтому вам не нужно изобретать велосипед; Это скорее подход "заполнить пробелы". Меньше свободы, но вы экономите много времени и, возможно, избегаете некоторых ошибок.
Я был ведущим в Zend Framework в своей версии 1.0. Мы часто получали комментарии о том, что это не «фреймворк» в том смысле, в котором ожидали разработчики - они сказали, что это скорее библиотека классов.
Они ожидали, что инфраструктура больше похожа на набор классов, которые должны использоваться вместе, чтобы они работали. Фреймворк также может включать в себя набор соглашений о кодировании, которые помогут вам организовать ваш код определенным образом. Также фреймворк может налагать соглашения об именах для ваших классов и объектов базы данных. И, наконец, инструменты для генерации кода.
Zend Framework был разработан для слабой связи, поэтому вы можете использовать любой из классов, если хотите. Это наложило несколько соглашений на ваш код или вашу базу данных. И мы собирались разработать генераторы кода, но еще не реализовали их.
Но я все еще чувствовал, что Zend Framework квалифицируется как фреймворк, а не как SDK, еще одним способом: фреймворк расширяемый . Он спроектирован как набор объектно-ориентированных базовых классов, и предполагается, что разработчики либо extend этих классов, либо пишут простые плагины в классах, чтобы добавить функциональность.
Традиционный SDK не расширяемый . Вы просто вызываете методы API в предоставленных классах, они делают то, что делают, и вы работаете с результатом. Любая настройка заключается в том, как вы используете API и как вы используете результаты.
Microsoft SDK может использоваться разработчиком для создания своих программ. Конечным пользователям обычно это не нужно.
Библиотека классов предоставляет классы, которые обычно используют одну и ту же грубую область применения (математика, рендеринг), но предназначены для использования в основном независимо друг от друга.
Фреймворк предоставляет классы, которые вместе образуют основу для приложения, которое вы только расширяете и уточняете.
SDK содержит все, что вам нужно для использования технологии, для которой предоставляется SDK. Он часто содержит документацию, примеры и инструменты наряду с реальным базовым контентом, который может быть каркасом, библиотекой классов или даже чем-то совершенно другим.
В одном сравнении вы могли бы сказать:
Библиотека -> Framework -> SDK
Framework состоит из нескольких библиотек, а также некоторых инструментов (компиляторов и т. Д.) И не ориентирован на конкретную платформу. Для платформы может быть разработано несколько платформ, каждая из которых предназначена для разных целей. SDK предлагает вам фреймворки и все остальное, что вам нужно для разработки программного обеспечения для конкретной платформы.
Популярные теги
Я просматривал различные API и SDK, когда понял, что не могу сказать разницу между тем, что называется API и что-то называется SDK .
Оба из них, концептуально, позволяют вашей программе взаимодействовать и управлять ресурсами, предоставляемыми другим программным обеспечением, независимо от того, является ли это другое программное обеспечение веб-службой, конечным пользователем, службой или демоном, или драйвер устройства ядра.
Итак, какова семантическая разница между SDK и API?
Я думаю, что это скорее падает по строкам «Все SDK имеют /содержат API, но не все API - это SDK».
SDK представляет собой полный набор API-интерфейсов, которые позволяют выполнять большинство действий, которые необходимы для создания приложений. Кроме того, SDK может включать в себя другие инструменты для разработки для платформы /элемента, для которой он предназначен.
API, с другой стороны, представляет собой всего лишь ряд связанных методов, которые могут быть полезными для определенной цели.
В качестве примера JDK (Java Development Kit) содержит API, а также компиляторы, среды выполнения и другие инструменты. Java API - это просто все библиотеки, которые составляют основной язык, с которым вы можете работать из коробки.
- API = Интерфейс прикладного программирования
- SDK = комплект разработки программного обеспечения
Таким образом, реальная разница заключается в том, что API не больше или меньше, чем интерфейс для «некоторой службы», в то время как SDK представляет собой набор инструментов /компонентов /классов для определенной цели. SDK фактически предоставляет вам API для взаимодействия. Но вы можете использовать API без базовых компонентов, например, когда API предоставляется через веб-службу.
API â † '(в определенный момент времени и для определенной аудитории. Документация может быть неполной и /или недоступной для широкой публики, и это может быть специально, но это не уменьшает того факта, что это должен был быть документирован для третьих сторон, чтобы использовать его.)
SDK â † '(+ примеры и инструменты)
«SDK» является коллективным в большем смысле, чем «API».
Обычно вы найдете только один SDK для покрытия всей платформы. Например, есть один MacOS X SDK и один SDK для iOS, и каждый из них содержит API для многих различных областей функциональности.
«API» изначально также использовался в качестве коллективного термина, и он все еще часто используется таким образом (MAPI, WSAPI и т. д.), но обычно он ограничен какой-то конкретной технологией. Сфера действия, подразумеваемая «API», по-видимому, уменьшилась на протяжении многих лет; люди говорили о «API-интерфейсе Mac Toolbox» или «Windows API», оба из которых явно содержали функциональность lot . В наши дни нередко слышно, что «API» означает единую системную функцию; можно сказать, что новая версия операционной системы содержит сотни новых API, а значит, это сотни новых системных вызовов.
Ни один из них не очень точен без какого-либо контекста.
Что такое API?
API - это интерфейс, который позволяет программным программам взаимодействовать друг с другом. Он определяет набор правил, которым должны следовать программы для общения друг с другом. API обычно определяют, как должны быть определены подпрограммы, структуры данных и т. Д., Чтобы два приложения могли общаться. API отличаются функциональностью, предоставляемой ими. Существуют общие API, которые предоставляют библиотечные функции языка программирования, такого как Java API. Существуют также API, которые предоставляют определенные функции, такие как API Карт Google. Существуют также API-интерфейсы, зависящие от языка, которые могут использоваться только определенным языком программирования. Кроме того, существуют языковые независимые API, которые могут использоваться с несколькими языками программирования. API-интерфейсы должны быть реализованы очень тщательно, подвергая только требуемые функциональные возможности или данные наружу, сохраняя при этом другие части приложения недоступными. Использование API стало очень популярным в Интернете. Стало очень распространено позволить некоторым функциям и данным через API выйти извне в Интернете. Эта функциональность может быть объединена, чтобы предложить пользователям улучшенные функциональные возможности.
Что такое SDK?
SDK - это набор инструментов, которые можно использовать для разработки программных приложений, ориентированных на определенную платформу. SDK включают инструменты, библиотеки, документацию и пример кода, которые помогут программисту разработать приложение. Большинство SDK можно загрузить из Интернета, и многие из SDK предоставляются бесплатно, чтобы побудить программистов использовать язык программирования SDK. Некоторыми широко используемыми SDK являются Java SDK (JDK), который включает в себя все библиотеки, утилиты для отладки и т. Д., Что значительно упростит программы написания на Java. SDK упрощают жизнь программиста, так как нет необходимости искать компоненты /инструменты, которые совместимы друг с другом, и все они интегрированы в один пакет, который легко установить.
В чем разница между API и SDK?
API - это интерфейс, который позволяет программным программам взаимодействовать друг с другом, тогда как SDK - это набор инструментов, которые можно использовать для разработки программных приложений, ориентированных на определенную платформу. Простейшей версией SDK может быть API, который содержит некоторые файлы, необходимые для взаимодействия с определенным языком программирования. Таким образом, API можно рассматривать как простой SDK без поддержки отладки и т. Д.
SDK может быть не чем иным, как API (файлы для взаимодействия с другим приложением), но обычно включает в себя другой код, помогающий отладки и другие части для вашей среды разработки.
Я все из аббревиатур.
Все упомянутое выше верно, но о SDK я хотел бы добавить, что комплект для разработки программного обеспечения (или должен быть) действительно полный пакет (почти) всех необходимых инструментов для процесса разработки, тогда как API «просто "интерфейс для взаимодействия с.
Мои два цента: я считаю, что термин API часто используется неправильно.
API - это интерфейс прикладного программирования.
Хотя это неловкое имя, это означает интерфейс . Таким образом, приложение может иметь API, чтобы другие приложения могли общаться с ним. И часть программного обеспечения (например, класс в OO-системе) может предложить API, позволяющий другим модулям в системе взаимодействовать с ним.
Однако часто термин API используется как синоним «библиотеки». Я не думаю, что это правильное использование этого слова. Часть библиотеки - это API, позволяющий использовать код, но библиотека не является API.
И SDK - это своего рода библиотека, поэтому здесь может возникнуть путаница.
Многие другие ответы объясняют, что SDK - это tooling , но ни один из них не выходит напрямую и говорит, что API - это спецификация .
API для compoonent X - это вся информация, которая вам нужна для написания другого компонента, который будет взаимодействовать с X. SDK для компонента X может содержать библиотечные процедуры , которые облегчают вам работу для записи этого компонента, но библиотеки не являются API: они представляют собой просто вариант API.
Я хотел бы сравнить этот путь.
Если вы являетесь разработчиком с помощью инструментов Microsoft:
Если вы являетесь разработчиком с использованием Java:
API = Java RunTime Vs SDK = Любой инструмент, который предоставит Development Kit (JDK)
Я думаю, что SDK обязательно должен будет полагаться на соответствующий API - нет SDK без API.
Вот простая аналогия . API-интерфейсы похожи на слова, которые вы можете использовать, а SDK - это предложения, которые были собраны для вас.
Поскольку приложения разрабатываются и расширяются путем взаимодействия с другими приложениями, существует потребность чтобы другие приложения (логика) могли взаимодействовать с основной логикой - это делается через определенный набор API. SDK используется для создания /создания кода, который использует API для взаимодействия с другими приложениями.
Похожие вопросы
8 Answers 8
I'll just copy from Wikipedia:
A library is a collection of subroutines or classes used to develop software. Libraries contain code and data that provide services to independent programs. This allows code and data to be shared and changed in a modular fashion.
A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality. Frameworks are similar to software libraries in that they are reuseable abstractions of code wrapped in a well-defined API. Unlike libraries, however, the overall program's flow of control is not dictated by the caller, but by the framework. This inversion of control is the distinguishing feature of software frameworks.
A software development kit (SDK or "devkit") is typically a set of development tools that allows a software engineer to create applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform. It may be something as simple as an application programming interface in the form of some files to interface to a particular programming language or include sophisticated hardware to communicate with a certain embedded system. Common tools include debugging aids and other utilities often presented in an IDE. SDKs also frequently include sample code and supporting technical notes or other supporting documentation to help clarify points from the primary reference material.
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?
Популярные теги
Читайте также: