当前位置: 首页 > 科技观察

程序员必须搞懂的20个Java类库和API

时间:2023-03-20 13:13:26 科技观察

程序员必须了解的20个Java类库和API有经验的Java开发人员的特征之一是善于使用现有的轮子来制造汽车。《Effective Java》的作者JoshuaBloch曾说过:“建议使用现有的API进行开发,而不是重新发明轮子”。在本文中,我将分享Java开发人员应该熟悉的一些最有用和必要的库和API。顺便说一下,这里不包括像Spring和Hibernate这样的框架,因为它们非常有名并且具有特定的功能。本文总结了日志、JSON解析、单测、XML解析、字节码处理、数据库连接池、集合类、邮件、加密、嵌入式SQL数据库、JDBC故障诊断和序列化等20个方面的常用类库。都是你在日常开发中可能经常用到的东西。如果你现在不需要它们也没关系,但你应该知道有这样一篇文章供你参考。不知道并不可怕,可怕的是不知道自己不知道。1、Logging相关库Logging库很常用,因为每个项目都需要用到。打印日志是服务器端应用程序中最重要的事情,因为日志是您了解程序发生了什么的唯一途径。尽管JDK附带了自己的日志库,但还有更好的选项可用,例如Log4j、SLF4j和LogBack。Java开发人员应该熟悉日志记录的优缺点,并理解为什么SLF4J优于Log4J。2.JSON解析库在当今的Web服务和物联网(IoT)世界中,JSON已取代XML成为从客户端到服务器传输信息的首选协议。有好消息也有坏消息。坏消息是JDK不提供JSON库。好消息是,有很多优秀的第三方库可以用来解析和创建JSON消息,例如Jackson和Gson。JavaWeb开发人员应该至少熟悉这两个库中的一个,Jackson和Gson。3、单元测试库的使用单元测试技术是区分一个普通开发者和一个优秀开发者的重要指标。程序员经常有各种各样的借口不写单元测试,但最常见的借口是缺乏经验和知识。常见的单体测试框架有JUnit、Mockito和PowerMock。4.通用类库有几个很好的第三方通用类库可供Java开发人员使用,例如ApacheCommons和GoogleGuava。我会在我的代码中经常使用这些通用类库,因为这些类库已经被无数开发者实践过,无论从实用性还是性能上来说都是最好的。五、Http库我不是很喜欢JDK。一个重要的原因是它们缺乏对HTTP的支持。虽然可以使用java.net包类,但这比直接使用ApacheHttpClient、HttpCore等开源库麻烦多了。尽管JDK9将启动HTTP2.0并优化HTTP支持,但我强烈建议所有Java开发人员熟悉流行的HTTP处理库,例如HttpClient和HttpCoreHTTP库。6、XML解析库市面上的XML解析库很多,比如Xerces、JAXB、JAXP、Dom4j、Xstream等。Xerces2是下一代高性能、完全兼容的XML解析工具。Xerces2定义了XercesNativeInterface(XNI)规范,并提供了一个完整的、符合标准的XNI规范实现。解析器经过完全重新设计和实现,更加简单和模块化。7、Excel读写库很多应用都需要提供导出数据到Excel的功能。如果你想做同样的Java应用程序,那么你需要ApachePOIAPI。这是一个非常丰富的类库,你可以从Java程序中读写XLS文件。8.字节码库如果你在写一个框架或者类库。您可以选择一些流行的字节码库,例如javassist和CglibNodep,它们允许您读取和修改应用程序生成的字节码。Javassist使JAVA字节码操作变得非常容易。它是一个用于编辑Java字节码的类库。ASM是另一个有用的字节码编辑库。九、数据库连接池库如果你的Java应用程序与数据库交互而不使用数据库连接池库,那你就大错特错了。因为在运行时创建数据库连接非常耗时并且会减慢您的程序。所以推荐使用WallCrack,有一些有用的连接池可用,比如CommonsPool和DBCP。在网络应用程序中,网络服务器通常提供这些功能。但是在java项目中,需要在应用中引入数据库连接池的类库。10、消息传递库和日志、数据库连接池一样,消息传递在很多实际的Java项目中也是必不可少的。Java提供JMSJava消息服务,但这不是JDK的一部分,需要单独导入jms.jar。同样,如果您打算使用第三方消息传递协议,TibcoRV是一个不错的选择。十一、PDF处理库除了Excel和Word,PDF也是一种常用的文件格式。如果您的应用程序支持PDF文件处理,您可以使用iText和ApacheFOP类库。两者都提供非常有用的PDF处理功能。12、日期时间库在Java之前,JDK的日期时间库一直为人们所诟病,如非线程安全、不可变、易出错等。很多开发者会选择更好用的JodaTime库。但是在Java8推出之后,我们可以完全放弃JodaTime,因为Java8提供了它所有的功能。但是,如果您的代码运行在旧版本的JDK上,那么JodaTime仍然值得使用。13、集合类库JDK虽然有丰富的集合类,但是还有很多第三方类库可以提供更多更好的功能。例如ApacheCommonsCollections、GoldmanSachscollections、GoogleCollections和Trove。Trove特别有用,因为它提供了所有标准Collections类的更快版本以及可以直接在基元上操作的Collections类的函数(例如包含int键或值的Map等)。FastUtil是另一个类似的API,它继承了JavaCollectionFramework,提供了几种特定类型的容器,包括映射map、collectionset、list列表、优先级队列(prorityqueue),实现了java.util包的标准接口(也提供了一个标准类没有的双向迭代器),还提供了一个大型(64位)数组、集合、列表,以及一个快速实用的二进制或文本文件的I/O操作类。14.邮件APIjavax.mail和ApacheCommonsEmail提供发送邮件的API。它们建立在JavaMailAPI之上并提供简化的用法。15、HTML解析库,类似于XML、JSON。HTML是我们可能不得不处理的另一种传输格式。值得庆幸的是,我们有jsoup,它大大简化了Java应用程序的HTML工作。您不仅可以使用JSoup来解析HTML,还可以创建HTML文档。16.ApacheCommons家族加密库中的CommonsCodec提供了一些公共的codec实现,比如Base64,Hex,MD5,PhoneticandURLs等17.EmbeddedSQLdatabaselibrary我很喜欢像H2这样的内存数据库,它可以嵌入到您的Java应用程序中。如果你在跑单机测试的时候需要一个数据库来验证你的SQL,它是一个不错的选择。顺便说一句,H2不是唯一的嵌入式数据库,您还有ApacheDerby和HSQL可供选择。18、JDBC故障诊断库有一个很好的JDBC扩展库,让调试变得容易,比如P6spy,它是一个数据库访问操作的动态监控框架,它可以无缝拦截和操作数据库数据,而无需对它做任何修改现有应用程序的代码。P6Spy发行版包括P6Log,这是一个记录任何Java应用程序的所有JDBC事务的应用程序。配置完成并使用后,可以监控数据访问性能。19.序列化库GoogleProtocolBuffer是一种可移植高效的结构化数据存储格式,可用于结构化数据序列化,或序列化。非常适合数据存储或RPC数据交换格式。一种与语言无关、平台无关、可扩展的序列化结构化数据格式,可用于通信协议、数据存储等领域。目前提供C++、Java、Python三种语言的API。20、网络库一些有用的网络库主要有Netty和ApacheMINA。如果您正在编写应用程序并且需要执行低级网络任务,请考虑使用这些库。这些都是每个Java开发人员都应该熟悉的有用库。Java生态系统是巨大的,您会发现许多不同的库做不同的事情。对于你能想到的一切,可能有一个图书馆可以做到。相信我,你遇到的问题绝对不是你遇到的唯一问题。相信我,可能有很多人比你更勤奋。相信它,无论您使用还是不使用,轮子都在那里。相信您和您的代码会更好地使用这些库。