框架、库、集成开发环境、应用程序接口、软件开发工具包之间有什么区别?

158
我需要一些例子。我经常感到困惑,有了一些例子,我可能能够更好地理解它。
另外:Eclipse是API还是IDE?
5个回答

321
IDE是集成开发环境 - 它是一个带有额外支持程序开发的功能(例如表单设计器、资源编辑器等)的强化版文本编辑器,包括编译和调试应用程序。例如Eclipse、Visual Studio。 Library是一段代码,您可以从自己的代码中调用它,以帮助您更快地、更容易地完成任务。例如,位图处理库将提供加载和操作位图图像的设施,节省了您自己编写所有代码的时间。通常,一个库只会提供一个领域的功能(处理图像或在zip文件上操作)。 API(应用程序编程接口)是指库中可供调用的函数/方法-库的接口,您可以调用它来要求它为您执行操作。 SDK(软件开发工具包)是一组库(通常附带额外的工具应用程序、数据文件和示例代码),可帮助您开发使用特定系统的代码(例如,扩展代码用于使用操作系统的功能(Windows SDK)、通过特定系统绘制3D图形(DirectX SDK)、编写添加到其他应用程序的插件(Office SDK),或编写代码使像Arduino或手机这样的设备按照您的意愿工作)。SDK通常仍然有一个重点。 Toolkit类似于SDK-它是一组工具(通常包括代码库),可用于更轻松地访问设备或系统...尽管可能更注重提供工具和应用程序,而不仅仅是代码库。 Framework是一个大型库或库群,提供许多服务(而不像大多数库/SDK那样只提供一个焦点能力)。例如,.NET提供了一个应用程序框架-它使得使用大多数(如果不是全部)您所需的差异化服务(例如Windows、图形、打印、通信等)来编写各种应用程序变得更加容易,因此一个“库”为您提供了几乎所有需要做的支持。通常,框架会提供完整的基础,您可以在其上构建自己的代码,而不是构建一个使用库代码消耗其工作部分的应用程序。

当然,实际中有很多例子并不完全符合这些描述。


3
SDK、库或框架都包含API。 - Bastien Vandamme
7
SDK是为了方便API使用而设计的客户端实现,例如Facebook API的JavaScript SDK。通常在API文档的SDK部分中会看到多个语言的实现,如Twilio API有Python、Ruby、C#和Java SDK。此外,有时他们会将其称为API库或SDK,并且这两个术语可以互换使用。 - Rob

105

汽车类比

图片描述

IDE: 编程界的微软办公套件。这是你键入代码的地方,还附带一些功能,让你成为更快乐的程序员。(例如:Eclipse、Netbeans)。汽车车身:你真正接触、看到和操作的部分。

库: 函数的集合,通常分组到多个程序文件中,但打包到单个归档文件中。其中包含其他人创建的程序,以便您无需重新发明轮子。(例如:junit.jar、log4j.jar)。库通常起着关键作用,但所有工作都在后台完成,它没有图形用户界面。汽车发动机。

API: 库发布者的文档。 这是您应该如何使用我的库。(例如:log4j APIjunit API)。汽车用户手册——是的,汽车也配有用户手册!


什么是包?它是许多相关物品的集合,它们一起工作,提供特定的服务。当有人说药箱时,你会得到所有应急所需的东西:创可贴、阿司匹林、纱布和消毒剂等。

图片描述

SDK: 麦当劳快乐餐。它将所有你需要的(和不需要的)软件组件打包在一起,如主菜、饮料、甜点和一个额外的玩具。SDK是一堆不同的软件组件集合成一个软件包,以便它们可以立即“拿来用”。它通常包含多个库,也可以,但不一定包括插件、API文档,甚至是IDE本身。(如iOS开发工具包)。

Toolkit: GUI. GUI. GUI。在编程上下文中听到“工具包”时,它通常指用于GUI开发的一组库。由于工具包以UI为中心,它们通常带有插件(或独立的IDE),提供屏幕绘图功能。(如GWT)

Framework: 虽然不是普遍的看法,但是框架可以被视为一个工具包。它也有一个库(或一组共同工作的库),提供特定的编码结构和模式(因此有了“框架”的这个词)。(如Spring框架)


53
API并不仅仅是一份文档,实际上它根本就不是文档。我理解你的比喻,但API文档只是你的汽车手册,而API更像是你的汽车控制面板和按钮。 - Bastien Vandamme
1
你可以区分GUI和API。GUI(图形用户界面)是最终非专业用户的界面。API(应用程序编程接口)是其他程序的接口。当你开发应用程序时,可以创建GUI或API或两者兼备。你也可以创建其他类型的接口。 - Bastien Vandamme
GUI后面总是有一个API。GUI只是简化了使用情况。在IT中,它更多的是出于非/专业原因,如图形界面而不是代码。但是关于你的汽车逻辑:你可能无法独自驾驶汽车,你必须学习和知道如何驾驶(将驾驶课程视为教程或文档)。如果您不想实现它,您可能会选择步行、坐公交车或出租车,因为这里不需要驾驶技能(在这种情况下没有编程技能)-因此我认为公共交通工具就像GUI一样。听起来很有趣,但确实如此。 - Thielicious
我不同意“[library]没有GUI”的说法。在JavaScript世界中,库包含GUI非常普遍。 - user1505520

5
考虑Android开发:

IDE:Eclipse等

库:android.app.Activity库(包含所有代码的类)

API:基本上是我们调用所有函数的接口

SDK:Android SDK为您提供了构建、测试和调试Android应用程序所需的API库和开发人员工具 (----工具-DDMS、模拟器----平台-Android操作系统版本,----平台工具-ADB,----API文档)

工具包:可以是ADT Bundle

框架:大型库,但更加面向架构


4

换句话说...

IDE 即使是记事本也是一个IDE(而不是notepad.exe)- 你用它来写/编译代码的软件就是一个IDE。

Library 一堆简化功能/方法以供快速使用的代码。

API 一种编程接口,用于处理函数/配置,其使用通常有文档说明。

SDK 额外的开发/测试用途。

ToolKit 用于快速使用的小应用程序,通常是GUI。

GUI 具有图形界面的应用程序,不需要像API那样了解编程知识。

Framework 一组API/大型库/片段,被封装在命名空间中/从外部范围封装,以便紧凑处理,避免与其他代码冲突。

MVC 一种设计模式,分为模型、视图和控制器,用于大型应用程序。它们互不依赖,可以在不考虑其他代码的情况下进行更改/改进/替换。

例如:

汽车(模型)
被呈现的对象。
IT中的例子:HTML表单。


相机(视图)
能够看到对象(汽车)的东西。
IT中的例子:在浏览器中呈现带有表单的网站。


驾驶员(控制器)
开车的人。
IT中的例子:处理被提交的表单数据的函数。

Snippets 只有几行的小代码片段,可能不完整,但值得分享。

插件 专为指定的框架/API/库提供的独有功能。

附加组件 特定GUI的其他模块或服务。


记事本怎么能成为IDE呢?它只是一个没有其他工具的编辑器。 - Abdulrahman Alhadhrami
1
非常抱歉,六年后再阅读我写的答案很难重构我的思维和目的。但我记得一件事情,我当时参考了像notepad++这样带有IDE插件和编译器的软件,而不是notepad.exe。这与Jason Williams在他的回答中所解释的相似。 - Thielicious

2

SDK代表软件开发工具包,IDE代表集成开发环境。IDE是用于编写、编译、运行和调试代码的软件或程序,例如Xcode。SDK是IDE的基础引擎,包括应用程序需要访问的所有平台库。它比IDE更基础,因为通常没有图形化工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接