20个类型的JAVA程序员该了解和有用的库(译)

原文:https://dzone.com/articles/20-useful-open-source-libraries-for-java-programmehtml

    优秀和经验丰富的Java开发人员的一个特色是对API的普遍了解,包括JDK和第三方库。我花了大量时间学习API,特别是在阅读了“Effective Java 第3版”以后,Joshua Bloch建议如何使用现有的API进行开发,而不是为普通的东西编写新的代码。java

    这个建议对我来讲颇有意义,由于第二方库的测试表现。在本文中,我将分享一些Java开发人员应该熟悉的最有用和最基本的库和API。可是,我不包括框架,例如Spring和Hibernate,由于它们很是有名,而且具备特定的特性。程序员

    一般,我会为平常项目提供有用的库,包括日志库(如Log4j)、JSON解析库(如Jackson)、单元测试API(如JUnit和Mockito)。若是您须要在项目中使用它们,那么您能够将这些库的JAR包含在项目的类路径中,以开始使用它们,或者可使用Maven进行依赖项管理。数据库

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

    例如,若是您下载Spring框架,它还将下载Spring所依赖的全部其余JAR,例如Log4j。编程

    您可能没有意识到,可是拥有正确版本的依赖JAR是一个很大的头痛。若是您有错误的JAR版本,那么您将得到ClassNotFoundException、NoClassDefFoundError或UnsupportedClassVersionError。数组

20个优秀的开源库

    下面是我收集的一些有用的第三方库,Java开发人员能够在他们的应用程序中使用这些库来完成许多有用的任务。为了使用这些库,Java开发人员应该熟悉这些库,这就是本文的所有要点。若是你有一个想法,那么你就能够研究并使用它。浏览器

1. Logging Libraries

    日志库很是常见,由于在每一个项目中都须要它们。对于服务器端应用程序来讲,日志是最重要的,由于日志只放在能够查看应用程序运行状况的地方。尽管JDK附带了本身的日志库,但还有更好的选择,例如Log4j、SLF4j和Logback。安全

 

top Java logging libraries

    Java开发人员应该熟悉日志库的优缺点,并知道为何使用SLF4j比使用普通Log4j更好。若是你不知道为何,我建议你读关于同一主题的文章。服务器

2. JSON Parsing libraries

    在当今Web服务和物联网的世界中,JSON已经成为将信息从客户端传送到服务器的一种访问协议。它们取代了XML,成为以独立于平台的方式传输信息的首选方式。
    不幸的是,JDK没有JSON库。可是,有许多很好的第三方库可让您解析和建立jSON消息,好比Jackson和gson。
    Java Web开发人员至少应该熟悉其中的一个库。若是您想了解Jackson和JSON的更多信息,本身学。

3. Unit Testing Libraries

    单元测试是将普通开发人员与优秀开发人员区分开来的最重要的一件事。程序员常常有借口不编写单元测试,但最多见的逃避单元测试的借口是缺少对流行的单元测试库(包括JUnit、Mockito和PowerMock)的经验和知识。

Best Unit testing libraries for Java developers

    2018年,个人目标是提升我对单元测试和集成测试库的了解,好比JUnit 五、Cucumber、Robot framework等等。
 

4. General Purpose Libraries    

    Java开发人员可使用一些好的、通用的第三方库,好比Apache Commons 和 Google Guava。我老是在个人项目中包括这些库,由于它们简化了许多任务。
    正如Joshua Bloch在“EffectiveJava”一书中正确地指出的那样,从新发明轮子是没有意义的。咱们应该更喜欢使用尝试过的和通过测试的库,而不是时不时地编写本身的例程。

Best common libraries for Java developers

    对于Java开发人员来讲,熟悉GoogleGuava和ApacheCommonsLibrary是件好事。

 

5. HTTP Libraries

    我不喜欢JDK的一件事是他们缺少对HTTP的支持。虽然您可使用java.net.Package中的类创建HTTP链接,可是使用像apache httpClient和httpCore这样的开源第三方库并不那么容易或无缝。
    尽管JDK 9带来了对HTTP2.0的支持和对HTTP的更好支持,但我强烈建议全部Java开发人员熟悉流行的HTTP客户端库,包括HttpClient和HttpCore。
    您还能够查看文章,了解更多关于JDK 9的HTTP 2支持的内容。

Best HTTP libraries for Java developers

 

6. XML Parsing Libraries

    有许多XML解析库,包括Xerces、JAXB、JAXP、Dom4j和Xstream。Xerces 2是ApacheXerces家族中的下一代高性能、彻底兼容的XML解析器。这个新版本的Xerces引入了Xerces components接口(XNI),这是一个构建解析器组件和配置的完整框架,很是模块化,易于编程。

Best XML Parsing libraries for Java developers

    Apache Xerces 2解析器是XNI的参考实现,但其余解析器组件、配置和解析器可使用Xerces native接口编写。Dom4j是另外一个适用于Java应用程序的灵活的XML框架。

 

7. Excel Reading Libraries

    信不信由你,全部现实世界的应用程序都必须以某种形式与MicrosoftOffice进行交互。许多应用程序须要提供在Excel中导出数据的功能,若是必须从Java应用程序中导出数据,则须要ApachePOIAPI

Best Microsoft libraries for Java developers

    这是一个很是丰富的库,容许您从Java程序读取和写入XLS文件连接。

8. Bytecode Libraries

    若是您正在编写生成代码或与字节码交互的框架或库,那么您须要一个字节码库。

Best Bytecode manipulation libraries for Java developers

    Javassist(JJAVA programming ASSISTant)使Java字节码操做很是简单。它是一个类库,用于编辑Java中的字节码。ASM是另外一个有用的字节码编辑库。若是您不熟悉字节码,我建议您看一下java程序员的介绍,以便了解更多有关字节码的内容。

9. Database Connection Pool Libraries

    若是您正在与来自Java应用程序的数据库进行交互,但没有使用数据库链接池库,那么您就缺乏了一些东西。
    因为在运行时建立数据库链接须要时间并使请求处理更慢,因此建议始终使用DB链接库。其中一些流行的是CommonsPool和DBCP。
    在Web应用程序中,它的Web服务器一般提供这些功能,但在核心Java应用程序中,须要将这些链接池库包含到类路径中才能使用数据库链接池。
 

10. Messaging Libraries 

    与日志记录和数据库链接相似,消息传递也是许多实际Java应用程序的一个常见特性。
    Java提供JMS或Java消息服务,这不是JDK的一部分。对于这个组件,您须要包含一个单独的jms.jar。
    相似地,若是您使用第三方消息传递协议,好比tibco rv,那么您须要在应用程序类路径中使用第三方jar-tibrv.jar。

11. PDF Libraries

    与Microsoft Excel相似,PDF库是另外一种广泛存在的格式。若是您须要在应用程序中支持PDF功能,例如导出PDF文件中的数据,则可使用iText和ApacheFOP库。
    二者都提供了有用的PDF相关功能,但iText更丰富、更好。

Best PDF libraries for Java developers

12. Date and Time Libraries

    在Java 8以前,jdk的数据和时间库有不少缺陷,由于它们不是线程安全的、不可变的和容易出错的。许多Java开发人员依赖于JodaTime来实现他们的日期和时间需求。
    在JDK 8中,没有理由使用Joda,由于您在JDK 8的新日期和时间API中得到了全部这些功能,可是若是您使用的是较旧的Java版本,那么JodaTime是一个值得学习的库。
  Image title

13. Collection Libraries

    尽管jdk有一个丰富的藏书库,但也有一些第三方库提供了更多的选项,好比apache CommonsCollection、goldmansachs、google和trove。
    Trove库特别有用,由于它为Java提供了高速、常规和原始的集合。

Best embedded SQL libraries for Java developers

    FastUtil是另外一个相似的API。它经过提供具备小内存占用、快速访问和插入的特定类型映射、集合、列表和优先级队列来扩展Java集合框架;它还提供大(64位)数组、集合和列表,并为二进制文件和文本文件提供快速、实用的I/O类。

14. Email APIs

    Mail和ApacheCommonsEmail都提供了从Java发送电子邮件的API。它构建在JavaMailAPI之上,目的是简化它。

15. HTML Parsing Libraries

    与JSON和XML相似,HMTL是咱们许多人必须处理的另外一种常见格式。值得庆幸的是,咱们有JSoup,它极大地简化了Java应用程序中HTML的工做。
    您不只可使用JSoup解析HTML,还能够建立HTML文档

Best HTML Parsing libraries for Java developers

    它提供了一个很是方便的API来提取和操做数据,使用最好的DOM、CSS和jQuery类方法。JSoup实现WHATWGHTML 5规范,并像现代浏览器同样将HTML解析为相同的DOM。

16.Cryptographic Library

 ApacheCommonsCodec包含用于各类格式(如base 64和十六进制)的简单编码器和解码qi(这个词竟然敏感!)。
 除了这些普遍使用的编码器和解码qi以外,编解码程序包还维护一组语音编码实用程序。

Top 20 Libraries and APIs Java Developer should know

17. Embedded SQL Database Library

    我很是喜欢内存中的数据库,好比H2,您能够将它嵌入到Java应用程序中。它们很适合测试SQL脚本和运行须要数据库的单元测试。可是,H2不是惟一的DB,您还能够选择ApacheDerby和HSQL。

18. JDBC Troubleshooting Libraries

    有一些很好的JDBC扩展库存在,可使调试变得更容易,好比P6spy。
    这是一个库,能够无缝地拦截和记录数据库数据,而不会对应用程序进行代码更改。您可使用这些记录SQL查询及其时间。
    例如,若是在代码中使用PreparedStatment和CallableStatement,则这些库能够记录带有参数的准确调用,以及执行所花费的时间。

JDBC troubleshooting libraries for Java developers

19. Serialization Libraries

    GoogleProtocol缓冲区是一种以高效但可扩展的格式编码结构化数据的方法。它是Java序列化的一个更丰富和更好的选择。我强烈建议有经验的Java开发人员学习GoogleProtobuf。您能够经过本文了解有关Google Protocol Buffer缓冲区的更多信息。

Best Serialization libraries for Java developers

20. Networking Libraries

    一些有用的网络库是Netty和ApacheMina。若是您正在编写须要执行低级别网络任务的应用程序,请考虑使用这些库。若是您想了解更多关于Java网络编程的知识,请查看Java Network Programming - TCP/IP Socket Programming

Image title

    到目前为止,全部Java开发人员都应该使用一些有用的库。Java领域是巨大的,您会发现大量的库用于作不一样的事情。
    若是您想在Java中作任何事情,那么您极可能会找到一个关于如何这样作的库。与往常同样,Google是您查找有用Java库的最好朋友,可是您也能够查看Maven中央存储库,以找到一些适合您手头任务的有用库。

有什么讨论的内容,能够加我公众号:

相关文章
相关标签/搜索