库的英语为Library(简写为Lib),框架的英语为Framework。
库主要是为了复用解决了某一个(某一类)问题的代码,将代码组织形成一个产品,供程序员下载、加入自己的项目。面向对象的代码组织形成的库也叫类库。面向过程的代码组织形成的库也叫函数库。在函数库中的可直接调用的函数叫库函数。
开发者在使用库的时候,一般只需使用库中的一部分类或函数,解决自己的某个问题,实现自己的功能。
框架则主要为了解决某个较大领域里的多个问题而开发的产品。框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。可以说,框架是库的升级版,一个框架由多个库组成。
开发者在使用框架的时候,必须使用这个框架的全部代码。
以前和一些老程序员讨论,到底什么是framework,什么是library,为啥都说Spring是framework,jackson是library?结论是你得把代码交给framework管理,但是却可以自由的使用library。有一定编程经验的人,有时候会觉得framework限制了自己的表达能力,从而倾向于自己写library给自己用。
所谓:you call library,framework calls you。
假如我们要买一台电脑。框架为我们提供了已经装好的电脑,我们只要买回来就能用,但你必须把整个电脑买回来。这样用户自然轻松许多,但会导致很多人用一样的电脑,或你想自定义某个部件将需要修改这个框架。而库就如自己组装的电脑。不同的库为我们提供了不同的部件,我们需要自己组装电脑,如果某个部件库未提供,我们也可以自己做。库在开发小程序时使用起来非常灵活,但开发大型程序时,使用框架会更加方便。
参考
https://www.zhihu.com/question/521822847/answer/3141874937
https://www.freecodecamp.org/news/the-difference-between-a-framework-and-a-library-bd133054023f/
https://stackoverflow.com/questions/148747/what-is-the-difference-between-a-framework-and-a-library