JAVA程序员一定知道的 第三方库(2
几近每一个程序员都知道要“避免重复发明轮子”的道理——尽量使用那些 的第三方框架或库,但当真正进入开发时,我却常常发现他们有时其实不知道那些轮子在哪里。最近,我在业余时间带几个年轻的程序员一起做了一个很小的商业项目,而在一起开发的进程中,我几近在所有需要判断字符串是不是为空的地方,看到了下面的代码:
if(inputString==ngth==0){......}除字符串判断是不是为空以外,还有很多字符串处理或其他数据类型判断的方法,缺少经验的程序员们常常都会想办法自己来写。这些代码固然都没有错,但我们应当尽量去利用那些已非常成熟的第三方库,以更标准的方式去解决这些通用的问题,并且提高开发效力。
下面便是我整理的,在大部分项目中使用到的 JAVA第三方库,供大家参考:JAVA核心扩大正如前面说到的字符串判断的例子,JAVA的标准库虽然提供了那些最基本的数据类型操作方法,但依然对一些常见的需求场景,缺少实用的工具类。而另外一些则是JAVA标准库本身不够完善,需要第三方库去加以补充的。
ApacheCommonsLangApacheCommonsLang是Apache最 的JAVA库(GitHub上的代码库),它是对ng的很好扩大,包括了大量非常实用的工具类,其中用的最多的有StringUtils,DateUtils,NumberUtils等。之前提到的代码利用StringUtils可以改写为:
if(Blank(inputString)){...}除ApacheCommonsLang,还有一些其他的Apache库也是对JAVA本身的很好补充,如ApacheCommonsCollection,ApacheCommonsIO,ApacheCommonsMath在Maven项目中加入ApacheCommonsLang这个库:
mons/groupIdartifactIdmons-lang3/artifactIdversion3.4/version/dependencyGoogleCuavaGoogleCuava在国内项目中很少使用,但我合作过的一些国外JAVA工程师几近都会推荐这个JAVA库。它包括了Google在自己的JAVA项目中所使用的一些核心JAVA库。包括了对:集合,缓存,并发库,字符串处理,I/O等各个方面的支持。另外Google开发的库总是以性能著称。添加下面的援用,在Maven项目中加入这个库
ava/groupIdartifactIdguava/artifactIdversion19.0/version/dependencyJoda-TimeJavaSE8之前的JAVA版本中对日期的支持是比较差的,Joda-Time被常常被使用来替换原有的日期系统,它能够支持更多的日历体系,并提供了很多非常方便的日期处理方法,而且它的性能也是非常出色的。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
dependencygroupIdjoda-time/groupIdartifactIdjoda-time/artifactIdversion2.9.3/version/dependencyWeb框架Web框架是一个运用最核心的部份,因此我总是推荐使用那些最标准的,并且有良好社区支持的框架,比如Spring和Struts。
SpringSpring是一个开源的运用框架,它包括很多子项目比如SpringMVC,SpringSecurity,SpringData,SpingBoot等等,几近可以满足你项目上的所有需要。它也是我开发Web项目的 后端框架。(GitHub上的代码库)添加下面的援用,在SpringMVC项目中加入这个库(以下仅引入SpringCore的支持)
ringframework/groupIdartifactIdspring-core/LEASE/version/dependencyStruts2Struts2是Apache最着名的Web框架,它也是一个免费开源的MVC框架。Struts也能很好地支持REST,SOAP,AJAX等 技术。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
ruts/groupIdartifactIdstruts2-core/artifactIdversion2.3.28/version/dependency除上面提到的两个最长哟你的Web框架以外,还有如GoogleWebToolkit,Tapestry,Strips等一些 的框架可供选择。数据库(持久层)持久层框架的选择对一个项目的成败一样非常关键,它会直接影响到系统的性能、质量、安全和稳定性。
MyBatisMyBatis是我最喜欢的数据库(持久层)框架,由于它完全是基于SQL语句的(通过SQL来提取数据并自动映照为所需的数据对象),能够为我带来足够的灵活性。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库(如需配合Spring使用,可选择对应的Maven库)
batis/groupIdartifactIdmybatis/artifactIdversion3.4.0/version/dependencySpringJDBC/SpringDataSpringJDBC并不是独立的Spring子项目,而是一个整合在Spring核心库内,为JDBC操作提供基本封装处理的模块。通过简单的配置后,可以通过对Context中的jdbcTemplate进行调用来取得结果。
StringSQL=selectnamefromStudentwhereid=?;Stringname=eryForObject(SQL,newObject[]{10},ass);SpringData是Spring的1个子项目,提供了更加强大的持久层功能封装,和对象映照功能。它能与SpringMVC很好地整合。你可以利用JPA和CrudRepository来极大简化持久层的开发。
publicinterfaceEmployeeRepositoryextendsCrudRepositoryEmployee,Long{EmployeefindByFirstName(StringfirstName);ListEmployeefindByLastName(StringlastName);}Hibernate可能是国内用得最广泛的持久层框架了,它非常强大,但用好它其实不容易,你需要了解它的内部机制,否则可能会出现一些没法预感的性能问题,特别是在数据量特别大的时候。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
bernate/groupIdartifactIdhibernate-core/nal/version/dependency除上面一些最经常使用的持久层库,还有几个 的库,比如JDO,JOOQ,ApacheDbUtils等日志JAVA中也包括了日志记录功能,但它在处理日志分级,日志的存储,和日志的备份、归档方面都不够出色,因此在项目中我们一般都会使用第三方日志库来处理日志。
SLF4J-SimpleLoggingFacadeforJava(SLF4J)SLF4J为我们提供了一个日志服务的抽象层,基于它你可以选择不同的日志实现,比如:gging,logback,log4j,当你需要改变日志实现组件时,不需要修改任何代码,只需要更改一些相应的配置就可以了。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
f4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.21/version/dependencyApacheLog4jLog4j是最着名的日志组件,通过简单的配置后就能在程序中方便地记录各个级别的日志,它的日志文件能够根据不同的规则进行命名和归档。添加下面的援用,在Maven项目中加入这个库
g4j/groupIdartifactIdlog4j-core/artifactIdversion2.5/version/dependencyLogbackLogback比Log4j更新,它被视为是log4j的一个替换者。它比log4j的性能更好,而且更完全地实现了SLF4J的接口,并且自带了更多的功能,比如自动紧缩日志,更多的filter等。添加下面的援用,在Maven项目中加入这个库
g4j/groupIdartifactIdlog4j-core/artifactIdversion2.5/version/dependencyJSONJSON已成为最广泛使用的一种数据传输格式,因此程序中对JSON的处理也正变得愈来愈多。下面是我推荐的一些JSON处理库:
JacksonJackson是一个多用途的Java库,用于处理JSON数据。使用它可以很方便地在JSON数据和Java对象之间进行转换。(GitHub上的代码库)
ObjectMappermapper=newObjectMapper();//canreuse,sharegloballyUseruser=adValue(newFile(on),ass);GoogleGsonGoogle开发的JSON库,可以实现JSON字符串与JAVA对象之间的转换,使用起来也非常方便。
Gsongson=newGson();String[]strings={abc,def,ghi};Json(strings);//==[abc,def,ghi]图表JFreeChart能够为你生成各种类型的图表,并且支持多种输出格式,包括PNG和JPEG图片格式,和向PDF,EPS,SVG等矢量图。
JasperReportsJasperReports提供了一套完全的报表解决方案,帮助用户使用用Java语言来开发具有报告功能的程序。JasperReports的模版采取XML格式,从数据库中抽取数据,并以PDF、HTML、XLS、CSV及XML等各种格式生成报表。它的1大优势是能够处理大数据量的报表。
测试JUnitJUnit是目前使用最广泛的JAVA单元测试库通过它,你可以i非常方便地编写自己的单元测试代码,并进行自动化测试。(GitHub上的代码库)
TestpublicvoidlookupEmailAddresses(){assertThat(newCartoonCharacterEmailLookupService().getResults(looney),allOf(not(empty()),containsInAnyOrder(allOf(instanceOf(ass),hasEntry(id,56),hasEntry(email,roadrunner
)),allOf(instanceOf(ass),hasEntry(id,76),hasEntry(email,wiley
)))));}添加下面的援用,在Maven项目中加入这个库
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependencyOffice文档处理ApachePOIApachePOI是一个免费的开源库用于处理MicrosoftOffice文档。用它可以使用Java读取和创建,修改MSExcel文件,MSWord和MSPowerPoint文件。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
i/groupIdartifactIdpoi/artifactIdversion3.14/version/dependencydocx4jdocx4j是另外一套基于JAXB的Office文档(docx,pptx,xlsx)处理库。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
cx4j/groupIdartifactIddocx4j/artifactIdversion3.3.0/version/dependencyXML解析JDOMJDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化和多种操作。在JDOM中,XML元素用Element表示,XML属性用Attribute表示,XML文档本身用Document表示。因此这些API都非常直观易用。(GitHub上的代码库)添加下面的援用,在Maven项目中加入这个库
om/groupIdartifactIdjdom/artifactIdversion2.0.2/version/dependencyDOM4JDOM4J是一个处理XML的开源框架,它整合了对XPath,并且完全支持DOM,SAX,JAXP等技术。添加下面的援用,在Maven项目中加入这个库
dependencygroupIddom4j/groupIdartifactIddom4j/artifactIdversion1.6.1/version/dependencyxercesXerces是一个开放源代码的XML语法分析器。从JDK1.5以后,Xerces就成了JDK的XML默许实现添加下面的援用,在Maven项目中加入这个库
dependencygroupIdxerces/groupIdartifactIdxercesImpl/artifactIdversion2.11.0/version/dependency其他值得
白癜风治疗要花多少钱治疗白癜风的医院