java api 开发_Java开发人员应该知道的前20个库和API

java api 开发

优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库。 我花了很多时间来学习API,尤其是在阅读了Effective Java 3rd Edition之后 ,Joshua Bloch建议在Java 3rd Edition中使用现有的API进行开发,而不是为常见的东西编写新的代码。 这对我来说很有意义,因为这些第二方库都经过了测试。 在本文中,我将分享Java开发人员应该熟悉的一些最有用和最基本的库和API。 顺便说一句,我没有包括SpringHibernate这样的框架,因为它们是众所周知的并且具有特定的功能。

我通常会提供用于日常工作的有用库,例如​​Log4j等日志记录库,Jackson等JSON解析库以及JUnit和Mockito等单元测试API。 如果需要在项目中使用它们,则可以在项目的类路径中包含这些库的JAR以开始使用它们,也可以使用Maven进行依赖项管理。

当使用Maven进行依赖管理时,它将自动下载这些库,包括它们依赖的库,称为传递依赖。

例如,如果您下载Spring Framework,那么它还将下载Spring依赖的所有其他JAR,例如Log4j等。

您可能没有意识到,但是拥有正确版本的依赖JAR令人头疼。 如果您使用的JAR版本错误,则将收到ClassNotFoundExceptionNoClassDefFoundErrorUnsupportedClassVersionError

这是我收集的一些有用的第三方库,Java开发人员可以在他们的应用程序中使用它们来完成许多有用的任务。 为了使用这些库,Java开发人员也应该熟悉这些,这是本文的重点。 如果您有想法,可以研究并使用该库。

1. 记录库

日志记录库很常见,因为在每个项目中都需要它们。 对于服务器端应用程序而言,它们是最重要的事情,因为日志仅放置在您可以看到应用程序运行状况的位置。 即使JDK附带了自己的日志记录库,也有许多更好的选择,例如Log4j,SLF4j和LogBack。

Java开发人员应该熟悉日志记录库的优缺点,并且知道为什么使用SLF4j比普通的Log4j更好 。 如果您不知道为什么我建议您阅读我以前关于同一主题的文章。

2. JSON解析库

在当今的Web服务和物联网(IoT)世界中,JSON已成为将信息从客户端传送到服务器的首选协议。 他们已将XML替换为以独立于平台的方式传输信息的最优选方式。 不幸的是,JDK还没有JSON库,但是幸运的是,有很多优秀的第三方库可以让您解析和创建JSON消息,例如Jackson和Gson。

Java Web开发人员应该至少熟悉这些库之一。 如果您想了解有关Jackson和JSON的更多信息,建议您通过Udemy进行JSON with Java API课程,他们在新年促销中仅售10.99美元。

3.单元测试库

单元测试是将普通开发人员与优秀开发人员区分开的最重要的事情。 经常给程序员借口,而不是编写单元测试,而是最常见的借口
避免单元测试的借口是缺乏流行的单元测试库(例如JUnit,Mockito和PowerMock)的经验和知识。

我的目标是在2018年提高对单元测试和集成测试库(例如JUnit 5,Cucumber,Robot框架等)的了解。

我还注册了UdemyJUnit和Mockito Crash课程 。 即使您了解JUnit和单元测试的基础知识,您也可能希望在2018年更新和升级您的知识。

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框架。 如果您想了解有关Java中XML解析的更多信息,那么我建议您阅读有关Udemy的Java Web Services和XML在线课程。 目前仅售10.99美元。

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是一个值得学习的库。
如果您想了解有关新的日期和时间API的更多信息,建议您查看Pluralsight的Java 8新增功能课程。 它很好地概述了Java 8的所有重要功能,包括日期和时间API。

13,收藏库

尽管JDK具有丰富的集合库,但仍有一些第三方库提供了更多选项,例如Apache Commons集合,Goldman Sachs集合,Google集合和Trove。 Trove库特别有用,因为它为Java提供了高速的常规和原始集合。

FastUtil是另一个类似的API,它通过提供特定于类型的映射,集合,列表和优先级队列来扩展Java Collections Framework,该队列具有较小的内存占用空间以及快速的访问和插入。 还提供大型(64位) arrayssetslists ,以及针对二进制文件和文本文件的快速,实用的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查询及其时间。 例如,如果您在代码中使用PreparedStatmentCallableStatement ,则这些库可以记录带有参数的确切调用以及执行所需的时间。

19.序列化库

Google协议缓冲区协议缓冲区是一种以高效且可扩展的格式对结构化数据进行编码的方式。 它是Java序列化的更丰富,更好的替代方法,我强烈建议经验丰富的Java开发人员学习Google Protobuf。 您可以查看本文,以了解有关Google协议缓冲区的更多信息

20.网络库

一些有用的网络库是Netty和Apache MINA。 如果您在编写需要执行低级网络任务的应用程序,请考虑使用这些库。

这就是每个Java开发人员都应该熟悉的一些有用的库 。 Java生态系统非常庞大,您会发现大量用于执行不同操作的库。 您想一想,就会发现有一个图书馆可以做到这一点。 与往常一样,Google是您找到有用的Java库的最佳朋友,但是您也可以查看Maven中央存储库,以找到一些适合您手头任务的有用库。

如果您喜欢这篇文章,您可能会发现我的其他文章也很有用:

感谢您到目前为止阅读本文。 如果您喜欢这篇文章,请与您的朋友和同事分享。 如果您有任何反馈或问题,请放下笔记。

PS 。 –如果您想在2018年开始时表现出色,那么我建议您阅读
有效的Java 3rd Edition ,对于每个开发人员来说都是必读的书。 它并未针对Java 7、8和9进行更新,并且大多数项目都已更新,因此请牢记新的变化。

翻译自: https://www.javacodegeeks.com/2018/01/top-20-libraries-apis-java-developer-know.html

java api 开发

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值