库和框架的对比【翻译】
原文:http://www.programcreek.com/2011/09/what-is-the-difference-between-a-java-library-and-a-framework/
原文和翻译都只是参考,如有不对,欢迎指正。
库和框架的区别是什么呢?这两个概念都很重要,但是有时会让Java开发者感到疑惑。
1、库和框架的区别以及各自的定义
它们最主要的区别就在于"控制反转"。当你从库中调用一个方法时,控制权在你手上。但是当你使用框架时,控制权就反过来了,这时就是框架调用你的代码了。
库只是一些类定义的集合。这背后的理念很简单,就是代码复用,比如调用其他开发者已经写好的代码。这些类和方法通常是定义在一个特定领域的指定操作,比如说一些数学操作库,开发者不用重新去实现算法,直接调用里面的方法就可以了。
在框架里,所有的控制流程都已经定义好了,你只需在一些预定义的空白处填写自己的代码就可以了。框架比库来得更复杂,它定义好了骨架,然后应用程序用自己定义的特性来填补骨架。这样子框架就会在合适的时候调用你的代码,这样子的好处就是开发者无需担心设计的好坏,只需实现指定领域的函数。
2、库和框架的联系
它们都需要定义API,便于程序员去使用。把这些联系起来,我们可以把库看做是程序的一个函数,把框架看做是程序的一个骨架,而API是把这些联系起来的一个连接器。一个典型的开发过程首先是从框架开始,接着是实现API里的函数。