乐趣区

关于框架:软件库与框架的区别

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

  库与框架:这两个软件构件的区别库(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 来开发通过网络进行通信的应用程序。

风行的 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 调用的问题,而且还将他们的工作作为开源我的项目来分享。这是软件框架的实质。它是一个现有我的项目,解决了一个常见且具备挑战性的问题,开发人员能够在本人的我的项目中应用它。

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

  在给定的问题域中,通常有许多框架可供选择。在 Java 生态系统中,有许多风行的框架应用规范的 Java 和 Jakarta EE 库来解决如何最好地解决基于 REST 的申请 - 响应周期的问题,包含:

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

框架有观点

  将框架与库区离开来的另一个要害特色是后者通常包含对于如何解决给定问题、问题的范畴以及如何以最无效和最无效的形式解决框架指标的观点。
  框架将在各种非功能性需要上开展竞争,例如易用性、性能、可插入性和兼容性。

框架和管制反转

  最初,库和框架之间的一个要害区别因素是两者之间的绝对管制反转 (IoC)。IoC 通常被称为好莱坞准则。与库不同,框架对开发人员编写的代码采取“不要打电话给咱们,咱们会打电话给你”的办法。
  要应用库开发应用程序,开发人员必须实例化库组件并调用其中存在的类和接口的办法。例如,如果开发人员想要应用 java.net 库来创立他们本人的 RESTful 应用程序,他们将须要调用各种 API 来关上端口、解决 HTTP 连贯、将数据格式化为 XML 或 JSON 示意模式来回通信,以及当客户端发动申请时发动一个申请。
  另一方面,框架负责反对我的项目外围性能所需的所有底层管道。只有在须要时,框架才会调用开发人员提供的代码。

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

框架和库一起应用

  尽管框架和库有不同的性能,但它们都能够帮忙开发者实现更多工作。当许多常见的编程挑战曾经被解决并以许可的开源我的项目的模式被共享时,没有软件业余人员违心浪费时间反复创造轮子。
  每当您启动一个新的软件开发我的项目时,抉择一个已被证实和建设的软件开发框架十分重要。同时,与您的集体开发和设计理念保持一致。在极少数状况下,特定的状况超出了所选框架的范畴,规范库总是在那里帮忙您的开发人员弥合差距。

退出移动版