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

java 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

java api 开发

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

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

相关文章

Linux 系统的硬链接和软链接详解

文章目录什么是链接链接用来干什么的硬链接和软链接的区别硬链接和软链接的图示总结我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),…

js如何监听元素事件是否被移除_JavaScript 监听元素是否进入/移出可视区域

JavaScript 监听元素是否进入/移出可视区域常规操作防抖节流IntersectionObserver兼容的代码常规操作通常的做法是,监听srcoll事件,根据元素的offset来判断。window.addEventListener(scroll, this.scrollHandle, true);使用getBoundingClientRec()来获取…

人工智能领域论文常见基本概念笔记

BLEU分数: 一个比较候选文本翻译与其他一个或多个参考翻译的评价分数。 AUC: 衡量学习器优劣的一种指标,Roc曲线下与坐标轴围成的面积(0.5~1),越接近1,检测方法真实性越高。 Image Caption: 一般有几种叫法:图像描述,图像标注…

okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全

okta-spring“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 您可以使用SpringBoot和Okta在不到20分钟的时间内启动具有完整用户身份和…

Mac 键盘符号整理

图标介绍⌘Command⇧Shift⇪Caps Lock⌥Option Alt⌃Control↩Enter⌫Delete⌦Fn Delete↑上箭头↓下箭头←左箭头→右箭头⇞Fn ↑ Page Up⇟Fn ↓ Page DownHomeFn ←EndFn →⇥Tab 右制表符⇤Shift Tab 左制表符⎋Esc Escape⏏电源开关键

团队的英文翻译缩写_魔兽世界各种英文/拼音/缩写的翻译/解释

大灾变缩写为CTM团队副本名称缩写:VOA(国服简称为宝库,拼音缩写为BK....):Vault of Archavon 八十年代团队副本阿尔卡冯的宝库,台服译作亞夏梵穹殿。位于冬拥湖(台服译作冬握湖)。分10人和25人难度。没有困难模式。NAXX: Naxxrama…

机器学习常见基本概念笔记

机器学习 监督学习和非监督学习: 有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。比如分类和回归。 而无监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现…

adf开发_在EL表达式中引用ADF Faces组件

adf开发EL表达式通常用于在页面上指定ADF Faces组件的属性值。 有趣的是,我们可以使用component关键字来引用要为其评估EL表达式的组件实例。 这是略与此类似Java中。 例如,在以下代码段中,按钮的提示被评估为按钮的文本值,并且它…

Navicat Premium for Mac 快捷键

快捷键说明Comm R运行全部语句Shift Comm R运行当前语句Comm 1显示/隐藏左侧的导航窗格Comm 2显示/隐藏右侧的信息窗格Option Comm T隐藏工具栏Comm N创建新表Comm 添加记录Comm -删除记录Comm Y新建查询,这样会打开一个标签界面,可以在这个界…

wxpython 多线程_在wxPython中使用线程连续更新GUI的好方法?

我正在开发一个使用pythonv2.7和wxpythonv3.0的GUI应用程序。我必须不断更新我的图形用户界面,其中包含许多面板。每个面板包含一个wx.StaticText。我必须不断更新这些wx.StaticTexts。我想用threads。我还使用pubsub模块与GUI通信来更新这些wx.StaticTexts。每件事…

Pytorch代码函数笔记

1.torch.squeeze(): 要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。 2.nn.Sequential(): 一个有序的容器,神经网络模块将按…

apache poi_将HTML转换为Apache POI的RichTextString

apache poi1.概述 在本教程中,我们将构建一个将HTML作为输入的应用程序,并使用提供HTML的RichText表示形式创建Microsoft Excel工作簿。 为了生成Microsoft Excel工作簿,我们将使用Apache POI 。 为了分析HTML,我们将使用Jericho。…

Windows 下有哪些逆天的软件?

文章目录逆天软件系列1:Everything逆天软件系列2:Total Commander逆天软件系列3:Snipaste逆天软件系列4:Microsoft To-Do逆天软件系列5:ScreenToGIF逆天软件系列6:Geek Uninstaller逆天软件系列7&#xff1…

C++中绘图工具EasyX基本操作

使用头文件 #include <graphics.h>创建和关闭图形界面 initgraph(800,600); //创建图形界面&#xff0c;参数:图形宽度&#xff0c;图形高度 closegraph(); //关闭图形界面画图形形状 //画圆&#xff0c;参数&#xff1a;圆心点x坐标&#xff0c;圆心点y坐标,半径mm c…

oracle adf_Fn函数来构建Oracle ADF应用程序

oracle adf在我之前的一篇文章中&#xff0c;我描述了如何创建一个Docker容器作为ADF应用程序的构建器。 在这里&#xff0c;我将展示如何将此容器用作 在FN平台的功能 。 首先&#xff0c;让我们更新容器&#xff0c;使其符合功能要求&#xff0c;这意味着可以将其作为接受某…

Sublime Text 4.0 4102 安装插件的问题

文章目录安装包控件&#xff08;Package Control&#xff09;如何安装插件打开 Install Package 面板搜索和安装插件无法打开 Install Package 面板的问题故障排除安装包控件&#xff08;Package Control&#xff09; 要安装插件&#xff0c;必须先安装 Package Control&#…

系统制成docker镜像_docker 制作自己的镜像

查看 docker的服务状态systemctl status docker如果没有启动的话&#xff0c;要先启动 docker 服务systemctl start docker制作自己的镜像1.从远程仓库拉取一个纯净的 centos 系统镜像查询 centos 相关的镜像docker search centos下载镜像到本地docker pull 镜像名查看本地镜像…

Pytorch机器学习/深度学习代码笔记

代码步骤笔记导入模块设置参数数据预处理定义数据集1.Dataset2.ImageFolder加载数据集DataLoadertorchvision--数据预处理要使用的库torchvision.datasetstorchvision.modelstorchvision.transforms训练网络参数训练前的准备设置指定的训练设备(GPU、CPU)定义损失函数定义优化器…

maven安装教程安装教程_Maven教程之春

maven安装教程安装教程1.简介 在这篇文章中&#xff0c;我们将演示如何针对非常特定的用例对Spring使用Maven依赖项。 我们使用的所有库的最新版本都可以在Maven Central上找到。 对于一个有效的构建周期来说&#xff0c;了解Maven依赖项的工作方式以及如何对其进行管理很重要…

如何完全卸载 Sublime Text

只是在应用程序删除软件是不够&#xff0c;你还必须把下面这个目录删除掉才行&#xff1a; /Users/liaowenxiong/Library/Application Support/Sublime Text /Users/liaowenxiong/Library/Preferences/Sublime Text /Users/liaowenxiong/Library/Caches/Sublime Text不这么干&…