今天,就和大家盘点10个最受欢迎的Java仓库:
1. Apache Commons
Apache Commons就像Java软件开发中的瑞士刀一样,并且拓展了许多Java Core库,如果你想在项目中编写实用程序类,那么成熟且强大的Apache Commons库的可用性相对更好,Apache Commons由43个模块库组成,涵盖了集合、数学、类、数据库、缓存、I/O Utils等领域。
它在业界广泛使用,如果你正在从事一个大型项目,并且没有使用任何Apache Commons库,那么你可能正在重复造轮子。
Github地址:https://commons.apache.org/
2. Google Guava
谷歌Guava是另一个顶级的通用Java库。最初由谷歌开发,由著名软件工程师Joshua Bloch设计。它现在是一个开源项目,许多谷歌以外的工程师都为之贡献了力量,与Apache Commons一样,它也是模块化的,包含许多独立的库。
它涵盖了基本实用工具、集合、字符串操作、并发实用工具、图形库、散列等等。与Apache Commons library相比,Guava具有更好的设计。如果你想要创建或使用程序类库,可以首选Guava库。
Github地址:https://github.com/google/guava
3. Jackson
在软件开发中,你必须处理各种格式化的数据,诸如你需要以不同的格式加载或保存数据,或者需要以不同的格式传输数据。JSON是现代软件开发中事实上的数据交换格式,其他常见的数据格式是Avro、 XML、 YAML、 Protobuf、 CSV、 BSON、 CBR。
Jackson是一套用于Java的数据处理库,Jackson JSON实际上是流JSON解析器/生成器库。它还支持其他数据格式,如Avro、BSON、CBOR、CSV、Smile、Protobuf、XML或YAML,以及数据类型,如Guava、Joda、pcollection等等。Jackson是高度模块化的,具有提供基本功能的核心模块和各种扩展模块。
地址:https://github.com/FasterXML/jackson
4. JAXB
XML是另一种流行的数据格式,它提供了更严格的验证、存储和数据传输,在Java 8之前,Java标准库都支持XML,包括数据绑定。从Java 9开始,XML处理功能不再是标准Java库的一部分,并转移到一个单独的库JAXB中。
JAXB提供了在Java中使用XML所需的一切。它为XML和Java代码之间的映射提供了一种标准而有效的方法。它还包括基于注释的数据绑定。
项目地址:https://javaee.github.io/jaxb-v2/
5. SLF4J
SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。Logging API实现既可以选择直接实现SLF4J接的loging APIs如:NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
项目地址:http://www.slf4j.org/
6. Log4j 2
Apache Log4j 2是apache开发的一款Log4j的升级产品。与Logback相比,我更喜欢Log4j 2,特别是对于大型项目,因为它提供了更好的性能。对于大型项目,日志库的性能是至关重要的,比如异步日志、峰值吞吐量和延迟。
Github地址:https://logging.apache.org/log4j/2.x/performance.html
7. Mockito
单元/集成测试是软件开发过程中不可分割的一部分。通常你希望测试单个类(SUT),但它依赖于其他重量级类或外部功能(例如,数据库操作、I/O操作)。在这样的场景中编写单元/集成测试的一种方法是mock。
Mockito是Java中使用最广泛的模拟库。无论测试的是小型项目还是大型复杂的企业Java项目,都可以在任何地方使用Mockito。它提供了一个非常简单、干净的API,使你的单元/集成测试保持干净。
8. AssertJ
AssertJ是我的列表中第二个与TDD相关的库。测试的主要功能之一是验证测试结果是否与预期结果相匹配。JUnit在org.junit.Assert类中有内置的断言机制,它为测试验证提供了两个静态方法。对于专业开发人员来说,这两个方法是不够的。幸运的是,在Java领域中存在两个强大的库:Hamcrest和AssertJ。
Github地址:https://assertj.github.io/doc/
9. Hibernate
在我们的日常生活中,作为一个软件工程师,我们不得不与数据存储打交道。目前,有许多类型的数据存储:SQL和大量的NoSQL数据存储。处理数据存储的一种方法是使用低级API(例如,JDBC用于SQL),但是这种处理方式还是有所弊端,因此,处理数据存储的最佳方法是在应用程序和数据存储之间引入一个抽象层。这个抽象层(ORM)将Java类映射为数据库表/集合。
Hibernate是所有编程语言中最早的ORM库之一,它激发了业界许多类似的技术。虽然Hibernate主要以用于SQL数据库的ORM功能而被人所熟知。但它也扩展到了NoSQL数据库。Hibernate也是模块化的,提供了一个核心模块和许多基于功能的模块。
Github地址:https://hibernate.org/
10. Apache HTTPComponents
HTTP是迄今为止最常用和流行的应用层协议。Java标准库没有提供太多处理HTTP的功能。幸运的是,Apache HTTPComponents提供了一个Java组件的工具集,该工具集中于HTTP和相关协议。Apache HTTPComponents也是非常模块化的,并且占用空间小。
Github地址:https://hc.apache.org/