软件库与框架的区别

【注】本文译自:https://www.theserverside.com/tip/Library-vs-framework-How-these-software-artifacts-differjava

  库与框架:这两个软件构件的区别库(Libraries)是提供特定功能(如创建网络链接)的低级组件。框架(Framework)是已知的编程环境,好比 Spring Boot。
  当软件主管开始构建新的企业应用程序时,他们必须决定要使用哪一组库和框架。 这引出了一个明显的问题:软件库和框架之间有什么区别?
  库和软件框架都有助于应用程序的开发。可是,二者之间的主要区别在于它们的任务范围,以及它们减轻开发人员编写代码负担的方式。
  库提供了开发人员能够调用来执行特定功能的组件、类和方法。相比之下,框架提供的代码已经执行了一般须要的功能,并在须要定制功能时调用开发人员提供的代码。数据库

库与框架

  库是一组相关的低级组件,开发人员调用这些组件来实现特定结果。经常使用库函数包括日期格式化和创建网络链接。
  框架处理更高级别的问题。框架提供了一个既定的编程环境,它自己创建在低级库之上。
  例如,框架可能会处理如何最好地将应用程序中的全部对象映射到相关数据库中的表中。它还能够处理如何向最终用户提供丰富的、基于 Web 的体验。
编程

软件库示例

  一个库的例子是 Java 日期和时间 API。它是一组定义属性和方法的类和接口,开发人员可使用这些属性和方法来格式化日期、执行时区转换并提供全局日历支持。Java 开发人员在须要时实例化 Date 和 Time 类,并以他们认为合适的任何方式调用库的方法。
  另外一个 Java 库示例是流行的 java.net 网络 I/O 包。该库由数十个类和接口组成,开发人员使用这些类和接口来打开网络端口、处理传入链接并将数据发送到互连的客户端。
  只须要使用 java.net 包,软件开发人员就能够实现处理基于 REST 的 Web 服务或经过 HTTP 协议的基于 HTML 的请求-响应循环所需的全部必要逻辑。java.net 库提供了一组低级 API,任何开发人员均可以使用这些 API 来开发经过网络进行通讯的应用程序。segmentfault

流行的 Java 库

  其余流行的 Java 库,包括已经利用了 Java 框架的 Spring Boot、JHipster 或 Vaadin 等 的库,包括:网络

  • Apache Commons Math
  • BouncyCastle for cryptography
  • Java Advanced Imaging
  • Java Speech
  • Java 3D
  • JavaMail
  • Joda-Time
  • Apache Collections
  • Jackson for JSON and XML
  • Java Networking

软件框架的做用

  企业项目一般须要开发人员提供一组 RESTful API,以便外部客户端与在线应用程序集成。然而,许多开发人员不只解决了如何使用低级 java.net 库来处理 RESTful API 调用的问题,并且还将他们的工做做为开源项目来分享。这是软件框架的本质。它是一个现有项目,解决了一个常见且具备挑战性的问题,开发人员能够在本身的项目中使用它。框架

  框架是解决常见且具备挑战性的问题的现有项目,开发人员能够在本身的项目中使用它。ide

  在给定的问题域中,一般有许多框架可供选择。在 Java 生态系统中,有许多流行的框架使用标准的 Java 和 Jakarta EE 库来解决如何最好地处理基于 REST 的请求-响应周期的问题,包括:函数

  • Spring Boot
  • Jersey
  • RESTEasy
  • Restlet
  • Micronaut
  • Apache CFX
  • JAX-RS

框架有观点

  将框架与库区分开来的另外一个关键特征是后者一般包括关于如何解决给定问题、问题的范围以及如何以最有效和最有效的方式解决框架目标的观点。
  框架将在各类非功能性需求上展开竞争,例如易用性、性能、可插入性和兼容性。性能

框架和控制反转

  最后,库和框架之间的一个关键区别因素是二者之间的相对控制反转 (IoC)。IoC 一般被称为好莱坞原则。与库不一样,框架对开发人员编写的代码采起“不要打电话给咱们,咱们会打电话给你”的方法。
  要使用库开发应用程序,开发人员必须实例化库组件并调用其中存在的类和接口的方法。例如,若是开发人员想要使用 java.net 库来建立他们本身的 RESTful 应用程序,他们将须要调用各类 API 来打开端口、处理 HTTP 链接、将数据格式化为 XML 或 JSON 表示形式来回通讯,以及当客户端发起请求时发起一个请求。
  另外一方面,框架负责支持项目核心功能所需的全部底层管道。只有在须要时,框架才会调用开发人员提供的代码。url

IoC 和 Spring Boot

  用 Spring Boot 编写的 RESTful Web 服务很好地体现了 IoC 的好莱坞原则。
  使用 Spring Boot RESTful Web 服务,开发人员只需编写在发生基于 HTTP 的 GET 调用时要执行的逻辑。当 GET 调用发生时,Spring Boot 框架会处理它,解释它,将数据交换格式转换为 JSON 或 XML,而后将 RESTful 请求路由到开发人员的业务逻辑。
  开发人员只须要编写业务逻辑。由框架决定什么时候调用业务逻辑。
  IoC 框架在 Java 中很常见。如下是十个常见的例子。

  • Hibernate
  • Struts
  • JavaServer Faces
  • Play for Scala
  • Vaadin
  • JHipster
  • JRuby
  • JUnit
  • Quarkus
  • Grails

框架和库一块儿使用

  虽然框架和库有不一样的功能,但它们均可以帮助开发者完成更多工做。当许多常见的编程挑战已经被解决并以许可的开源项目的形式被共享时,没有软件专业人员愿意浪费时间重复发明轮子。  每当您启动一个新的软件开发项目时,选择一个已被证实和创建的软件开发框架很是重要。同时,与您的我的开发和设计理念保持一致。在极少数状况下,特定的状况超出了所选框架的范围,标准库老是在那里帮助您的开发人员弥合差距。

相关文章
相关标签/搜索