Java开发人员应该知道的前20个库和API

优秀且经验丰富的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。

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

3.单元测试库

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

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

我还注册了Udemy的JUnit和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位) 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。 您可以查看本文以了解有关Google协议缓冲区的更多信息。

20.网络库

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

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

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

  • Java开发人员在2018年应该学习的10件事
  • 2018年探索的10种编程语言
  • Java和Web开发人员应在2018年学习的10个框架
  • 2018年您可以阅读的20本书
  • 2018年学习新技术的10种方法
  • 针对Java和Web开发人员的10个PluralSight课程
  • 学习Java 8的10个教程

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机桌面文字重影,电脑桌面字有重影怎么办

1.电脑字体重影怎么办可以尝试以下4种方法:1. 右击“我的电脑”,依次单击“属性/高级/性能设置”在“视觉效果”页中将“在桌面上为图标标签使用阴影”选中,单击确定即可。2. 右键桌面空白处右击,在“排列图标”里去掉“锁定桌面的…

打磨锤子计算机专业,钳工磨锤子实训心得体会

钳工磨锤子实训心得体会实训是职业技能实际训练的简称,是指在学校控制状态下,按照人才培养规律与目标,对学生进行职业技术应用能力训练的教学过程。钳工磨锤子实训心得体会,我们来看看。钳工磨锤子实训心得体会1前言:通过这次的钳工实习报告,…

吸气剂和二传手被认为有害

Java程序员习惯性地用“ getters”和“ setters”来修饰类,这种做法根深蒂固,以至于几乎没有人质疑为什么这样做或是否应该这样做。 最近,我认为最好不要这样做,并且我开始在编写的Java代码中避免使用它。 在这篇博客文章中&#…

html编辑器设置为publisher,将PDF转换为Publisher的简单方法

二、 如何把PDF文件转换为Publisher支持的图片格式一些专业的软件或者在线网站都可以帮助我们把PDF文件转换为Publisher支持的图片格式。下面将提供几种支持PDF文件转换为图片格式的方法。(1) 使用都叫兽™PDF转换器进行格式转换热点推荐 - ADs都叫兽™PDF转换器 - 多功能的PDF…

Oracle应用容器云上的WildFly Swarm

在此博客文章中,我将描述如何将打包在WildFly Swarmber -jar中的CloudEE Duke应用程序部署到Oracle Application Container Cloud 。 在Oracle Application Container Cloud中进行部署所需的部署工件是一个ZIP归档文件,其中包含应用程序ber-jar和清单文…

适合学计算机用的机械键盘,一款好用的机械键盘应该怎么选?看完这篇就明白了...

一款好用的机械键盘应该怎么选?看完这篇就明白了2019-07-30 15:53:134点赞14收藏3评论今天给大家带来好物推荐第1期——机械键盘。作为在办公室办公的从业者们,平时工作中与电脑的接触时间最多。而人与电脑的交互主要靠键盘和鼠标,其中使用最…

六年级计算机课学什么时候,六年级信息技术《进一步了解计算机》教学设计

六年级信息技术《进一步了解计算机》教学设计教学目标知识与技能:1.了解计算机的五大部件2.了解各种典型的、常见的输入设备、输出设备、存储器等。过程与方法:通过学生利用教师提供的主题资源网站自主学习,了解计算机五大部件。情感、态度与…

asciidoc文件阅读_可搜索的文件? 是的你可以。 选择AsciiDoc的另一个原因

asciidoc文件阅读Elasticsearch是一个基于Apache Lucene的灵活,功能强大的开源,分布式实时云搜索和分析引擎,可提供全文搜索功能。 它是面向文档且无架构的。 Asciidoctor是一个纯Ruby处理器,用于将AsciiDoc源文件和字符串转换为…

专转本计算机专业录取分数线,2018江苏专转本各专业分数线一览!

原标题:2018江苏专转本各专业分数线一览!2018江苏专转本分数线梳理018江苏专转本考试已过去四个月,分数线已经公布了三个多月。按照分数线进行梳理大致情况如下:300分以上院校专业常州大学的财务管理 320分独占鳌头。300分以上分数…

坚实原则:开放/封闭原则

先前我们讨论了单一责任原则。 关于实体原则首字母缩写, 打开/关闭原则是该行中的第二个原则。 “软件实体(类,模块,功能等)应打开以进行扩展,但应关闭以进行修改” 通过采用该原理,目标是在不…

trim函数 html,trim、stripslashes、htmlspecialchars函数

通过 PHP 验证表单数据我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容:location.href(http://www.hacked.com)- 代码不会执行,因为会被…

有效的Java第三版有哪些新功能?

自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三版中添加&#xff0…

综合知识计算机类编制,天津事业编综合知识是什么

天津事业编综合知识有三类,分别是文字综合类、财会类、计算机类,考试时根据岗位考试要求进行一类综合知识的考核,均为主客观性试题,考试时限为150分钟,满分为100分。综合知识(文字综合类)简介(一)测试内容综合知识(文字…

哥大计算机科学学费,哥大计算机科学专业成功案例解析!!!

学生背景:学生:刘同学本科背景:北京大学 生物工程专业GPA: 3.5/4.0雅思7.5 GRE320录取院校:哥伦比亚大学—MS in Computer Science计算机科学硕士规划分析:1、背景分析L同学本科读的是生物工程专业,因为同学…

moxy json介绍_MOXy是GlassFish 4中新的默认JSON绑定提供程序

moxy json介绍GlassFish 4现在可以提供完整的Java EE 7(JSR-342)平台。 EclipseLink为该发行版做出了一些重大贡献。 首先是提供JPA 2.1(JSR-338)实现。 我将在本文中介绍的第二个内容是EclipseLink MOXy,它现在是JAX-…

大学计算机科技论文格式,《中国科技论文在线》稿件格式

《中国科技论文在线》期刊以中国科技论文在线网站http://www.paper.edu.cn/ 为基础,对在线发表论文进行评审,将评选的优秀论文作为期刊的主要稿源。稿件格式如下:中文标题(20字以内)作者11,作者22,……(1. 学校 院系,城…

使用Spring Boot和React进行Bootiful开发

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 在过去的几年中,React受到了很多积极的报导,使其成为Java开发…

计算机图形学结课论文,计算机图形学结课论文精要.doc

计算机图形学结课论文精要2017届结课论文《计算机图形学基础教程》—小球的弹跳运动学生姓名学 号所属学院专 业 计算机科学与技术班 级塔里木大学教务处制目录摘 要11.背景11.1计算机图形学概述11.2计算机图形画面的分类22.OpenGL概述22.1程序的基本结构32.2状态机制43.方案论…

word计算机基础考试题及答案,计算机基础习题及答案题库(期末考试)-word资料(精).doc...

文档介绍:1. 计算机的诞生: 第一台电子计算机是 1946 年在美国诞生的,该机的英文缩写是。答案(A)ENIAC 2. 计算机的诞生: 第一台电子计算机诞生于______ 。答案(C) 美国 3. 计算机的诞生: 第一台电子计算机诞生于______ 。答案(C)1946 年 4. 计算机的诞生: 世界上公…

编译hotspot_从Hotspot JIT编译器打印生成的汇编代码

编译hotspot有时,在对Java应用程序进行性能分析时,有必要了解Hotspot JIT编译器生成的汇编代码。 这对于确定已做出的优化决策以及我们的代码更改如何影响生成的汇编代码非常有用。 在调试并发算法以确保已按预期应用可见性规则时,知道何时发…