web-dev-qa-db-ja.com

APIとライブラリの違いは何ですか?

Java=プロジェクトを作成しました。このプロジェクトは、プログラマーがローカルネットワークを管理できるようにするクラスのコレクションです(ネットワークの作成、デバイスへのネットワークアクセスの削除、SSIDの情報の取得)。ローカルネットワークで機能します。プログラムのアーキテクチャはCMDコマンドに基づいています。すべてのクラスはプログラマが再利用できます。プロジェクトを他のプロジェクトで使用するためにJARとしてエクスポートします。

私のプロジェクトの2つの用語が混同されています。APIとライブラリのどちらを呼び出すべきですか、それともこのタイプのプロジェクトには他の用語がありますか?

APIとライブラリの違いについて人々に尋ねるたびに、私は異なる意見を得ます。一部の人は、APIはマップされた関数の集まりであり、ライブラリはコンパイルされた形式の単なる配布物であると教えてくれます。

API、フレームワーク、ライブラリの間には本当に明確な違いがありますか?

1
Xlint Xms

多くの場合、APIとライブラリは1対1の関係にあるため、混乱の一部を理解できます。多くの場合、いくつかの問題を解決するためのライブラリーには、ライブラリーと対話する(APIを構成する)ための特定の方法があります。

API(アプリケーションプログラミングインターフェイス)は、アプリケーションが一部のソフトウェアコンポーネント(通常はライブラリ)と通信する方法です。典型的な例はJava APIです。これは、アプリケーションで使用できる多くのクラスとメソッドを定義します。

ライブラリは、独自のアプリケーションを構成するのではなく、いくつかのタスクの実装を容易にするためにアプリケーションソフトウェアに提供される機能の集まりです。そのライブラリと対話する方法は、いくつかのAPIによって定義されています。 JRE内のjarファイルは、Java APIに続くライブラリーであることが多いですが、そのコンテキストでは使用されません)と考えることができます。異なるベンダーからの異なる実装がある場合があります。 )異なるライブラリを構成し、すべて同じAPIに従います。

フレームワークは、いくつかのクラスとメソッドを提供するだけでなく、アプリケーションソフトウェアを構造化する特定の方法を提案します。すべてのAPIがアプリケーションの記述方法に影響を与えるため、APIとフレームワークの違いは100%明確ではありません。その影響が大きい場合は、「フレームワーク」について話します。

したがって、たとえば、JavaのReflectionをAPI(使用する場合、通常は非常にローカルなもの)と呼び、JavaのSwing GUIをフレームワーク(通常、それを使用すると、コードのより大きな側面に大きな影響を与えます)と呼びます。

6
Ralf Kleberhoff

ライブラリは、再利用可能なクラスや関数のコレクションです。

フレームワークは、より大きなソフトウェアプラットフォームの一部として機能を提供する再利用可能なソフトウェア環境です。

ライブラリとフレームワークの両方にAPIがあります。 APIは、ソフトウェアが対話するライブラリまたはフレームワークの表面積です。パブリックに宣言されたクラス、メソッド、プロパティのdefinitionsのすべてで構成されています。

参照
ライブラリ
フレームワーク
アプリケーションプログラミングインターフェース(API)

5
Robert Harvey

APIはマップされた関数の集まりであると言う人もいます

APIは、他のアプリケーションとどのように対話するか、または「インターフェース」するかです。 APIは、その相互作用を行うために呼び出す関数です。ライブラリは、インターフェイス関数の呼び出しに役立つ関数のコレクションです。

1
Rob