さまざまなAPIとSDKを調べていたときに、APIと呼ばれるものとSDKと呼ばれるものの違いを実際に理解できないことに気付きました。
両方とも、概念的には、他のソフトウェアがWebサービス、エンドユーザーアプリ、OSサービスまたはデーモン、またはカーネルであるかどうかに関係なく、プログラムが別のソフトウェアによって提供されるリソースとやり取りし、制御する方法ですデバイスドライバ。
それでは、SDKとAPIのセマンティックの違いは何ですか?
さまざまなAPIとSDKを調べていたときに、APIと呼ばれるものとSDKと呼ばれるものの違いを実際に理解できないことに気付きました。
両方とも、概念的には、他のソフトウェアがWebサービス、エンドユーザーアプリ、OSサービスまたはデーモン、またはカーネルであるかどうかに関係なく、プログラムが別のソフトウェアによって提供されるリソースとやり取りし、制御する方法ですデバイスドライバ。
それでは、SDKとAPIのセマンティックの違いは何ですか?
回答:
むしろ、「すべてのSDKはAPIである/含まれていますが、すべてのAPIがSDKであるわけではありません」のラインに沿っていると思います。
SDKは、アプリケーションの作成に必要なほとんどのアクションを実行できるAPIの完全なセットのようです。さらに、SDKには、対象のプラットフォーム/アイテム用に開発するための他のツールが含まれている場合があります。
一方、APIは、特定の目的に適した関連する一連のメソッドにすぎません。
例として、JDK(Java Development Kit)には、API、コンパイラ、ランタイム、およびその他のさまざまなツールが含まれています。Java APIは、そのまま使用できるコア言語を構成するすべてのライブラリです。
したがって、実際の違いは、APIは「何らかのサービス」へのインターフェースにすぎないか、またはそれ以下であるのに対して、SDKは特定の目的のためのツール/コンポーネント/クラスのセットであるということです。実際、SDKはインターフェイスするAPIを提供します。ただし、たとえば、APIがWebサービスを通じて提供される場合、基礎となるコンポーネントを持たずにAPIを使用する場合があります。
APIの例:
SDKの例:
API→文書化されたインターフェース(特定の時点で、特定の対象者向け。文書化は不完全であるか、一般大衆が利用できない可能性があり、これは意図的なものかもしれません第三者が使用するために。)
SDK→インターフェイスドキュメント(+サンプルとツール)
「SDK」は「API」よりも広い意味で集合的です。
通常、プラットフォーム全体をカバーするSDKは1つだけです。たとえば、1つのMacOS X SDKと1つのiOS SDKがあり、それぞれに機能のさまざまな分野のAPIが含まれています。
「API」はもともと集合的な用語としても使用されており、今でも頻繁に使用されています(MAPI、WSAPIなど)が、通常は特定の技術に限定されています。「API」によって暗示される範囲は、長年にわたって縮小しているようです。人々は「Mac Toolbox API」または「Windows API」について話していました。どちらも明らかに多くの機能を含んでいました。最近では、単一のシステム機能を意味する「API」が使用されることは珍しくありません。オペレーティングシステムの新しいバージョンには、何百もの新しいAPIが含まれていると言えますが、その意味は何百もの新しいシステムコールです。
どちらの用語も、文脈がなければ非常に正確ではありません。
APIとは何ですか?
APIは、ソフトウェアプログラムが相互にやり取りできるようにするインターフェイスです。相互に通信するためにプログラムが従うべき一連のルールを定義します。通常、APIは、2つのアプリケーションが通信するためにルーチン、データ構造などを定義する方法を指定します。APIは、提供する機能が異なります。Java APIなどのプログラミング言語のライブラリ機能を提供する一般的なAPIがあります。Google Maps APIなどの特定の機能を提供するAPIもあります。特定のプログラミング言語でのみ使用できる言語依存のAPIもあります。さらに、いくつかのプログラミング言語で使用できる言語に依存しないAPIがあります。APIは、必要な機能またはデータのみを外部に公開し、アプリケーションの他の部分にはアクセスできないようにして、非常に慎重に実装する必要があります。APIの使用は、インターネットで非常に一般的になっています。一部の機能とデータをAPIを介してWebの外部に許可することは非常に一般的になっています。この機能を組み合わせて、ユーザーに改善された機能を提供できます。
SDKとは何ですか?
SDKは、特定のプラットフォームを対象としたソフトウェアアプリケーションの開発に使用できるツールのセットです。SDKには、プログラマがアプリケーションを開発するのに役立つツール、ライブラリ、ドキュメント、およびサンプルコードが含まれています。ほとんどのSDKはインターネットからダウンロードでき、多くのSDKは無料で提供されており、プログラマがSDKのプログラミング言語を使用することを奨励しています。広く使用されているSDKには、すべてのライブラリ、デバッグユーティリティなどを含むJava SDK(JDK)があります。これにより、Javaでのプログラムの作成がはるかに簡単になります。SDKを使用すると、相互に互換性のあるコンポーネント/ツールを探す必要がなく、すべてがインストールしやすい単一のパッケージに統合されているため、ソフトウェア開発者の生活が楽になります。
APIとSDKの違いは何ですか?
APIは、ソフトウェアプログラムが相互にやり取りできるようにするインターフェイスです。一方、SDKは、特定のプラットフォームを対象としたソフトウェアアプリケーションの開発に使用できるツールのセットです。SDKの最も単純なバージョンは、特定のプログラミング言語と対話するために必要ないくつかのファイルを含むAPIです。したがって、APIは、すべてのデバッグサポートなどのない単純なSDKとして見ることができます。
私の2セント:APIという用語はよく間違って使用されると思います。
APIは、アプリケーションプログラミングインターフェイスです。
ちょっと厄介な名前ですが、それはインターフェースであることを意味します。そのため、アプリケーションには、他のアプリケーションとの通信を可能にするAPI が含まれている場合があります。また、ソフトウェアの一部(オブジェクト指向システムのクラスなど)は、システム内の他のモジュールと通信できるようにするAPIを提供する場合があります。
ただし、多くの場合、APIという用語は「ライブラリ」の同義語として使用されます。私はそれが言葉の正しい使い方だとは思わない。ライブラリの一部は、コードが使用できるようにするためのAPIですが、ライブラリは APIではありません。
また、SDKは一種のライブラリであるため、混乱が生じる可能性があります。
他の多くの回答は、SDKがツールであると説明していますが、直接出てくるものはなく、APIは仕様であると述べています。
コンポーネントXのAPIは、Xと対話する他のコンポーネントを作成するために必要なすべての情報です。コンポーネントXのSDKには、そのコンポーネントを簡単に作成できるライブラリルーチンが含まれている場合がありますが、 API:それらは単にAPIの実施形態です。
このように比較したいと思います。
Microsoftツールを使用する開発者の場合:
API = Microsoft.Net Framework Vs SDK = Visual Studio
Javaを使用する開発者の場合:
API = Java RunTime Vs SDK = Development Kit(JDK)を提供するツール
SDKは必ず対応するAPIに依存する必要があると思います-APIのないSDKはありません。
アプリケーションは、他のアプリケーションとのインターフェイスによって開発および強化されるため、他のアプリケーション(ロジック)がコアロジックとインターフェイスできるようにする必要があります-これは、定義済みのAPIセットを介して行われます。SDKは、APIを使用して他のアプリケーションと対話するコードを作成/作成するために使用されます。