框架,库,IDE,API,SDK和工具包之间的区别?[关闭]


144

我想要一些例子。我总是很困惑,所以通过一些例子,我也许可以更好地弄清楚。

另外:Eclipse是API还是IDE?


1
eclipse是一个IDE
Thielicious

Answers:


294

一个IDE是一个集成开发环境-与发展中国家(如表单设计,资源编辑器等),编译和调试应用程序的更多支持suped式文本编辑器。例如Eclipse,Visual Studio。

一个是一个代码块,你可以从自己的代码中调用,帮你做事情更快/容易。例如,位图处理库将提供用于加载和处理位图图像的工具,从而省去了自己编写所有代码的麻烦。通常,库仅提供一个功能区域(处理图像或对zip文件进行操作)

一个API(应用编程接口)是一个术语,意思是库中的函数/方法,你可以打电话问它为你做的事情-该接口到库中。

一个SDK(软件开发工具包)库(经常有额外的工具应用程序,数据文件和样本代码)的库或组帮助您开发代码,对使用的操作系统的功能使用特定的系统(例如,扩展代码( Windows SDK),通过特定系统绘制3D图形(DirectX SDK),编写用于扩展其他应用程序的插件(Office SDK)或编写代码以使Arduino或移动电话之类的设备实现您想要的功能)。SDK通常仍将具有单一焦点。

一个工具包就像一个SDK –它是一组工具(通常是代码库),您可以使用它们简化访问设备或系统的过程……虽然也许更多地侧重于提供工具和应用程序,而不仅仅是代码库。

一个框架是一个很大的库或库组提供多种服务(而不是也许只有一个,因为大多数图书馆/软件开发工具包做聚焦能力)。例如,.NET提供了一个应用程序框架-它使您可以轻松使用大多数(如果不是全部)您需要的各种服务(例如Windows,图形,打印,通讯等)来编写各种应用程序-因此“图书馆”为您几乎需要做的一切提供支持。通常,框架会提供一个完整的基础,您可以在此基础上构建自己的代码,而不是构建一个使用库代码来完成其工作的应用程序。

当然,有很多例子与这些描述并不完全匹配。


3
您可以说SDK,库或框架包含API。
Bastien Vandamme 2015年

6
SDK是特定于客户端的实现,可简化API的使用,例如,用于Facebook API的javascript SDK。通常,您会在API文档的SDK部分中看到多种语言,例如,twilio API的API具有python,ruby,C#和Java sdk。只是为了使事情更加混乱,他们将其称为API库和SDK,而且我听说过这两个术语可以互换使用。
罗布(Rob)2015年

97

汽车类比

在此处输入图片说明

IDE: MS Office编程。在这里键入代码,再加上一些附加功能,使您成为更快乐的程序员。(例如Eclipse,Netbeans)。车身:这是您真正触摸,看到和工作的地方。

库:库是功能的集合,通常分为多个程序文件,但打包为一个存档文件。它包含其他人创建的程序,因此您不必重新发明轮子。(例如junit.jar,log4j.jar)。库通常起着关键作用,但是它在后台进行所有工作,没有GUI。汽车的引擎。

API:图书馆出版者的文件。这就是您应该使用我的图书馆的方式。(例如log4j APIjunit API)。汽车的用户手册-是的,汽车也附带一个!


套件

什么是套件?它是许多相关项目的集合,这些项目一起提供特定的服务。当有人说出药箱时,您会得到紧急状况所需的一切:膏药,阿司匹林,纱布和防腐剂等。

在此处输入图片说明

SDK麦当劳的快乐餐。您可以整齐地装箱(需要)(不需要):主菜,饮料,甜点和额外的玩具。SDK是将一堆不同的软件组件组装到一个程序包中,因此它们即开即用。它通常包含多个库,并且可以,但不一定包含插件,API文档,甚至包括IDE本身。(例如iOS开发套件)。

工具包:GUI。GUI。GUI。当您在编程环境中听到“工具包”时,通常会引用一组旨在进行GUI开发的库。由于工具箱是以UI为中心的,因此它们通常带有提供屏幕绘制实用程序的插件(或独立的IDE)。(例如GWT

框架:虽然不是普遍的概念,但可以将框架视为工具包。它还具有一个库(或一起工作的库的集合),该库提供了特定的编码结构和模式(因此有word,framework)。(例如,Spring Framework)


41
API不仅是文档。实际上,这根本不是文档。我理解您的类比,但文档或API文档是您的汽车手册,而API更是您汽车的面板和按钮。
Bastien Vandamme 2015年

1
您可以在GUI和API之间进行区别。GUI(图形用户界面)是最终非专业用户的界面。API(应用程序编程接口)是其他程序的接口。在开发和应用程序时,可以创建GUI或API或同时创建两者。您还可以创建其他类型的接口。
巴斯蒂安·范丹姆

GUI后面始终有一个API。GUI仅简化了用例。在IT中,更多是出于非专业原因,例如图形界面而不是代码。但是关于您的汽车逻辑:您可能无法自己驾驶汽车,您必须学习并知道如何驾驶(将驾驶课程视为教程或文档)。如果您不想实现这一目标,则由于不需要驾驶技能(在这种情况下,无需编程技能),则可能想乘坐公共汽车或出租车,因此我将公共交通方式视为GUI。听起来很有趣,但真该死。
Thielicious

我不同意“ [图书馆]没有GUI”。在JavaScript世界中,包含GUI的库非常普遍。
user1505520

5

考虑Android开发:

IDE:Eclipse等。

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

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

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

工具包:可以是ADT捆绑包

框架:大型图书馆,但更多面向架构


3

换一种说法...

IDE 甚至您的记事本都是IDE。您用来编写/编译代码的每个软件都是一个IDE。

一堆简化了功能/方法的代码,可快速使用。

API 一个与您一起使用的功能/配置的编程接口,其用法经常被记录在案。

SDK Extras和/或用于开发/测试目的。

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

具有图形界面的GUI应用程序与API不同,它不需要编程知识。

框架 一堆API /巨大的库/片段包装在名称空间中,或从外部范围封装以紧凑处理,而不会与其他代码冲突。

MVC 在大型应用程序中分为模型,视图和控制器的设计模式。它们彼此不依赖,并且可以在不照顾其他代码的情况下进行更改/改进/替换。

例:

汽车(模型)
正在显示的对象。
IT中的示例:HTML表单。


摄影机(视图)
能够看到物体(汽车)的东西。
IT中的示例:使用表单呈现网站的浏览器。


驾驶员(控制器)
驾驶汽车的人。
IT中的示例:处理正在提交的表单数据的功能。

片段 仅几行的小代码可能甚至不完整,但值得快速分享。

插件 排他功能仅适用于指定的框架/ API /库。

附加组件 附加组件或服务特定的图形用户界面。


2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.