2013年1月9日 星期三

API ? SDK? 傻傻分清楚


API (Application Programming Interface)
翻譯成中文就是"應用程式介面",其實這樣翻譯不太直觀。
翻譯為介面,顧名思義就要溝通兩隻不同的東西用的,通常由一組函式所組成。
在同一個平台下的兩個不同東西(程式 or 系統),能取用對方的功能等等,
所以一個 X程式 寫了一組函式,讓同一平台的其他程式取用 X程式 的功能,
那組函式就可以說是那個 X程式or 某個函式庫,對外開放的 API。
甚至是系統呼叫,
因為作業系統的任務就是管理好電腦的各種資源,所以程式需要資源時必須跟作業系統溝通,申請使用某某功能等等,稱為系統呼叫(調用)。
系統呼叫的時候也是取用OS作業系統提供的API。
例如:我要在 自己的網頁 加入google map提供的功能,就使用"google map API"

SDK (Software Development Kit)
翻譯成中文就是"軟體開發工具組"
是用來幫一個 產品 或 平台 開發應用程式的工具組,由產品的廠商提供給開發者使用的。
通常是 某一家廠商 針對某一 平台 或 系統 或 硬體 所發佈出來用以開發應用程式的工具組,
在這個工具包裡面,可能包含了各式各樣的開發工具,模擬器等。
例如:給 Android平台 使用的 Android SDK 就是用來開發 Android系統上面的應用程式。

通常SDK(開發者工具包) 裡也會帶有很多 API ,用來調用一些系統平台程式提供的功能
例如說:視窗顯示,圖形特效等等。
以下舉一個實際例子來說明,調用系統程式功能的API 是怎麼一回事
開發Windows應用程式的SDK(開發者工具包) 裡就包含 Win32 API
說明: Win32 API 是一個函式庫,可以給 Windows應用程式 調用 Windows系統的功能


在PTT看到有人問了差異性,我的看法是
SDK是用來開發某一個平台的程式的工具包,API 是讓同一平台下的程式取用它的功能的函式庫。

今天在FB上看到:
API就是皮卡丘,提供鋼鐵尾巴 跟 雷電 兩種技能給你呼叫,基本上你不用研究皮卡為什麼皮卡丘會發電,也不用研究尾巴為什麼會變鋼鐵,反正你只要說,"上吧皮卡丘,使用雷電"
XD