作者:Jack47

转载请保留作者和原文出处

欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源

2017-4-6 更新: Google搜索 awesome java, 你会看到众多程序员参与维护的优秀Java编程库列表。学好英语,用Google搜索,否则我们就只能在中文的局域网里翻阅别人写的二手资料了。

本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定期更新。

使用这些开源的类库,帮助非常大,能够节约你的宝贵时间,减少你出错的可能,让你把时间都集中在处理自己独特的业务逻辑上。同时可以多看看这些优秀的开源库,向他们学习,能够帮助你设计更好的API,让你的代码更易读,更整洁,更简单,因为这些API自身就是很好的例子。

Guava##

Guava[ˈgwɑːvə]。它包含了Google在Java项目中使用一些核心库,包含集合(Collections),缓存(Caching),并发编程库(Concurrency),常用注解(Common annotations),String操作,I/O操作方面的众多非常实用的函数。Guava需要JDK1.6及以上版本。

Guava库是按照Joshua Bloch的 <<Effective Java: 2nd Edition>>来写的,不可变性(不可变的集合,CharMatcher,Joiner, Splitter等),构造者模式(ImmutableList.builder(), Joiner, Ordering等),范型等随处可见,使用工厂而不是构造函数(Maps.newHashMap()),钟情于组合而不是继承(ForwardXXX这类集合)。

我专门写过 Google Java编程库Guava介绍

5 Reasons use Guava

Guava和Apache库之间的对比

Friends of Guava

Joda Time

Joda-Time:

Java 8之前提供的标准的日期(Date)和时间(Time)类非常烂。现在Java下Joda Time已经成为了标准,进入了 Java 8中的java.time。Joda-Time的API相当简单,支持很多日历系统,对时区(time zone),时间间隔(duration),格式(format)和解析(parsing)的支持也相当赞。

Joda Time 5分钟上手手册

Apache Commons

Apache Commons项目目的是从各个方面提供可复用的Java编程组件。里面包含了很多很多组件,我用到的主要有:

Codec
提供了常用编码和解码的函数实现,例如Base64, Hex CLI
提供了一个非常方便的命令行参数解析器,几行API调用就可以搞定命令行参数解析

Metrics

Metrics以前叫Coda Hale Metrics。如果你需要关注程序内部的一些性能或业务指标,需要统计数据,Coda Hale Metrics都可以帮你搞定,包括JDBI,Jersey,Jetty,Log4j,JVM内部性能指标。如果需要定制自己的指标,你所需要做的就是两件事情:

  1. 注册你的监控数据的类型
  2. 加入监控的埋点

Metrics支持5种数据类型:Meter(事件发生的频率,例如QPS), Gauge(值的大小), Counters(计数器), Histogram(计算值的统计分布), Timer(耗时)。其中 Meter支持 1min,5min,15min内平均值,由于是通过采样来统计的,所以性能开销很小。Gauge支持最大值,最小值,平均值和标准差,同时也支持5种分点数据:75,90,98,99,99.9分点。

Metrics支持JMX汇报,HTTP汇报(自带了一个简单的Servlet,可以提供JSON表示注册的所有监控数据),也可以使用终端,文件来输出CSV格式的数据,也可以支持Ganglia和Graphite所需的格式类型。

Kafka消息队列,流式处理数据的Storm,都在用Metrics作为监控数据的收集系统。

SLF4J

SLF4J全称是Simple Logging Facade for Java,即简单日志门面。它对众多的日志框架做了抽象,提供统一的日志API,用户可以通过classpath指定SLF4J最终使用的日志框架,这样就可以在运行时才决定使用哪个日志后端,例如Logback,log4j等。这样做的好处是让应用程序和特定的日志框架之间解耦合。当你需要和第三方代码库或者已经决定了日志框架选型的项目做集成时,这个特性会非常方便。

SLF4J使用手册只有区区两页。

PowerMock

单测Mock工具库PowerMock与同类的工具Mockito, EasyMock, jMock都很相似,都是为了简化单元测试过程中测试上下文的搭建而开发的工具。可以极大地简化单元测试的书写过程,可以实现对静态函数、构造函数、私有函数、Final函数一季系统函数的模拟。这样可以大大提高单测的效率及单测代码的可读性。

PowerMock使用定制化的类加载器(class loader)和字节码(bytecode)操作技术,而不是用反射的机制。

Byte Buddy

Byte Buddy是一个用来在Java应用程序运行过程中产生Java class的代码生成库。Byte Buddy的目的是通过领域专用语言(DSL)来把生成字节码的过程隐藏起来。这样使用Byte Buddy时就不需要知道底层的Java字节码和类文件的格式了。


如果您看了本篇博客,觉得对您有所收获,请点击右下角的“推荐”,让更多人看到!

资助Jack47写作,打赏一个鸡蛋灌饼吧
微信打赏
支付宝打赏

Java下好用的开源库推荐的更多相关文章

  1. 【开源库推荐】#3 Android EventBus的使用

    原文地址:[开源库推荐]#3 Android EventBus的使用 | Stars-One的杂货小窝 EventBus的Github Event bus for Android and Java t ...

  2. 27个提升效率的iOS开源库推荐

    DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...

  3. 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!

    作者:编辑部的故事   <  开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!   > 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! Tutoria ...

  4. 快快快!27个提升效率的iOS开源库推荐

    文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...

  5. 快快快!27个提升效率的iOS开源库推荐(转)

    CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用.开发工具.移动游戏及引擎.智能硬件.物联网等方方面面.如果您想投稿.参与内容翻译工作,或寻求近匠报道,请发送 ...

  6. linux下安装libcurl及开源库的一般安装步骤

    前言 总有人说:要多看源代码!那么源代码去哪找呢?找到了又该怎么安装呢?本票博客不介绍如何使用和学习,只要讲获取和安装,以后会将curl和libevent的使用和学习. 一.开源库常用安装步骤 1.开 ...

  7. 各种实用的 PHP 开源库推荐【转】

    转自: https://my.oschina.net/editorial-story/blog/882780 PHP 是一种通用开源脚本语言.语法吸收了 C 语言.Java 和 Perl 的特点,利于 ...

  8. ios开发--27个提升效率的iOS开源库推荐

    超长慎入列表: DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core D ...

  9. GitHub上那些值得一试的JAVA开源库--转

    原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...

随机推荐

  1. 01.SQLServer性能优化之---水平分库扩展

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 第一次引入文件组的概念:http://www.cnblogs.com/dunitian/ ...

  2. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  3. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  4. 关于这段时间学习 EntityFramework的 一点感悟

    Ado.Net,用了N多年,Entity Framework也关注了很多年. 每当项目转型的时候,就花费大巴的时间,学习一番,潮流的东西. 这个Orm很多,这个EF很火,这么多年了,我还是不敢用,虽然 ...

  5. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  6. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  7. Entity Framework 延伸系列目录

    1.采用MiniProfiler监控EF与.NET MVC项目 2.采用EntityFramework.Extended 对EF进行扩展 3.EntityFramework执行存储过程中遇到的那些坑 ...

  8. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

  9. 监控 SQL Server (2005/2008) 的运行状况

    Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的 ...

  10. 第14章 Linux启动管理(1)_系统运行级别

    1. CentOS 6.x 启动管理 (1)系统运行级别 ①运行级别 运行级别 含义 0 关机 1 单用户模式,可以想象为Windows的安全模式,主要用于系统修复.(但不是Linux的安全模式) 2 ...