API、库、框架和Java工具包之间的清晰区别列表



我对以下术语有很多不同的定义,但我不清楚它们之间的区别。有人能澄清以下内容以及每一项之间的区别吗?

  • API
  • 图书馆
  • 框架
  • 工具箱

我看不出是什么使API不同于库、不同于框架的工具箱、不同于库的框架。

这些术语的用法差异很大,它们之间有很多重叠,但以下是我最常见的用法:

  • API是关于如何与程序中的软件进行通信的规范
  • 库是可以导入并在程序中使用的类的集合。库带有API
  • 框架就像一个库,但由内而外:你不用它作为程序中的组件,而是编写符合某些接口的程序,并将其插入框架中。框架是您在中构建的,而库是您在上构建的
  • 工具箱是一组在程序上运行的程序,如编译器、调试器、编辑器等。(但有些库也称为工具箱。)

当然,一个框架通常会附带一个通用操作库,或者被构造为一组库,并且可能包括工具。我认为Toolkit是这些术语中定义最松散的一个。

对于开发人员来说,它们并没有什么不同。API或应用程序编程接口是开发人员感兴趣的,因为它是开发人员使用工具的方式。

当试图区分Library、Framework和Toolkit时,实际上只是在谈论语义。

我想,如果你深入了解它,库将是框架的子集,因为框架可能包含一些库。

有一些区别,但不是明确的(定义良好的)区别。在许多情况下,这种差异几乎是零。也就是说,这里有一个大致的区别:

  • 库:可重复使用的s/w单元(函数、类等)的集合
  • API:程序中某个单元公开的协议。该单元可以是任何尺寸(包括包含较小单元的复合单元)。特别是,它可以是一个图书馆
  • 框架:一个对使用它的代码施加一些严格限制的库。通常,它会接管控制流,并在决定时(通过某种回调机制)调用您的代码。从某种意义上说,这不是"你的代码使用框架",而是"框架使用你的代码"
  • Toolkit:一个不是框架的库

最新更新