sdk跟api的区别是什么?

作者&投稿:一杜 (若有异议请与网页底部的电邮联系)
SDK和API的区别~

Windows安装完,系统就有了一套简单的SDK,包含了一套完整的基础Windows API,如果安装VC或下载新的SDK后,就可以使用更加丰富的Windows API了。****************************************SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。呵呵,其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。首先要接触的是“API”,也就是 Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在Windows中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。DLL(又是一个缩写,感觉 IT 这个行业里三字头缩写特别多),即 Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。到此为止,我们才真正的解释清楚了 SDK 的含义。由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数

1、名称和定义
SDK (Software Development Kit)中文是"软体开发工具组"。由一系列的工具组合在一起,编辑器里敲代码的时候它会自动补全代码,自动错误检查等。
API (Application Programming Interface)中文是"应用程序编程接口"。提供用户编程时的接口,即一系列模块化的类和函数。
2、区别
SDK 包含了使用 API 的必需资料。sdk是开发工具提供商提供的,而api是同一定的系统(操作系统或专用程序实现系统)提供的一个能方便使用者使用其特定功能的接口。

1、组成不同:

sdk软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。API(应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

2、用途不同:

api目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具。

3、内容不同:

为了使用API函数,就要有跟API所对应的 .h和 .lib文件,而SDK正是提供了一整套开发Windows应用程序所需的相关文件、范例和工具的“工具包”。SDK包含了使用API的必需资料,所以也常把仅使用API来编写Windows应用程序的开发方式叫做“SDK编程”。

参考资料来源:百度百科-sdk

参考资料来源:百度百科-api



  SDK就是Kit,工具箱嘛,IOS平台上就是XCode,一系列的工具组合在一起,比如你在编辑器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是SDK,提供整套的开发工具供开发者使用。
  OpenAPI就是网站提供的接口,比如你想开发一个围脖的手机客户端,你从哪里读取数据写入数据呢?总不能从Web版里调用吧?那里是一堆一堆的html代码啊,所以OpenAPI就是网站提供的接口,供开发者接入用的,比如聚合数据平台。
  

  SDK (Software Development Kit)翻译成中文就是"软体开发工具组"
是用来帮一个 产品 或 平台 开发应用程式的工具组,由产品的厂商提供给开发者使用的。
通常是 某一家厂商 针对某一 平台 或 系统 或 硬体 所发布出来用以开发应用程式的工具组,
在这个工具包里面,可能包含了各式各样的开发工具,模拟器等。
例如:给 Android平台 使用的 Android SDK 就是用来开发 Android系统上面的应用程式。
API (Application Programming Interface)
翻译成中文就是"应用程式介面",其实这样翻译不好,应该说是"程式沟通介面"。
翻译为介面,顾名思义就要沟通两个不同的东西用的,通常由一组函式库所组成。
在一个 同一个平台 下的 两个不同东西(程式 or 系统),为了能取用对方的功能等等,
所以一个 X程式 写了一组函式,让 同一平台的其他程式 取用 X程式 的功能,
那组函式就可以说是那个 X程式 对外开放的 API。
例如:我要在 自己的网页 上加入 google map网页的功能,就使用 "google map API"

有时候 SDK(开发者工具包) 里也会带有些许 API 用来调用一些系统平台程式提供的功能
例如说:视窗显示,图形特效等等。
以下举一个实际例子来说明,调用系统程式功能的API 是怎麽一回事
开发Windows应用程式的SDK(开发者工具包) 里就包含 Win32 API
说明: Win32 API 是一个函式库,可以给Windows应用程式 调用 Windows系统的功能
在PTT看到有人问了差异性,我的看法是
SDK是用来开发某一个平台的程式的工具包,API 是让同一平台下的程式取用它的功能的函式库。
以及下面的评论
1.API 通常大家都不会弄错,的确就是以功能为导向的"方法"或"函式"清单,
看程式语言或平台而定( Methods, Functions... ),
而每个 API 主要都是为了达成某特定功能所设计的。
开发商可以为了不同平台,设计相同的 API 让开发者使用,
也可能会因应不同平台,制作不同的 API 让开发者使用。
2.当 API 数量够多功能够繁复并且可交互为用的时候,
( 例如为了达成某些功能,常需要同时引用某些 APIs 来完成 )
开发商就会为了开发便利,而预先撰写好一些组合好 APIs 的 API
供开发者使用,来统一有特定需求的开发者能有一致的开发与使用体验,
( 例如让使用"网路连线"的开发者不需自己处理网路的基础沟通信息,
与错误处理方式,使 API 在应用的时候有一定程度的便利性等 )
然后,也陆续发展出测试、除错工具,甚至是设计不同平台开发环境所需的套件,
尤其针对不同平台,更是设计了对应的工具来协助开发、除错;
SDK 名词之所以出现,俨然是为了汇整上述这些资源而诞生的,
我想也可以说成是 API 的包含者(直接使用)与应用者(以便加速开发),
也因此可以说这两个是属于不同层级的东西...
以 Android 来说:
a. 我们要拥有 Android SDK 才能开发 Android 应用程式
( 针对不同开发系统而不同 Linux, Windows )
b. Android SDK 里的 APIs 统统都可以单独使用,只不过你会
发现他们都还有许多其他的应用,而且可能还比自己写来得更有效率
c. Android SDK 跟开发环境整合后,除了提供程式码语法错误检查外,
还提供模拟器平台让我们不需要硬体就可以模拟测试
d. Android SDK 内有测试用的 APIs,来协助我们检查记忆体用量、
程式效能以及状态显现等功能 ( 当然它建议仅在测试除错时才使用 )
以 Facebook 来说:
a. 我们要下载 Facebook SDK 才能开发应用程式
( 针对不同开发语言或平台而不同,PHP, JavaScript, Android, iOS )
b. Facebook 官网提供 SDK 详细的 APIs 解说与使用方法、范例说明等
c. Facebook 官网提供 线上测试工具,测试某些API的指令与语法
以 Google Map API 来说:
网页开发,只需使用 Google Map API 即可在网页上开发、使用其功能
( 但是在 Android, iOS 上开发则另外需要 Google Map SDK 才行 )
由此可知,我们可以清楚知道 API 与 SDK 的定义差别了!按钮进行在线转换

一、SDK的概念

SDK即“软体开发工具包”,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。

通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。

开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的经历就可以在产品中集成某项功能。

二、API的概念

API即“应用程序编程接口”,是一些预先定义的函数,目的是作为“介面”沟通两个不同的东西,提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

其实就是别人已经写好的可以实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。

从接口interface来说,在计算机领域是指两个不同事物之间交互的地方,大可以到两个完整的不同系统,小可以到两段程序。所以这个I就这么理解。在这个基础上,人和程序交互的地方,叫做UI,user interface,所有人输入的包括鼠标键盘触摸屏声音输入都算。那么程序和程序交互的就叫做API,所有非人对非人交互都通过API进行交互,所谓交互,其实就是传递数据,触发功能。

三、SDK和API的区别

SDK相当于开发集成工具环境,API就是数据接口。在SDK环境下调用API数据。

实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。

SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。



API:对外提供的服务,一般可能颗粒较小,因为需要考虑服务的复用。
SDK:一个简单的服务消费者,一般SDK=多个API集成+客户端会话属性等,更加趋近消费者业务逻辑,如应用内计费SDK需要兼顾多API调用、安全控制、不可代替的二次确认界面

因此,两者的区别主要体现在服务使用的开发过程,SDK可能简单些,原生API可能复杂点,但是SDK本身可能存在问题,如SDK的一些基础能力的实现(如网络)并不完美,或者SDK中的界面与你的UI风格不一致!

总的来说,两者没有值得比较的区别,因为是具有关联性的两种东西。
你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。
比如——
我们现在要在企业ERP系统中增加某个功能(比如自动备份、数据分析、云存储等),但又不想耗费大量时间、也没那么多研发亲自去做这个功能。这时我们可以选择使用这个“SDK”软件包,把ERP系统连接上API接口,就可以使用SDK软件包里的功能。


怎么用GDI+使窗体四周都有阴影效果,不用WPF,C#或者是vb.net也可以的...
调用API是个好的办法,给你个参考网文:http:\/\/dkmilan.72pines.com\/2008\/05\/07\/%E8%B0%83%E7%94%A8windows-api%E5%AE%9E%E7%8E%B0c%E7%AA%97%E4%BD%93%E9%98%B4%E5%BD%B1\/ 如果一定要自已用GDI+绘制,很麻烦,比如把窗体设置成无边框,贴图上去,但可能要自已定义事件来响应缺少...

《滴滴滴滴当 滴滴滴滴当 我靠我靠耶》前面都是英文的音。好像是DJ的...
Diri - diri - da http:\/\/www.tudou.com\/programs\/view\/FJgi6iNzpGs\/

c++ 怎么用api扒数据
生产窗体可以使用CreateWindowEx函数。函数功能:该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。函数原型:CreateWindowEx函数创建一个层叠的,自动弹出的(pop-up)或是一个子窗口通过扩展格式。另外这个函数的作用与CreateWindow函数的作用相同。要获得的关于创建窗口...

求宋智孝的一张壁纸
如果这些不行,就去 In Heaven 里去截图吧~~这些好多都是我截图的~

关于全国计算机二级考试内容的问题
3. 掌握Java语言提供的数据类型和结构。 4. 掌握Java语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. 了解Java的应用。 考试内容 一、Java语言的特点和实现机制 二、Java体系结构 1. JDK目录结构。 2. Java的API结构。 3. 开发环境...

计算机二级考试具体的考什么内容
3. 掌握Java语言提供的数据类型和结构。4. 掌握Java语言编程的基本技术。5. 会编写Java用户界面程序。6. 会编写Java简单应用程序。7. 会编写Java小应用程序(Applet)。8. 了解Java的应用。考试内容一、Java语言的特点和实现机制二、Java体系结构1. JDK目录结构。2. Java的API结构。3. 开发环境设置。4. Java...

求 伊稀的 放弃 空间链接
http:\/\/api.ning.com\/files\/0PcJYGTqCC-6w9n-DkcJd-lWcS9ZKNH-8DDviKa9El0_\/file.mp3?t0.mp3

新建县17043191810: SDK和API的区别 -
邰诗妇科: SDK是开发包的意思,SDK中包含各种所需要的文件,而API是一个接口,这个接口更多体现在一个说明文档和如何调用上,开发者对API一般比较关心,而对SDK中其他文件可能并不是那么关心.像IC卡读卡器YW-605系列和NFC读写器YW-607都发布了SDK,同时包含API,为开发者缩短了项目工期.

新建县17043191810: SDK和API有什么区别? -
邰诗妇科: 1、名称和定义 SDK (Software Development Kit)中文是"软体开发工具组".由一系列的工具组合在一起,编辑器里敲代码的时候它会自动补全代码,自动错误检查等. API (Application Programming Interface)中文是"应用程序编程接口".提供用户编程时的接口,即一系列模块化的类和函数.2、区别 SDK 包含了使用 API 的必需资料.sdk是开发工具提供商提供的,而api是同一定的系统(操作系统或专用程序实现系统)提供的一个能方便使用者使用其特定功能的接口.

新建县17043191810: SDK,API,类库,有什么区别? -
邰诗妇科: SupportDevelopmentKit.形容词SupportDevelopment形容的名字是Kit,是一个套件一个工具的组合.API:ApplicationProgrammingInterface.落脚点是Interface,是一个接口的规范.Unix有POSIX,windows有Win32API,写个自己的库共有的函...

新建县17043191810: api和sdk到底有什么联系和区别 -
邰诗妇科: API是操作系统提供的编程接口,在Windows中以Dll文件提供USER32.dll,Kernel32.dll等(Windows 3.x中为.Exe文件,但仍然是动态链接库,只是文件名后缀不一样而已)提供了程序运行时要用的功能函数;而SDK是厂家提供的开发工具库,不在操作系统中,是另外提供的,其中包含了开发时要用的调试,编译工具等,以及一些文档.做程序时使用SDK,但程序最终要调用API来实现其功能.

新建县17043191810: SDK好还是API好 -
邰诗妇科: SDK 指 Software Development Kit,意为软件开发包.通常 SDK 包含一系列头文件、库文件、示例以及说明文档,狭义上的 SDK 指 Windows SDK,包括在 Windows 平台进行开发的一系列头文件和库文件以及命令行工具等.API 指 ...

新建县17043191810: sdk版本是什么意思? -
邰诗妇科: sdk意思是软件开发工具包,一般是一些软件工程师为特定的软件、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合.软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合. sdk一般而言即开发 ...

新建县17043191810: SDK和API是什么关系?何时说SDK,何时说API?能否举例说明,越通俗越好. -
邰诗妇科: API是SDK中的一部分.sdk通常还提供附加的文档如帮助文档和工具等. 至于什么时候说SDK什么时候说API似乎没有多大区别.. 例如说一个程序是基于Win32 SDK编写的或是Win32 API编写的也没多大区别..

新建县17043191810: android的sdk和api什么意思 -
邰诗妇科: Android中的SDK是Android专属的软件开发包.是软件框架,硬件平台之类的集合.而API表示的是它的版本.

新建县17043191810: SDK, API 和 MFC 的区别??? -
邰诗妇科: SDK是软件开发包;而mfc是对api封装后的类库,他是微软公司提供的 MFC封装了决大多数的API函数,而且为了让曾经的API程序员方便记忆和使用,名字也和API的相同,但是是有区别的.你需要借助MSDN,比如在MSDN里输入...

新建县17043191810: 什么是sdk -
邰诗妇科: SDK,Software Development Kit 的缩写,中文即“软件开发工具包”.广义上指辅助开发某一类软件的相关文档、范例和工具的集合.SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK.它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件.一般的工具包括用于调试和其他用途的实用工具.SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档.希望对你有所帮助~

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网