那些厉害的 Javaer 都在用什么?

优秀且经验丰富的 Java 开发人员的特征之一是对 API 的广泛了解,包括 JDK 和第三方库。 我花了很多时间来学习 API,尤其是在阅读了 Effective Java 3rd Edition 之后 ,Joshua Bloch 建议在 Java 3rd Edition 中使用现有的 API 进行开发,而不是为常见的东西编写新的代码。
这对我来说很有意义,因为这些第二方库都经过了测试。 在本文中,我将分享 Java 开发人员应该熟悉的一些最有用和最基本的库和 API。 顺便说一句,我没有包括 Spring 和 Hibernate 这样的框架,因为它们是众所周知的并且具有特定的功能。
这是我收集的一些有用的第三方库,Java 开发人员可以在其应用程序中使用它们来完成许多有用的任务。 为了使用这些库,Java 开发人员也应该熟悉这些,这是本文的重点。 如果您有想法,可以研究该库并加以使用。
1、PDF 库
与 Microsoft Excel 和 World 相似,PDF 是另一种普遍存在的格式。 如果您需要在应用程序中支持 PDF 功能,例如将数据导出为 PDF 文件,则可以使用 iText 和 Apache FOP 库。 两者都提供有用的 PDF 相关功能,但是 iText 变得越来越丰富和完善,我一直偏爱那种。 请参阅此处以了解有关 iText 的更多信息。

2、日期和时间库
在 Java 8 之前,JDK 的数据和时间库存在许多缺陷,例如它们不是线程安全的,不可变的,并且容易出错,许多 Java 开发人员都依靠 JodaTime 来实现其日期和时间要求。 从 JDK 8 开始,没有理由使用 Joda,因为您可以在 JDK 8 的新 Date and Time API 本身中获得所有功能,但是如果您使用的是较旧的 Java 版本,则 JodaTime 是一个值得学习的库。
关注公众号:Java 技术栈,回复:Java,可阅读我写的系列 Java 8+ 系列教程,也可以前往网站(https://www.javastack.cn)去阅读。
3、收藏库
尽管 JDK 具有丰富的集合库,但仍有一些第三方库提供了更多选项,例如 Apache Commons 集合,Goldman Sachs 集合,Google 集合和 Trove。 Trove 库特别有用,因为它为 Java 提供了高速的常规和原始集合。

FastUtil 是另一个类似的 API,它通过提供特定于类型的映射,集合,列表和优先级队列来扩展 Java Collections Framework,而这些队列,内存,占用空间小并且可以快速访问和插入。 还为二进制文件和文本文件提供了大型(64 位) arrays , sets 和 lists 以及快速,实用的 I / O 类。
4、电子邮件 API
javax.mail 和 Apache Commons Email –提供用于发送电子邮件的 API。 它建立在旨在简化的 JavaMail API 之上。

5、JNPF
JNPF 开发平台是一个基于 SpringBoot+Vue3 的全栈开发平台,采用微服务、前后端分离架构。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3;平台即可私有化部署,也支持 K8S 部署。
技术架构
1、数据库兼容:MySQL(默认)、SQLServer、Oracle、PostgreSQL、达数据库、人大金仓数据库
2、分布式文件存储:兼容 MinIO 及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS 等
3、后端基于 IDEA + Eclipse +Spring Tool Suite 等开发。
4、前端基于 Node.js+Vue + TypeScript +Vite+Pinia+Pnpm+ Element-ui 等开发。
5、移动端开发 Node.js 开发

6、HTML 解析库
与 JSON 和 XML 相似,HMTL 是我们许多人必须处理的另一种常见格式。 值得庆幸的是,我们拥有 jsoup,它大大简化了在 Java 应用程序中使用 HTML 的工作。 您可以使用 JSoup 不仅解析 HTML,还可以创建 HTML 文档

它提供了使用 DOM,CSS 和类似 jquery 的最好方法提取和处理数据的非常方便的 API。 jsoup 实现 WHATWG HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。
7、密码库
Apache Commons Codec 软件包包含用于各种格式(例如 Base64 和 Hexadecimal)的简单编码器和解码器。 除了这些广泛使用的编码器和解码器之外,编解码器包还维护了语音编码实用程序的集合。

8、JDBC 故障排除库
有一些很好的 JDBC 扩展库可以使调试更加容易,例如 P6spy。 它是一个库,可在不更改应用程序代码的情况下无缝地拦截和记录数据库数据。 您可以使用它们来记录 SQL 查询及其时间。 例如,如果您在代码中使用 PreparedStatment 和 CallableStatement ,则这些库可以记录带有参数的确切调用以及执行所需的时间。

9、序列化库
Google 协议缓冲区协议缓冲区是一种以有效但可扩展的格式对结构化数据进行编码的方法。 它是 Java 序列化的更丰富,更好的替代方法,我强烈建议有经验的 Java 开发人员学习 Google Protobuf。

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

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