这是收集的一些有用的第三方库,Java开发人员应该对此很熟悉。
1.单元测试库[JUnit和Mockito]
单元测试是将普通开发人员与优秀开发人员区分开的最重要的事情。经常为程序员提供不编写单元测试的借口,但是避免单元测试的最常见借口是缺乏流行的单元测试库(包括JUnit,Mockito和PowerMock)的经验和知识。
2. JSON解析库[Jackson和Gson]
在当今的Web服务和IoT世界中,JSON已成为将信息从客户端传输到服务器的首选协议。他们已经将XML替换为以独立于平台的方式传输信息的最优选方式。
不幸的是,JDK没有JSON库。但是,有很多不错的第三方库,例如Jackson和Gson,它们都可以让您解析和创建JSON消息。
3.记录库[Log4j2和SLF4j]
日志记录库非常常见,因为在每个项目中都需要它们。对于服务器端应用程序而言,它们是最重要的事情,因为日志仅放置在您可以看到应用程序中正在发生什么的地方。
即使JDK附带了自己的日志记录库,也可以使用更好的替代方法,例如Log4j,SLF4j和LogBack。
4.通用库[Apache Commons和Guava]
Java开发人员可以使用几个不错的通用第三方库,例如Apache Commons和Google Guava。我总是将这些库包含在我的项目中,因为它们简化了许多任务。
正如约书亚·布洛赫(Joshua Bloch)在“有效Java”中正确说的那样,重新发明轮子没有意义。我们应该更喜欢使用经过测试和测试的库,而不是时不时地编写我们自己的例程。
对于Java开发人员来说,熟悉Google Guava和Apache Commons库是一件好事。
5. HTTP库[HttpClient]
我不喜欢JDK的一件事是它缺乏对HTTP的支持。尽管您可以使用java.net包中的类进行HTTP连接,但是使用开放源代码的第三方库(如Apache HttpClient和HttpCore)并不是那么容易或无缝。
尽管JDK 9带来了HTTP 2.0的支持以及对HTTP的更好支持,但我强烈建议所有Java开发人员熟悉流行的HTTP客户端库,包括HttpClient和HttpCore。
6. XML解析库[Xerces和JAXB]
有许多XML解析库,包括Xerces,JAXB,JAXP,Dom4j和Xstream。Xerces2是Apache Xerces系列中的下一代高性能,完全兼容的XML解析器。
Xerces的这个新版本引入了Xerces本机接口(XNI),它是用于构建解析器组件和配置的完整框架,该框架非常模块化且易于编程。
Apache Xerces2解析器是XNI的参考实现,但是可以使用Xerces本机接口编写其他解析器组件,配置和解析器。
Dom4j是用于Java应用程序的另一个灵活的XML框架。
7. Excel阅读库[Apache POI]
信不信由你–所有现实世界中的应用程序都必须以某种形式与Microsoft Office进行交互。
许多应用程序都需要提供在Excel中导出数据的功能,如果必须从Java应用程序中进行导出,则需要Apache POI API。
这是一个非常丰富的库,可让您从Java程序读取和写入XLS文件。
8.字节码库[Javassist和CgLib]
如果要编写一个框架或库来生成代码或与字节码进行交互,则需要一个字节码库。
它们使您可以读取和修改应用程序生成的字节码。Java世界中一些流行的字节码库是javassist和Cglib Nodep。
Javassist(JAVA编程ASSISTant)使Java字节码操作非常简单。它是用于在Java中编辑字节码的类库。ASM是另一个有用的字节码编辑库。
9.数据库连接池库[DBCP和C3P0]
如果要通过Java应用程序与数据库进行交互,但不使用数据库连接池库,那么您将丢失某些内容。
由于在运行时创建数据库连接会花费时间并且使请求处理变慢,因此始终建议使用DB连接库。最受欢迎的是Commons Pool和DBCP。
在Web应用程序中,其Web服务器通常提供这些功能,但是在核心Java应用程序中,您需要将这些连接池库包括在类路径中,以使用数据库连接池。
10.消息传递库[JMS和MQ]
与日志记录和数据库连接类似,消息传递也是许多实际Java应用程序的共同功能。
Java提供了JMS或Java Messaging Service,它不是JDK的一部分。对于此组件,您需要包括一个单独的jms.jar。
同样,如果您使用的是Tibco RV之类的第三方消息传递协议,则需要tibrv.jar 在应用程序类路径中使用第三方JAR — —。
11. PDF库[iText]
与Microsoft Excel相似,PDF库是另一种普遍存在的格式。如果需要在应用程序中支持PDF功能,例如导出PDF文件中的数据,则可以使用iText和Apache FOP库。
两者都提供有用的与PDF相关的功能,但是iText变得越来越丰富。您可以进一步参阅《iText in Action》一书,以了解有关iText的更多信息。
12.日期和时间库[Joda Time]
在Java 8之前,JDK的数据和时间库存在许多缺陷,因为它们不是线程安全的,不可变的,并且不容易出错。许多Java开发人员都依靠JodaTime来实现其日期和时间要求。
从JDK 8开始,没有理由使用Joda,因为您可以在JDK 8的新日期和时间API中获得所有功能,但是如果您使用的是较旧的Java版本,则JodaTime是一个值得学习的库。
13.集合库[Eclipse集合]
尽管JDK具有丰富的集合库,但仍有一些第三方库提供了更多选项,例如Apache Commons集合,Goldman Sachs集合,Google集合,Eclipse集合和Trove。
Trove库特别有用,因为它为Java提供了高速的常规和原始集合。
FastUtil是另一个类似的API。它通过提供特定类型的映射,集合,列表和优先级队列来扩展Java Collections Framework,该队列具有较小的内存占用,快速的访问和插入。它还提供了大型(64位)数组,集合和列表,以及针对二进制文件和文本文件的快速,实用的I / O类。
Eclipse Collections是另一个有用的开放课程集合库,值得学习。
14.电子邮件API [Java Mail API]
javax.mail和Apache Commons Email都提供了用于从Java发送电子邮件的API 。它建立在旨在简化的JavaMail API之上。
如果您需要一个项目,则可以使用Java FX构建电子邮件客户端,并在那里使用mail API发送邮件。
15. HTML解析库[Jsoup]
与JSON和XML相似,HMTL是我们许多人必须处理的另一种常见格式。值得庆幸的是,我们拥有JSoup,它大大简化了Java应用程序中HTML的使用。
您可以使用JSoup不仅解析HTML,还可以创建HTML文档
它提供了使用DOM,CSS和类似jquery的最佳方法来提取和处理数据的非常方便的API 。JSoup实现了WHATWG HTML5规范,并且像现代浏览器一样将HTML解析为相同的DOM。
16,Apache Commons Codec
Apache Commons Codec软件包包含用于各种格式(例如Base64和Hexadecimal)的简单编码器和解码器。
除了这些广泛使用的编码器和解码器之外,编解码器包还维护了语音编码实用程序的集合。
17.嵌入式SQL数据库库[H2,HSQL和Derby]
我真的很喜欢H2这样的内存数据库,您可以将其嵌入Java应用程序中。它们非常适合测试SQL脚本和运行需要数据库的单元测试。
但是,H2不是唯一的数据库,您还可以选择Apache Derby和HSQL。
19.联网库[Apache MINA]
一些有用的网络库是Netty和Apache MINA。如果您在编写需要执行低级网络任务的应用程序,请考虑使用这些库。