优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库。 我花了很多时间来学习API,尤其是在阅读了Effective Java 3rd Edition之后 ,Joshua Bloch建议在Java 3rd Edition中使用现有的API进行开发,而不是为常见的东西编写新的代码。
这对我来说很有意义,因为这些第二方库都经过了测试。 在本文中,我将分享Java开发人员应该熟悉的一些最有用和最基本的库和API。 顺便说一句,我没有包括Spring和Hibernate这样的框架,因为它们是众所周知的并且具有特定的功能。
我通常会提供用于日常工作的有用库,例如Log4j等日志记录库,Jackson等JSON解析库以及JUnit和Mockito等单元测试API。 如果需要在项目中使用它们,则可以在项目的类路径中包含这些库的JAR以开始使用它们,也可以使用Maven进行依赖项管理。
当使用Maven进行依赖管理时,它将自动下载这些库,包括它们依赖的库,称为传递依赖。
例如,如果您下载Spring Framework,那么它还将下载Spring依赖的所有其他JAR,例如Log4j等。
您可能没有意识到,但是拥有正确版本的依赖JAR令人头疼。 如果您使用的JAR版本错误,则将收到ClassNotFoundException或NoClassDefFoundError或UnsupportedClassVersionError 。
这是我收集的一些有用的第三方库,Java开发人员可以在其应用程序中使用它们来完成许多有用的任务。 为了使用这些库,Java开发人员也应该熟悉这些,这是本文的重点。 如果您有想法,可以研究该库并加以使用。
1、记录库
日志记录库很常见,因为在每个项目中都需要它们。 对于服务器端应用程序而言,它们是最重要的事情,因为日志仅放置在您可以看到应用程序运行状况的位置。 即使JDK附带了自己的日志记录库,也有许多更好的选择,例如Log4j,SLF4j和LogBack。
Java开发人员应该熟悉日志记录库的优缺点,并且知道为什么使用SLF4j比普通的Log4j更好 。 如果您不知道为什么我建议您阅读我以前关于同一主题的文章。
2、JSON解析库
在当今的Web服务和物联网(IoT)世界中,JSON已成为将信息从客户端传送到服务器的首选协议。 他们已经将XML替换为以平台无关的方式传输信息的最优选方式。 不幸的是,JDK还没有JSON库,但是幸运的是,有很多优秀的第三方库可以让您解析和创建JSON消息,例如Jackson和Gson。
3、单元测试库
单元测试是将普通开发人员与优秀开发人员区分开的最重要的事情。 经常给程序员借口,而不是编写单元测试,而是最常见的借口,避免单元测试的借口是缺乏流行的单元测试库(例如JUnit,Mockito和PowerMock)的经验和知识。
推荐一个开源免费的 Spring Boot 实战项目:
https://github.com/javastacks/spring-boot-best-practice
4、通用库
Java开发人员可以使用几个非常好的通用第三方库,例如Apache Commons和Google Guava。 我总是将这些库包含在我的项目中,因为它们简化了许多任务。 正如约书亚·布洛赫(Joshua Bloch)在《 有效的Java》 (现在已经有第3版)中正确说的那样,重新发明轮子没有意义,我们应该宁愿使用经过考验的库,也不要时不时编写自己的例程。
这只是一个优秀的Java开发人员熟悉Google的Guava和Apache commons库。
5、Http库
我对JDK不太喜欢的一件事是他们缺乏对HTTP的支持。 尽管可以使用java.net包中的类进行HTTP连接,但它不像使用开放源代码,第三方库(如Apache HttpClient和HttpCore)那样简单无缝。
尽管JDK 9带来了HTTP 2.0的支持以及对HTTP的更好支持,但我强烈建议所有Java开发人员熟悉流行的HTTP客户端库,例如HttpClient和HttpCore。
您还可以查看Java 9的新增功能-模块等,以了解有关JDK 9的HTTP 2支持的更多信息。
6、XML解析库
存在许多XML解析库,例如Xerces,JAXB,JAXP,Dom4j,Xstream等。Xerces2是Apache Xerces系列中的下一代高性能,完全兼容的XML解析器。 Xerces的这个新版本引入了Xerces本机接口(XNI),这是一个用于构建解析器组件和配置的完整框架,该框架非常模块化且易于编程。
Apache Xerces2解析器是XNI的参考实现,但其他解析器组件,配置和解析器也可以使用Xerces本机接口编写。 Dom4j是另一个适用于Java应用程序的灵活XML框架。
7、Excel阅读库
信不信由你,但所有实际应用程序都必须以某种形式与Microsoft Office进行交互。 许多应用程序都需要提供在Excel中导出数据的功能,如果必须从Java应用程序中导出数据,则需要Apache POI API。
这是一个非常丰富的库,它使您可以从Java程序读取和写入XLS文件 。 您可以看到该链接,以获取在Core Java应用程序中读取Excel文件的工作示例。
8、字节码库
如果您正在编写生成代码或与字节码交互的框架或库,则需要一个字节码库。 它们使您可以读取和修改应用程序生成的字节码。 Java世界中一些流行的字节码库是javassist和Cglib Nodep。
Javassist(JAVA编程ASSISTant)使Java字节码操作非常简单。 它是用于在Java中编辑字节码的类库。 ASM是另一个有用的字节码编辑库。
9、数据库连接池库
如果要通过Java应用程序与数据库进行交互,但不使用数据库连接池库,那么您将丢失某些内容。 由于在运行时创建连接会花费时间,并使请求处理变慢,因此始终建议使用DB连接库。 最受欢迎的是Commons Pool和DBCP 。
在Web应用程序中,通常是Web服务器提供这些功能,但是在核心Java应用程序中,您需要将这些连接池库包括到类路径中才能使用数据库连接池。 如果您想了解有关Web应用程序中JDBC和连接池的更多信息,建议您阅读Udemy中的JSP,Servlet和JDBC for Beginners课程。
10、消息库
与日志记录和数据库连接类似,消息传递也是许多实际Java应用程序的共同功能。 Java提供了JMS,Java Messaging Service,但这不是JDK的一部分,您需要包括单独的jms.jar。 同样,如果您使用的是第三方消息传递协议,例如Tibco RV,则需要在应用程序类路径中使用第三方JAR,例如tibrv.jar。
11、PDF库
与Microsoft Excel和World相似,PDF是另一种普遍存在的格式。 如果您需要在应用程序中支持PDF功能,例如将数据导出为PDF文件,则可以使用iText和Apache FOP库。 两者都提供有用的PDF相关功能,但是iText变得越来越丰富和完善,我一直偏爱那种。 请参阅此处以了解有关iText的更多信息。
12、日期和时间库
在Java 8之前,JDK的数据和时间库存在许多缺陷,例如它们不是线程安全的,不可变的,并且容易出错,许多Java开发人员都依靠JodaTime来实现其日期和时间要求。 从JDK 8开始,没有理由使用Joda,因为您可以在JDK 8的新Date and Time API本身中获得所有功能,但是如果您使用的是较旧的Java版本,则JodaTime是一个值得学习的库。
关注公众号:Java技术栈,回复:Java,可阅读我写的系列 Java 8+ 系列教程,也可以前往网站(https://www.javastack.cn)去阅读。
13、收藏库
尽管JDK具有丰富的集合库,但仍有一些第三方库提供了更多选项,例如Apache Commons集合,Goldman Sachs集合,Google集合和Trove。 Trove库特别有用,因为它为Java提供了高速的常规和原始集合。
FastUtil是另一个类似的API,它通过提供特定于类型的映射,集合,列表和优先级队列来扩展Java Collections Framework,而这些队列,内存,占用空间小并且可以快速访问和插入。 还为二进制文件和文本文件提供了大型(64位) arrays , sets和lists以及快速,实用的I / O类。
14、电子邮件API
javax.mail和Apache Commons Email –提供用于发送电子邮件的API。 它建立在旨在简化的JavaMail API之上。
15、HTML解析库
与JSON和XML相似,HMTL是我们许多人必须处理的另一种常见格式。 值得庆幸的是,我们拥有jsoup,它大大简化了在Java应用程序中使用HTML的工作。 您可以使用JSoup不仅解析HTML,还可以创建HTML文档
它提供了使用DOM,CSS和类似jquery的最好方法提取和处理数据的非常方便的API。 jsoup实现WHATWG HTML5规范,并将HTML解析为与现代浏览器相同的DOM。
16、密码库
Apache Commons Codec软件包包含用于各种格式(例如Base64和Hexadecimal)的简单编码器和解码器。 除了这些广泛使用的编码器和解码器之外,编解码器包还维护了语音编码实用程序的集合。
17、嵌入式SQL数据库库
我真的很喜欢H2这样的内存数据库,您可以将其嵌入Java应用程序中。 它们非常适合测试SQL脚本和运行需要数据库的单元测试。 顺便说一句,H2不是唯一的数据库,您也可以选择Apache Derby和HSQL。
18、JDBC故障排除库
有一些很好的JDBC扩展库可以使调试更加容易,例如P6spy。 它是一个库,可在不更改应用程序代码的情况下无缝地拦截和记录数据库数据。 您可以使用它们来记录SQL查询及其时间。 例如,如果您在代码中使用PreparedStatment和CallableStatement ,则这些库可以记录带有参数的确切调用以及执行所需的时间。
19、序列化库
Google协议缓冲区协议缓冲区是一种以有效但可扩展的格式对结构化数据进行编码的方法。 它是Java序列化的更丰富,更好的替代方法,我强烈建议有经验的Java开发人员学习Google Protobuf。
20、网络库
一些有用的网络库是Netty和Apache MINA。 如果您在编写需要执行低级网络任务的应用程序,请考虑使用这些库。
这就是每个Java开发人员都应该熟悉的一些有用的库 。
Java生态系统非常庞大,您会发现大量用于执行不同操作的库。 您考虑了一下,就会发现存在一个可以执行此操作的库。 与往常一样,Google是您找到有用的Java库的最佳朋友,但是您也可以查看Maven中央存储库,以找到一些适合您手头任务的有用库。
文章来源:https://www.javacodegeeks.com/2018/01/top-20-libraries-apis-j...
更多文章推荐:
2.2,000+ 道 Java面试题及答案整理(2024最新版)
3.免费获取 IDEA 激活码的 7 种方式(2024最新版)
觉得不错,别忘了随手点赞+转发哦!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。