通常一个经验丰富的开发者,通常都喜欢使用开源的第三方api库来进行开发,毕竟这样可以提升开发效率,而且可以简单快速的集成到项目中去,而不用花更多的时间去在重复造一些无用的轮子,多了解一些第三方库能够提升咱们的开发效率,下面就来看一下在开发过程当中常常会用到的一些开发第三方库,也可能不是太全,就列举一些常见或者经常使用的吧。java
1,日志库jquery
日志库是最经常使用的,毕竟在开发项目的过程当中都须要使用日志来记录项目的运行信息,从而很快的定位项目的发生的问题。尽管JDK附带了本身的日志库,可是还有更好的选择,例如Log4j、SLF4j和LogBack。通常建议使用SLF4j。好比Alibaba开发手册上也是这样说的,毕竟SLF4J使您的代码独立于任何特定的日志API,就是在项目的其它框架中使用了其它的日志框架库也可以很好的集成。程序员
2,JSON转换库web
在当今的web服务、手机api接口开发和物联网世界中,JSON已经成为将信息从客户端传送到服务器的首选协议。它们已经取代了XML,成为以独立于平台的方式传输信息的首选方式。不幸的是,JDK没有JSON库。可是,有许多优秀的第三方库容许您解析和建立JSON消息,好比Jackson和Gson,FastJson。sql
3,单元测试库库数据库
单元测试是区分普通开发人员和优秀开发人员的最重要的东西。程序员常常被给予不写单元测试的借口,可是最多见的避免单元测试的借口是缺少流行的单元测试库的经验和知识,包括JUnit、Mockito和PowerMock。apache
4,通用类库编程
Java开发人员可使用一些优秀的通用第三方库,好比Apache Commons和谷歌Guava。我老是在个人项目中包含这些库,由于它们简化了许多任务。正如约书亚•布洛赫(Joshua Bloch)在《Effective Java》一书中正确指出的那样,从新发明轮子是没有意义的。咱们应该使用通过测试的库,而不是时不时地编写咱们本身的程序。对于开发人员来讲,熟悉Apache Commons和谷歌Guava是颇有用的。api
5,HTTP库数组
虽然JDK中的 java.net 包也能实现HTTP链接,以及Http请求,可是它的使用没有像Apache HttpClient和HttpCore这样的开源第三方库简单,执行HTTP请求都得本身本身重复写大量的代码。虽然JDK 9提供了对HTTP 2.0的支持和对HTTP的更好支持,但我强烈建议全部Java开发人员熟悉流行的HTTP客户端请求库,包括HttpClient和HttpCore。
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文件。
8,字节码库
若是您正在编写一个生成代码或与字节码交互的框架或库,那么您须要一个字节码库。它们容许您读取和修改由应用程序生成的字节码。
Java世界中流行的一些字节码库是javassist和Cglib Nodep。Javassist 使得JAVA字节码操做很是简单。它是一个用于编辑Java字节码的类库。ASM是另外一个有用的字节码编辑库。
9,数据库链接池库
若是您正在与来自Java应用程序的数据库进行交互,可是没有使用数据库链接池库,那么您可能会遗漏一些内容。因为在运行时建立数据库链接须要时间,而且会使请求处理速度变慢,所以老是建议使用DB链接库。其中最流行的是C3P0和DBCP,以及阿里的德鲁伊(Druid)。
在web应用程序中,它的web服务器一般提供这些功能,可是在核心Java应用程序中,您须要将这些链接池库包含到类路径中,以使用数据库链接池。
10,消息库
与日志记录和数据库链接相似,消息传递也是许多实际Java应用程序的一个常见特性。
Java提供JMS,或者Java消息传递服务,这不是JDK的一部分。对于这个组件,您须要包含一个单独的jms.jar。
11,PDF库
Microsoft Excel相似,PDF库是另外一种常见的格式。若是须要在应用程序中支持PDF功能,好比导出PDF文件中的数据,可使用iText和Apache FOP,PDF Box库。
二者都提供了有用的PDF相关功能,但iText更丰富、更好。
12,日期和时间库
在Java 8以前,JDK的数据和时间库有不少缺陷,由于它们不是线程安全的、不可变的和容易出错的。许多Java开发人员依赖于JodaTime来实现他们的日期和时间需求。
从JDK 8开始,就没有理由使用JodaTime ,由于JDK 8的新的日期和时间API提供了全部这些功能,可是若是您使用的是较旧的Java版本,那么JodaTime是一个值得学习的库。
13,集合库
尽管JDK有丰富的集合库,但也有一些第三方库提供了更多的选项,好比Apache Commons集合、Goldman Sachs(高盛公司)集合、谷歌集合和Trove。
Trove库特别有用,由于它为Java提供了高速的常规和基本集合。
FastUtil是另外一个相似的API。它扩展了Java集合框架,提供了类型特定的映射、集合、列表和优先级队列,占用的内存不多,访问和插入也很快;它还提供了大型(64位)数组、集合和列表,并为二进制文件和文本文件提供了快速、实用的I/O类。
14,邮件API库
javax.mail和Apache Commons Email都提供了从Java发送电子邮件的API。它构建在JavaMail API之上,其目的是简化API。
15,HTML转换库
与JSON和XML相似,HMTL是许多人必须处理的另外一种常见格式。谢天谢地,咱们有了JSoup,它极大地简化了在Java应用程序中使用HTML的工做。
它提供了一个很是方便的API,可使用DOM、CSS和相似于jquery的方法来提取和操做数据。JSoup实现了HTML5规范,并像现代浏览器那样将HTML解析为相同的DOM。
16,加密库
apache Commons Codec包包含用于各类格式(如Base64和十六进制)的简单编码器和解码器。
除了这些普遍使用的编码器和解码器以外,codec包还维护了语音编码实用程序的集合/
17,嵌入式sql数据库库
像H2这样的内存数据库,它能够嵌入到Java应用程序中。它们很是适合测试SQL脚本和运行须要数据库的单元测试。然而,H2并非惟一的DB,您还能够选择Apache Derby和HSQL。
18,JDBC故障排除库
有一些很好的JDBC扩展库,它们能够简化调试,好比P6spy。
这个库使数据库数据可以被无缝地拦截和记录,而不须要对应用程序进行任何代码更改。您可使用它们来记录SQL查询及其计时。
19,序列化库
谷歌Protobuf是一种将结构化数据编码为一种高效且可扩展格式的方法。它是Java序列化的更丰富和更好的选择。建议有经验的Java开发人员能够学习一下谷歌Protobuf。
20,网络库
一些有用的网络库是Netty和Apache MINA。若是您正在编写一个须要执行低级网络任务的应用程序,请考虑使用这些库。
以上就是每一个Java开发人员都应该使用的一些有用的库。Java领域很是庞大,您会发现有大量的库能够用来作不一样的事情。