SDK(software development kit)澎媒,中文可譯為“軟件開發(fā)工具包”搞乏。
一般都是一些被軟件工程師用于為特定的軟件包、軟件架構(gòu)戒努、硬件平臺请敦、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。通俗點(diǎn)是指由第三方服務(wù)商提供的實(shí)現(xiàn)軟件產(chǎn)品某項(xiàng)功能的工具包储玫。在編輯器里敲代碼的時候它會自動補(bǔ)全代碼侍筛、自動檢查錯誤。
通常SDK是由專業(yè)性質(zhì)的公司提供專業(yè)服務(wù)的集合撒穷,比如提供安卓開發(fā)工具勾笆、或者基于硬件開發(fā)的服務(wù)等。也有針對某項(xiàng)軟件功能的SDK桥滨,如推送技術(shù)窝爪、圖像識別技術(shù)、移動支付技術(shù)齐媒、語音識別分析技術(shù)等蒲每,在互聯(lián)網(wǎng)開放的大趨勢下,一些功能性的SDK已經(jīng)被當(dāng)作一個產(chǎn)品來運(yùn)營喻括。
開發(fā)者不需要再對產(chǎn)品的每個功能進(jìn)行開發(fā)邀杏,選擇合適穩(wěn)定的SDK服務(wù)并花費(fèi)很少的經(jīng)歷就可以在產(chǎn)品中集成某項(xiàng)功能。
API(application programming interface)唬血,中文可譯為“應(yīng)用程序編程接口”望蜡。提供用戶編程時的接口,是一些預(yù)先定義的函數(shù)拷恨,目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力脖律,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)腕侄。DOSAPI 是“Thinking in匯編語言”的小泉,而 Windows API 則是“Thinking in 高級語言”的,我們通常指的是Windows API 冕杠,DOSAPI是系統(tǒng)程序的一部分微姊,他們與系統(tǒng)一同被載入內(nèi)存并且可以通過中斷矢量表找到他們的入口,那么關(guān)于 Windows API又是 呢分预?要說明白這個問題就不得不引入這個概念——DLL
DLL( Dynamic Link Library)兢交,中文譯為“動態(tài)鏈接庫”。在windows環(huán)境下含有大量 .dll格式的文件笼痹,這些文件就是動態(tài)鏈接庫文件配喳,其實(shí)也是一種可執(zhí)行文件格式飘诗。跟 .exe 文件不同的是,.dll文件不能直接執(zhí)行界逛,他們通常由 .exe 在執(zhí)行時裝入昆稿,內(nèi)含有一些資源以及可執(zhí)行代碼等。其實(shí) Windows 的三大模塊就是以DLL的形式提供的(Kernel32.dll息拜,User32.dll溉潭,GDI32.dll),里面就含有了 API函數(shù)的執(zhí)行代碼少欺。為了使用 DLL 中的 API 函數(shù)喳瓣, 必須要有 API 函數(shù)的聲明(.H)和其導(dǎo)入庫(.LIB),導(dǎo)入庫可以先這樣理解:導(dǎo)入庫是為了在 DLL 中找到 API 的入口點(diǎn)而使用的赞别。
實(shí)際上SDK包含了API的定義畏陕,API定義一種能力,一種接口的規(guī)范仿滔,而SDK可以包含這種能力惠毁、包含這種規(guī)范。但是SDK又不完完全全只包含API以及API的實(shí)現(xiàn)崎页,它是一個軟件工具包鞠绰,它還有很多其他輔助性的功能。
為了使用 API 函數(shù)飒焦,我們就要有跟 API 所對應(yīng)的 .H 和 .LIB 文件蜈膨,而 SDK 正是提供了一整套開發(fā) Windows 應(yīng)用程序所需的相關(guān)文件、范例和工具的“工具包”牺荠。
SDK 包含了使用 API 的必需資料翁巍,所以人們也常把僅使用 API 來編寫 Windows 應(yīng)用程序的開發(fā)方式叫做“SDK編程”。而API和 SDK 是開發(fā)Windows應(yīng)用程序所必需的東西休雌,所以其它編程框架和類庫都是建立在它們之上的灶壶,比如VCL 和MFC,雖然他們比起“SDK 編程”來有著更高的抽象度挑辆,但這絲毫不妨礙它們在需要的時候隨時直接調(diào)用 API 函數(shù) 例朱。